Changeset 3426727
- Timestamp:
- 12/24/2025 09:53:36 AM (3 months ago)
- Location:
- formdev/trunk
- Files:
-
- 3 edited
-
formdev.php (modified) (9 diffs)
-
readme.txt (modified) (2 diffs)
-
templates/login.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
formdev/trunk/formdev.php
r3426029 r3426727 5 5 * Plugin URI: https://www.form-dev.fr 6 6 * Description: Synchroniser automatiquement les formations présentes dans votre CRM Formdev 7 * Version: 1.3. 17 * Version: 1.3.2 8 8 * Author: Formdev 9 9 * Author URI: https://app.form-dev.fr … … 16 16 // Définition de la version du plugin 17 17 if (!defined('FORMEDEV_VERSION')) { 18 define('FORMEDEV_VERSION', '1.3. 1');18 define('FORMEDEV_VERSION', '1.3.2'); 19 19 } 20 20 … … 527 527 wp_set_auth_cookie($user->ID); 528 528 529 // Récupérer les formdev_ids de la session et les assigner à l'utilisateur connecté 530 $session_formdev_ids = WC()->session->get('formdev_ids_before_registration'); 529 // Récupérer les idProduit et idAction depuis le formulaire (champs hidden) en priorité 530 $formdev_ids_from_form = array(); 531 if (isset($_POST['formdev_idProduit']) && !empty($_POST['formdev_idProduit'])) { 532 $idProduit = absint($_POST['formdev_idProduit']); 533 $idAction = isset($_POST['formdev_idAction']) ? absint($_POST['formdev_idAction']) : 0; 534 $action_type = isset($_POST['formdev_action_type']) ? sanitize_text_field(wp_unslash($_POST['formdev_action_type'])) : 'quote'; 535 536 $formdev_ids_from_form[$idProduit] = array( 537 'idProduit' => $idProduit, 538 'idAction' => $idAction, 539 'action_type' => $action_type 540 ); 541 } 542 543 // Utiliser les données du formulaire en priorité, sinon la session 544 $session_formdev_ids = !empty($formdev_ids_from_form) ? $formdev_ids_from_form : WC()->session->get('formdev_ids_before_registration'); 545 531 546 if (!empty($session_formdev_ids)) { 532 547 update_user_meta($user->ID, 'formdev_ids', $session_formdev_ids); … … 537 552 } 538 553 539 $redirect_url = formdev_build_redirect_url(array('devis-formdev' => 1)); 554 // Construire l'URL avec les idProduit et idAction pour vérifier la restauration 555 $redirect_url = get_permalink(wc_get_page_id('cart')).'?devis-formdev=1'; 556 557 // Ajouter les idProduit et idAction dans l'URL si disponibles 558 if (!empty($session_formdev_ids) && is_array($session_formdev_ids)) { 559 foreach ($session_formdev_ids as $idProd => $data) { 560 $redirect_url = add_query_arg('idProduit', $idProd, $redirect_url); 561 if (isset($data['idAction'])) { 562 $redirect_url = add_query_arg('idAction', $data['idAction'], $redirect_url); 563 } 564 if (isset($data['action_type'])) { 565 $redirect_url = add_query_arg('action_type', $data['action_type'], $redirect_url); 566 } 567 break; // Prendre seulement le premier 568 } 569 } 570 540 571 header('location:'.$redirect_url); 541 572 exit(); … … 624 655 // Sauvegarder les formdev_ids dans les user_meta pour restauration ultérieure 625 656 update_user_meta($user_id, 'formdev_ids', $session_formdev_ids); 626 // Marquer qu'il faut restaurer le panier lors du prochain chargement 627 update_user_meta($user_id, 'formdev_restore_cart', '1'); 657 658 // Restaurer le panier immédiatement si l'utilisateur est connecté 659 if (is_user_logged_in()) { 660 formdev_restore_cart_from_formdev_ids($user_id, $session_formdev_ids); 661 } else { 662 // Marquer qu'il faut restaurer le panier lors du prochain chargement 663 update_user_meta($user_id, 'formdev_restore_cart', '1'); 664 } 628 665 629 666 // Nettoyer la session … … 685 722 wp_set_auth_cookie($user->ID); 686 723 687 // Récupérer les formdev_ids de la session et les assigner à l'utilisateur connecté 688 $session_formdev_ids = WC()->session->get('formdev_ids_before_registration'); 724 // Récupérer les idProduit et idAction depuis le formulaire (champs hidden) en priorité 725 $formdev_ids_from_form = array(); 726 if (isset($_POST['formdev_idProduit']) && !empty($_POST['formdev_idProduit'])) { 727 $idProduit = absint($_POST['formdev_idProduit']); 728 $idAction = isset($_POST['formdev_idAction']) ? absint($_POST['formdev_idAction']) : 0; 729 $action_type = isset($_POST['formdev_action_type']) ? sanitize_text_field(wp_unslash($_POST['formdev_action_type'])) : 'quote'; 730 731 $formdev_ids_from_form[$idProduit] = array( 732 'idProduit' => $idProduit, 733 'idAction' => $idAction, 734 'action_type' => $action_type 735 ); 736 } 737 738 // Utiliser les données du formulaire en priorité, sinon la session 739 $session_formdev_ids = !empty($formdev_ids_from_form) ? $formdev_ids_from_form : WC()->session->get('formdev_ids_before_registration'); 740 689 741 if (!empty($session_formdev_ids)) { 690 742 update_user_meta($user->ID, 'formdev_ids', $session_formdev_ids); … … 695 747 } 696 748 697 $redirect_url = formdev_build_redirect_url(array('devis-formdev' => 1)); 749 // Construire l'URL avec les idProduit et idAction pour vérifier la restauration 750 $redirect_url = get_permalink(wc_get_page_id('cart')).'?devis-formdev=1'; 751 752 // Ajouter les idProduit et idAction dans l'URL si disponibles 753 if (!empty($session_formdev_ids) && is_array($session_formdev_ids)) { 754 foreach ($session_formdev_ids as $idProd => $data) { 755 $redirect_url = add_query_arg('idProduit', $idProd, $redirect_url); 756 if (isset($data['idAction'])) { 757 $redirect_url = add_query_arg('idAction', $data['idAction'], $redirect_url); 758 } 759 if (isset($data['action_type'])) { 760 $redirect_url = add_query_arg('action_type', $data['action_type'], $redirect_url); 761 } 762 break; // Prendre seulement le premier 763 } 764 } 765 698 766 header('location:'.$redirect_url); 699 767 exit(); … … 1405 1473 wp_set_auth_cookie($user->ID); 1406 1474 1407 // Récupérer les formdev_ids de la session et les assigner à l'utilisateur connecté 1408 $session_formdev_ids = WC()->session->get('formdev_ids_before_registration'); 1475 // Récupérer les idProduit et idAction depuis le formulaire (champs hidden) en priorité 1476 $formdev_ids_from_form = array(); 1477 if (isset($_POST['formdev_idProduit']) && !empty($_POST['formdev_idProduit'])) { 1478 $idProduit = absint($_POST['formdev_idProduit']); 1479 $idAction = isset($_POST['formdev_idAction']) ? absint($_POST['formdev_idAction']) : 0; 1480 $action_type = isset($_POST['formdev_action_type']) ? sanitize_text_field(wp_unslash($_POST['formdev_action_type'])) : 'quote'; 1481 1482 $formdev_ids_from_form[$idProduit] = array( 1483 'idProduit' => $idProduit, 1484 'idAction' => $idAction, 1485 'action_type' => $action_type 1486 ); 1487 } 1488 1489 // Utiliser les données du formulaire en priorité, sinon la session 1490 $session_formdev_ids = !empty($formdev_ids_from_form) ? $formdev_ids_from_form : WC()->session->get('formdev_ids_before_registration'); 1491 1409 1492 if (!empty($session_formdev_ids)) { 1410 1493 update_user_meta($user->ID, 'formdev_ids', $session_formdev_ids); 1494 // Restaurer le panier après connexion 1495 formdev_restore_cart_from_formdev_ids($user->ID, $session_formdev_ids); 1411 1496 // Nettoyer la session 1412 1497 WC()->session->set('formdev_ids_before_registration', null); 1413 1498 } 1414 1499 1415 $redirect_url = formdev_build_redirect_url(array('devis-formdev' => 1)); 1500 // Construire l'URL avec les idProduit et idAction pour vérifier la restauration 1501 $redirect_url = get_permalink(wc_get_page_id('cart')).'?devis-formdev=1'; 1502 1503 // Ajouter les idProduit et idAction dans l'URL si disponibles 1504 if (!empty($session_formdev_ids) && is_array($session_formdev_ids)) { 1505 foreach ($session_formdev_ids as $idProd => $data) { 1506 $redirect_url = add_query_arg('idProduit', $idProd, $redirect_url); 1507 if (isset($data['idAction'])) { 1508 $redirect_url = add_query_arg('idAction', $data['idAction'], $redirect_url); 1509 } 1510 if (isset($data['action_type'])) { 1511 $redirect_url = add_query_arg('action_type', $data['action_type'], $redirect_url); 1512 } 1513 break; // Prendre seulement le premier 1514 } 1515 } 1516 1416 1517 header('location:'.$redirect_url); 1417 1518 exit(); … … 1466 1567 $fd->setUser($user_id, $sanitized_post); 1467 1568 1468 // Récupérer les formdev_ids de la session avant inscription et les assigner au nouvel utilisateur 1469 $session_formdev_ids = WC()->session->get('formdev_ids_before_registration'); 1569 // Récupérer les idProduit et idAction depuis le formulaire (champs hidden) en priorité 1570 $formdev_ids_from_form = array(); 1571 if (isset($_POST['formdev_idProduit']) && !empty($_POST['formdev_idProduit'])) { 1572 $idProduit = absint($_POST['formdev_idProduit']); 1573 $idAction = isset($_POST['formdev_idAction']) ? absint($_POST['formdev_idAction']) : 0; 1574 $action_type = isset($_POST['formdev_action_type']) ? sanitize_text_field(wp_unslash($_POST['formdev_action_type'])) : 'quote'; 1575 1576 $formdev_ids_from_form[$idProduit] = array( 1577 'idProduit' => $idProduit, 1578 'idAction' => $idAction, 1579 'action_type' => $action_type 1580 ); 1581 } 1582 1583 // Utiliser les données du formulaire en priorité, sinon la session 1584 $session_formdev_ids = !empty($formdev_ids_from_form) ? $formdev_ids_from_form : WC()->session->get('formdev_ids_before_registration'); 1585 1470 1586 if (!empty($session_formdev_ids)) { 1471 1587 update_user_meta($user_id, 'formdev_ids', $session_formdev_ids); 1472 // Restaurer le panier après inscription 1588 // Restaurer le panier après inscription/mise à jour 1473 1589 formdev_restore_cart_from_formdev_ids($user_id, $session_formdev_ids); 1474 1590 // Nettoyer la session 1475 1591 WC()->session->set('formdev_ids_before_registration', null); 1476 1592 } 1477 1478 header('location:'.get_permalink(wc_get_page_id('cart')).'?devis-formdev=1&cart=1'); 1593 1594 // Construire l'URL avec les idProduit et idAction 1595 $redirect_url = get_permalink(wc_get_page_id('cart')).'?devis-formdev=1&cart=1'; 1596 1597 // Ajouter les idProduit et idAction dans l'URL si disponibles 1598 if (!empty($session_formdev_ids) && is_array($session_formdev_ids)) { 1599 foreach ($session_formdev_ids as $idProd => $data) { 1600 $redirect_url = add_query_arg('idProduit', $idProd, $redirect_url); 1601 if (isset($data['idAction'])) { 1602 $redirect_url = add_query_arg('idAction', $data['idAction'], $redirect_url); 1603 } 1604 if (isset($data['action_type'])) { 1605 $redirect_url = add_query_arg('action_type', $data['action_type'], $redirect_url); 1606 } 1607 break; // Prendre seulement le premier 1608 } 1609 } 1610 1611 header('location:'.$redirect_url); 1479 1612 exit(); 1480 1613 } -
formdev/trunk/readme.txt
r3426029 r3426727 5 5 Tested up to: 6.8 6 6 Requires PHP: 7.4 7 Stable tag: 1.3. 17 Stable tag: 1.3.2 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 68 68 69 69 == Changelog == 70 = 1.3.2 = 71 * fix add to cart product with login form 72 70 73 = 1.3.1 = 71 74 * fix add to cart product if error on subscribe form -
formdev/trunk/templates/login.php
r3426029 r3426727 89 89 echo '<input type="hidden" name="login-formdev" value="1">'; 90 90 wp_nonce_field('formdev_login_action', 'formdev_login_nonce'); 91 92 // Récupérer les idProduit et idAction depuis l'URL ou la session pour le formulaire de connexion 93 // Si idProduit et idAction sont dans l'URL, les utiliser 94 if ($idProduit > 0) { 95 echo '<input type="hidden" name="formdev_idProduit" value="' . esc_attr($idProduit) . '">'; 96 echo '<input type="hidden" name="formdev_idAction" value="' . esc_attr($idAction ?: 0) . '">'; 97 if (!empty($action_type)) { 98 echo '<input type="hidden" name="formdev_action_type" value="' . esc_attr($action_type) . '">'; 99 } 100 } elseif (function_exists('WC') && WC()->session) { 101 // Sinon, récupérer depuis la session ou user_meta si connecté 102 $formdev_ids = null; 103 if (!is_user_logged_in()) { 104 $formdev_ids = WC()->session->get('formdev_ids_before_registration'); 105 } else { 106 $user_id = get_current_user_id(); 107 $formdev_ids = get_user_meta($user_id, 'formdev_ids', true); 108 } 109 110 if (!empty($formdev_ids) && is_array($formdev_ids)) { 111 // Prendre le premier idProduit trouvé 112 foreach ($formdev_ids as $idProd => $data) { 113 echo '<input type="hidden" name="formdev_idProduit" value="' . esc_attr($idProd) . '">'; 114 echo '<input type="hidden" name="formdev_idAction" value="' . esc_attr(isset($data['idAction']) ? $data['idAction'] : 0) . '">'; 115 if (isset($data['action_type'])) { 116 echo '<input type="hidden" name="formdev_action_type" value="' . esc_attr($data['action_type']) . '">'; 117 } 118 break; // Prendre seulement le premier 119 } 120 } 121 } 122 123 // Préserver les nonces s'ils sont présents dans l'URL 124 if (!empty($formdev_product_nonce)) { 125 echo '<input type="hidden" name="formdev_product_nonce" value="' . esc_attr($formdev_product_nonce) . '">'; 126 } 127 if (!empty($formdev_template_nonce)) { 128 echo '<input type="hidden" name="formdev_template_nonce" value="' . esc_attr($formdev_template_nonce) . '">'; 129 } 91 130 } else { 92 131 wp_nonce_field('formdev_register_action', 'formdev_register_nonce'); 93 132 94 133 // Récupérer les idProduit et idAction depuis l'URL ou la session 95 if (!is_user_logged_in()) { 96 // Si idProduit et idAction sont dans l'URL, les utiliser 97 if ($idProduit > 0) { 98 echo '<input type="hidden" name="formdev_idProduit" value="' . esc_attr($idProduit) . '">'; 99 echo '<input type="hidden" name="formdev_idAction" value="' . esc_attr($idAction ?: 0) . '">'; 100 if (!empty($action_type)) { 101 echo '<input type="hidden" name="formdev_action_type" value="' . esc_attr($action_type) . '">'; 134 // Si idProduit et idAction sont dans l'URL, les utiliser 135 if ($idProduit > 0) { 136 echo '<input type="hidden" name="formdev_idProduit" value="' . esc_attr($idProduit) . '">'; 137 echo '<input type="hidden" name="formdev_idAction" value="' . esc_attr($idAction ?: 0) . '">'; 138 if (!empty($action_type)) { 139 echo '<input type="hidden" name="formdev_action_type" value="' . esc_attr($action_type) . '">'; 140 } 141 } elseif (function_exists('WC') && WC()->session) { 142 // Sinon, récupérer depuis la session ou user_meta si connecté 143 $formdev_ids = null; 144 if (!is_user_logged_in()) { 145 $formdev_ids = WC()->session->get('formdev_ids_before_registration'); 146 } else { 147 $user_id = get_current_user_id(); 148 $formdev_ids = get_user_meta($user_id, 'formdev_ids', true); 149 } 150 151 if (!empty($formdev_ids) && is_array($formdev_ids)) { 152 // Prendre le premier idProduit trouvé 153 foreach ($formdev_ids as $idProd => $data) { 154 echo '<input type="hidden" name="formdev_idProduit" value="' . esc_attr($idProd) . '">'; 155 echo '<input type="hidden" name="formdev_idAction" value="' . esc_attr(isset($data['idAction']) ? $data['idAction'] : 0) . '">'; 156 if (isset($data['action_type'])) { 157 echo '<input type="hidden" name="formdev_action_type" value="' . esc_attr($data['action_type']) . '">'; 158 } 159 break; // Prendre seulement le premier 102 160 } 103 } elseif (function_exists('WC') && WC()->session) { 104 // Sinon, récupérer depuis la session 105 $formdev_ids = WC()->session->get('formdev_ids_before_registration'); 106 if (!empty($formdev_ids) && is_array($formdev_ids)) { 107 // Prendre le premier idProduit trouvé dans la session 108 foreach ($formdev_ids as $idProd => $data) { 109 echo '<input type="hidden" name="formdev_idProduit" value="' . esc_attr($idProd) . '">'; 110 echo '<input type="hidden" name="formdev_idAction" value="' . esc_attr(isset($data['idAction']) ? $data['idAction'] : 0) . '">'; 111 if (isset($data['action_type'])) { 112 echo '<input type="hidden" name="formdev_action_type" value="' . esc_attr($data['action_type']) . '">'; 113 } 114 break; // Prendre seulement le premier 115 } 116 } 117 } 118 119 // Préserver les nonces s'ils sont présents dans l'URL 120 if (!empty($formdev_product_nonce)) { 121 echo '<input type="hidden" name="formdev_product_nonce" value="' . esc_attr($formdev_product_nonce) . '">'; 122 } 123 if (!empty($formdev_template_nonce)) { 124 echo '<input type="hidden" name="formdev_template_nonce" value="' . esc_attr($formdev_template_nonce) . '">'; 125 } 161 } 162 } 163 164 // Préserver les nonces s'ils sont présents dans l'URL 165 if (!empty($formdev_product_nonce)) { 166 echo '<input type="hidden" name="formdev_product_nonce" value="' . esc_attr($formdev_product_nonce) . '">'; 167 } 168 if (!empty($formdev_template_nonce)) { 169 echo '<input type="hidden" name="formdev_template_nonce" value="' . esc_attr($formdev_template_nonce) . '">'; 126 170 } 127 171 }
Note: See TracChangeset
for help on using the changeset viewer.