diff --git a/README.md b/README.md
index db89ffa..c124eae 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,11 @@
# MAP
todo:
-- redisgn + and - for zoom -> color and thickness
+- gather same-places events
+- add info-window
+- add filter options
+- deal with bad address
+- redsign + and - for zoom -> color and thickness
- [changed plugin directory in wp](https://wordpress.stackexchange.com/questions/120075/how-to-change-location-of-the-plugins-wordpress-themes-folder)
- googlemap api key : AIzaSyCvdGV2ssD4ov4a9CuIlQhoJyz5gWWiSvE
@@ -19,6 +23,7 @@ todo:
- [my post on wordpress stack](https://wordpress.stackexchange.com/questions/410735/i-dont-understand-how-symlinks-in-plugin-work)
- [maps api in php](http://www.learningaboutelectronics.com/Articles/Google-maps-API-JSON-PHP.php)
- [google maps api url parameters](https://developers.google.com/maps/documentation/javascript/url-params)
+- [google maps api references](https://developers.google.com/maps/documentation/javascript/reference)
---
diff --git a/srcs/plugins/map_prof/map_prof_hooks.php b/srcs/plugins/map_prof/map_prof_hooks.php
index 3ee4079..798c660 100644
--- a/srcs/plugins/map_prof/map_prof_hooks.php
+++ b/srcs/plugins/map_prof/map_prof_hooks.php
@@ -10,6 +10,8 @@ Author URI:
+
+
/**
* inclusions :
*/
@@ -23,6 +25,8 @@ require_once(dirname(__FILE__) . '/settings/mp_optionnals.php');
+
+
/**
* global variables :
*/
@@ -50,6 +54,11 @@ $mp_cluster_size_factor = 2.5;
if (isset($mp_settings_cluster_size_factor))
$mp_cluster_size_factor = $mp_settings_cluster_size_factor;
+$mp_coordinates_default = (object)["lat" => 46.227638, "lng" => 2.213749]; // france
+if (isset($mp_settings_coordinates_default))
+ $mp_coordinates_default = $mp_settings_coordinates_default;
+
+
/**
@@ -65,6 +74,8 @@ add_filter('script_loader_tag', 'mp_tag_scripts', 10, 2);
+
+
/**
* when 'shortcode' found in page, enqueue scripts and styles,
* run php script, and replace shortcode by return value
@@ -91,14 +102,20 @@ add_shortcode('lejourduprof_map', 'mp_add_div');
+
+
/**
* when a post is published, check its coordinates
*/
function post_published_coordinates($id, $post) {
- $coordinates = mp_get_coordinates($id);
- if ( ! add_post_meta( $id, 'coordinates', $coordinates, true ) ) {
+ $coordinates_valid = true;
+ $coordinates = mp_get_coordinates($id, $coordinates_valid);
+
+ if ( ! add_post_meta( $id, 'coordinates', $coordinates, true ) )
update_post_meta( $id, 'coordinates', $coordinates );
- }
+
+ if ( ! add_post_meta( $id, 'coordinates_valid', $coordinates_valid, true ) )
+ update_post_meta( $id, 'coordinates_valid', $coordinates_valid );
}
add_action( 'publish_post', 'post_published_coordinates', 10, 2 );
diff --git a/srcs/plugins/map_prof/mp_add_to_scripts.php b/srcs/plugins/map_prof/mp_add_to_scripts.php
index 2e8e14c..0208675 100644
--- a/srcs/plugins/map_prof/mp_add_to_scripts.php
+++ b/srcs/plugins/map_prof/mp_add_to_scripts.php
@@ -12,20 +12,18 @@ function mp_php_to_js($php_var, $js_var_name) {
function mp_add_to_scripts() {
global $mp_icon_size;
- global $mp_icon_url;
- global $mp_icon_cluster_url;
global $mp_icon_color;
global $mp_cluster_size_factor;
- $events_unsorted = mp_get_published_events();
-// $events = mp_sort_events($events_unsorted);
- $events = $events_unsorted;
+ global $mp_coordinates_default;
+ $events = mp_get_published_events();
+ $locations = mp_sort_events($events);
- wp_add_inline_script('mp_init_map', mp_php_to_js($events, 'events'), 'before');
- wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_url, 'icon_url'), 'before');
- wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_cluster_url, 'icon_cluster_url'), 'before');
+ //wp_add_inline_script('mp_init_map', mp_php_to_js($events, 'events'), 'before');
+ wp_add_inline_script('mp_init_map', mp_php_to_js($locations, 'locations'), 'before');
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_size, 'icon_size'), 'before');
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_color, 'icon_color'), 'before');
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_cluster_size_factor, 'cluster_size_factor'), 'before');
+ wp_add_inline_script('mp_init_map', mp_php_to_js($mp_coordinates_default, 'coordinates_default'), 'before');
}
?>
diff --git a/srcs/plugins/map_prof/mp_console_log.php b/srcs/plugins/map_prof/mp_console_log.php
index ef67172..be85850 100644
--- a/srcs/plugins/map_prof/mp_console_log.php
+++ b/srcs/plugins/map_prof/mp_console_log.php
@@ -1,11 +1,8 @@
' . $js_code . '';
- }
+function mp_console_log($output) {
+ $js_code = 'console.log(' . json_encode($output, JSON_HEX_TAG) . ');';
+ $js_code = '';
echo $js_code;
}
?>
diff --git a/srcs/plugins/map_prof/mp_get_coordinates.php b/srcs/plugins/map_prof/mp_get_coordinates.php
index 1f68d89..4772efb 100644
--- a/srcs/plugins/map_prof/mp_get_coordinates.php
+++ b/srcs/plugins/map_prof/mp_get_coordinates.php
@@ -1,36 +1,52 @@
$field = $address_part;
+ $address_section = get_field($field, $id);
+ $event->$field = $address_section;
+ if (strlen($address_section) == 0)
+ $errors++;
}
+ // check errors
+ if ($errors > 0)
+ $valid = false;
+ else
+ $valid = true;
+
// concat as an address
$address = $event->adresse . ","
. $event->ville . ","
. $event->pays;
// get coordinates from google maps api
- $geolocation = 'https://maps.googleapis.com/maps/api/geocode/json'
- . '?address=' . urlencode($address)
- . '&key=' . $mp_api_key;
- $jsoncontent = file_get_contents($geolocation);
+ if ($errors < 3) {
+ $geolocation = 'https://maps.googleapis.com/maps/api/geocode/json'
+ . '?address=' . urlencode($address)
+ . '&key=' . $mp_api_key;
+ $jsoncontent = file_get_contents($geolocation);
+
+ // extract coordinates from json
+ $content = json_decode($jsoncontent);
+ $coordinates = $content->results[0]->geometry->location;
+ }
+
+ // if null, set to default (by default, france)
+ if ($coordinates == null)
+ $coordinates = $mp_coordinates_default;
- // extract coordinates from json
- $content = json_decode($jsoncontent);
- $coordinates = $content->results[0]->geometry->location;
return $coordinates;
}
diff --git a/srcs/plugins/map_prof/mp_get_events.php b/srcs/plugins/map_prof/mp_get_events.php
index 38dee0e..6ecf401 100644
--- a/srcs/plugins/map_prof/mp_get_events.php
+++ b/srcs/plugins/map_prof/mp_get_events.php
@@ -40,6 +40,11 @@
34: "adresse_courriel"
--- 35: "prenom"
--- 36: "nom"
+
+ ADDED BY THIS PLUGIN
+
+--- 37: "coordinates"
+--- 38: "coordinates_valid"
*/
/*
@@ -102,12 +107,14 @@ function mp_get_published_posts() {
// );
// $post_list = get_posts($post_args);
// foreach ($post_list as $post) {
-// wp_update_post(array(
-// 'ID' => $post->ID,
-// //'post_status' => 'draft',
-// 'post_status' => 'publish',
-// ));
-// }
+// //if ( get_field("nom", $post->ID) == "Rakhimov") {
+// wp_update_post(array(
+// 'ID' => $post->ID,
+// //'post_status' => 'draft',
+// 'post_status' => 'publish',
+// ));
+// //};
+// };
$get_posts_args = array(
'numberposts' => -1,
@@ -126,6 +133,8 @@ function mp_fill_fields_value($id) {
* get_field is an ACF function
* in "pure" worpdress use :
* get_post_meta or get_post_custom_values
+ * - https://developer.wordpress.org/reference/functions/get_post_meta/
+ * - https://developer.wordpress.org/reference/functions/get_post_custom_values/
*/
// add fields
@@ -140,6 +149,7 @@ function mp_fill_fields_value($id) {
"prenom",
"nom",
"coordinates",
+ "coordinates_valid",
);
$event = (object)[];
foreach($fields as $field) {
@@ -162,14 +172,8 @@ function mp_get_published_events() {
$event->id = $post->ID;
$event->title = $post->post_title;
$event = mp_fill_fields_value($post->ID);
- // only add to array if address is complete
- if ( isset($event->coordinates) )
- array_push($events, $event);
- else
- mp_console_log("event address incomplete:");
- mp_console_log($event);
+ array_push($events, $event);
}
- mp_console_log($events);
return $events;
}
diff --git a/srcs/plugins/map_prof/mp_sort_events.php b/srcs/plugins/map_prof/mp_sort_events.php
index e3d25fc..a3f0f07 100644
--- a/srcs/plugins/map_prof/mp_sort_events.php
+++ b/srcs/plugins/map_prof/mp_sort_events.php
@@ -1,12 +1,44 @@
coordinates) )
-// array_push($events, $event);
-// else
-// mp_console_log("event address incomplete:");
-// mp_console_log($event);
-//}
+function mp_coord_already_exist(&$coordinates, &$locations) {
+ foreach ($locations as $location) {
+ if ($location->coordinates->lat == $coordinates->lat)
+ if ($location->coordinates->lng == $coordinates->lng)
+ return $location;
+ }
+ return null;
+}
+
+function mp_sort_n_insert(&$event, &$locations) {
+ $coordinates = $event->coordinates;
+
+ $already_exist = mp_coord_already_exist($coordinates, $locations);
+ if ($already_exist) {
+ // add event to events[]
+ array_push($already_exist->events, $event);
+ }
+ else {
+ // create new location object
+ $location = (object)[];
+ $location->events = [];
+
+ // add coordinates to the location
+ $location->coordinates = $coordinates;
+ // add first event to events[]
+ array_push($location->events, $event);
+ // add this location to locations[]
+ array_push($locations, $location);
+ }
+}
+
+function mp_sort_events($events) {
+ $locations = [];
+
+ foreach ($events as $event) {
+ mp_sort_n_insert($event, $locations);
+ };
+
+ return $locations;
+}
?>
diff --git a/srcs/plugins/map_prof/scripts/mp_init_map.js b/srcs/plugins/map_prof/scripts/mp_init_map.js
index 38ca0fe..eb634e7 100644
--- a/srcs/plugins/map_prof/scripts/mp_init_map.js
+++ b/srcs/plugins/map_prof/scripts/mp_init_map.js
@@ -2,9 +2,14 @@ function mp_init_map() {
/*
* following variable are created by mp_add_to_script.php
- * - let events = [{}, {}...]
- * - let icon_url = ""
- * - let icon_cluster_url = ""
+ * - let locations = [
+ * {
+ * coord: {}
+ * events: [{}, ...]
+ * },
+ * ...
+ * ]
+ * - let coordinates_default = {lat: ,lng: }
* - let icon_color = ""
* - let icon_size = [x, y]
* - let cluster_size_factor = Number
@@ -15,10 +20,11 @@ function mp_init_map() {
*/
//print_error("error");
- console.log("hello");
+ console.log("locations:");
+ console.log(locations);
// default map center to france
- let map_center = {lat:46.227638, lng:2.213749};
+ let map_center = coordinates_default;
let map_options = {
/* map options : https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions */
disableDefaultUI: true,
@@ -33,7 +39,6 @@ function mp_init_map() {
//draggable: "true", //deprecated
center: map_center,
}
-
let svg_icon = window.btoa(`