Advertisement
alexgieg

WP Google Maps Bug Fixes (Full Version)

Jan 21st, 2013
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 97.39 KB | None | 0 0
  1. <?php
  2. /*
  3. Plugin Name: WP Google Maps
  4. Plugin URI: http://www.wpgmaps.com
  5. Description: The easiest to use Google Maps plugin! Create custom Google Maps with high quality markers containing locations, descriptions, images and links. Add your customized map to your WordPress posts and/or pages quickly and easily with the supplied shortcode. No fuss.
  6. Version: 5.03
  7. Author: WP Google Maps
  8. Author URI: http://www.wpgmaps.com
  9. */
  10.  
  11. error_reporting(E_ERROR);
  12. global $wpgmza_version;
  13. global $wpgmza_p_version;
  14. global $wpgmza_t;
  15. global $wpgmza_tblname;
  16. global $wpgmza_tblname_maps;
  17. global $wpdb;
  18. global $wpgmza_p;
  19. global $wpgmza_g;
  20. global $short_code_active;
  21. global $wpgmza_current_map_id;
  22. global $debug;
  23. global $debug_step;
  24. global $debug_start;
  25. $debug = false;
  26. $debug_step = 0;
  27. $wpgmza_p = false;
  28. $wpgmza_g = false;
  29. $wpgmza_tblname = $wpdb->prefix . "wpgmza";
  30. $wpgmza_tblname_maps = $wpdb->prefix . "wpgmza_maps";
  31. $wpgmza_version = "5.03";
  32. $wpgmza_p_version = "5.03";
  33. $wpgmza_t = "basic";
  34.  
  35. add_action('admin_head', 'wpgmaps_head');
  36. add_action('admin_footer', 'wpgmaps_reload_map_on_post');
  37. register_activation_hook( __FILE__, 'wpgmaps_activate' );
  38. register_deactivation_hook( __FILE__, 'wpgmaps_deactivate' );
  39. add_action('init', 'wpgmaps_init');
  40. add_action('admin_menu', 'wpgmaps_admin_menu');
  41. add_filter('widget_text', 'do_shortcode');
  42.  
  43. $debug_start = (float) array_sum(explode(' ',microtime()));
  44.  
  45.  
  46.  
  47.  
  48. function wpgmaps_activate() {
  49.     global $wpdb;
  50.     global $wpgmza_version;
  51.     $table_name = $wpdb->prefix . "wpgmza";
  52.     $table_name_maps = $wpdb->prefix . "wpgmza_maps";
  53.  
  54.     wpgmaps_debugger("activate_start");
  55.     delete_option("WPGMZA");
  56.  
  57.     wpgmaps_handle_db();
  58.  
  59.     $wpgmza_data = get_option("WPGMZA");
  60.     if (!$wpgmza_data) {
  61.         // load first map as an example map (i.e. if the user has not installed this plugin before, this must run
  62.         $res_maps = $wpdb->get_results("SELECT * FROM $table_name_maps");
  63.         $wpdb->show_errors();
  64.         if (!$res_maps) { $rows_affected = $wpdb->insert( $table_name_maps, array(
  65.                                                                     "map_title" => "Your first map",
  66.                                                                     "map_start_lat" => "51.5081290",
  67.                                                                     "map_start_lng" => "-0.1280050",
  68.                                                                     "map_width" => "600",
  69.                                                                     "map_height" => "400",
  70.                                                                     "map_width_type" => "px",
  71.                                                                     "map_height_type" => "px",
  72.                                                                     "map_start_location" => "51.5081290,-0.1280050",
  73.                                                                     "map_start_zoom" => "1",
  74.                                                                     "directions_enabled" => '1',
  75.                                                                     "default_marker" => "0",
  76.                                                                     "alignment" => "0",
  77.                                                                     "styling_enabled" => "0",
  78.                                                                     "styling_json" => "",
  79.                                                                     "active" => "0",
  80.                                                                     "type" => "1",
  81.                                                                     "bicycle" => "2",
  82.                                                                     "traffic" => "2",
  83.                                                                     "dbox" => "1",
  84.                                                                     "dbox_width" => "250",
  85.                                                                     "listmarkers" => "0",
  86.                                                                     "listmarkers_advanced" => "0",
  87.                                                                     "ugm_enabled" => "0",
  88.                                                                     "mass_marker_support" => "1")
  89.                                                                     ); }
  90.     } else {
  91.         $rows_affected = $wpdb->insert( $table_name_maps, array(    "map_start_lat" => "".$wpgmza_data['map_start_lat']."",
  92.                                                                     "map_start_lng" => "".$wpgmza_data['map_start_lng']."",
  93.                                                                     "map_title" => "Your Map",
  94.                                                                     "map_width" => "".$wpgmza_data['map_width']."",
  95.                                                                     "map_height" => "".$wpgmza_data['map_height']."",
  96.                                                                     "map_width_type" => "".$wpgmza_data['map_width_type']."",
  97.                                                                     "map_height_type" => "".$wpgmza_data['map_height_type']."",
  98.                                                                     "map_start_location" => "".$wpgmza_data['map_start_lat'].",".$wpgmza_data['map_start_lng']."",
  99.                                                                     "map_start_zoom" => "".$wpgmza_data['map_start_zoom']."",
  100.                                                                     "default_marker" => "".$wpgmza_data['map_default_marker']."",
  101.                                                                     "type" => "".$wpgmza_data['map_type']."",
  102.                                                                     "alignment" => "".$wpgmza_data['map_align']."",
  103.                                                                     "styling_enabled" => "0",
  104.                                                                     "styling_json" => "",
  105.                                                                     "active" => "0",
  106.                                                                     "directions_enabled" => "".$wpgmza_data['directions_enabled']."",
  107.                                                                     "bicycle" => "".$wpgmza_data['bicycle']."",
  108.                                                                     "traffic" => "".$wpgmza_data['traffic']."",
  109.                                                                     "dbox" => "".$wpgmza_data['dbox']."",
  110.                                                                     "dbox_width" => "".$wpgmza_data['dbox_width']."",
  111.                                                                     "listmarkers" => "".$wpgmza_data['listmarkers']."",
  112.                                                                     "listmarkers_advanced" => "".$wpgmza_data['listmarkers_advanced']."",
  113.                                                                     "ugm_enabled" => "".$wpgmza_data['ugm_enabled']."",
  114.                                                                     "mass_marker_support" => "1"
  115.  
  116.                                                                 ) );
  117.         delete_option("WPGMZA");
  118.  
  119.     }
  120.     // load first marker as an example marker
  121.     $results = $wpdb->get_results("SELECT * FROM $table_name WHERE `map_id` = '1'");
  122.     if (!$results) { $rows_affected = $wpdb->insert( $table_name, array( 'map_id' => '1', 'address' => 'London', 'lat' => '51.5081290', 'lng' => '-0.1280050' ) ); }
  123.  
  124.  
  125.  
  126.  
  127.     //wpgmza_cURL_response("activate");
  128.     //check to see if you have write permissions to the plugin folder (version 2.2)
  129.     if (!wpgmaps_check_permissions()) { wpgmaps_permission_warning(); } else { wpgmaps_update_all_xml_file(); }
  130.     wpgmaps_debugger("activate_end");
  131. }
  132. function wpgmaps_deactivate() { /* wpgmza_cURL_response("deactivate"); */ }
  133. function wpgmaps_init() {
  134.     wp_enqueue_script("jquery");
  135.     $plugin_dir = basename(dirname(__FILE__))."/languages/";
  136.     load_plugin_textdomain( 'wp-google-maps', false, $plugin_dir );
  137.     }
  138.  
  139. function wpgmaps_reload_map_on_post() {
  140.     wpgmaps_debugger("reload_map_start");
  141.     if (isset($_POST['wpgmza_savemap'])){
  142.        
  143.         $res = wpgmza_get_map_data($_GET['map_id']);
  144.         $wpgmza_lat = $res->map_start_lat;
  145.         $wpgmza_lng = $res->map_start_lng;
  146.         $wpgmza_width = $res->map_width;
  147.         $wpgmza_height = $res->map_height;
  148.         $wpgmza_width_type = $res->map_width_type;
  149.         $wpgmza_height_type = $res->map_height_type;
  150.         $wpgmza_map_type = $res->type;
  151.         if (!$wpgmza_map_type || $wpgmza_map_type == "" || $wpgmza_map_type == "1") { $wpgmza_map_type = "ROADMAP"; }
  152.         else if ($wpgmza_map_type == "2") { $wpgmza_map_type = "SATELLITE"; }
  153.         else if ($wpgmza_map_type == "3") { $wpgmza_map_type = "HYBRID"; }
  154.         else if ($wpgmza_map_type == "4") { $wpgmza_map_type = "TERRAIN"; }
  155.         else { $wpgmza_map_type = "ROADMAP"; }
  156.         $start_zoom = $res->map_start_zoom;
  157.         if ($start_zoom < 1 || !$start_zoom) { $start_zoom = 5; }
  158.         if (!$wpgmza_lat || !$wpgmza_lng) { $wpgmza_lat = "51.5081290"; $wpgmza_lng = "-0.1280050"; }
  159.  
  160.         ?>
  161.         <script type="text/javascript" >
  162.         jQuery(function() {
  163.             jQuery("#wpgmza_map").css({
  164.         height:'<?php echo $wpgmza_height; ?><?php echo $wpgmza_height_type; ?>',
  165.         width:'<?php echo $wpgmza_width; ?><?php echo $wpgmza_width_type; ?>'
  166.  
  167.             });
  168.             var myLatLng = new google.maps.LatLng(<?php echo $wpgmza_lat; ?>,<?php echo $wpgmza_lng; ?>);
  169.             MYMAP.init('#wpgmza_map', myLatLng, <?php echo $start_zoom; ?>);
  170.             UniqueCode=Math.round(Math.random()*10010);
  171.             MYMAP.placeMarkers('<?php echo wpgmaps_get_marker_url($_GET['map_id']); ?>?u='+UniqueCode,<?php echo $_GET['map_id']; ?>);
  172.  
  173.         });
  174.         </script>
  175.         <?php
  176.     }
  177.     wpgmaps_debugger("reload_map_end");
  178.  
  179.  
  180. }
  181. function wpgmaps_get_marker_url($mapid = false) {
  182.  
  183.     if (!$mapid) {
  184.         $mapid = $_POST['map_id'];
  185.     }
  186.     if (!$mapid) {
  187.         $mapid = $_GET['map_id'];
  188.     }
  189.     if (!$mapid) {
  190.         global $wpgmza_current_map_id;
  191.         $mapid = $wpgmza_current_map_id;
  192.     }
  193.  
  194.     if (is_multisite()) {
  195.         global $blog_id;
  196.         return wpgmaps_get_plugin_url()."/".$blog_id."-".$mapid."markers.xml";
  197.     } else {
  198.         if (function_exists(wpgmza_register_pro_version)) {
  199.             $prov = get_option("WPGMZA_PRO");
  200.             $wpgmza_pro_version = $prov['version'];
  201.  
  202.             return wpgmaps_get_plugin_url()."/".$mapid."markers.xml";
  203.         } else {
  204.             return wpgmaps_get_plugin_url()."/".$mapid."markers.xml";
  205.         }
  206.  
  207.     }
  208.  
  209.  
  210.  
  211. }
  212.  
  213.  
  214. function wpgmaps_admin_edit_marker_javascript() {
  215.     wpgmaps_debugger("edit_marker_start");
  216.  
  217.     $res = wpgmza_get_marker_data($_GET['id']);
  218.         $wpgmza_lat = $res->lat;
  219.         $wpgmza_lng = $res->lng;
  220.         $wpgmza_map_type = "ROADMAP";
  221.        
  222.         $wpgmza_settings = get_option("WPGMZA_OTHER_SETTINGS");
  223.  
  224.         ?>
  225.         <script type="text/javascript">
  226.             var gmapsJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");
  227.             document.write(unescape("%3Cscript src='" + gmapsJsHost + "maps.google.com/maps/api/js?sensor=false' type='text/javascript'%3E%3C/script%3E"));
  228.         </script>
  229.         <link rel='stylesheet' id='wpgooglemaps-css'  href='<?php echo wpgmaps_get_plugin_url(); ?>/css/wpgmza_style.css' type='text/css' media='all' />
  230.         <link rel="stylesheet" type="text/css" media="all" href="<?php echo wpgmaps_get_plugin_url(); ?>/css/data_table.css" />
  231.         <script type="text/javascript" src="<?php echo wpgmaps_get_plugin_url(); ?>/js/jquery.dataTables.js"></script>
  232.         <script type="text/javascript" >
  233.             jQuery(document).ready(function(){
  234.                     function wpgmza_InitMap() {
  235.                         var myLatLng = new google.maps.LatLng(<?php echo $wpgmza_lat; ?>,<?php echo $wpgmza_lng; ?>);
  236.                         MYMAP.init('#wpgmza_map', myLatLng, 15);
  237.                     }
  238.                     jQuery("#wpgmza_map").css({
  239.                         height:400,
  240.                         width:400
  241.                     });
  242.                     wpgmza_InitMap();
  243.             });
  244.  
  245.             var MYMAP = {
  246.                 map: null,
  247.                 bounds: null
  248.             }
  249.             MYMAP.init = function(selector, latLng, zoom) {
  250.                   var myOptions = {
  251.                     zoom:zoom,
  252.                     center: latLng,
  253.                     zoomControl: <?php if ($wpgmza_settings['wpgmza_settings_map_zoom'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  254.                     panControl: <?php if ($wpgmza_settings['wpgmza_settings_map_pan'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  255.                     mapTypeControl: <?php if ($wpgmza_settings['wpgmza_settings_map_type'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  256.                     streetViewControl: <?php if ($wpgmza_settings['wpgmza_settings_map_streetview'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  257.                     mapTypeId: google.maps.MapTypeId.<?php echo $wpgmza_map_type; ?>
  258.                   }
  259.                 this.map = new google.maps.Map(jQuery(selector)[0], myOptions);
  260.                 this.bounds = new google.maps.LatLngBounds();
  261.  
  262.                 updateMarkerPosition(latLng);
  263.  
  264.  
  265.                 var marker = new google.maps.Marker({
  266.                     position: latLng,
  267.                     map: this.map,
  268.                     draggable: true
  269.                 });
  270.                 google.maps.event.addListener(marker, 'drag', function() {
  271.                     updateMarkerPosition(marker.getPosition());
  272.                 });
  273.             }
  274.             function updateMarkerPosition(latLng) {
  275.                 jQuery("#wpgmaps_marker_lat").val(latLng.lat());
  276.                 jQuery("#wpgmaps_marker_lng").val(latLng.lng());
  277.             }
  278.  
  279.  
  280.         </script>
  281.         <?php
  282.  
  283.     wpgmaps_debugger("edit_marker_end");
  284.  
  285. }
  286.  
  287. function wpgmaps_admin_javascript_basic() {
  288.     global $wpdb;
  289.     global $wpgmza_tblname_maps;
  290.     $ajax_nonce = wp_create_nonce("wpgmza");
  291.     wpgmaps_debugger("admin_js_basic_start");
  292.  
  293.     if (is_admin() && isset( $_GET['page'] ) && $_GET['page'] == 'wp-google-maps-menu' && isset( $_GET['action'] ) && $_GET['action'] == "edit_marker") {
  294.         wpgmaps_admin_edit_marker_javascript();
  295.  
  296.     }
  297.  
  298.     else if (is_admin() && isset( $_GET['page'] ) && $_GET['page'] == 'wp-google-maps-menu' && isset( $_GET['action'] ) && $_GET['action'] == "edit") {
  299.  
  300.         if ($debug) { echo ""; }
  301.  
  302.         if (!$_GET['map_id']) { break; }
  303.         wpgmaps_update_xml_file($_GET['map_id']);
  304.         //$wpgmza_data = get_option('WPGMZA');
  305.  
  306.         $res = wpgmza_get_map_data($_GET['map_id']);
  307.         $wpgmza_settings = get_option("WPGMZA_OTHER_SETTINGS");
  308.        
  309.         $wpgmza_lat = $res->map_start_lat;
  310.         $wpgmza_lng = $res->map_start_lng;
  311.         $wpgmza_width = $res->map_width;
  312.         $wpgmza_height = $res->map_height;
  313.         $wpgmza_width_type = $res->map_width_type;
  314.         $wpgmza_height_type = $res->map_height_type;
  315.         $wpgmza_map_type = $res->type;
  316.         if (!$wpgmza_map_type || $wpgmza_map_type == "" || $wpgmza_map_type == "1") { $wpgmza_map_type = "ROADMAP"; }
  317.         else if ($wpgmza_map_type == "2") { $wpgmza_map_type = "SATELLITE"; }
  318.         else if ($wpgmza_map_type == "3") { $wpgmza_map_type = "HYBRID"; }
  319.         else if ($wpgmza_map_type == "4") { $wpgmza_map_type = "TERRAIN"; }
  320.         else { $wpgmza_map_type = "ROADMAP"; }
  321.         $start_zoom = $res->map_start_zoom;
  322.         if ($start_zoom < 1 || !$start_zoom) {
  323.             $start_zoom = 5;
  324.         }
  325.         if (!$wpgmza_lat || !$wpgmza_lng) {
  326.             $wpgmza_lat = "51.5081290";
  327.             $wpgmza_lng = "-0.1280050";
  328.         }
  329.  
  330.  
  331.     ?>
  332.     <script type="text/javascript">
  333.         var gmapsJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");
  334.         document.write(unescape("%3Cscript src='" + gmapsJsHost + "maps.google.com/maps/api/js?sensor=false' type='text/javascript'%3E%3C/script%3E"));
  335.     </script>
  336.     <link rel='stylesheet' id='wpgooglemaps-css'  href='<?php echo wpgmaps_get_plugin_url(); ?>/css/wpgmza_style.css' type='text/css' media='all' />
  337.     <link rel="stylesheet" type="text/css" media="all" href="<?php echo wpgmaps_get_plugin_url(); ?>/css/data_table.css" />
  338.     <script type="text/javascript" src="<?php echo wpgmaps_get_plugin_url(); ?>/js/jquery.dataTables.js"></script>
  339.     <script type="text/javascript" >
  340.     jQuery(function() {
  341.  
  342.  
  343.                 jQuery(document).ready(function(){
  344.                     wpgmzaTable = jQuery('#wpgmza_table').dataTable({
  345.                         "bProcessing": true,
  346.                         "aaSorting": [[ 0, "desc" ]]
  347.                     });
  348.                     function wpgmza_reinitialisetbl() {
  349.                         wpgmzaTable.fnClearTable( 0 );
  350.                         wpgmzaTable = jQuery('#wpgmza_table').dataTable({
  351.                             "bProcessing": true
  352.                         });
  353.                     }
  354.                     function wpgmza_InitMap() {
  355.                         var myLatLng = new google.maps.LatLng(<?php echo $wpgmza_lat; ?>,<?php echo $wpgmza_lng; ?>);
  356.                         MYMAP.init('#wpgmza_map', myLatLng, <?php echo $start_zoom; ?>);
  357.                         UniqueCode=Math.round(Math.random()*10000);
  358.                         MYMAP.placeMarkers('<?php echo wpgmaps_get_marker_url($_GET['map_id']); ?>?u='+UniqueCode,<?php echo $_GET['map_id']; ?>);
  359.                     }
  360.  
  361.                     jQuery("#wpgmza_map").css({
  362.                         height:'<?php echo $wpgmza_height; ?><?php echo $wpgmza_height_type; ?>',
  363.                         width:'<?php echo $wpgmza_width; ?><?php echo $wpgmza_width_type; ?>'
  364.  
  365.                     });
  366.                     var geocoder = new google.maps.Geocoder();
  367.                     wpgmza_InitMap();
  368.  
  369.  
  370.  
  371.  
  372.                     jQuery(".wpgmza_del_btn").live("click", function() {
  373.                         var cur_id = jQuery(this).attr("id");
  374.                         var wpgm_map_id = "0";
  375.                         if (document.getElementsByName("wpgmza_id").length > 0) { wpgm_map_id = jQuery("#wpgmza_id").val(); }
  376.                         var data = {
  377.                                 action: 'delete_marker',
  378.                                 security: '<?php echo $ajax_nonce; ?>',
  379.                                 map_id: wpgm_map_id,
  380.                                 marker_id: cur_id
  381.                         };
  382.                         jQuery.post(ajaxurl, data, function(response) {
  383.                                 wpgmza_InitMap();
  384.                                 jQuery("#wpgmza_marker_holder").html(response);
  385.                                 wpgmza_reinitialisetbl();
  386.                                 //jQuery("#wpgmza_tr_"+cur_id).css("display","none");
  387.                         });
  388.  
  389.  
  390.                     });
  391.  
  392.  
  393.                     jQuery(".wpgmza_edit_btn").live("click", function() {
  394.                         var cur_id = jQuery(this).attr("id");
  395.                         var wpgmza_edit_address = jQuery("#wpgmza_hid_marker_address_"+cur_id).val();
  396.                         var wpgmza_edit_title = jQuery("#wpgmza_hid_marker_title_"+cur_id).val();
  397.                         jQuery("#wpgmza_edit_id").val(cur_id);
  398.                         jQuery("#wpgmza_add_address").val(wpgmza_edit_address);
  399.                         jQuery("#wpgmza_add_title").val(wpgmza_edit_title);
  400.                         jQuery("#wpgmza_addmarker_div").hide();
  401.                         jQuery("#wpgmza_editmarker_div").show();
  402.                     });
  403.  
  404.  
  405.  
  406.                     jQuery("#wpgmza_addmarker").click(function(){
  407.                         jQuery("#wpgmza_addmarker").hide();
  408.                         jQuery("#wpgmza_addmarker_loading").show();
  409.  
  410.                         var wpgm_address = "0";
  411.                         var wpgm_gps = "0";
  412.                         var wpgm_map_id = "0";
  413.                         if (document.getElementsByName("wpgmza_add_address").length > 0) { wpgm_address = jQuery("#wpgmza_add_address").val(); }
  414.                         if (document.getElementsByName("wpgmza_id").length > 0) { wpgm_map_id = jQuery("#wpgmza_id").val(); }
  415.  
  416.  
  417.                         geocoder.geocode( { 'address': wpgm_address, 'language': 'russian'}, function(results, status) {
  418.                             if (status == google.maps.GeocoderStatus.OK) {
  419.                                 wpgm_gps = String(results[0].geometry.location);
  420.                                 var latlng1 = wpgm_gps.replace("(","");
  421.                                 var latlng2 = latlng1.replace(")","");
  422.                                 var latlngStr = latlng2.split(",",2);
  423.                                 var wpgm_lat = parseFloat(latlngStr[0]);
  424.                                 var wpgm_lng = parseFloat(latlngStr[1]);
  425.  
  426.                                 var data = {
  427.                                     action: 'add_marker',
  428.                                     security: '<?php echo $ajax_nonce; ?>',
  429.                                     map_id: wpgm_map_id,
  430.                                     address: wpgm_address,
  431.                                     lat: wpgm_lat,
  432.                                     lng: wpgm_lng
  433.                                 };
  434.  
  435.                                 jQuery.post(ajaxurl, data, function(response) {
  436.                                         wpgmza_InitMap();
  437.                                         jQuery("#wpgmza_marker_holder").html(response);
  438.                                         jQuery("#wpgmza_addmarker").show();
  439.                                         jQuery("#wpgmza_addmarker_loading").hide();
  440.                                         wpgmza_reinitialisetbl();
  441.                                         var myLatLng = new google.maps.LatLng(wpgm_lat,wpgm_lng);
  442.                                         MYMAP.map.setCenter(myLatLng);
  443.                                 });
  444.  
  445.                             } else {
  446.                                 alert("Geocode was not successful for the following reason: " + status);
  447.                             }
  448.                         });
  449.  
  450.  
  451.                     });
  452.  
  453.  
  454.                     jQuery("#wpgmza_editmarker").click(function(){
  455.  
  456.                         jQuery("#wpgmza_editmarker_div").hide();
  457.                         jQuery("#wpgmza_editmarker_loading").show();
  458.  
  459.  
  460.                         var wpgm_edit_id;
  461.                         wpgm_edit_id = parseInt(jQuery("#wpgmza_edit_id").val());
  462.                         var wpgm_address = "0";
  463.                         var wpgm_map_id = "0";
  464.                         var wpgm_gps = "0";
  465.                         if (document.getElementsByName("wpgmza_add_address").length > 0) { wpgm_address = jQuery("#wpgmza_add_address").val(); }
  466.                         if (document.getElementsByName("wpgmza_id").length > 0) { wpgm_map_id = jQuery("#wpgmza_id").val(); }
  467.  
  468.  
  469.                         geocoder.geocode( { 'address': wpgm_address}, function(results, status) {
  470.                             if (status == google.maps.GeocoderStatus.OK) {
  471.                                 wpgm_gps = String(results[0].geometry.location);
  472.                                 var latlng1 = wpgm_gps.replace("(","");
  473.                                 var latlng2 = latlng1.replace(")","");
  474.                                 var latlngStr = latlng2.split(",",2);
  475.                                 var wpgm_lat = parseFloat(latlngStr[0]);
  476.                                 var wpgm_lng = parseFloat(latlngStr[1]);
  477.  
  478.                                 var data = {
  479.                                     action: 'edit_marker',
  480.                                     security: '<?php echo $ajax_nonce; ?>',
  481.                                     map_id: wpgm_map_id,
  482.                                     edit_id: wpgm_edit_id,
  483.                                     address: wpgm_address,
  484.                                     lat: wpgm_lat,
  485.                                     lng: wpgm_lng
  486.                                 };
  487.  
  488.                                 jQuery.post(ajaxurl, data, function(response) {
  489.                                     wpgmza_InitMap();
  490.                                     jQuery("#wpgmza_add_address").val("");
  491.                                     jQuery("#wpgmza_add_title").val("");
  492.                                     jQuery("#wpgmza_marker_holder").html(response);
  493.                                     jQuery("#wpgmza_addmarker_div").show();
  494.                                     jQuery("#wpgmza_editmarker_loading").hide();
  495.                                     jQuery("#wpgmza_edit_id").val("");
  496.                                     wpgmza_reinitialisetbl();
  497.                                 });
  498.  
  499.                             } else {
  500.                                 alert("Geocode was not successful for the following reason: " + status);
  501.                             }
  502.                         });
  503.  
  504.  
  505.  
  506.                     });
  507.             });
  508.  
  509.             });
  510.  
  511.  
  512.  
  513.             var MYMAP = {
  514.                 map: null,
  515.                 bounds: null
  516.             }
  517.             MYMAP.init = function(selector, latLng, zoom) {
  518.                   var myOptions = {
  519.                     zoom:zoom,
  520.                     center: latLng,
  521.                     zoomControl: <?php if ($wpgmza_settings['wpgmza_settings_map_zoom'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  522.                     panControl: <?php if ($wpgmza_settings['wpgmza_settings_map_pan'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  523.                     mapTypeControl: <?php if ($wpgmza_settings['wpgmza_settings_map_type'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  524.                     streetViewControl: <?php if ($wpgmza_settings['wpgmza_settings_map_streetview'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  525.                     mapTypeId: google.maps.MapTypeId.<?php echo $wpgmza_map_type; ?>
  526.                   }
  527.                 this.map = new google.maps.Map(jQuery(selector)[0], myOptions);
  528.                 this.bounds = new google.maps.LatLngBounds();
  529.  
  530.  
  531.                 google.maps.event.addListener(MYMAP.map, 'zoom_changed', function() {
  532.                 zoomLevel = MYMAP.map.getZoom();
  533.  
  534.                 jQuery("#wpgmza_start_zoom").val(zoomLevel);
  535.                 if (zoomLevel == 0) {
  536.                   MYMAP.map.setZoom(10);
  537.                 }
  538.                 });
  539.                 google.maps.event.addListener(MYMAP.map, 'center_changed', function() {
  540.                     var location = MYMAP.map.getCenter();
  541.                     jQuery("#wpgmza_start_location").val(location.lat()+","+location.lng());
  542.                     jQuery("#wpgmaps_save_reminder").show();
  543.                 });
  544.  
  545.                 google.maps.event.addListener(MYMAP.map, 'click', function() {
  546.                         infoWindow.close();
  547.                 });
  548.  
  549.  
  550.             }
  551.  
  552.             var infoWindow = new google.maps.InfoWindow();
  553.             <?php
  554.                 $wpgmza_settings = get_option("WPGMZA_OTHER_SETTINGS");
  555.                 $wpgmza_settings_infowindow_width = $wpgmza_settings['wpgmza_settings_infowindow_width'];
  556.                 if (!$wpgmza_settings_infowindow_width || !isset($wpgmza_settings_infowindow_width)) { $wpgmza_settings_infowindow_width = "200"; }
  557.             ?>
  558.             infoWindow.setOptions({maxWidth:<?php echo $wpgmza_settings_infowindow_width; ?>});
  559.  
  560.  
  561.             MYMAP.placeMarkers = function(filename,map_id) {
  562.                 marker_array = [];
  563.                     jQuery.get(filename, function(xml){
  564.                             jQuery(xml).find("marker").each(function(){
  565.                                     var wpmgza_map_id = jQuery(this).find('map_id').text();
  566.                                     if (wpmgza_map_id == map_id) {
  567.                                         var wpmgza_address = jQuery(this).find('address').text();
  568.                                         var lat = jQuery(this).find('lat').text();
  569.                                         var lng = jQuery(this).find('lng').text();
  570.                                         var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
  571.                                         MYMAP.bounds.extend(point);
  572.                                         var marker = new google.maps.Marker({
  573.                                                 position: point,
  574.                                                 map: MYMAP.map
  575.  
  576.  
  577.                                         });
  578.  
  579.                                         var html='<strong>'+wpmgza_address+'</strong>';
  580.  
  581.                                         google.maps.event.addListener(marker, 'click', function() {
  582.                                                 infoWindow.close();
  583.                                                 infoWindow.setContent(html);
  584.                                                 infoWindow.open(MYMAP.map, marker);
  585.                                                 //MYMAP.map.setCenter(this.position);
  586.  
  587.                                         });
  588.  
  589.                                     }
  590.  
  591.                             });
  592.                     });
  593.             }
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.         </script>
  601. <?php
  602. }
  603.     wpgmaps_debugger("admin_js_basic_end");
  604.  
  605. }
  606.  
  607.  
  608. function wpgmaps_user_javascript_basic() {
  609.     global $short_code_active;
  610.     global $wpgmza_current_map_id;
  611.     wpgmaps_debugger("u_js_b_start");
  612.  
  613.     if ($short_code_active) {
  614.  
  615.         $ajax_nonce = wp_create_nonce("wpgmza");
  616.  
  617.        
  618.         $res = wpgmza_get_map_data($wpgmza_current_map_id);
  619.         $wpgmza_settings = get_option("WPGMZA_OTHER_SETTINGS");
  620.  
  621.         $wpgmza_lat = $res->map_start_lat;
  622.         $wpgmza_lng = $res->map_start_lng;
  623.         $wpgmza_width = $res->map_width;
  624.         $wpgmza_height = $res->map_height;
  625.         $wpgmza_width_type = $res->map_width_type;
  626.         $wpgmza_height_type = $res->map_height_type;
  627.         $wpgmza_map_type = $res->type;
  628.         if (!$wpgmza_map_type || $wpgmza_map_type == "" || $wpgmza_map_type == "1") { $wpgmza_map_type = "ROADMAP"; }
  629.         else if ($wpgmza_map_type == "2") { $wpgmza_map_type = "SATELLITE"; }
  630.         else if ($wpgmza_map_type == "3") { $wpgmza_map_type = "HYBRID"; }
  631.         else if ($wpgmza_map_type == "4") { $wpgmza_map_type = "TERRAIN"; }
  632.         else { $wpgmza_map_type = "ROADMAP"; }
  633.         $start_zoom = $res->map_start_zoom;
  634.         if ($start_zoom < 1 || !$start_zoom) { $start_zoom = 5; }
  635.         if (!$wpgmza_lat || !$wpgmza_lng) { $wpgmza_lat = "51.5081290"; $wpgmza_lng = "-0.1280050"; }
  636.  
  637.         ?>
  638.         <script type="text/javascript">
  639.             var gmapsJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");
  640.             document.write(unescape("%3Cscript src='" + gmapsJsHost + "maps.google.com/maps/api/js?sensor=false' type='text/javascript'%3E%3C/script%3E"));
  641.         </script>
  642.         <script type="text/javascript" >
  643.  
  644.  
  645.         jQuery(function() {
  646.  
  647.  
  648.         jQuery(document).ready(function(){
  649.  
  650.  
  651.             jQuery("#wpgmza_map").css({
  652.                 height:'<?php echo $wpgmza_height; ?><?php echo $wpgmza_height_type; ?>',
  653.                 width:'<?php echo $wpgmza_width; ?><?php echo $wpgmza_width_type; ?>'
  654.  
  655.             });
  656.             var myLatLng = new google.maps.LatLng(<?php echo $wpgmza_lat; ?>,<?php echo $wpgmza_lng; ?>);
  657.             MYMAP.init('#wpgmza_map', myLatLng, <?php echo $start_zoom; ?>);
  658.             UniqueCode=Math.round(Math.random()*10000);
  659.             MYMAP.placeMarkers('<?php echo wpgmaps_get_marker_url($wpgmza_current_map_id); ?>?u='+UniqueCode,<?php echo $wpgmza_current_map_id; ?>);
  660.  
  661.  
  662.             });
  663.  
  664.         });
  665.        
  666.        
  667.         var MYMAP = {
  668.             map: null,
  669.             bounds: null
  670.         }
  671.         MYMAP.init = function(selector, latLng, zoom) {
  672.           var myOptions = {
  673.             zoom:zoom,
  674.             center: latLng,
  675.             zoomControl: <?php if ($wpgmza_settings['wpgmza_settings_map_zoom'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  676.             panControl: <?php if ($wpgmza_settings['wpgmza_settings_map_pan'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  677.             mapTypeControl: <?php if ($wpgmza_settings['wpgmza_settings_map_type'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  678.             streetViewControl: <?php if ($wpgmza_settings['wpgmza_settings_map_streetview'] == "yes") { echo "false"; } else { echo "true"; } ?>,
  679.             mapTypeId: google.maps.MapTypeId.<?php echo $wpgmza_map_type; ?>
  680.           }
  681.  
  682.           this.map = new google.maps.Map(jQuery(selector)[0], myOptions);
  683.           this.bounds = new google.maps.LatLngBounds();
  684.  
  685.             google.maps.event.addListener(MYMAP.map, 'click', function() {
  686.                     infoWindow.close();
  687.             });
  688.  
  689.  
  690.         }
  691.             var infoWindow = new google.maps.InfoWindow();
  692.             <?php
  693.                 $wpgmza_settings = get_option("WPGMZA_OTHER_SETTINGS");
  694.                 $wpgmza_settings_infowindow_width = $wpgmza_settings['wpgmza_settings_infowindow_width'];
  695.                 if (!$wpgmza_settings_infowindow_width || !isset($wpgmza_settings_infowindow_width)) { $wpgmza_settings_infowindow_width = "200"; }
  696.             ?>
  697.             infoWindow.setOptions({maxWidth:<?php echo $wpgmza_settings_infowindow_width; ?>});
  698.  
  699.             google.maps.event.addDomListener(window, 'resize', function() {
  700.             var myLatLng = new google.maps.LatLng(<?php echo $wpgmza_lat; ?>,<?php echo $wpgmza_lng; ?>);
  701.             MYMAP.map.setCenter(myLatLng);
  702.             });
  703.         MYMAP.placeMarkers = function(filename,map_id) {
  704.  
  705.             jQuery.get(filename, function(xml){
  706.                     jQuery(xml).find("marker").each(function(){
  707.                                     var wpmgza_map_id = jQuery(this).find('map_id').text();
  708.  
  709.                                     if (wpmgza_map_id == map_id) {
  710.                                         var wpmgza_address = jQuery(this).find('address').text();
  711.                                         var lat = jQuery(this).find('lat').text();
  712.                                         var lng = jQuery(this).find('lng').text();
  713.  
  714.                                         var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
  715.                                         MYMAP.bounds.extend(point);
  716.                                         var marker = new google.maps.Marker({
  717.                                                 position: point,
  718.                                                 map: MYMAP.map
  719.                                             });
  720.                                         var html='<strong>'+wpmgza_address+'</strong>';
  721.  
  722.                                         google.maps.event.addListener(marker, 'click', function(evt) {
  723.                                                 infoWindow.close();
  724.                                                 infoWindow.setContent(html);
  725.                                                 infoWindow.open(MYMAP.map, marker);
  726.                                                 //MYMAP.map.setCenter(this.position);
  727.  
  728.                                         });
  729.                                     }
  730.                     });
  731.             });
  732.     }
  733.  
  734.         </script>
  735. <?php
  736.     }
  737.     wpgmaps_debugger("u_js_b_end");
  738. }
  739.  
  740.  
  741.  
  742.  
  743. function wpgmaps_update_xml_file($mapid = false) {
  744.  
  745. //    wpgmaps_debugger("update_xml_start");
  746.  
  747.     if (!$mapid) {
  748.         $mapid = $_POST['map_id'];
  749.     }
  750.     if (!$mapid) {
  751.         $mapid = $_GET['map_id'];
  752.     }
  753.     global $wpdb;
  754.     $dom = new DOMDocument('1.0');
  755.     $dom->formatOutput = true;
  756.     $channel_main = $dom->createElement('markers');
  757.     $channel = $dom->appendChild($channel_main);
  758.     $table_name = $wpdb->prefix . "wpgmza";
  759.  
  760.  
  761.     // PREVIOUS VERSION HANDLING
  762.     if (function_exists('wpgmza_register_pro_version')) {
  763.             $prov = get_option("WPGMZA_PRO");
  764.             $wpgmza_pro_version = $prov['version'];
  765.                 $results = $wpdb->get_results(
  766.                     "
  767.                    SELECT *
  768.                    FROM $table_name
  769.                    WHERE `map_id` = '$mapid'
  770.  
  771.                    "
  772.                 );
  773.         }
  774.         else {
  775.             $results = $wpdb->get_results(
  776.                 "
  777.                SELECT *
  778.                FROM $table_name
  779.                WHERE `map_id` = '$mapid'
  780.  
  781.                "
  782.             );
  783.         }
  784.  
  785.  
  786.  
  787.  
  788.     foreach ( $results as $result )
  789.     {
  790.         $id = $result->id;
  791.         $address = stripslashes($result->address);
  792.         $description = stripslashes($result->desc);
  793.         $pic = $result->pic;
  794.         if (!$pic) { $pic = ""; }
  795.         $icon = $result->icon;
  796.         if (!$icon) { $icon = ""; }
  797.         $link_url = $result->link;
  798.         if ($link_url) {  } else { $link_url = ""; }
  799.         $lat = $result->lat;
  800.         $lng = $result->lng;
  801.         $anim = $result->anim;
  802.         $infoopen = $result->infoopen;
  803.         $mtitle = stripslashes($result->title);
  804.         $map_id = $result->map_id;
  805.  
  806.         $channel = $channel_main->appendChild($dom->createElement('marker'));
  807.         $title = $channel->appendChild($dom->createElement('marker_id'));
  808.         $title->appendChild($dom->CreateTextNode($id));
  809.         $title = $channel->appendChild($dom->createElement('map_id'));
  810.         $title->appendChild($dom->CreateTextNode($map_id));
  811.         $title = $channel->appendChild($dom->createElement('title'));
  812.         $title->appendChild($dom->CreateTextNode($mtitle));
  813.         $title = $channel->appendChild($dom->createElement('address'));
  814.         $title->appendChild($dom->CreateTextNode($address));
  815.         $desc = $channel->appendChild($dom->createElement('desc'));
  816.         $desc->appendChild($dom->CreateTextNode($description));
  817.         $desc = $channel->appendChild($dom->createElement('pic'));
  818.         $desc->appendChild($dom->CreateTextNode($pic));
  819.         $desc = $channel->appendChild($dom->createElement('icon'));
  820.         $desc->appendChild($dom->CreateTextNode($icon));
  821.         $desc = $channel->appendChild($dom->createElement('linkd'));
  822.         $desc->appendChild($dom->CreateTextNode($link_url));
  823.         $bd = $channel->appendChild($dom->createElement('lat'));
  824.         $bd->appendChild($dom->CreateTextNode($lat));
  825.         $bd = $channel->appendChild($dom->createElement('lng'));
  826.         $bd->appendChild($dom->CreateTextNode($lng));
  827.         $bd = $channel->appendChild($dom->createElement('anim'));
  828.         $bd->appendChild($dom->CreateTextNode($anim));
  829.         $bd = $channel->appendChild($dom->createElement('infoopen'));
  830.         $bd->appendChild($dom->CreateTextNode($infoopen));
  831.  
  832.  
  833.     }
  834.     if (is_multisite()) {
  835.         global $blog_id;
  836.         @$dom->save(WP_PLUGIN_DIR.'/'.plugin_basename(dirname(__FILE__)).'/'.$blog_id.'-'.$mapid.'markers.xml');
  837.     } else {
  838.  
  839.         // PREVIOUS VERSION HANDLING
  840.         if (function_exists('wpgmza_register_pro_version')) {
  841.             $prov = get_option("WPGMZA_PRO");
  842.             $wpgmza_pro_version = $prov['version'];
  843.             @$dom->save(WP_PLUGIN_DIR.'/'.plugin_basename(dirname(__FILE__)).'/'.$mapid.'markers.xml');
  844.         }
  845.         else {
  846.             @$dom->save(WP_PLUGIN_DIR.'/'.plugin_basename(dirname(__FILE__)).'/'.$mapid.'markers.xml');
  847.         }
  848.  
  849.     }
  850.     //wpgmaps_debugger("update_xml_end");
  851. }
  852.  
  853.  
  854.  
  855. function wpgmaps_update_all_xml_file() {
  856.     global $wpdb;
  857.  
  858.     $table_name = $wpdb->prefix . "wpgmza_maps";
  859.     $results = $wpdb->get_results("SELECT `id` FROM $table_name WHERE `active` = 0");
  860.  
  861.     foreach ( $results as $result ) {
  862.         $map_id = $result->id;
  863.         wpgmaps_update_xml_file($map_id);
  864.     }
  865. }
  866.  
  867.  
  868.  
  869. function wpgmaps_action_callback_basic() {
  870.         global $wpdb;
  871.         global $wpgmza_tblname;
  872.         global $wpgmza_p;
  873.         $check = check_ajax_referer( 'wpgmza', 'security' );
  874.         $table_name = $wpdb->prefix . "wpgmza";
  875.  
  876.         if ($check == 1) {
  877.  
  878.             if ($_POST['action'] == "add_marker") {
  879.                   $rows_affected = $wpdb->insert( $table_name, array( 'map_id' => $_POST['map_id'], 'address' => $_POST['address'], 'lat' => $_POST['lat'], 'lng' => $_POST['lng'] ) );
  880.                   wpgmaps_update_xml_file($_POST['map_id']);
  881.                   echo wpgmza_return_marker_list($_POST['map_id']);
  882.            }
  883.             if ($_POST['action'] == "edit_marker") {
  884.                   $cur_id = $_POST['edit_id'];
  885.                   $rows_affected = $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET address = %s, lat = %f, lng = %f WHERE id = %d", $_POST['address'], $_POST['lat'], $_POST['lng'], $cur_id) );
  886.                   wpgmaps_update_xml_file($_POST['map_id']);
  887.                   echo wpgmza_return_marker_list($_POST['map_id']);
  888.            }
  889.             if ($_POST['action'] == "delete_marker") {
  890.                 $marker_id = $_POST['marker_id'];
  891.                 $wpdb->query(
  892.                         "
  893.                        DELETE FROM $wpgmza_tblname
  894.                        WHERE `id` = '$marker_id'
  895.                        LIMIT 1
  896.                        "
  897.                 );
  898.                 wpgmaps_update_xml_file($_POST['map_id']);
  899.                 echo wpgmza_return_marker_list($_POST['map_id']);
  900.  
  901.             }
  902.         }
  903.  
  904.     die(); // this is required to return a proper result
  905.  
  906. }
  907.  
  908. function wpgmaps_load_maps_api() {
  909.     wpgmaps_debugger("load_maps_api_start");
  910.     wp_enqueue_script('google-maps' , 'http://maps.google.com/maps/api/js?sensor=true' , false , '3');
  911.     wpgmaps_debugger("load_maps_api_end");
  912. }
  913.  
  914. function wpgmaps_tag_basic( $atts ) {
  915.         wpgmaps_debugger("tag_basic_start");
  916.         global $wpgmza_current_map_id;
  917.         extract( shortcode_atts( array(
  918.         'id' => '1'
  919.     ), $atts ) );
  920.         global $short_code_active;
  921.         $wpgmza_current_map_id = $atts['id'];
  922.  
  923.         $res = wpgmza_get_map_data($atts['id']);
  924.         $short_code_active = true;
  925.         //$wpgmza_data = get_option('WPGMZA');
  926.         $map_align = $res->alignment;
  927.  
  928.  
  929.         $map_width_type = $res->map_width_type;
  930.         $map_height_type = $res->map_height_type;
  931.  
  932.         if (!isset($map_width_type)) { $map_width_type == "px"; }
  933.         if (!isset($map_height_type)) { $map_height_type == "px"; }
  934.  
  935.  
  936.         if ($map_width_type == "%" && intval($res->map_width) > 100) { $res->map_width = 100; }
  937.         if ($map_height_type == "%" && intval($res->map_height) > 100) { $res->map_height = 100; }
  938.  
  939.         if (!$map_align || $map_align == "" || $map_align == "1") { $map_align = "float:left;"; }
  940.         else if ($map_align == "2") { $map_align = "margin-left:auto !important; margin-right:auto; !important; align:center;"; }
  941.         else if ($map_align == "3") { $map_align = "float:right;"; }
  942.         else if ($map_align == "4") { $map_align = ""; }
  943.         $map_style = "style=\"display:block; overflow:auto; width:".$res->map_width."".$map_width_type."; height:".$res->map_height."".$map_height_type."; $map_align\"";
  944.  
  945.  
  946.         $ret_msg .= "
  947.            <style>
  948.            #wpgmza_map img { max-width:none !important; }
  949.            </style>
  950.            <div id=\"wpgmza_map\" $map_style>&nbsp;</div>
  951.  
  952.  
  953.        ";
  954.         return $ret_msg;
  955.         wpgmaps_debugger("tag_basic_end");
  956. }
  957.  
  958. function wpgmaps_get_plugin_url() {
  959.     if ( !function_exists('plugins_url') )
  960.         return get_option('siteurl') . '/wp-content/plugins/' . plugin_basename(dirname(__FILE__));
  961.         return plugins_url(plugin_basename(dirname(__FILE__)));
  962. }
  963.  
  964. function wpgmaps_head() {
  965.     wpgmaps_debugger("head_start");
  966.  
  967.     global $wpgmza_tblname_maps;
  968.  
  969.  
  970.  
  971.  
  972.     if (isset($_POST['wpgmza_savemap'])){
  973.         global $wpdb;
  974.  
  975.         //var_dump($_POST);
  976.  
  977.         $map_id = attribute_escape($_POST['wpgmza_id']);
  978.         $map_title = attribute_escape($_POST['wpgmza_title']);
  979.         $map_height = attribute_escape($_POST['wpgmza_height']);
  980.         $map_width = attribute_escape($_POST['wpgmza_width']);
  981.         $map_width_type = attribute_escape($_POST['wpgmza_map_width_type']);
  982.         $map_height_type = attribute_escape($_POST['wpgmza_map_height_type']);
  983.         $map_start_location = attribute_escape($_POST['wpgmza_start_location']);
  984.         $map_start_zoom = intval($_POST['wpgmza_start_zoom']);
  985.         $type = intval($_POST['wpgmza_map_type']);
  986.         $alignment = intval($_POST['wpgmza_map_align']);
  987.         $directions_enabled = intval($_POST['wpgmza_directions']);
  988.         $bicycle_enabled = intval($_POST['wpgmza_bicycle']);
  989.         $traffic_enabled = intval($_POST['wpgmza_traffic']);
  990.         $dbox = intval($_POST['wpgmza_dbox']);
  991.         $dbox_width = attribute_escape($_POST['wpgmza_dbox_width']);
  992.         $listmarkers = intval($_POST['wpgmza_listmarkers']);
  993.         $listmarkers_advanced = intval($_POST['wpgmza_listmarkers_advanced']);
  994.  
  995.  
  996.         $gps = explode(",",$map_start_location);
  997.         $map_start_lat = $gps[0];
  998.         $map_start_lng = $gps[1];
  999.         $map_default_marker = $_POST['upload_default_marker'];
  1000.         $kml = attribute_escape($_POST['wpgmza_kml']);
  1001.         $fusion = attribute_escape($_POST['wpgmza_fusion']);
  1002.  
  1003.         $data['map_default_starting_lat'] = $map_start_lat;
  1004.         $data['map_default_starting_lng'] = $map_start_lng;
  1005.         $data['map_default_height'] = $map_height;
  1006.         $data['map_default_width'] = $map_width;
  1007.         $data['map_default_zoom'] = $map_start_zoom;
  1008.         $data['map_default_type'] = $type;
  1009.         $data['map_default_alignment'] = $alignment;
  1010.         $data['map_default_directions'] = $directions_enabled;
  1011.         $data['map_default_bicycle'] = $bicycle_enabled;
  1012.         $data['map_default_traffic'] = $traffic_enabled;
  1013.         $data['map_default_dbox'] = $dbox;
  1014.         $data['map_default_dbox_width'] = $dbox_width;
  1015.         $data['map_default_listmarkers'] = $listmarkers;
  1016.         $data['map_default_listmarkers_advanced'] = $listmarkers_advanced;
  1017.         $data['map_default_marker'] = $map_default_marker;
  1018.         $data['map_default_width_type'] = $map_width_type;
  1019.         $data['map_default_height_type'] = $map_height_type;
  1020.  
  1021.  
  1022.  
  1023.         $rows_affected = $wpdb->query( $wpdb->prepare(
  1024.                 "UPDATE $wpgmza_tblname_maps SET
  1025.                map_title = %s,
  1026.                map_width = %s,
  1027.                map_height = %s,
  1028.                map_start_lat = %f,
  1029.                map_start_lng = %f,
  1030.                map_start_location = %s,
  1031.                map_start_zoom = %d,
  1032.                default_marker = %s,
  1033.                type = %d,
  1034.                alignment = %d,
  1035.                directions_enabled = %d,
  1036.                kml = %s,
  1037.                bicycle = %d,
  1038.                traffic = %d,
  1039.                dbox = %d,
  1040.                dbox_width = %s,
  1041.                listmarkers = %d,
  1042.                listmarkers_advanced = %d,
  1043.                fusion = %s,
  1044.                map_width_type = %s,
  1045.                map_height_type = %s
  1046.                WHERE id = %d",
  1047.  
  1048.                 $map_title,
  1049.                 $map_width,
  1050.                 $map_height,
  1051.                 $map_start_lat,
  1052.                 $map_start_lng,
  1053.                 $map_start_location,
  1054.                 $map_start_zoom,
  1055.                 $map_default_marker,
  1056.                 $type,
  1057.                 $alignment,
  1058.                 $directions_enabled,
  1059.                 $kml,
  1060.                 $bicycle_enabled,
  1061.                 $traffic_enabled,
  1062.                 $dbox,
  1063.                 $dbox_width,
  1064.                 $listmarkers,
  1065.                 $listmarkers_advanced,
  1066.                 $fusion,
  1067.                 $map_width_type,
  1068.                 $map_height_type,
  1069.                 $map_id)
  1070.         );
  1071.  
  1072.         //echo $wpdb->print_error();
  1073.  
  1074.  
  1075.         update_option('WPGMZA_SETTINGS', $data);
  1076.        
  1077.  
  1078.         echo "<div class='updated'>";
  1079.         _e("Your settings have been saved.");
  1080.         echo "</div>";
  1081.  
  1082.    }
  1083.  
  1084.    else if (isset($_POST['wpgmza_save_maker_location'])){
  1085.         global $wpdb;
  1086.         global $wpgmza_tblname;
  1087.         $mid = attribute_escape($_POST['wpgmaps_marker_id']);
  1088.         $wpgmaps_marker_lat = attribute_escape($_POST['wpgmaps_marker_lat']);
  1089.         $wpgmaps_marker_lng = attribute_escape($_POST['wpgmaps_marker_lng']);
  1090.  
  1091.         $rows_affected = $wpdb->query( $wpdb->prepare(
  1092.                 "UPDATE $wpgmza_tblname SET
  1093.                lat = %s,
  1094.                lng = %s
  1095.                WHERE id = %d",
  1096.  
  1097.                 $wpgmaps_marker_lat,
  1098.                 $wpgmaps_marker_lng,
  1099.                 $mid)
  1100.         );
  1101.  
  1102.  
  1103.  
  1104.  
  1105.         //update_option('WPGMZA', $data);
  1106.         echo "<div class='updated'>";
  1107.         _e("Your marker location has been saved.");
  1108.         echo "</div>";
  1109.  
  1110.  
  1111.    }
  1112.    else if (isset($_POST['wpgmza_save_settings'])){
  1113.         global $wpdb;
  1114.         $wpgmza_data['wpgmza_settings_image_width'] = attribute_escape($_POST['wpgmza_settings_image_width']);
  1115.         $wpgmza_data['wpgmza_settings_image_height'] = attribute_escape($_POST['wpgmza_settings_image_height']);
  1116.         $wpgmza_data['wpgmza_settings_use_timthumb'] = attribute_escape($_POST['wpgmza_settings_use_timthumb']);
  1117.         $wpgmza_data['wpgmza_settings_infowindow_width'] = attribute_escape($_POST['wpgmza_settings_infowindow_width']);
  1118.         $wpgmza_data['wpgmza_settings_infowindow_links'] = attribute_escape($_POST['wpgmza_settings_infowindow_links']);
  1119.         $wpgmza_data['wpgmza_settings_infowindow_address'] = attribute_escape($_POST['wpgmza_settings_infowindow_address']);
  1120.         $wpgmza_data['wpgmza_settings_map_streetview'] = attribute_escape($_POST['wpgmza_settings_map_streetview']);
  1121.         $wpgmza_data['wpgmza_settings_map_zoom'] = attribute_escape($_POST['wpgmza_settings_map_zoom']);
  1122.         $wpgmza_data['wpgmza_settings_map_pan'] = attribute_escape($_POST['wpgmza_settings_map_pan']);
  1123.         $wpgmza_data['wpgmza_settings_map_type'] = attribute_escape($_POST['wpgmza_settings_map_type']);
  1124.         $wpgmza_data['wpgmza_settings_map_scroll'] = attribute_escape($_POST['wpgmza_settings_map_scroll']);
  1125.         $wpgmza_data['wpgmza_settings_ugm_striptags'] = attribute_escape($_POST['wpgmza_settings_map_striptags']);
  1126.         update_option('WPGMZA_OTHER_SETTINGS', $wpgmza_data);
  1127.         echo "<div class='updated'>";
  1128.         _e("Your settings have been saved.");
  1129.         echo "</div>";
  1130.  
  1131.  
  1132.    }
  1133.  
  1134.  
  1135.     wpgmaps_debugger("head_end");
  1136.  
  1137. }
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144. function wpgmaps_admin_menu() {
  1145.     add_menu_page('WPGoogle Maps', __('Maps','wp-google-maps'), 'manage_options', 'wp-google-maps-menu', 'wpgmaps_menu_layout', wpgmaps_get_plugin_url()."/images/map_app_small.png");
  1146.     if (function_exists('wpgmza_pro_advanced_menu')) {
  1147.         add_submenu_page('wp-google-maps-menu', 'WP Google Maps - Advanced Options', __('Advanced','wp-google-maps'), 'manage_options' , 'wp-google-maps-menu-advanced', 'wpgmaps_menu_advanced_layout');
  1148.     }
  1149.         add_submenu_page('wp-google-maps-menu', 'WP Google Maps - Settings', __('Settings','wp-google-maps'), 'manage_options' , 'wp-google-maps-menu-settings', 'wpgmaps_menu_settings_layout');
  1150.  
  1151. //    add_options_page('WP Google Maps', 'WP Google Maps', 'manage_options', 'wp-google-maps-menu', 'wpgmaps_menu_layout');
  1152. }
  1153. function wpgmaps_menu_layout() {
  1154.     //check to see if we have write permissions to the plugin folder
  1155.     //
  1156.     //
  1157.     wpgmaps_debugger("menu_start");
  1158.  
  1159.  
  1160.     if (!$_GET['action']) {
  1161.  
  1162.         wpgmza_map_page();
  1163.  
  1164.     } else {
  1165.  
  1166.  
  1167.         if ($_GET['action'] == "trash" && isset($_GET['map_id'])) {
  1168.  
  1169.             if ($_GET['s'] == "1") {
  1170.                 if (wpgmaps_trash_map($_GET['map_id'])) {
  1171.                     //wp_redirect( admin_url('admin.php?page=wp-google-maps-menu') );
  1172.                     echo "<script>window.location = \"".get_option('siteurl')."/wp-admin/admin.php?page=wp-google-maps-menu\"</script>";
  1173.                 } else {
  1174.                     _e("There was a problem deleting the map.");;
  1175.                 }
  1176.             } else {
  1177.                 $res = wpgmza_get_map_data($_GET['map_id']);
  1178.                 echo "<h2>".__("Delete your map","wp-google-maps")."</h2><p>".__("Are you sure you want to delete the map","wp-google-maps")." <strong>\"".$res->map_title."?\"</strong> <br /><a href='?page=wp-google-maps-menu&action=trash&map_id=".$_GET['map_id']."&s=1'>".__("Yes","wp-google-maps")."</a> | <a href='?page=wp-google-maps-menu'>".__("No","wp-google-maps")."</a></p>";
  1179.             }
  1180.  
  1181.  
  1182.         }
  1183.         else if ($_GET['action'] == "edit_marker" && isset($_GET['id'])) {
  1184.  
  1185.             wpgmza_edit_marker($_GET['id']);
  1186.  
  1187.         }
  1188.         else {
  1189.  
  1190.             if (function_exists(wpgmza_register_pro_version)) {
  1191.  
  1192.                     $prov = get_option("WPGMZA_PRO");
  1193.                     $wpgmza_pro_version = $prov['version'];
  1194.                     if (floatval($wpgmza_pro_version) < 4.01 || $wpgmza_pro_version == null) {
  1195.                         wpgmaps_upgrade_notice();
  1196.                         wpgmza_pro_menu();
  1197.                     } else {
  1198.                         wpgmza_pro_menu();
  1199.                     }
  1200.  
  1201.  
  1202.             } else {
  1203.                 wpgmza_basic_menu();
  1204.  
  1205.             }
  1206.  
  1207.         }
  1208.     }
  1209.  
  1210.     wpgmaps_debugger("menu_end");
  1211.  
  1212. }
  1213.  
  1214.  
  1215. function wpgmaps_menu_settings_layout() {
  1216.     wpgmaps_debugger("menu_settings_start");
  1217.     if (function_exists(wpgmza_register_pro_version)) {
  1218.         if (function_exists(wpgmaps_settings_page_pro)) {
  1219.             wpgmaps_settings_page_pro();
  1220.         }
  1221.     } else {
  1222.         wpgmaps_settings_page_basic();
  1223.     }
  1224.  
  1225.  
  1226.  
  1227.     wpgmaps_debugger("menu_settings_end");
  1228. }
  1229.  
  1230.  
  1231. function wpgmaps_settings_page_basic() {
  1232.     echo"<div class=\"wrap\"><div id=\"icon-edit\" class=\"icon32 icon32-posts-post\"><br></div><h2>".__("WP Google Map Settings","wp-google-maps")."</h2>";
  1233.  
  1234.     $wpgmza_settings = get_option("WPGMZA_OTHER_SETTINGS");
  1235.     $wpgmza_settings_map_streetview = $wpgmza_settings['wpgmza_settings_map_streetview'];
  1236.     $wpgmza_settings_map_zoom = $wpgmza_settings['wpgmza_settings_map_zoom'];
  1237.     $wpgmza_settings_map_pan = $wpgmza_settings['wpgmza_settings_map_pan'];
  1238.     $wpgmza_settings_map_type = $wpgmza_settings['wpgmza_settings_map_type'];
  1239.     if ($wpgmza_settings_map_streetview == "yes") { $wpgmza_streetview_checked = "checked='checked'"; }
  1240.     if ($wpgmza_settings_map_zoom == "yes") { $wpgmza_zoom_checked = "checked='checked'"; }
  1241.     if ($wpgmza_settings_map_pan == "yes") { $wpgmza_pan_checked = "checked='checked'"; }
  1242.     if ($wpgmza_settings_map_type == "yes") { $wpgmza_type_checked = "checked='checked'"; }
  1243.  
  1244.     if (function_exists(wpgmza_register_pro_version)) {
  1245.         $pro_settings1 = wpgmaps_settings_page_sub('infowindow');
  1246.         $prov = get_option("WPGMZA_PRO");
  1247.         $wpgmza_pro_version = $prov['version'];
  1248.         if (floatval($wpgmza_pro_version) < 3.9) {
  1249.             $prov_msg = "<div class='error below-h1'><p>Please note that these settings will only work with the Pro Addon version 3.9 and above. Your current version is $wpgmza_pro_version. To download the latest version, please email <a href='mailto:nick@wpgmaps.com'>nick@wpgmaps.com</a></p></div>";
  1250.         }
  1251.     }
  1252.  
  1253.     echo "
  1254.            
  1255.            <form action='' method='post' id='wpgmaps_options'>
  1256.                <p>$prov_msg</p>
  1257.  
  1258.                $pro_settings1
  1259.                <h3>".__("Map Settings")."</h3>
  1260.                <table class='form-table'>
  1261.                    <tr>
  1262.                         <td width='200' valign='top'>".__("General Map Settings","wp-google-maps").":</td>
  1263.                         <td>
  1264.                                <input name='wpgmza_settings_map_streetview' type='checkbox' id='wpgmza_settings_map_streetview' value='yes' $wpgmza_streetview_checked /> ".__("Disable StreetView")."<br />
  1265.                                <input name='wpgmza_settings_map_zoom' type='checkbox' id='wpgmza_settings_map_zoom' value='yes' $wpgmza_zoom_checked /> ".__("Disable Zoom Controls")."<br />
  1266.                                <input name='wpgmza_settings_map_pan' type='checkbox' id='wpgmza_settings_map_pan' value='yes' $wpgmza_pan_checked /> ".__("Disable Pan Controls")."<br />
  1267.                                <input name='wpgmza_settings_map_type' type='checkbox' id='wpgmza_settings_map_type' value='yes' $wpgmza_type_checked /> ".__("Disable Map Type Controls")."<br />
  1268.                                
  1269.                        </td>
  1270.                    </tr>
  1271.                    
  1272.                </table>
  1273.  
  1274.  
  1275.                <p class='submit'><input type='submit' name='wpgmza_save_settings' class='button-primary' value='".__("Save Settings","wp-google-maps")." &raquo;' /></p>
  1276.  
  1277.  
  1278.            </form>
  1279.    ";
  1280.  
  1281.     echo "</div>";
  1282.  
  1283.    
  1284. }
  1285.  
  1286. function wpgmaps_menu_advanced_layout() {
  1287.     if (function_exists(wpgmza_register_pro_version)) {
  1288.         wpgmza_pro_advanced_menu();
  1289.     }
  1290.  
  1291. }
  1292.  
  1293. function wpgmza_map_page() {
  1294.     wpgmaps_debugger("map_page_start");
  1295.  
  1296.     if (function_exists(wpgmza_register_pro_version)) {
  1297.         echo"<div class=\"wrap\"><div id=\"icon-edit\" class=\"icon32 icon32-posts-post\"><br></div><h2>".__("Your Maps","wp-google-maps")." <a href=\"admin.php?page=wp-google-maps-menu&action=new\" class=\"add-new-h2\">".__("Add New","wp-google-maps")."</a></h2>";
  1298.         wpgmaps_check_versions();
  1299.         wpgmaps_list_maps();
  1300.     } else {
  1301.         echo"<div class=\"wrap\"><div id=\"icon-edit\" class=\"icon32 icon32-posts-post\"><br></div><h2>".__("Your Maps","wp-google-maps")."</h2>";
  1302.         echo"<p><i><a href='http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=mappage_1' title='".__("Pro Version")."'>".__("Create unlimited maps","wp-google-maps")."</a> ".__("with the","wp-google-maps")." <a href='http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=mappage_2' title='Pro Version'>".__("Pro Version","wp-google-maps")."</a> ".__("of WP Google Maps for only","wp-google-maps")." <strong>$14.99!</strong></i></p>";
  1303.         wpgmaps_list_maps();
  1304.  
  1305.  
  1306.     }
  1307.     echo "</div>";
  1308.     wpgmaps_debugger("map_page_end");
  1309.  
  1310. }
  1311. function wpgmaps_list_maps() {
  1312.     wpgmaps_debugger("list_maps_start");
  1313.  
  1314.     global $wpdb;
  1315.     global $wpgmza_tblname_maps;
  1316.  
  1317.     if ($wpgmza_tblname_maps) { $table_name = $wpgmza_tblname_maps; } else { $table_name = $wpdb->prefix . "wpgmza_maps"; }
  1318.  
  1319.  
  1320.     $results = $wpdb->get_results(
  1321.     "
  1322.     SELECT *
  1323.     FROM $table_name
  1324.        WHERE `active` = 0
  1325.        ORDER BY `id` DESC
  1326.     "
  1327.     );
  1328.     echo "
  1329.  
  1330.      <table class=\"wp-list-table widefat fixed \" cellspacing=\"0\">
  1331.     <thead>
  1332.     <tr>
  1333.         <th scope='col' id='id' class='manage-column column-id sortable desc'  style=''><span>".__("ID","wp-google-maps")."</span></th>
  1334.                <th scope='col' id='map_title' class='manage-column column-map_title sortable desc'  style=''><span>".__("Title","wp-google-maps")."</span></th>
  1335.                <th scope='col' id='map_width' class='manage-column column-map_width' style=\"\">".__("Width","wp-google-maps")."</th>
  1336.                <th scope='col' id='map_height' class='manage-column column-map_height'  style=\"\">".__("Height","wp-google-maps")."</th>
  1337.                <th scope='col' id='type' class='manage-column column-type sortable desc'  style=\"\"><span>".__("Type","wp-google-maps")."</span></th>
  1338.        </tr>
  1339.     </thead>
  1340.        <tbody id=\"the-list\" class='list:wp_list_text_link'>
  1341. ";
  1342.     foreach ( $results as $result ) {
  1343.         if ($result->type == "1") { $map_type = __("Roadmap","wp-google-maps"); }
  1344.         else if ($result->type == "2") { $map_type = __("Satellite","wp-google-maps"); }
  1345.         else if ($result->type == "3") { $map_type = __("Hybrid","wp-google-maps"); }
  1346.         else if ($result->type == "4") { $map_type = __("Terrain","wp-google-maps"); }
  1347.         if (function_exists(wpgmza_register_pro_version)) {
  1348.             $trashlink = "| <a href=\"?page=wp-google-maps-menu&action=trash&map_id=".$result->id."\" title=\"Trash\">".__("Trash","wp-google-maps")."</a>";
  1349.         }
  1350.         echo "<tr id=\"record_".$result->id."\">";
  1351.         echo "<td class='id column-id'>".$result->id."</td>";
  1352.         echo "<td class='map_title column-map_title'><strong><big><a href=\"?page=wp-google-maps-menu&action=edit&map_id=".$result->id."\" title=\"".__("Edit","wp-google-maps")."\">".$result->map_title."</a></big></strong><br /><a href=\"?page=wp-google-maps-menu&action=edit&map_id=".$result->id."\" title=\"".__("Edit","wp-google-maps")."\">".__("Edit","wp-google-maps")."</a> $trashlink</td>";
  1353.         echo "<td class='map_width column-map_width'>".$result->map_width."</td>";
  1354.         echo "<td class='map_width column-map_height'>".$result->map_height."</td>";
  1355.         echo "<td class='type column-type'>".$map_type."</td>";
  1356.         echo "</tr>";
  1357.  
  1358.  
  1359.     }
  1360.     echo "</table>";
  1361.     wpgmaps_debugger("list_maps_end");
  1362. }
  1363.  
  1364. function wpgmaps_check_versions() {
  1365.     wpgmaps_debugger("check_versions_start");
  1366.  
  1367.     $prov = get_option("WPGMZA_PRO");
  1368.     $wpgmza_pro_version = $prov['version'];
  1369.     if (floatval($wpgmza_pro_version) < 3 || $wpgmza_pro_version == null) {
  1370.         wpgmaps_upgrade_notice();
  1371.     }
  1372.  
  1373.  
  1374.     wpgmaps_debugger("check_versions_end");
  1375. }
  1376.  
  1377. function wpgmza_basic_menu() {
  1378.     wpgmaps_debugger("bm_start");
  1379.  
  1380.     global $wpgmza_tblname_maps;
  1381.     global $wpdb;
  1382.     if (!wpgmaps_check_permissions()) { wpgmaps_permission_warning(); }
  1383.     if ($_GET['action'] == "edit" && isset($_GET['map_id'])) {
  1384.  
  1385.         $res = wpgmza_get_map_data($_GET['map_id']);
  1386.  
  1387.  
  1388.        if ($res->map_start_zoom) { $wpgmza_zoom[intval($res->map_start_zoom)] = "SELECTED"; } else { $wpgmza_zoom[8] = "SELECTED"; }
  1389.        if ($res->type) { $wpgmza_map_type[intval($res->type)] = "SELECTED"; } else { $wpgmza_map_type[1] = "SELECTED"; }
  1390.        if ($res->alignment) { $wpgmza_map_align[intval($res->alignment)] = "SELECTED"; } else { $wpgmza_map_align[1] = "SELECTED"; }
  1391.  
  1392.        if ($res->map_width_type == "%") { $wpgmza_map_width_type_percentage = "SELECTED"; } else { $wpgmza_map_width_type_px = "SELECTED"; }
  1393.        if ($res->map_height_type == "%") { $wpgmza_map_height_type_percentage = "SELECTED"; } else { $wpgmza_map_height_type_px = "SELECTED"; }
  1394.  
  1395.  
  1396.         $wpgmza_act = "disabled readonly";
  1397.         $wpgmza_act_msg = "<span style=\"font-size:16px; color:#666;\">".__("Add custom icons, titles, descriptions, pictures and links to your markers with the","wp-google-maps")." \"<a href=\"http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=below_marker\" title=\"".__("Pro Edition","wp-google-maps")."\" target=\"_BLANK\">".__("Pro Edition","wp-google-maps")."</a>\" ".__("of this plugin for just","wp-google-maps")." <strong>$14.99</strong></span>";
  1398.         $wpgmza_csv = "<p><a href=\"http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=csv_link\" title=\"".__("Pro Edition","wp-google-maps")."\">".__("Purchase the Pro Edition","wp-google-maps")."</a> ".__("of WP Google Maps and save your markers to a CSV file!","wp-google-maps")."</p>";
  1399.     }
  1400.         echo "
  1401.  
  1402.           <div class='wrap'>
  1403.                <h1>WP Google Maps</h1>
  1404.                <div class='wide'>
  1405.  
  1406.  
  1407.  
  1408.                    <h2>".__("Map Settings","wp-google-maps")."</h2>
  1409.                    <form action='' method='post' id='wpgmaps_options'>
  1410.                    <p></p>
  1411.  
  1412.                    <input type='hidden' name='http_referer' value='".$_SERVER['PHP_SELF']."' />
  1413.                    <input type='hidden' name='wpgmza_id' id='wpgmza_id' value='".$res->id."' />
  1414.                    <input id='wpgmza_start_location' name='wpgmza_start_location' type='hidden' size='40' maxlength='100' value='".$res->map_start_location."' />
  1415.                    <select id='wpgmza_start_zoom' name='wpgmza_start_zoom' style=\"display:none;\">
  1416.                        <option value=\"1\" ".$wpgmza_zoom[1].">1</option>
  1417.                        <option value=\"2\" ".$wpgmza_zoom[2].">2</option>
  1418.                        <option value=\"3\" ".$wpgmza_zoom[3].">3</option>
  1419.                        <option value=\"4\" ".$wpgmza_zoom[4].">4</option>
  1420.                        <option value=\"5\" ".$wpgmza_zoom[5].">5</option>
  1421.                        <option value=\"6\" ".$wpgmza_zoom[6].">6</option>
  1422.                        <option value=\"7\" ".$wpgmza_zoom[7].">7</option>
  1423.                        <option value=\"8\" ".$wpgmza_zoom[8].">8</option>
  1424.                        <option value=\"9\" ".$wpgmza_zoom[9].">9</option>
  1425.                        <option value=\"10\" ".$wpgmza_zoom[10].">10</option>
  1426.                        <option value=\"11\" ".$wpgmza_zoom[11].">11</option>
  1427.                        <option value=\"12\" ".$wpgmza_zoom[12].">12</option>
  1428.                        <option value=\"13\" ".$wpgmza_zoom[13].">13</option>
  1429.                        <option value=\"14\" ".$wpgmza_zoom[14].">14</option>
  1430.                        <option value=\"15\" ".$wpgmza_zoom[15].">15</option>
  1431.                        <option value=\"16\" ".$wpgmza_zoom[16].">16</option>
  1432.                        <option value=\"17\" ".$wpgmza_zoom[17].">17</option>
  1433.                        <option value=\"18\" ".$wpgmza_zoom[18].">18</option>
  1434.                        <option value=\"19\" ".$wpgmza_zoom[19].">19</option>
  1435.                        <option value=\"20\" ".$wpgmza_zoom[20].">20</option>
  1436.                        <option value=\"21\" ".$wpgmza_zoom[21].">21</option>
  1437.                    </select>
  1438.                    <table>
  1439.                        <tr>
  1440.                            <td>".__("Short code","wp-google-maps").":</td>
  1441.                            <td><input type='text' readonly name='shortcode' style='font-size:18px; text-align:center;' value='[wpgmza id=\"".$res->id."\"]' /> <small><i>".__("copy this into your post or page to display the map","wp-google-maps")."</i></td>
  1442.                        </tr>
  1443.                        <tr>
  1444.                            <td>".__("Map Name","wp-google-maps").":</td>
  1445.                            <td><input id='wpgmza_title' name='wpgmza_title' type='text' size='20' maxlength='50' value='".$res->map_title."' /></td>
  1446.                        </tr>
  1447.                        <tr>
  1448.                             <td>".__("Width","wp-google-maps").":</td>
  1449.                             <td>
  1450.                             <input id='wpgmza_width' name='wpgmza_width' type='text' size='4' maxlength='4' value='".$res->map_width."' />
  1451.                             <select id='wpgmza_map_width_type' name='wpgmza_map_width_type'>
  1452.                                <option value=\"px\" $wpgmza_map_width_type_px>px</option>
  1453.                                <option value=\"%\" $wpgmza_map_width_type_percentage>%</option>
  1454.                             </select>
  1455.  
  1456.                            </td>
  1457.                        </tr>
  1458.                        <tr>
  1459.                            <td>".__("Height","wp-google-maps").":</td>
  1460.                            <td><input id='wpgmza_height' name='wpgmza_height' type='text' size='4' maxlength='4' value='".$res->map_height."' />
  1461.                             <select id='wpgmza_map_height_type' name='wpgmza_map_height_type'>
  1462.                                <option value=\"px\" $wpgmza_map_height_type_px>px</option>
  1463.                                <option value=\"%\" $wpgmza_map_height_type_percentage>%</option>
  1464.                             </select>
  1465.  
  1466. </td>
  1467.                        </tr>
  1468.  
  1469.                        <tr>
  1470.                            <td>".__("Default Marker Image","wp-google-maps").":</td>
  1471.                            <td><input id=\"upload_default_marker\" name=\"upload_default_marker\" type='hidden' size='35' maxlength='700' value='' ".$wpgmza_act."/> <input id=\"upload_default_marker_btn\" type=\"button\" value=\"".__("Upload Image","wp-google-maps")."\" $wpgmza_act /><small><i> ".__("available in the","wp-google-maps")." <a href=\"http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=default_marker\" title=\"".__("Pro Edition","wp-google-maps")."\" target=\"_BLANK\">".__("Pro Edition","wp-google-maps")."</a> ".__("only","wp-google-maps").".   </i></small></td>
  1472.                        </tr>
  1473.                        <tr>
  1474.                            <td>".__("Map type","wp-google-maps").":</td>
  1475.                            <td><select id='wpgmza_map_type' name='wpgmza_map_type'>
  1476.                                <option value=\"1\" ".$wpgmza_map_type[1].">".__("Roadmap","wp-google-maps")."</option>
  1477.                                <option value=\"2\" ".$wpgmza_map_type[2].">".__("Satellite","wp-google-maps")."</option>
  1478.                                <option value=\"3\" ".$wpgmza_map_type[3].">".__("Hybrid","wp-google-maps")."</option>
  1479.                                <option value=\"4\" ".$wpgmza_map_type[4].">".__("Terrain","wp-google-maps")."</option>
  1480.                            </select>
  1481.                            </td>
  1482.                        </tr>
  1483.                        <tr>
  1484.                            <td>".__("Map Alignment","wp-google-maps").":</td>
  1485.                            <td><select id='wpgmza_map_align' name='wpgmza_map_align'>
  1486.                                <option value=\"1\" ".$wpgmza_map_align[1].">".__("Left","wp-google-maps")."</option>
  1487.                                <option value=\"2\" ".$wpgmza_map_align[2].">".__("Center","wp-google-maps")."</option>
  1488.                                <option value=\"3\" ".$wpgmza_map_align[3].">".__("Right","wp-google-maps")."</option>
  1489.                                <option value=\"4\" ".$wpgmza_map_align[4].">".__("None","wp-google-maps")."</option>
  1490.                            </select>
  1491.                            </td>
  1492.                        </tr>
  1493.                        <tr>
  1494.                            <td>".__("KML/GeoRSS URL","wp-google-maps").":</td>
  1495.                            <td>
  1496.                             <input id='wpgmza_kml' name='wpgmza_kml' type='text' size='100' maxlength='700' class='regular-text' value='' $wpgmza_act /><small><i> ".__("available in the","wp-google-maps")." <a href=\"http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=kml\" title=\"".__("Pro Edition","wp-google-maps")."\" target=\"_BLANK\">".__("Pro Edition","wp-google-maps")."</a> ".__("only","wp-google-maps").".   </i></small></td>
  1497.                            </td>
  1498.                        </tr>
  1499.                        <tr>
  1500.                            <td>".__("Fusion Table ID","wp-google-maps").":</td>
  1501.                            <td>
  1502.                             <input id='wpgmza_fusion' name='wpgmza_fusion' type='text' size='100' maxlength='700' class='small-text' value='' $wpgmza_act /><small><i> ".__("available in the","wp-google-maps")." <a href=\"http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=fusion\" title=\"".__("Pro Edition","wp-google-maps")."\" target=\"_BLANK\">".__("Pro Edition","wp-google-maps")."</a> ".__("only","wp-google-maps").".   </i></small></td>
  1503.                            </td>
  1504.                        </tr>
  1505.  
  1506.  
  1507.                        </table>
  1508.                            
  1509.                            <p class='submit'><input type='submit' name='wpgmza_savemap' class='button-primary' value='".__("Save Map","wp-google-maps")." &raquo;' /></p>
  1510.                            <p style=\"width:600px; color:#808080;\">
  1511.                                ".__("Tip: Use your mouse to change the layout of your map. When you have positioned the map to your desired location, press \"Save Map\" to keep your settings.","wp-google-maps")."</p>
  1512.  
  1513.  
  1514.                            <div id=\"wpgmza_map\">&nbsp;</div>
  1515.                            <div id=\"wpgmaps_save_reminder\" style=\"display:none;\"><span style=\"font-size:26px; padding-top:15px; color:red;\"><br />
  1516.                            ".__("Remember to save your map!","wp-google-maps")."
  1517.                            </span></div>
  1518.                            <div style=\"display:block; overflow:auto; background-color:#FFFBCC; padding:10px; border:1px solid #E6DB55; margin-top:5px; margin-bottom:5px;\">
  1519.                                <h2 style=\"padding-top:0; margin-top:0;\">".__("Add a marker","wp-google-maps")."</h2>
  1520.                                <p>
  1521.                                <table>
  1522.                                <input type=\"hidden\" name=\"wpgmza_edit_id\" id=\"wpgmza_edit_id\" value=\"\" />
  1523.                                <tr>
  1524.                                    <td>".__("Title","wp-google-maps").": </td>
  1525.                                    <td><input id='wpgmza_add_title' name='wpgmza_add_title' type='text' size='35' maxlength='200' value='' $wpgmza_act /> &nbsp;<br /></td>
  1526.  
  1527.                                </tr>
  1528.                                <tr>
  1529.                                    <td>".__("Address/GPS","wp-google-maps").": </td>
  1530.                                    <td><input id='wpgmza_add_address' name='wpgmza_add_address' type='text' size='35' maxlength='200' value='' /> &nbsp;<br /></td>
  1531.  
  1532.                                </tr>
  1533.  
  1534.                                <tr><td>".__("Description","wp-google-maps").": </td>
  1535.                                    <td><textarea id='wpgmza_add_desc' name='wpgmza_add_desc' ".$wpgmza_act."></textarea>  &nbsp;<br /></td></tr>
  1536.                                <tr><td>".__("Pic URL","wp-google-maps").": </td>
  1537.                                    <td><input id='wpgmza_add_pic' name=\"wpgmza_add_pic\" type='text' size='35' maxlength='700' value='' ".$wpgmza_act."/> <input id=\"upload_image_button\" type=\"button\" value=\"".__("Upload Image","wp-google-maps")."\" $wpgmza_act /><br /></td></tr>
  1538.                                <tr><td>".__("Link URL","wp-google-maps").": </td>
  1539.                                    <td><input id='wpgmza_link_url' name='wpgmza_link_url' type='text' size='35' maxlength='700' value='' ".$wpgmza_act." /></td></tr>
  1540.                                <tr><td>".__("Custom Marker","wp-google-maps").": </td>
  1541.                                    <td><input id='wpgmza_add_custom_marker' name=\"wpgmza_add_custom_marker\" type='hidden' size='35' maxlength='700' value='' ".$wpgmza_act."/> <input id=\"upload_custom_marker_button\" type=\"button\" value=\"".__("Upload Image","wp-google-maps")."\" $wpgmza_act /> &nbsp;</td></tr>
  1542.                                <tr>
  1543.                                    <td>".__("Animation","wp-google-maps").": </td>
  1544.                                    <td>
  1545.                                        <select name=\"wpgmza_animation\" id=\"wpgmza_animation\" readonly disabled>
  1546.                                            <option value=\"0\">".__("None","wp-google-maps")."</option>
  1547.                                    </td>
  1548.                                </tr>
  1549.  
  1550.                                <tr>
  1551.                                    <td></td>
  1552.                                    <td>
  1553.                                        <span id=\"wpgmza_addmarker_div\"><input type=\"button\" class='button-primary' id='wpgmza_addmarker' value='".__("Add Marker","wp-google-maps")."' /></span> <span id=\"wpgmza_addmarker_loading\" style=\"display:none;\">".__("Adding","wp-google-maps")."...</span>
  1554.                                        <span id=\"wpgmza_editmarker_div\" style=\"display:none;\"><input type=\"button\" id='wpgmza_editmarker'  class='button-primary' value='".__("Save Marker","wp-google-maps")."' /></span><span id=\"wpgmza_editmarker_loading\" style=\"display:none;\">".__("Saving","wp-google-maps")."...</span>
  1555.                                    </td>
  1556.  
  1557.                                </tr>
  1558.  
  1559.                                </table>
  1560.                            </div>
  1561.                            <p>$wpgmza_act_msg</p>
  1562.                            <h2 style=\"padding-top:0; margin-top:0;\">".__("Your Markers","wp-google-maps")."</h2>
  1563.                            <div id=\"wpgmza_marker_holder\">
  1564.                                ".wpgmza_return_marker_list($_GET['map_id'])."
  1565.                            </div>
  1566.  
  1567.                            <br /><br />$wpgmza_csv
  1568.  
  1569.                            <table>
  1570.                                <tr>
  1571.                                    <td><img src=\"".wpgmaps_get_plugin_url()."/images/custom_markers.jpg\" width=\"160\" style=\"border:3px solid #808080;\" title=\"".__("Add detailed information to your markers!")."\" alt=\"".__("Add custom markers to your map!","wp-google-maps")."\" /><br /><br /></td>
  1572.                                    <td valign=\"middle\"><span style=\"font-size:18px; color:#666;\">".__("Add detailed information to your markers for only","wp-google-maps")." <strong>$14.99</strong>. ".__("Click","wp-google-maps")." <a href=\"http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=image1\" title=\"Pro Edition\" target=\"_BLANK\">".__("here","wp-google-maps")."</a></span></td>
  1573.                                </tr>
  1574.                                <tr>
  1575.                                    <td><img src=\"".wpgmaps_get_plugin_url()."/images/custom_marker_icons.jpg\" width=\"160\" style=\"border:3px solid #808080;\" title=\"".__("Add custom markers to your map!","wp-google-maps")."\" alt=\"".__("Add custom markers to your map!","wp-google-maps")."\" /><br /><br /></td>
  1576.                                    <td valign=\"middle\"><span style=\"font-size:18px; color:#666;\">".__("Add different marker icons, or your own icons to make your map really stand out!","wp-google-maps")."</span></td>
  1577.                                </tr>
  1578.                                <tr>
  1579.                                    <td><img src=\"".wpgmaps_get_plugin_url()."/images/get_directions.jpg\" width=\"160\" style=\"border:3px solid #808080;\" title=\"".__("Add custom markers to your map!","wp-google-maps")."\" alt=\"".__("Add custom markers to your map!","wp-google-maps")."\" /><br /><br /></td>
  1580.                                    <td valign=\"middle\"><span style=\"font-size:18px; color:#666;\">".__("Allow your visitors to get directions to your markers!","wp-google-maps")." ".__("Click","wp-google-maps")." <a href=\"http://www.wpgmaps.com/purchase-professional-version/?utm_source=plugin&utm_medium=link&utm_campaign=image2\" title=\"".__("Pro Edition","wp-google-maps")."\" target=\"_BLANK\">".__("here","wp-google-maps")."</a></span></td>
  1581.                                </tr>
  1582.                            </table>
  1583.  
  1584.                    </form>
  1585.  
  1586.                    <p><br /><br />".__("WP Google Maps encourages you to make use of the amazing icons created by Nicolas Mollet's Maps Icons Collection","wp-google-maps")." <a href='http://mapicons.nicolasmollet.com'>http://mapicons.nicolasmollet.com/</a> ".__("and to credit him when doing so.","wp-google-maps")."</p>
  1587.                </div>
  1588.  
  1589.  
  1590.            </div>
  1591.  
  1592.  
  1593.  
  1594.        ";
  1595.  
  1596.  
  1597.  
  1598.     wpgmaps_debugger("bm_end");
  1599.  
  1600. }
  1601.  
  1602.  
  1603.  
  1604. function wpgmza_edit_marker($mid) {
  1605.     global $wpgmza_tblname_maps;
  1606.     global $wpdb;
  1607.     if ($_GET['action'] == "edit_marker" && isset($mid)) {
  1608.         $res = wpgmza_get_marker_data($mid);
  1609.         echo "
  1610.           <div class='wrap'>
  1611.                <h1>WP Google Maps</h1>
  1612.                <div class='wide'>
  1613.  
  1614.                    <h2>".__("Edit Marker Location","wp-google-maps")." ".__("ID","wp-google-maps")."#$mid</h2>
  1615.                    <form action='?page=wp-google-maps-menu&action=edit&map_id=".$res->map_id."' method='post' id='wpgmaps_edit_marker'>
  1616.                    <p></p>
  1617.  
  1618.                    <input type='hidden' name='wpgmaps_marker_id' id='wpgmaps_marker_id' value='".$mid."' />
  1619.                    <div id=\"wpgmaps_status\"></div>
  1620.                    <table>
  1621.  
  1622.                        <tr>
  1623.                            <td>".__("Marker Latitude","wp-google-maps").":</td>
  1624.                            <td><input id='wpgmaps_marker_lat' name='wpgmaps_marker_lat' type='text' size='15' maxlength='100' value='".$res->lat."' /></td>
  1625.                        </tr>
  1626.                        <tr>
  1627.                            <td>".__("Marker Longitude","wp-google-maps").":</td>
  1628.                            <td><input id='wpgmaps_marker_lng' name='wpgmaps_marker_lng' type='text' size='15' maxlength='100' value='".$res->lng."' /></td>
  1629.                        </tr>
  1630.  
  1631.                    </table>
  1632.                    <p class='submit'><input type='submit' name='wpgmza_save_maker_location' class='button-primary' value='".__("Save Marker Location","wp-google-maps")." &raquo;' /></p>
  1633.                    <p style=\"width:600px; color:#808080;\">".__("Tip: Use your mouse to change the location of the marker. Simply click and drag it to your desired location.","wp-google-maps")."</p>
  1634.  
  1635.  
  1636.                    <div id=\"wpgmza_map\">&nbsp;</div>
  1637.  
  1638.                    <p>$wpgmza_act_msg</p>
  1639.  
  1640.  
  1641.  
  1642.                    </form>
  1643.                </div>
  1644.  
  1645.  
  1646.            </div>
  1647.  
  1648.  
  1649.  
  1650.        ";
  1651.  
  1652.     }
  1653.  
  1654.  
  1655.  
  1656. }
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662. function wpgmaps_admin_scripts() {
  1663.     wpgmaps_debugger("admin_scripts_start");
  1664.     wp_enqueue_script('media-upload');
  1665.     wp_enqueue_script('thickbox');
  1666.     wp_register_script('my-wpgmaps-upload', WP_PLUGIN_URL.'/'.plugin_basename(dirname(__FILE__)).'/upload.js', array('jquery','media-upload','thickbox'));
  1667.     wp_enqueue_script('my-wpgmaps-upload');
  1668.     wpgmaps_debugger("admin_scripts_end");
  1669.  
  1670. }
  1671. function wpgmaps_user_styles() {
  1672.     wp_register_style( 'wpgmaps-style', plugins_url('/css/wpgmza_style.css', __FILE__) );
  1673.     wp_enqueue_style( 'wpgmaps-style' );}
  1674.  
  1675. function wpgmaps_admin_styles() {
  1676.     wp_enqueue_style('thickbox');
  1677. }
  1678.  
  1679. if (isset($_GET['page']) && $_GET['page'] == 'wp-google-maps-menu') {
  1680.     wpgmaps_debugger("load_scripts_styles_start");
  1681.  
  1682.     add_action('admin_print_scripts', 'wpgmaps_admin_scripts');
  1683.     add_action('admin_print_styles', 'wpgmaps_admin_styles');
  1684.     wpgmaps_debugger("load_scripts_styles_end");
  1685. }
  1686.  
  1687.     add_action('wp_print_styles', 'wpgmaps_user_styles');
  1688.  
  1689.  
  1690.  
  1691. function wpgmza_return_marker_list($map_id,$admin = true,$width = "100%") {
  1692.     wpgmaps_debugger("return_marker_start");
  1693.  
  1694.     global $wpdb;
  1695.     global $wpgmza_tblname;
  1696.  
  1697.     $marker_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpgmza_tblname WHERE `map_id` = '$map_id';" ) );
  1698.     if ($marker_count > 2000) {
  1699.         return __("There are too many markers to make use of the live edit function. The maximum amount for this functionality is 2000 markers. Anything more than that number would crash your browser. In order to edit your markers, you would need to download the table in CSV format, edit it and re-upload it.","wp-google-maps");
  1700.     } else {
  1701.  
  1702.  
  1703.  
  1704.     $results = $wpdb->get_results("
  1705.     SELECT *
  1706.     FROM $wpgmza_tblname
  1707.     WHERE `map_id` = '$map_id' ORDER BY `id` DESC
  1708.    ");
  1709.     if ($admin) {
  1710.     $wpgmza_tmp .= "
  1711.        <table id=\"wpgmza_table\" class=\"display\" cellspacing=\"0\" cellpadding=\"0\" style=\"width:$width;\">
  1712.        <thead>
  1713.        <tr>
  1714.            <th><strong>".__("ID","wp-google-maps")."</strong></th>
  1715.            <th><strong>".__("Icon","wp-google-maps")."</strong></th>
  1716.            <th><strong>".__("Title","wp-google-maps")."</strong></th>
  1717.            <th><strong>".__("Address","wp-google-maps")."</strong></th>
  1718.            <th><strong>".__("Description","wp-google-maps")."</strong></th>
  1719.            <th><strong>".__("Image","wp-google-maps")."</strong></th>
  1720.            <th><strong>".__("Link","wp-google-maps")."</strong></th>
  1721.            <th><strong>".__("Action","wp-google-maps")."</strong></th>
  1722.        </tr>
  1723.        </thead>
  1724.        <tbody>
  1725.    ";
  1726.     } else {
  1727.     $wpgmza_tmp .= "
  1728.        <div id=\"wpgmza_marker_holder_".$map_id."\">
  1729.        <table id=\"wpgmza_table_".$map_id."\" class=\"wpgmza_table\" cellspacing=\"0\" cellpadding=\"0\" style=\"width:$width;\">
  1730.        <thead>
  1731.        <tr>
  1732.            <th><strong></strong></th>
  1733.            <th><strong>".__("Title","wp-google-maps")."</strong></th>
  1734.            <th><strong>".__("Address","wp-google-maps")."</strong></th>
  1735.            <th><strong>".__("Description","wp-google-maps")."</strong></th>
  1736.        </tr>
  1737.        </thead>
  1738.        <tbody>
  1739.    ";
  1740.     }
  1741.  
  1742.  
  1743.     $wpgmza_data = get_option('WPGMZA');
  1744.     if ($wpgmza_data['map_default_marker']) { $default_icon = "<img src='".$wpgmza_data['map_default_marker']."' />"; } else { $default_icon = "<img src='".wpgmaps_get_plugin_url()."/images/marker.png' />"; }
  1745.  
  1746.     foreach ( $results as $result ) {
  1747.         $img = $result->pic;
  1748.         $link = $result->link;
  1749.         $icon = $result->icon;
  1750.  
  1751.         if (!$img) { $pic = ""; } else { $pic = "<img src=\"".$result->pic."\" width=\"40\" />"; }
  1752.         if (!$icon) { $icon = $default_icon; } else { $icon = "<img src='".$result->icon."' />"; }
  1753.         if (!$link) { $linktd = ""; } else { $linktd = "<a href=\"".$result->link."\" target=\"_BLANK\" title=\"".__("View this link","wp-google-maps")."\">&gt;&gt;</a>"; }
  1754.         if ($admin) {
  1755.         $wpgmza_tmp .= "
  1756.            <tr id=\"wpgmza_tr_".$result->id."\">
  1757.                <td height=\"40\">".$result->id."</td>
  1758.                <td height=\"40\">".$icon."<input type=\"hidden\" id=\"wpgmza_hid_marker_icon_".$result->id."\" value=\"".$result->icon."\" /><input type=\"hidden\" id=\"wpgmza_hid_marker_anim_".$result->id."\" value=\"".$result->anim."\" /><input type=\"hidden\" id=\"wpgmza_hid_marker_infoopen_".$result->id."\" value=\"".$result->infoopen."\" /></td>
  1759.                <td>".$result->title."<input type=\"hidden\" id=\"wpgmza_hid_marker_title_".$result->id."\" value=\"".$result->title."\" /></td>
  1760.                <td>".$result->address."<input type=\"hidden\" id=\"wpgmza_hid_marker_address_".$result->id."\" value=\"".$result->address."\" /></td>
  1761.                <td>".$result->desc."<input type=\"hidden\" id=\"wpgmza_hid_marker_desc_".$result->id."\" value=\"".$result->desc."\" /></td>
  1762.                <td>$pic<input type=\"hidden\" id=\"wpgmza_hid_marker_pic_".$result->id."\" value=\"".$result->pic."\" /></td>
  1763.                <td>$linktd<input type=\"hidden\" id=\"wpgmza_hid_marker_link_".$result->id."\" value=\"".$result->link."\" /></td>
  1764.                <td width='170' align='center'>
  1765.                    <a href=\"#wpgmaps_marker\" title=\"".__("Edit this marker","wp-google-maps")."\" class=\"wpgmza_edit_btn\" id=\"".$result->id."\">".__("Edit","wp-google-maps")."</a> |
  1766.                    <a href=\"?page=wp-google-maps-menu&action=edit_marker&id=".$result->id."\" title=\"".__("Edit this marker","wp-google-maps")."\" class=\"wpgmza_edit_btn\" id=\"".$result->id."\">".__("Edit Location","wp-google-maps")."</a> |
  1767.                    <a href=\"javascript:void(0);\" title=\"".__("Delete this marker","wp-google-maps")."\" class=\"wpgmza_del_btn\" id=\"".$result->id."\">".__("Delete","wp-google-maps")."</a>
  1768.                </td>
  1769.            </tr>";
  1770.         } else {
  1771.         $wpgmza_tmp .= "
  1772.            <tr id=\"wpgmza_marker_".$result->id."\" mid=\"".$result->id."\" mapid=\"".$result->map_id."\" class=\"wpgmaps_mlist_row\">
  1773.                <td height=\"40\">".$icon."<input type=\"hidden\" id=\"wpgmza_hid_marker_icon_".$result->id."\" value=\"".$result->icon."\" /><input type=\"hidden\" id=\"wpgmza_hid_marker_anim_".$result->id."\" value=\"".$result->anim."\" /><input type=\"hidden\" id=\"wpgmza_hid_marker_infoopen_".$result->id."\" value=\"".$result->infoopen."\" /></td>
  1774.                <td>".$result->title."<input type=\"hidden\" id=\"wpgmza_hid_marker_title_".$result->id."\" value=\"".$result->title."\" /></td>
  1775.                <td>".$result->address."<input type=\"hidden\" id=\"wpgmza_hid_marker_address_".$result->id."\" value=\"".$result->address."\" /></td>
  1776.                <td>".$result->desc."<input type=\"hidden\" id=\"wpgmza_hid_marker_desc_".$result->id."\" value=\"".$result->desc."\" /></td>
  1777.            </tr>";
  1778.         }
  1779.     }
  1780.     if ($admin) {
  1781.         $wpgmza_tmp .= "</tbody></table>";
  1782.     } else {
  1783.         $wpgmza_tmp .= "</tbody></table></div>";
  1784.     }
  1785.  
  1786.     wpgmaps_debugger("return_marker_end");
  1787.     return $wpgmza_tmp;
  1788.     }
  1789. }
  1790.  
  1791.  
  1792.  
  1793.  
  1794. function wpgmaps_chmodr($path, $filemode) {
  1795.     if (!is_dir($path))
  1796.         return chmod($path, $filemode);
  1797.  
  1798.     $dh = opendir($path);
  1799.     while (($file = readdir($dh)) !== false) {
  1800.         if($file != '.' && $file != '..') {
  1801.             $fullpath = $path.'/'.$file;
  1802.             if(is_link($fullpath))
  1803.                 return FALSE;
  1804.             elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode))
  1805.                     return FALSE;
  1806.             elseif(!wpgmaps_chmodr($fullpath, $filemode))
  1807.                 return FALSE;
  1808.         }
  1809.     }
  1810.  
  1811.     closedir($dh);
  1812.  
  1813.     if(chmod($path, $filemode))
  1814.         return TRUE;
  1815.     else
  1816.         return FALSE;
  1817. }
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827. if (function_exists(wpgmza_register_pro_version)) {
  1828.     add_action('wp_ajax_add_marker', 'wpgmaps_action_callback_pro');
  1829.     add_action('wp_ajax_delete_marker', 'wpgmaps_action_callback_pro');
  1830.     add_action('wp_ajax_edit_marker', 'wpgmaps_action_callback_pro');
  1831.     add_action('template_redirect','wpgmaps_check_shortcode');
  1832.  
  1833.     if (function_exists(wpgmza_register_gold_version)) {
  1834.         add_action('wp_footer', 'wpgmaps_user_javascript_gold');
  1835.         add_action('admin_head', 'wpgmaps_admin_javascript_gold');
  1836.     } else {
  1837.         add_action('wp_footer', 'wpgmaps_user_javascript_pro');
  1838.         add_action('admin_head', 'wpgmaps_admin_javascript_pro');
  1839.     }
  1840.  
  1841.     if (function_exists(wpgmza_register_ugm_version)) {
  1842.     }
  1843.  
  1844.     add_shortcode( 'wpgmza', 'wpgmaps_tag_pro' );
  1845. } else {
  1846.     add_action('admin_head', 'wpgmaps_admin_javascript_basic');
  1847.     add_action('wp_ajax_add_marker', 'wpgmaps_action_callback_basic');
  1848.     add_action('wp_ajax_delete_marker', 'wpgmaps_action_callback_basic');
  1849.     add_action('wp_ajax_edit_marker', 'wpgmaps_action_callback_basic');
  1850.     add_action('template_redirect','wpgmaps_check_shortcode');
  1851.     add_action('wp_footer', 'wpgmaps_user_javascript_basic');
  1852.     add_shortcode( 'wpgmza', 'wpgmaps_tag_basic' );
  1853. }
  1854.  
  1855.  
  1856. function wpgmaps_check_shortcode() {
  1857.     wpgmaps_debugger("check_for_sc_start");
  1858.     global $posts;
  1859.     global $short_code_active;
  1860.     $short_code_active = false;
  1861.       $pattern = get_shortcode_regex();
  1862.  
  1863.       foreach ($posts as $wpgmpost) {
  1864.           preg_match_all('/'.$pattern.'/s', $wpgmpost->post_content, $matches);
  1865.           foreach ($matches as $match) {
  1866.             if (is_array($match)) {
  1867.                 foreach($match as $key => $val) {
  1868.                     $pos = strpos($val, "wpgmza");
  1869.                     if ($pos === false) { } else { $short_code_active = true; }
  1870.                 }
  1871.             }
  1872.           }
  1873.       }
  1874.     wpgmaps_debugger("check_for_sc_end");
  1875. }
  1876. function wpgmza_cURL_response($action) {
  1877.     if (function_exists('curl_version')) {
  1878.         global $wpgmza_version;
  1879.         global $wpgmza_t;
  1880.         $request_url = "http://www.wpgmaps.com/api/rec.php?action=$action&dom=".$_SERVER['HTTP_HOST']."&ver=".$wpgmza_version.$wpgmza_t;
  1881.         $ch = curl_init();
  1882.         curl_setopt($ch, CURLOPT_URL, $request_url);
  1883.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  1884.         $output = curl_exec($ch);
  1885.         curl_close($ch);
  1886.     }
  1887.  
  1888. }
  1889.  
  1890. function wpgmaps_check_permissions() {
  1891.     $filename = dirname( __FILE__ ).'/wpgmaps.tmp';
  1892.     $testcontent = "Permission Check\n";
  1893.     $handle = @fopen($filename, 'w');
  1894.     if (@fwrite($handle, $testcontent) === FALSE) {
  1895.         @fclose($handle);
  1896.         add_option("wpgmza_permission","n");
  1897.         return false;
  1898.     }
  1899.     else {
  1900.         @fclose($handle);
  1901.         add_option("wpgmza_permission","y");
  1902.         return true;
  1903.     }
  1904.  
  1905.  
  1906. }
  1907. function wpgmaps_permission_warning() {
  1908.     echo "<div class='error below-h1'><big>";
  1909.     _e("The plugin directory does not have 'write' permissions. Please enable 'write' permissions (755) for ");
  1910.     echo "\"".dirname( __FILE__ )."\" ";
  1911.     _e("in order for this plugin to work! Please see ");
  1912.     echo "<a href='http://codex.wordpress.org/Changing_File_Permissions#Using_an_FTP_Client'>";
  1913.     _e("this page");
  1914.     echo "</a> ";
  1915.     _e("for help on how to do it.");
  1916.     echo "</big></div>";
  1917. }
  1918.  
  1919.  
  1920. // handle database check upon upgrade
  1921. function wpgmaps_update_db_check() {
  1922.     wpgmaps_debugger("update_db_start");
  1923.  
  1924.     global $wpgmza_version;
  1925.     if (get_option('wpgmza_db_version') != $wpgmza_version) {
  1926.         wpgmaps_handle_db();
  1927.     }
  1928.  
  1929.     // create all XML files
  1930.     wpgmaps_update_all_xml_file();
  1931.  
  1932.     wpgmaps_debugger("update_db_end");
  1933. }
  1934.  
  1935.  
  1936. add_action('plugins_loaded', 'wpgmaps_update_db_check');
  1937.  
  1938. function wpgmaps_handle_db() {
  1939.    wpgmaps_debugger("handle_db_start");
  1940.  
  1941.    global $wpdb;
  1942.    global $wpgmza_version;
  1943.  
  1944.    $table_name = $wpdb->prefix . "wpgmza";
  1945.  
  1946.     $sql = "
  1947.        CREATE TABLE `".$table_name."` (
  1948.          `id` int(11) NOT NULL AUTO_INCREMENT,
  1949.          `map_id` int(11) NOT NULL,
  1950.          `address` varchar(700) NOT NULL,
  1951.          `desc` mediumtext NOT NULL,
  1952.          `pic` varchar(700) NOT NULL,
  1953.          `link` varchar(700) NOT NULL,
  1954.          `icon` varchar(700) NOT NULL,
  1955.          `lat` varchar(100) NOT NULL,
  1956.          `lng` varchar(100) NOT NULL,
  1957.          `anim` varchar(3) NOT NULL,
  1958.          `title` varchar(700) NOT NULL,
  1959.          `infoopen` varchar(3) NOT NULL,
  1960.          PRIMARY KEY (`id`)
  1961.        ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  1962.    ";
  1963.  
  1964.    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
  1965.    dbDelta($sql);
  1966.  
  1967.    $sql2 = "alter table `".$table_name."` modify `desc` MEDIUMTEXT ;";
  1968.    $wpdb->query($sql2);
  1969.  
  1970.  
  1971.     $table_name = $wpdb->prefix . "wpgmza_maps";
  1972.     $sql = "
  1973.        CREATE TABLE `".$table_name."` (
  1974.          `id` int(11) NOT NULL AUTO_INCREMENT,
  1975.          `map_title` varchar(50) NOT NULL,
  1976.          `map_width` varchar(6) NOT NULL,
  1977.          `map_height` varchar(6) NOT NULL,
  1978.          `map_start_lat` varchar(700) NOT NULL,
  1979.          `map_start_lng` varchar(700) NOT NULL,
  1980.          `map_start_location` varchar(700) NOT NULL,
  1981.          `map_start_zoom` INT(10) NOT NULL,
  1982.          `default_marker` varchar(700) NOT NULL,
  1983.          `type` INT(10) NOT NULL,
  1984.          `alignment` INT(10) NOT NULL,
  1985.          `directions_enabled` INT(10) NOT NULL,
  1986.          `styling_enabled` INT(10) NOT NULL,
  1987.          `styling_json` mediumtext NOT NULL,
  1988.          `active` INT(1) NOT NULL,
  1989.          `kml` VARCHAR(700) NOT NULL,
  1990.          `bicycle` INT(10) NOT NULL,
  1991.          `traffic` INT(10) NOT NULL,
  1992.          `dbox` INT(10) NOT NULL,
  1993.          `dbox_width` varchar(10) NOT NULL,
  1994.          `listmarkers` INT(10) NOT NULL,
  1995.          `listmarkers_advanced` INT(10) NOT NULL,
  1996.          `ugm_enabled` INT(10) NOT NULL,
  1997.          `fusion` VARCHAR(100) NOT NULL,
  1998.          `map_width_type` VARCHAR(3) NOT NULL,
  1999.          `map_height_type` VARCHAR(3) NOT NULL,
  2000.          `mass_marker_support` INT(10) NOT NULL,
  2001.          PRIMARY KEY (`id`)
  2002.        ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  2003.    ";
  2004.  
  2005.    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
  2006.    dbDelta($sql);
  2007.  
  2008.  
  2009.  
  2010.    add_option("wpgmza_db_version", $wpgmza_version);
  2011.    update_option("wpgmza_db_version",$wpgmza_version);
  2012.    wpgmaps_debugger("handle_db_end");
  2013. }
  2014.  
  2015. function wpgmza_get_map_data($map_id) {
  2016.     global $wpdb;
  2017.     global $wpgmza_tblname_maps;
  2018.  
  2019.     $result = $wpdb->get_results("
  2020.        SELECT *
  2021.        FROM $wpgmza_tblname_maps
  2022.        WHERE `id` = '".$map_id."' LIMIT 1
  2023.    ");
  2024.    
  2025.     $res = $result[0];
  2026.    
  2027.     return $result[0];
  2028.  
  2029. }
  2030. function wpgmza_get_marker_data($mid) {
  2031.     global $wpdb;
  2032.     global $wpgmza_tblname;
  2033.  
  2034.     $result = $wpdb->get_results("
  2035.        SELECT *
  2036.        FROM $wpgmza_tblname
  2037.        WHERE `id` = '".$mid."' LIMIT 1
  2038.    ");
  2039.  
  2040.     $res = $result[0];
  2041.     return $res;
  2042.  
  2043. }
  2044. function wpgmaps_upgrade_notice() {
  2045.     global $wpgmza_pro_version;
  2046.     echo "<div class='error below-h1'>
  2047.        <big><big>
  2048.            <p>Dear Pro User<br /></p>
  2049.  
  2050.            <p>We have recently added new functionality to the Pro version of this plugin. You are currently using the latest
  2051.            Basic version which needs the latest Pro version for all functionality to work. Your current Pro version is
  2052.            $wpgmza_pro_version - The latest Pro version is 4.01<br /></p>
  2053.  
  2054.            <p>You should have already received an email with the download link for the latest version, if not please
  2055.            <a href='http://www.wpgmaps.com/contact-us/'>contact us</a><br /><br /></p>
  2056.            <small>
  2057.            <p><strong>Installation Instructions:</strong><br />
  2058.            <ul>
  2059.                <li>- Once downloaded, please <strong>deactivate</strong> and <strong>delete</strong> your old Pro plugin (your marker and map information wont be affected at all).</li>
  2060.                <li>- <a href=\"".get_option('siteurl')."/wp-admin/plugin-install.php?tab=upload\" target=\"_BLANK\">Upload the new</a> plugin ZIP file.</li>
  2061.            </ul>
  2062.            </p>
  2063.            </small>
  2064.            <p>If you experience into any bugs, please let me know so that I can get it sorted out ASAP</p>
  2065.  
  2066.            <p>Kind regards,<br /><a href='http://www.wpgmaps.com/'>WP Google Maps</a></p>
  2067.        </big></big>
  2068.    </div>";
  2069. }
  2070. function wpgmaps_trash_map($map_id) {
  2071.     global $wpdb;
  2072.     global $wpgmza_tblname_maps;
  2073.     if (isset($map_id)) {
  2074.         $rows_affected = $wpdb->query( $wpdb->prepare( "UPDATE $wpgmza_tblname_maps SET active = %d WHERE id = %d", 1, $map_id) );
  2075.         return true;
  2076.     } else {
  2077.         return false;
  2078.     }
  2079.  
  2080.  
  2081. }
  2082.  
  2083. function wpgmaps_debugger($section) {
  2084.  
  2085.     global $debug;
  2086.     global $debug_start;
  2087.     global $debug_step;
  2088.     if ($debug) {
  2089.         $end = (float) array_sum(explode(' ',microtime()));
  2090.         echo "<!-- $section processing time: ". sprintf("%.4f", ($end-$debug_start))." seconds\n -->";
  2091.     }
  2092.  
  2093. }
  2094.  
  2095. function wpgmaps_filter(&$array) {
  2096.     $clean = array();
  2097.     foreach($array as $key => &$value ) {
  2098.         if( is_array($value) ) {
  2099.             wpgmaps_filter($value);
  2100.         } else {
  2101.             //$value = trim(strip_tags($value));
  2102.             if (get_magic_quotes_gpc()) {
  2103.                 $data = stripslashes($value);
  2104.             }
  2105.             $data = mysql_real_escape_string($value);
  2106.         }
  2107.     }
  2108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement