Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // on vérifie qu'un utilisateur est connecté
- $user_id = $_SESSION['user']['user_id'];
- if (!$user_id) {
- die(json_encode(array(
- 'error' => "Vous avez été déconnecté, merci de relancer l'application",
- )));
- }
- // on récupère les variables POST
- $id_post = htmlspecialchars($_POST['id_post'],ENT_QUOTES)?:0; // n'a une valeur que s'il s'agit d'une édition, si pas de valeur ou valeur=0 alors c'est une création
- $timestamp_livraison = htmlspecialchars($_POST['timestamp_livraison'],ENT_QUOTES);
- $nom_destinataire = htmlspecialchars($_POST['nom_destinataire'],ENT_QUOTES);
- $lat = htmlspecialchars($_POST['lat'],ENT_QUOTES);
- $lng = htmlspecialchars($_POST['lng'],ENT_QUOTES);
- $numero = htmlspecialchars($_POST['numero'],ENT_QUOTES);
- $rue = htmlspecialchars($_POST['rue'],ENT_QUOTES);
- $cp = htmlspecialchars($_POST['cp'],ENT_QUOTES);
- $ville = htmlspecialchars($_POST['ville'],ENT_QUOTES);
- $departement = htmlspecialchars($_POST['departement'],ENT_QUOTES);
- $pays = htmlspecialchars($_POST['pays'],ENT_QUOTES);
- $pays_code = htmlspecialchars($_POST['pays_code'],ENT_QUOTES);
- // s'il s'agit d'une édition, on vérifie que l'utilisateur a bien le droit d'éditer ce post
- // ici on utilise un champ ACF "utilisateur" pour vérifier qu'il correspond bien à l'ID de l'utilisateur, mais d'autres méthodes peuvent être envisagées, comme la propriété par auteur native de WP, etc
- if ($id_post) {
- if (get_field('utilisateur', $id_post)!=$user_id) {
- die(json_encode(array(
- 'error' => "Vous avez n'avez pas le droit de modifier ce post",
- )));
- }
- }
- // on crée ou on édite le post CTP type "livraison" puis on en récupère l'ID (qui ne change pas dans le cas d'une édition)
- $id_post = wp_insert_post(array(
- 'ID' => $id_post,
- 'post_type' => 'livraison',
- 'post_status' => 'publish',
- 'post_title' => 'Livraison '.get_field('nom', $user_id).' '.get_field('prenom', $user_id).' pour '.$nom_destinataire,
- ));
- // on met à jours les différents ACF
- update_field('utilisateur', $user_id, $id_post);
- update_field('date', date('Y-m-d', $timestamp_livraison), $id_post); // un ACF type date s'enregistre sous le format 'Y-m-d', un type date et heure serait sous la forme 'Y-m-d H:i:s'
- update_field('nom_destinataire', $nom_destinataire, $id_post);
- update_field('adresse', array( // ACF type Google Maps, voir https://pastebin.com/hjudHjUq
- 'address' => $numero.' '.$rue.', '.$cp.' '.$ville.', '.$pays,
- 'lat' => $lat,
- 'lng' => $lng,
- 'street_number' => $numero,
- 'street_name' => $rue,
- 'post_code' => $cp,
- 'city' => $ville,
- 'state' => $departement,
- 'country' => $pays,
- 'country_short' => $pays_code,
- ), $id_post);
- // fonction de mesure de la distance entre deux points géographiques, pas utilisée ici mais laissée en exemple car elle peut servir
- function distance($lat1, $lng1, $lat2, $lng2) {
- return rad2deg(acos(sin(deg2rad($lat1))*sin(deg2rad($lat2))+cos(deg2rad($lat1))*cos(deg2rad($lat2))*cos(deg2rad($lng1-$lng2))))*111189.577;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement