Plugin Directory

source: codepeople-post-map/trunk/codepeople-post-map.php

Last change on this file was 3386506, checked in by codepeople, 5 months ago

New version 1.2.5
Modifications in the changelogs.

File size: 6.6 KB
Line 
1<?php
2/*
3Plugin Name: CodePeople Post Map for Google Maps
4Text Domain: codepeople-post-map
5Version: 1.2.5
6Author: CodePeople
7Author URI: http://wordpress.dwbooster.com/content-tools/codepeople-post-map
8Plugin URI: http://wordpress.dwbooster.com/content-tools/codepeople-post-map
9Text Domain: codepeople-post-map
10Description: CodePeople Post Map for Google Maps Allows to associate geocode information to posts and display it on map. CodePeople Post Map for Google Maps display the post list as markers on map. The scale of map is determined by the markers, to display distant points is required to load a map with smaller scales. To get started: 1) Click the "Activate" link to the left of this description. 2) Go to your <a href="options-general.php?page=codepeople-post-map.php">CodePeople Post Map for Google Maps configuration</a> page and configure the maps settings. 3) Go to post edition page to enter the geolocation information.
11 */
12
13 // Feedback system
14require_once 'feedback/cp-feedback.php';
15new CP_FEEDBACK(plugin_basename( dirname(__FILE__) ), __FILE__, 'https://wordpress.dwbooster.com/contact-us');
16
17define('CPM_PLUGIN_DIR', WP_PLUGIN_DIR."/".dirname(plugin_basename(__FILE__)));
18define('CPM_PLUGIN_URL', plugins_url()."/".dirname(plugin_basename(__FILE__)));
19
20add_action( 'init', function(){
21        add_filter( 'get_post_metadata', function( $v, $object_id, $meta_key, $single, $meta_type = '' ){
22                if ( '_elementor_element_cache' == $meta_key ) {
23                        global $wpdb;
24                        if ( $wpdb->get_var( $wpdb->prepare('SELECT COUNT(*) FROM ' . $wpdb->postmeta . ' WHERE post_id=%d AND meta_key="_elementor_element_cache" AND meta_value LIKE "%cpm_%";', $object_id ) ) ) return false;
25                }
26                return $v;
27        }, 10, 5 );
28} );
29
30require (CPM_PLUGIN_DIR.'/include/functions.php');
31add_filter('option_sbp_settings', array('CPM', 'troubleshoot'));
32
33// Redirecting the user to the settings page of the plugin
34add_action( 'activated_plugin', 'cpm_redirect_to_settings', 10, 2 );
35if(!function_exists('cpm_redirect_to_settings'))
36{
37        function cpm_redirect_to_settings($plugin, $network_activation)
38        {
39                if(
40                        empty( $_REQUEST['_ajax_nonce'] ) &&
41                        $plugin == plugin_basename( __FILE__ ) &&
42                        (!isset($_POST["action"]) || $_POST["action"] != 'activate-selected') &&
43                        (!isset($_POST["action2"]) || $_POST["action2"] != 'activate-selected')
44                )
45                {
46                        exit( wp_redirect( admin_url( 'options-general.php?page=codepeople-post-map.php' ) ) );
47                }
48        }
49}
50
51// Create  a CPM object that contain main plugin logic
52add_action( 'init', 'cpm_init');
53add_action( 'admin_init', 'cpm_admin_init' );
54
55register_activation_hook(__FILE__, 'codepeople_post_map_regiter');
56
57if(!function_exists('codepeople_post_map_regiter')){
58    function codepeople_post_map_regiter(){
59        $cpm_master_obj = new CPM;
60        $cpm_master_obj->set_default_configuration();
61    }
62}
63
64function cpm_admin_init(){
65        global $cpm_master_obj;
66
67        // Insert the map's insertion form below the posts and pages editor
68        $form_title = __('Associate an address to the post for Google Maps association', 'codepeople-post-map');
69        add_meta_box('codepeople_post_map_form', $form_title, array($cpm_master_obj, 'insert_form'), 'post', 'normal');
70    add_meta_box('codepeople_post_map_form', $form_title, array($cpm_master_obj, 'insert_form'), 'page', 'normal');
71
72        add_action('save_post', array(&$cpm_master_obj, 'save_map'));
73
74        $plugin = plugin_basename(__FILE__);
75        add_filter('plugin_action_links_'.$plugin, array(&$cpm_master_obj, 'customizationLink'));
76
77}
78
79function cpm_init(){
80        load_plugin_textdomain( 'codepeople-post-map', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
81        global $cpm_master_obj, $cpm_objs;
82        $cpm_master_obj = new CPM;
83    $cpm_objs = array();
84
85        if(!is_admin())
86        {
87                add_shortcode('codepeople-post-map', array(&$cpm_master_obj, 'replace_shortcode'));
88                add_action('the_post', 'cpm_populate_points' );
89                add_action( 'wp_footer', 'cpm_print_points'  );
90                add_action( 'loop_start', 'cpm_loop_start' );
91                add_action( 'loop_end', 'cpm_loop_end' );
92
93                add_filter('widget_text', 'do_shortcode');
94
95                $cpm_master_obj->preview();
96        }
97}
98
99if( !function_exists( 'cpm_loop_start' ) )
100    {
101        function cpm_loop_start()
102        {
103            global $cpm_in_loop;
104            $cpm_in_loop = true;
105        }
106    }
107if( !function_exists( 'cpm_loop_end' ) )
108    {
109        function cpm_loop_end()
110        {
111            global $cpm_in_loop;
112            $cpm_in_loop = false;
113        }
114    }
115
116if( !function_exists( 'cpm_populate_points' ) ){
117        function cpm_populate_points( $post ){
118                global $cpm_master_obj;
119                $cpm_master_obj->populate_points( $post->ID );
120        }
121}
122
123if( !function_exists( 'cpm_print_points' ) ){
124        function cpm_print_points(){
125                global $cpm_objs, $cpm_master_obj;
126
127        foreach( $cpm_objs as $cpm_obj ){
128            if( !empty( $cpm_obj->multiple ) )
129            {
130                $cpm_obj->points = $cpm_master_obj->points;
131            }
132                        $cpm_obj->print_points();
133                }
134        }
135}
136
137if (!function_exists("cpm_settings")) {
138                function cpm_settings() {
139                        global $cpm_master_obj;
140
141                        if (!isset($cpm_master_obj)) {
142                                return;
143                        }
144
145                        if (function_exists('add_options_page')) {
146                                $slug = basename(__FILE__);
147                                add_options_page('CodePeople Post Map for Google Maps', 'CodePeople Post Map for Google Maps', 'manage_options', $slug, array(&$cpm_master_obj, 'settings_page'));
148
149                                add_menu_page( 'CodePeople Post Map for Google Maps', 'CodePeople Post Map for Google Maps', 'manage_options', $slug, array(&$cpm_master_obj, 'settings_page'), 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICA8cGF0aCBkPSJNMTIgMmMzLjE5NiAwIDYgMi42MTggNiA1LjYwMiAwIDMuMDkzLTIuNDkzIDcuMTMyLTYgMTIuNTkxLTMuNTA3LTUuNDU5LTYtOS40OTgtNi0xMi41OTFDNiA0LjYxOCA4LjgwNCAyIDEyIDJ6bTAgNGEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTR6Ii8+DQo8L3N2Zz4=' );
150
151                                add_submenu_page( $slug, 'Online Help', 'Online Help', 'read', 'google_maps_cp_help', array(&$cpm_master_obj, 'settings_page') );
152
153                                add_submenu_page( $slug, 'I\'ve a Question', 'I\'ve a Question', 'read', 'google_maps_cp_question', array(&$cpm_master_obj, 'settings_page') );
154
155                                add_submenu_page( $slug, 'Upgrade', 'Upgrade', 'read', 'google_maps_cp_upgrade', array(&$cpm_master_obj, 'settings_page') );
156                        }
157                }
158        }
159
160add_action('admin_enqueue_scripts', array(&$cpm_master_obj, 'load_admin_resources'), 1);
161add_action('enqueue_block_editor_assets', array(&$cpm_master_obj, 'load_gutenberg_code'));
162add_action('wp_head', array(&$cpm_master_obj, 'load_header_resources'), 10);
163add_action('admin_menu', 'cpm_settings');
164
165?>
Note: See TracBrowser for help on using the repository browser.