Changeset 3780103
- Timestamp:
- 11/02/2026 03:11:43 PM (13 hours ago)
- Location:
- mrz-gift-lists-exp
- Files:
-
- 24 edited
- 1 copied
-
tags/0.12.2 (copied) (copied from mrz-gift-lists-exp/trunk )
-
tags/0.12.2/includes/admin/class-list-table.php (modified) (1 diff)
-
tags/0.12.2/includes/admin/pages/class-settings-page.php (modified) (2 diffs)
-
tags/0.12.2/includes/ajax/class-handler.php (modified) (1 diff)
-
tags/0.12.2/includes/frontend/shortcodes/class-gift-lists-shortcode.php (modified) (11 diffs)
-
tags/0.12.2/includes/integrations/class-woo-commerce.php (modified) (1 diff)
-
tags/0.12.2/languages/mrz-gift-lists-exp-fr_FR.l10n.php (modified) (1 diff)
-
tags/0.12.2/languages/mrz-gift-lists-exp-fr_FR.mo (modified) ( previous)
-
tags/0.12.2/languages/mrz-gift-lists-exp-fr_FR.po (modified) (1 diff)
-
tags/0.12.2/languages/mrz-gift-lists-exp.pot (modified) (1 diff)
-
tags/0.12.2/mrz-gift-lists-exp.php (modified) (2 diffs)
-
tags/0.12.2/readme.txt (modified) (2 diffs)
-
tags/0.12.2/uninstall.php (modified) (2 diffs)
-
trunk/includes/admin/class-list-table.php (modified) (1 diff)
-
trunk/includes/admin/pages/class-settings-page.php (modified) (2 diffs)
-
trunk/includes/ajax/class-handler.php (modified) (1 diff)
-
trunk/includes/frontend/shortcodes/class-gift-lists-shortcode.php (modified) (11 diffs)
-
trunk/includes/integrations/class-woo-commerce.php (modified) (1 diff)
-
trunk/languages/mrz-gift-lists-exp-fr_FR.l10n.php (modified) (1 diff)
-
trunk/languages/mrz-gift-lists-exp-fr_FR.mo (modified) ( previous)
-
trunk/languages/mrz-gift-lists-exp-fr_FR.po (modified) (1 diff)
-
trunk/languages/mrz-gift-lists-exp.pot (modified) (1 diff)
-
trunk/mrz-gift-lists-exp.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/uninstall.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
mrz-gift-lists-exp/tags/0.12.2/includes/admin/class-list-table.php
r3780021 r3780103 165 165 LIMIT %d OFFSET %d"; 166 166 167 return $wpdb->get_results( $wpdb->prepare( $sql, $params ) ); 167 // $orderby, $order et le nom de table sont en liste blanche ou constants (voir plus haut) ; les valeurs passent par prepare(). 168 return $wpdb->get_results( $wpdb->prepare( $sql, $params ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 168 169 } 169 170 -
mrz-gift-lists-exp/tags/0.12.2/includes/admin/pages/class-settings-page.php
r3777163 r3780103 145 145 wp_dropdown_pages( [ 146 146 'name' => 'mrzgle_page_id', 147 'selected' => $page_id,148 'show_option_none' => __( '-- Select --', 'mrz-gift-lists-exp' ),147 'selected' => absint( $page_id ), 148 'show_option_none' => esc_html__( '-- Select --', 'mrz-gift-lists-exp' ), 149 149 'option_none_value' => 0, 150 150 ] ); … … 159 159 wp_dropdown_pages( [ 160 160 'name' => 'mrzgle_shop_page_id', 161 'selected' => $page_id,162 'show_option_none' => __( '-- Select --', 'mrz-gift-lists-exp' ),161 'selected' => absint( $page_id ), 162 'show_option_none' => esc_html__( '-- Select --', 'mrz-gift-lists-exp' ), 163 163 'option_none_value' => 0, 164 164 ] ); -
mrz-gift-lists-exp/tags/0.12.2/includes/ajax/class-handler.php
r3777163 r3780103 337 337 'mrzgle_item_id' => $item_id, 338 338 'mrzgle_list_title' => $this->list_repo->find( $list_id )->title ?? '', 339 'unique_key' => md5( microtime() . rand() ),339 'unique_key' => md5( microtime() . wp_rand() ), 340 340 ] ); 341 341 -
mrz-gift-lists-exp/tags/0.12.2/includes/frontend/shortcodes/class-gift-lists-shortcode.php
r3780021 r3780103 179 179 180 180 <div class="mrz-gle-row-actions"> 181 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( $list_url ); ?>" title="<?php esc_attr_e( 'View', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'eye', __( 'View', 'mrz-gift-lists-exp' ) ); ?></a>182 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( add_query_arg( [ 'action' => 'edit', 'list_id' => $list->id ], \Mrzgle\Plugin::instance()->get_lists_page_url() ) ); ?>" title="<?php esc_attr_e( 'Edit', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'edit', __( 'Edit', 'mrz-gift-lists-exp' ) ); ?></a>181 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( $list_url ); ?>" title="<?php esc_attr_e( 'View', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'eye', __( 'View', 'mrz-gift-lists-exp' ) ); ?></a> 182 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( add_query_arg( [ 'action' => 'edit', 'list_id' => $list->id ], \Mrzgle\Plugin::instance()->get_lists_page_url() ) ); ?>" title="<?php esc_attr_e( 'Edit', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'edit', __( 'Edit', 'mrz-gift-lists-exp' ) ); ?></a> 183 183 <form method="post" class="mrz-gle-list-manage"> 184 184 <?php wp_nonce_field( 'mrzgle_owner_list_action_' . $list->id, 'mrzgle_list_nonce' ); ?> … … 186 186 <input type="hidden" name="mrzgle_return" value="my-lists"> 187 187 <?php if ( $is_active ) : ?> 188 <button type="submit" name="mrzgle_list_action" value="deactivate" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" title="<?php esc_attr_e( 'Deactivate', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'pause-circle', __( 'Deactivate', 'mrz-gift-lists-exp' ) ); ?></button>188 <button type="submit" name="mrzgle_list_action" value="deactivate" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" title="<?php esc_attr_e( 'Deactivate', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'pause-circle', __( 'Deactivate', 'mrz-gift-lists-exp' ) ); ?></button> 189 189 <?php else : ?> 190 <button type="submit" name="mrzgle_list_action" value="activate" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" title="<?php esc_attr_e( 'Activate', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'play-circle', __( 'Activate', 'mrz-gift-lists-exp' ) ); ?></button>190 <button type="submit" name="mrzgle_list_action" value="activate" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" title="<?php esc_attr_e( 'Activate', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'play-circle', __( 'Activate', 'mrz-gift-lists-exp' ) ); ?></button> 191 191 <?php endif; ?> 192 192 <button type="submit" name="mrzgle_list_action" value="delete" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon mrz-gle-btn-danger mrz-gle-confirm" title="<?php esc_attr_e( 'Delete', 'mrz-gift-lists-exp' ); ?>" 193 data-confirm="<?php esc_attr_e( 'Permanently delete this list?', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'trash', __( 'Delete', 'mrz-gift-lists-exp' ) ); ?></button>193 data-confirm="<?php esc_attr_e( 'Permanently delete this list?', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'trash', __( 'Delete', 'mrz-gift-lists-exp' ) ); ?></button> 194 194 </form> 195 195 </div> … … 219 219 <?php if ( Frontend::can_create_list() ) : ?> 220 220 <a href="<?php echo esc_url( add_query_arg( 'action', 'create' ) ); ?>" class="mrz-gle-btn mrz-gle-btn-primary"> 221 <?php echo $this->icon( 'add', '' ); ?> <?php esc_html_e( 'New list', 'mrz-gift-lists-exp' ); ?>221 <?php $this->render_icon( 'add', '' ); ?> <?php esc_html_e( 'New list', 'mrz-gift-lists-exp' ); ?> 222 222 </a> 223 223 <?php endif; ?> … … 628 628 <div class="mrz-gle-owner-actions"> 629 629 <a href="<?php echo esc_url( $this->get_shop_url() ); ?>" class="mrz-gle-btn mrz-gle-btn-primary"> 630 <?php echo $this->icon( 'add', '' ); ?> <?php esc_html_e( 'Add product', 'mrz-gift-lists-exp' ); ?>630 <?php $this->render_icon( 'add', '' ); ?> <?php esc_html_e( 'Add product', 'mrz-gift-lists-exp' ); ?> 631 631 </a> 632 632 633 633 <a href="<?php echo esc_url( add_query_arg( [ 'action' => 'edit', 'list_id' => $list->id ], \Mrzgle\Plugin::instance()->get_lists_page_url() ) ); ?>" class="mrz-gle-btn"> 634 <?php echo $this->icon( 'edit', '' ); ?> <?php esc_html_e( 'Edit', 'mrz-gift-lists-exp' ); ?>634 <?php $this->render_icon( 'edit', '' ); ?> <?php esc_html_e( 'Edit', 'mrz-gift-lists-exp' ); ?> 635 635 </a> 636 636 … … 640 640 <input type="hidden" name="mrzgle_return" value="list"> 641 641 <?php if ( 'active' === $list->status ) : ?> 642 <button type="submit" name="mrzgle_list_action" value="deactivate" class="mrz-gle-btn"><?php echo $this->icon( 'pause-circle', '' ); ?> <?php esc_html_e( 'Deactivate', 'mrz-gift-lists-exp' ); ?></button>642 <button type="submit" name="mrzgle_list_action" value="deactivate" class="mrz-gle-btn"><?php $this->render_icon( 'pause-circle', '' ); ?> <?php esc_html_e( 'Deactivate', 'mrz-gift-lists-exp' ); ?></button> 643 643 <?php else : ?> 644 <button type="submit" name="mrzgle_list_action" value="activate" class="mrz-gle-btn"><?php echo $this->icon( 'play-circle', '' ); ?> <?php esc_html_e( 'Activate', 'mrz-gift-lists-exp' ); ?></button>644 <button type="submit" name="mrzgle_list_action" value="activate" class="mrz-gle-btn"><?php $this->render_icon( 'play-circle', '' ); ?> <?php esc_html_e( 'Activate', 'mrz-gift-lists-exp' ); ?></button> 645 645 <?php endif; ?> 646 646 <button type="submit" name="mrzgle_list_action" value="delete" class="mrz-gle-btn mrz-gle-btn-danger mrz-gle-confirm" 647 data-confirm="<?php esc_attr_e( 'Permanently delete this list?', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'trash', '' ); ?> <?php esc_html_e( 'Delete', 'mrz-gift-lists-exp' ); ?></button>647 data-confirm="<?php esc_attr_e( 'Permanently delete this list?', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'trash', '' ); ?> <?php esc_html_e( 'Delete', 'mrz-gift-lists-exp' ); ?></button> 648 648 </form> 649 649 </div> … … 688 688 <p class="mrz-gle-empty-actions"> 689 689 <a href="<?php echo esc_url( $this->get_shop_url() ); ?>" class="mrz-gle-btn mrz-gle-btn-primary"> 690 <?php echo $this->icon( 'add', '' ); ?> <?php esc_html_e( 'Add product', 'mrz-gift-lists-exp' ); ?>690 <?php $this->render_icon( 'add', '' ); ?> <?php esc_html_e( 'Add product', 'mrz-gift-lists-exp' ); ?> 691 691 </a> 692 692 </p> … … 743 743 744 744 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( $item->product_url ); ?>" title="<?php esc_attr_e( 'View product', 'mrz-gift-lists-exp' ); ?>"> 745 <?php echo $this->icon( 'eye', __( 'View product', 'mrz-gift-lists-exp' ) ); ?>745 <?php $this->render_icon( 'eye', __( 'View product', 'mrz-gift-lists-exp' ) ); ?> 746 746 </a> 747 747 … … 751 751 data-item-id="<?php echo esc_attr( $item->id ); ?>" 752 752 title="<?php esc_attr_e( 'Favorite (show at the top)', 'mrz-gift-lists-exp' ); ?>"> 753 <?php echo $this->icon( $item->priority ? 'star-active' : 'star', __( 'Favorite', 'mrz-gift-lists-exp' ) ); ?>753 <?php $this->render_icon( $item->priority ? 'star-active' : 'star', __( 'Favorite', 'mrz-gift-lists-exp' ) ); ?> 754 754 </button> 755 755 <button type="button" … … 757 757 data-item-id="<?php echo esc_attr( $item->id ); ?>" 758 758 title="<?php esc_attr_e( 'Remove from list', 'mrz-gift-lists-exp' ); ?>"> 759 <?php echo $this->icon( 'trash', __( 'Remove from list', 'mrz-gift-lists-exp' ) ); ?>759 <?php $this->render_icon( 'trash', __( 'Remove from list', 'mrz-gift-lists-exp' ) ); ?> 760 760 </button> 761 761 <?php endif; ?> … … 783 783 784 784 /** 785 * Retourne la balise <img> d'une icône du plugin (assets/img/<name>.svg).785 * Affiche la balise <img> d'une icône du plugin (assets/img/<name>.svg). 786 786 * 787 787 * @param string $name Nom du fichier, sans extension. 788 788 * @param string $label Texte alternatif (accessibilité). 789 * @return string 790 */ 791 private function icon( string $name, string $label ): string { 792 return sprintf( 789 */ 790 private function render_icon( string $name, string $label ): void { 791 printf( 793 792 '<img class="mrz-gle-icon" src="%s" alt="%s">', 794 793 esc_url( MRZGLE_PLUGIN_URL . 'assets/img/' . $name . '.svg' ), … … 812 811 <input type="text" class="mrz-gle-share-url" value="<?php echo esc_url( $list_url ); ?>" readonly> 813 812 <button type="button" class="mrz-gle-btn mrz-gle-share-copy" data-url="<?php echo esc_attr( $list_url ); ?>"> 814 <?php echo $this->icon( 'copy-alt', '' ); ?> <?php esc_html_e( 'Copy link', 'mrz-gift-lists-exp' ); ?>813 <?php $this->render_icon( 'copy-alt', '' ); ?> <?php esc_html_e( 'Copy link', 'mrz-gift-lists-exp' ); ?> 815 814 </button> 816 815 </div> -
mrz-gift-lists-exp/tags/0.12.2/includes/integrations/class-woo-commerce.php
r3777163 r3780103 151 151 152 152 // Clé unique pour permettre le même produit plusieurs fois 153 $cart_item_data['unique_key'] = md5( microtime() . rand() );153 $cart_item_data['unique_key'] = md5( microtime() . wp_rand() ); 154 154 } 155 155 } -
mrz-gift-lists-exp/tags/0.12.2/languages/mrz-gift-lists-exp-fr_FR.l10n.php
r3780021 r3780103 1 1 <?php 2 return ['domain'=>'mrz-gift-lists-exp','plural-forms'=>'nplurals=2; plural=(n > 1);','language'=>'fr_FR','project-id-version'=>'MRZ Gift Lists 0.12. 1','pot-creation-date'=>'2026-10-31T16:37:09+00:00','po-revision-date'=>'2026-10-31 16:37+0000','x-generator'=>'WP-CLI 2.12.0','messages'=>['MRZ Gift Lists Exp'=>'MRZ Gift Lists Exp','https://github.com/m0r3z/mrz-gift-lists-exp'=>'https://github.com/m0r3z/mrz-gift-lists-exp','Gift lists for WooCommerce: your customers build a list of products to receive, share the link, and their friends and family buy them.'=>'Listes de cadeaux pour WooCommerce : vos clients créent une liste de produits, partagent le lien, et leurs proches achètent.','Morez.co'=>'Morez.co','https://morez.co'=>'https://morez.co','MRZ Gift Lists: no lists page is set. Create a page containing the [mrzgle_lists] shortcode, then select it in the settings.'=>'MRZ Gift Lists : aucune page des listes n\'est définie. Créez une page contenant le shortcode [mrzgle_lists], puis sélectionnez-la dans les réglages.','Open settings'=>'Ouvrir les réglages','MRZ Gift Lists'=>'MRZ Gift Lists','All lists'=>'Toutes les listes','Settings'=>'Réglages','Title'=>'Titre','Creator'=>'Créateur','Products'=>'Produits','Status'=>'Statut','Date'=>'Date','View details'=>'Voir détails','View on site'=>'Voir sur le site','Are you sure you want to delete this list?'=>'Êtes-vous sûr de vouloir supprimer cette liste ?','Delete'=>'Supprimer','Deleted user'=>'Utilisateur supprimé','purchased'=>'achetés','Active'=>'Active','Archived'=>'Archivée','Completed'=>'Terminée','No lists found.'=>'Aucune liste trouvée.','All statuses'=>'Tous les statuts','Filter'=>'Filtrer','Action not allowed.'=>'Action non autorisée.','Gift lists'=>'Listes de cadeaux','Search'=>'Rechercher','List not found.'=>'Liste non trouvée.','Back'=>'Retour','Details'=>'Informations','Date created'=>'Date de création','Event date'=>'Date de l\'événement','Access key'=>'Clé d\'accès','View'=>'Voir','Description'=>'Description','No products in this list.'=>'Aucun produit dans cette liste.','Product'=>'Produit','Price'=>'Prix','Purchased by'=>'Acheté par','Favorite'=>'Favori','Available'=>'Disponible','Reserved'=>'Réservé','Purchased'=>'Acheté','Statistics'=>'Statistiques','products in total'=>'produits au total','available'=>'disponibles','Actions'=>'Actions','View list'=>'Voir la liste','Archive'=>'Archiver','Reactivate'=>'Réactiver','List deleted successfully.'=>'Liste supprimée avec succès.','List archived successfully.'=>'Liste archivée avec succès.','List reactivated successfully.'=>'Liste réactivée avec succès.','General settings'=>'Réglages généraux','Lists page'=>'Page des listes','Shop page'=>'Page boutique','Max lists per user'=>'Listes max par utilisateur','Emails'=>'Emails','Admin email'=>'Email administrateur','Notify the list creator'=>'Notifier le créateur','You do not have sufficient permissions.'=>'Vous n\'avez pas les droits nécessaires.','MRZ Gift Lists settings'=>'Réglages MRZ Gift Lists','Configure the general plugin options.'=>'Configurez les options générales du plugin.','Configure email notifications.'=>'Configurez les notifications par email.','-- Select --'=>'-- Sélectionner --','Page containing the [mrzgle_lists] shortcode.'=>'Page contenant le shortcode [mrzgle_lists].','Page that a list’s “Add product” button links to. Defaults to the WooCommerce shop page.'=>'Page vers laquelle renvoie le bouton « Ajouter un produit » d\'une liste. Par défaut, la page boutique WooCommerce.','Maximum number of active lists per user (0 = unlimited).'=>'Nombre maximum de listes actives par utilisateur (0 = illimité).','Email address that receives notifications (leave empty to disable).'=>'Email pour recevoir les notifications (laisser vide pour désactiver).','Send an email to the list creator when a product is purchased'=>'Envoyer un email au créateur de la liste quand un produit est acheté','Security check failed. Please refresh the page.'=>'Erreur de sécurité. Veuillez rafraîchir la page.','You must be logged in.'=>'Vous devez être connecté.','You are not allowed to edit this list.'=>'Vous n\'êtes pas autorisé à modifier cette liste.','Missing data.'=>'Données manquantes.','Product not found.'=>'Produit introuvable.','This product is already in the list.'=>'Ce produit est déjà dans la liste.','Product added to the list.'=>'Produit ajouté à la liste.','Product removed from the list.'=>'Produit retiré de la liste.','Error while deleting.'=>'Erreur lors de la suppression.','Marked as priority.'=>'Marqué comme prioritaire.','Priority removed.'=>'Priorité retirée.','Nothing to update.'=>'Aucune donnée à mettre à jour.','List updated.'=>'Liste mise à jour.','Error while updating.'=>'Erreur lors de la mise à jour.','List deleted.'=>'Liste supprimée.','Product not found in the list.'=>'Produit introuvable dans la liste.','This product has already been gifted.'=>'Ce produit a déjà été offert.','Product added to the cart.'=>'Produit ajouté au panier.','Error while adding to the cart.'=>'Erreur lors de l\'ajout au panier.','Are you sure you want to delete this item?'=>'Êtes-vous sûr de vouloir supprimer cet élément ?','Adding...'=>'Ajout en cours...','Added!'=>'Ajouté !','An error occurred'=>'Une erreur est survenue','Product added to the list'=>'Produit ajouté à la liste','Product removed from the list'=>'Produit retiré de la liste','Product added to the cart'=>'Produit ajouté au panier','Link copied!'=>'Lien copié !','Please select a list.'=>'Veuillez sélectionner une liste.','Are you sure you want to delete this?'=>'Êtes-vous sûr de vouloir supprimer ?','Saved'=>'Enregistré','Error'=>'Erreur','[%s] New gift list created'=>'[%s] Nouvelle liste de cadeaux créée','🎁 A gift has been purchased from your list "%s"'=>'🎁 Un cadeau a été offert depuis votre liste "%s"','[%s] Purchase from a gift list'=>'[%s] Achat depuis une liste de cadeaux','Unknown'=>'Inconnu','2 return ['domain'=>'mrz-gift-lists-exp','plural-forms'=>'nplurals=2; plural=(n > 1);','language'=>'fr_FR','project-id-version'=>'MRZ Gift Lists 0.12.2','pot-creation-date'=>'2026-10-31T16:37:09+00:00','po-revision-date'=>'2026-10-31 16:37+0000','x-generator'=>'WP-CLI 2.12.0','messages'=>['MRZ Gift Lists Exp'=>'MRZ Gift Lists Exp','https://github.com/m0r3z/mrz-gift-lists-exp'=>'https://github.com/m0r3z/mrz-gift-lists-exp','Gift lists for WooCommerce: your customers build a list of products to receive, share the link, and their friends and family buy them.'=>'Listes de cadeaux pour WooCommerce : vos clients créent une liste de produits, partagent le lien, et leurs proches achètent.','Morez.co'=>'Morez.co','https://morez.co'=>'https://morez.co','MRZ Gift Lists: no lists page is set. Create a page containing the [mrzgle_lists] shortcode, then select it in the settings.'=>'MRZ Gift Lists : aucune page des listes n\'est définie. Créez une page contenant le shortcode [mrzgle_lists], puis sélectionnez-la dans les réglages.','Open settings'=>'Ouvrir les réglages','MRZ Gift Lists'=>'MRZ Gift Lists','All lists'=>'Toutes les listes','Settings'=>'Réglages','Title'=>'Titre','Creator'=>'Créateur','Products'=>'Produits','Status'=>'Statut','Date'=>'Date','View details'=>'Voir détails','View on site'=>'Voir sur le site','Are you sure you want to delete this list?'=>'Êtes-vous sûr de vouloir supprimer cette liste ?','Delete'=>'Supprimer','Deleted user'=>'Utilisateur supprimé','purchased'=>'achetés','Active'=>'Active','Archived'=>'Archivée','Completed'=>'Terminée','No lists found.'=>'Aucune liste trouvée.','All statuses'=>'Tous les statuts','Filter'=>'Filtrer','Action not allowed.'=>'Action non autorisée.','Gift lists'=>'Listes de cadeaux','Search'=>'Rechercher','List not found.'=>'Liste non trouvée.','Back'=>'Retour','Details'=>'Informations','Date created'=>'Date de création','Event date'=>'Date de l\'événement','Access key'=>'Clé d\'accès','View'=>'Voir','Description'=>'Description','No products in this list.'=>'Aucun produit dans cette liste.','Product'=>'Produit','Price'=>'Prix','Purchased by'=>'Acheté par','Favorite'=>'Favori','Available'=>'Disponible','Reserved'=>'Réservé','Purchased'=>'Acheté','Statistics'=>'Statistiques','products in total'=>'produits au total','available'=>'disponibles','Actions'=>'Actions','View list'=>'Voir la liste','Archive'=>'Archiver','Reactivate'=>'Réactiver','List deleted successfully.'=>'Liste supprimée avec succès.','List archived successfully.'=>'Liste archivée avec succès.','List reactivated successfully.'=>'Liste réactivée avec succès.','General settings'=>'Réglages généraux','Lists page'=>'Page des listes','Shop page'=>'Page boutique','Max lists per user'=>'Listes max par utilisateur','Emails'=>'Emails','Admin email'=>'Email administrateur','Notify the list creator'=>'Notifier le créateur','You do not have sufficient permissions.'=>'Vous n\'avez pas les droits nécessaires.','MRZ Gift Lists settings'=>'Réglages MRZ Gift Lists','Configure the general plugin options.'=>'Configurez les options générales du plugin.','Configure email notifications.'=>'Configurez les notifications par email.','-- Select --'=>'-- Sélectionner --','Page containing the [mrzgle_lists] shortcode.'=>'Page contenant le shortcode [mrzgle_lists].','Page that a list’s “Add product” button links to. Defaults to the WooCommerce shop page.'=>'Page vers laquelle renvoie le bouton « Ajouter un produit » d\'une liste. Par défaut, la page boutique WooCommerce.','Maximum number of active lists per user (0 = unlimited).'=>'Nombre maximum de listes actives par utilisateur (0 = illimité).','Email address that receives notifications (leave empty to disable).'=>'Email pour recevoir les notifications (laisser vide pour désactiver).','Send an email to the list creator when a product is purchased'=>'Envoyer un email au créateur de la liste quand un produit est acheté','Security check failed. Please refresh the page.'=>'Erreur de sécurité. Veuillez rafraîchir la page.','You must be logged in.'=>'Vous devez être connecté.','You are not allowed to edit this list.'=>'Vous n\'êtes pas autorisé à modifier cette liste.','Missing data.'=>'Données manquantes.','Product not found.'=>'Produit introuvable.','This product is already in the list.'=>'Ce produit est déjà dans la liste.','Product added to the list.'=>'Produit ajouté à la liste.','Product removed from the list.'=>'Produit retiré de la liste.','Error while deleting.'=>'Erreur lors de la suppression.','Marked as priority.'=>'Marqué comme prioritaire.','Priority removed.'=>'Priorité retirée.','Nothing to update.'=>'Aucune donnée à mettre à jour.','List updated.'=>'Liste mise à jour.','Error while updating.'=>'Erreur lors de la mise à jour.','List deleted.'=>'Liste supprimée.','Product not found in the list.'=>'Produit introuvable dans la liste.','This product has already been gifted.'=>'Ce produit a déjà été offert.','Product added to the cart.'=>'Produit ajouté au panier.','Error while adding to the cart.'=>'Erreur lors de l\'ajout au panier.','Are you sure you want to delete this item?'=>'Êtes-vous sûr de vouloir supprimer cet élément ?','Adding...'=>'Ajout en cours...','Added!'=>'Ajouté !','An error occurred'=>'Une erreur est survenue','Product added to the list'=>'Produit ajouté à la liste','Product removed from the list'=>'Produit retiré de la liste','Product added to the cart'=>'Produit ajouté au panier','Link copied!'=>'Lien copié !','Please select a list.'=>'Veuillez sélectionner une liste.','Are you sure you want to delete this?'=>'Êtes-vous sûr de vouloir supprimer ?','Saved'=>'Enregistré','Error'=>'Erreur','[%s] New gift list created'=>'[%s] Nouvelle liste de cadeaux créée','🎁 A gift has been purchased from your list "%s"'=>'🎁 Un cadeau a été offert depuis votre liste "%s"','[%s] Purchase from a gift list'=>'[%s] Achat depuis une liste de cadeaux','Unknown'=>'Inconnu',' 3 3 4 4 Message: %s'=>' -
mrz-gift-lists-exp/tags/0.12.2/languages/mrz-gift-lists-exp-fr_FR.po
r3780021 r3780103 1 1 msgid "" 2 2 msgstr "" 3 "Project-Id-Version: MRZ Gift Lists 0.12. 1\n"3 "Project-Id-Version: MRZ Gift Lists 0.12.2\n" 4 4 "Report-Msgid-Bugs-To: https://github.com/m0r3z/mrz-gift-lists-exp\n" 5 5 "Last-Translator: Morez.co <hello@morez.co>\n" -
mrz-gift-lists-exp/tags/0.12.2/languages/mrz-gift-lists-exp.pot
r3780021 r3780103 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: MRZ Gift Lists Exp 0.12. 1\n"5 "Project-Id-Version: MRZ Gift Lists Exp 0.12.2\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mrz-gift-lists-exp\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -
mrz-gift-lists-exp/tags/0.12.2/mrz-gift-lists-exp.php
r3780021 r3780103 4 4 * Plugin URI: https://github.com/m0r3z/mrz-gift-lists-exp 5 5 * Description: Gift lists for WooCommerce: your customers build a list of products to receive, share the link, and their friends and family buy them. 6 * Version: 0.12. 16 * Version: 0.12.2 7 7 * Requires at least: 6.0 8 8 * Requires PHP: 8.0 … … 30 30 31 31 // Constantes du plugin 32 define( 'MRZGLE_VERSION', '0.12. 1' );32 define( 'MRZGLE_VERSION', '0.12.2' ); 33 33 define( 'MRZGLE_PLUGIN_FILE', __FILE__ ); 34 34 define( 'MRZGLE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); -
mrz-gift-lists-exp/tags/0.12.2/readme.txt
r3780021 r3780103 5 5 Tested up to: 7.1 6 6 Requires PHP: 8.0 7 Stable tag: 0.12. 17 Stable tag: 0.12.2 8 8 License: GPLv3 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-3.0.html … … 60 60 61 61 == Changelog == 62 63 = 0.12.2 = 64 * Security: escaped the page dropdowns on the settings screen. 65 * Use wp_rand() instead of rand() when adding a gift to the cart. 66 * Code cleanup for Plugin Check: icons are printed with escaped output, the admin list query and the uninstall routine are documented, and uninstall variables are prefixed. 62 67 63 68 = 0.12.1 = -
mrz-gift-lists-exp/tags/0.12.2/uninstall.php
r3679573 r3780103 17 17 18 18 // Supprime les tables 19 $ tables = [19 $mrzgle_tables = [ 20 20 $wpdb->prefix . 'mrzgle_lists', 21 21 $wpdb->prefix . 'mrzgle_items', 22 22 ]; 23 23 24 foreach ( $tables as $table ) { 25 $wpdb->query( "DROP TABLE IF EXISTS {$table}" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 24 foreach ( $mrzgle_tables as $mrzgle_table ) { 25 // Nom de table construit à partir de $wpdb->prefix et d'une liste fixe : rien à préparer ni à mettre en cache. 26 $wpdb->query( "DROP TABLE IF EXISTS {$mrzgle_table}" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange 26 27 } 27 28 28 29 // Supprime les options 29 $ options = [30 $mrzgle_options = [ 30 31 'mrzgle_db_version', 31 32 'mrzgle_page_id', … … 40 41 ]; 41 42 42 foreach ( $ options as $option ) {43 delete_option( $ option );43 foreach ( $mrzgle_options as $mrzgle_option ) { 44 delete_option( $mrzgle_option ); 44 45 } 45 46 46 47 // Supprime les capabilities 47 $ roles = [ 'administrator', 'shop_manager' ];48 $ capabilities = [ 'mrzgle_manage_lists', 'mrzgle_edit_lists', 'mrzgle_delete_lists' ];48 $mrzgle_roles = [ 'administrator', 'shop_manager' ]; 49 $mrzgle_capabilities = [ 'mrzgle_manage_lists', 'mrzgle_edit_lists', 'mrzgle_delete_lists' ]; 49 50 50 foreach ( $ roles as $role_name ) {51 $ role = get_role( $role_name );52 if ( $ role ) {53 foreach ( $ capabilities as $cap ) {54 $ role->remove_cap( $cap );51 foreach ( $mrzgle_roles as $mrzgle_role_name ) { 52 $mrzgle_role = get_role( $mrzgle_role_name ); 53 if ( $mrzgle_role ) { 54 foreach ( $mrzgle_capabilities as $mrzgle_cap ) { 55 $mrzgle_role->remove_cap( $mrzgle_cap ); 55 56 } 56 57 } -
mrz-gift-lists-exp/trunk/includes/admin/class-list-table.php
r3780021 r3780103 165 165 LIMIT %d OFFSET %d"; 166 166 167 return $wpdb->get_results( $wpdb->prepare( $sql, $params ) ); 167 // $orderby, $order et le nom de table sont en liste blanche ou constants (voir plus haut) ; les valeurs passent par prepare(). 168 return $wpdb->get_results( $wpdb->prepare( $sql, $params ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching 168 169 } 169 170 -
mrz-gift-lists-exp/trunk/includes/admin/pages/class-settings-page.php
r3777163 r3780103 145 145 wp_dropdown_pages( [ 146 146 'name' => 'mrzgle_page_id', 147 'selected' => $page_id,148 'show_option_none' => __( '-- Select --', 'mrz-gift-lists-exp' ),147 'selected' => absint( $page_id ), 148 'show_option_none' => esc_html__( '-- Select --', 'mrz-gift-lists-exp' ), 149 149 'option_none_value' => 0, 150 150 ] ); … … 159 159 wp_dropdown_pages( [ 160 160 'name' => 'mrzgle_shop_page_id', 161 'selected' => $page_id,162 'show_option_none' => __( '-- Select --', 'mrz-gift-lists-exp' ),161 'selected' => absint( $page_id ), 162 'show_option_none' => esc_html__( '-- Select --', 'mrz-gift-lists-exp' ), 163 163 'option_none_value' => 0, 164 164 ] ); -
mrz-gift-lists-exp/trunk/includes/ajax/class-handler.php
r3777163 r3780103 337 337 'mrzgle_item_id' => $item_id, 338 338 'mrzgle_list_title' => $this->list_repo->find( $list_id )->title ?? '', 339 'unique_key' => md5( microtime() . rand() ),339 'unique_key' => md5( microtime() . wp_rand() ), 340 340 ] ); 341 341 -
mrz-gift-lists-exp/trunk/includes/frontend/shortcodes/class-gift-lists-shortcode.php
r3780021 r3780103 179 179 180 180 <div class="mrz-gle-row-actions"> 181 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( $list_url ); ?>" title="<?php esc_attr_e( 'View', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'eye', __( 'View', 'mrz-gift-lists-exp' ) ); ?></a>182 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( add_query_arg( [ 'action' => 'edit', 'list_id' => $list->id ], \Mrzgle\Plugin::instance()->get_lists_page_url() ) ); ?>" title="<?php esc_attr_e( 'Edit', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'edit', __( 'Edit', 'mrz-gift-lists-exp' ) ); ?></a>181 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( $list_url ); ?>" title="<?php esc_attr_e( 'View', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'eye', __( 'View', 'mrz-gift-lists-exp' ) ); ?></a> 182 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( add_query_arg( [ 'action' => 'edit', 'list_id' => $list->id ], \Mrzgle\Plugin::instance()->get_lists_page_url() ) ); ?>" title="<?php esc_attr_e( 'Edit', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'edit', __( 'Edit', 'mrz-gift-lists-exp' ) ); ?></a> 183 183 <form method="post" class="mrz-gle-list-manage"> 184 184 <?php wp_nonce_field( 'mrzgle_owner_list_action_' . $list->id, 'mrzgle_list_nonce' ); ?> … … 186 186 <input type="hidden" name="mrzgle_return" value="my-lists"> 187 187 <?php if ( $is_active ) : ?> 188 <button type="submit" name="mrzgle_list_action" value="deactivate" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" title="<?php esc_attr_e( 'Deactivate', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'pause-circle', __( 'Deactivate', 'mrz-gift-lists-exp' ) ); ?></button>188 <button type="submit" name="mrzgle_list_action" value="deactivate" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" title="<?php esc_attr_e( 'Deactivate', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'pause-circle', __( 'Deactivate', 'mrz-gift-lists-exp' ) ); ?></button> 189 189 <?php else : ?> 190 <button type="submit" name="mrzgle_list_action" value="activate" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" title="<?php esc_attr_e( 'Activate', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'play-circle', __( 'Activate', 'mrz-gift-lists-exp' ) ); ?></button>190 <button type="submit" name="mrzgle_list_action" value="activate" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" title="<?php esc_attr_e( 'Activate', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'play-circle', __( 'Activate', 'mrz-gift-lists-exp' ) ); ?></button> 191 191 <?php endif; ?> 192 192 <button type="submit" name="mrzgle_list_action" value="delete" class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon mrz-gle-btn-danger mrz-gle-confirm" title="<?php esc_attr_e( 'Delete', 'mrz-gift-lists-exp' ); ?>" 193 data-confirm="<?php esc_attr_e( 'Permanently delete this list?', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'trash', __( 'Delete', 'mrz-gift-lists-exp' ) ); ?></button>193 data-confirm="<?php esc_attr_e( 'Permanently delete this list?', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'trash', __( 'Delete', 'mrz-gift-lists-exp' ) ); ?></button> 194 194 </form> 195 195 </div> … … 219 219 <?php if ( Frontend::can_create_list() ) : ?> 220 220 <a href="<?php echo esc_url( add_query_arg( 'action', 'create' ) ); ?>" class="mrz-gle-btn mrz-gle-btn-primary"> 221 <?php echo $this->icon( 'add', '' ); ?> <?php esc_html_e( 'New list', 'mrz-gift-lists-exp' ); ?>221 <?php $this->render_icon( 'add', '' ); ?> <?php esc_html_e( 'New list', 'mrz-gift-lists-exp' ); ?> 222 222 </a> 223 223 <?php endif; ?> … … 628 628 <div class="mrz-gle-owner-actions"> 629 629 <a href="<?php echo esc_url( $this->get_shop_url() ); ?>" class="mrz-gle-btn mrz-gle-btn-primary"> 630 <?php echo $this->icon( 'add', '' ); ?> <?php esc_html_e( 'Add product', 'mrz-gift-lists-exp' ); ?>630 <?php $this->render_icon( 'add', '' ); ?> <?php esc_html_e( 'Add product', 'mrz-gift-lists-exp' ); ?> 631 631 </a> 632 632 633 633 <a href="<?php echo esc_url( add_query_arg( [ 'action' => 'edit', 'list_id' => $list->id ], \Mrzgle\Plugin::instance()->get_lists_page_url() ) ); ?>" class="mrz-gle-btn"> 634 <?php echo $this->icon( 'edit', '' ); ?> <?php esc_html_e( 'Edit', 'mrz-gift-lists-exp' ); ?>634 <?php $this->render_icon( 'edit', '' ); ?> <?php esc_html_e( 'Edit', 'mrz-gift-lists-exp' ); ?> 635 635 </a> 636 636 … … 640 640 <input type="hidden" name="mrzgle_return" value="list"> 641 641 <?php if ( 'active' === $list->status ) : ?> 642 <button type="submit" name="mrzgle_list_action" value="deactivate" class="mrz-gle-btn"><?php echo $this->icon( 'pause-circle', '' ); ?> <?php esc_html_e( 'Deactivate', 'mrz-gift-lists-exp' ); ?></button>642 <button type="submit" name="mrzgle_list_action" value="deactivate" class="mrz-gle-btn"><?php $this->render_icon( 'pause-circle', '' ); ?> <?php esc_html_e( 'Deactivate', 'mrz-gift-lists-exp' ); ?></button> 643 643 <?php else : ?> 644 <button type="submit" name="mrzgle_list_action" value="activate" class="mrz-gle-btn"><?php echo $this->icon( 'play-circle', '' ); ?> <?php esc_html_e( 'Activate', 'mrz-gift-lists-exp' ); ?></button>644 <button type="submit" name="mrzgle_list_action" value="activate" class="mrz-gle-btn"><?php $this->render_icon( 'play-circle', '' ); ?> <?php esc_html_e( 'Activate', 'mrz-gift-lists-exp' ); ?></button> 645 645 <?php endif; ?> 646 646 <button type="submit" name="mrzgle_list_action" value="delete" class="mrz-gle-btn mrz-gle-btn-danger mrz-gle-confirm" 647 data-confirm="<?php esc_attr_e( 'Permanently delete this list?', 'mrz-gift-lists-exp' ); ?>"><?php echo $this->icon( 'trash', '' ); ?> <?php esc_html_e( 'Delete', 'mrz-gift-lists-exp' ); ?></button>647 data-confirm="<?php esc_attr_e( 'Permanently delete this list?', 'mrz-gift-lists-exp' ); ?>"><?php $this->render_icon( 'trash', '' ); ?> <?php esc_html_e( 'Delete', 'mrz-gift-lists-exp' ); ?></button> 648 648 </form> 649 649 </div> … … 688 688 <p class="mrz-gle-empty-actions"> 689 689 <a href="<?php echo esc_url( $this->get_shop_url() ); ?>" class="mrz-gle-btn mrz-gle-btn-primary"> 690 <?php echo $this->icon( 'add', '' ); ?> <?php esc_html_e( 'Add product', 'mrz-gift-lists-exp' ); ?>690 <?php $this->render_icon( 'add', '' ); ?> <?php esc_html_e( 'Add product', 'mrz-gift-lists-exp' ); ?> 691 691 </a> 692 692 </p> … … 743 743 744 744 <a class="mrz-gle-btn mrz-gle-btn-small mrz-gle-btn-icon" href="<?php echo esc_url( $item->product_url ); ?>" title="<?php esc_attr_e( 'View product', 'mrz-gift-lists-exp' ); ?>"> 745 <?php echo $this->icon( 'eye', __( 'View product', 'mrz-gift-lists-exp' ) ); ?>745 <?php $this->render_icon( 'eye', __( 'View product', 'mrz-gift-lists-exp' ) ); ?> 746 746 </a> 747 747 … … 751 751 data-item-id="<?php echo esc_attr( $item->id ); ?>" 752 752 title="<?php esc_attr_e( 'Favorite (show at the top)', 'mrz-gift-lists-exp' ); ?>"> 753 <?php echo $this->icon( $item->priority ? 'star-active' : 'star', __( 'Favorite', 'mrz-gift-lists-exp' ) ); ?>753 <?php $this->render_icon( $item->priority ? 'star-active' : 'star', __( 'Favorite', 'mrz-gift-lists-exp' ) ); ?> 754 754 </button> 755 755 <button type="button" … … 757 757 data-item-id="<?php echo esc_attr( $item->id ); ?>" 758 758 title="<?php esc_attr_e( 'Remove from list', 'mrz-gift-lists-exp' ); ?>"> 759 <?php echo $this->icon( 'trash', __( 'Remove from list', 'mrz-gift-lists-exp' ) ); ?>759 <?php $this->render_icon( 'trash', __( 'Remove from list', 'mrz-gift-lists-exp' ) ); ?> 760 760 </button> 761 761 <?php endif; ?> … … 783 783 784 784 /** 785 * Retourne la balise <img> d'une icône du plugin (assets/img/<name>.svg).785 * Affiche la balise <img> d'une icône du plugin (assets/img/<name>.svg). 786 786 * 787 787 * @param string $name Nom du fichier, sans extension. 788 788 * @param string $label Texte alternatif (accessibilité). 789 * @return string 790 */ 791 private function icon( string $name, string $label ): string { 792 return sprintf( 789 */ 790 private function render_icon( string $name, string $label ): void { 791 printf( 793 792 '<img class="mrz-gle-icon" src="%s" alt="%s">', 794 793 esc_url( MRZGLE_PLUGIN_URL . 'assets/img/' . $name . '.svg' ), … … 812 811 <input type="text" class="mrz-gle-share-url" value="<?php echo esc_url( $list_url ); ?>" readonly> 813 812 <button type="button" class="mrz-gle-btn mrz-gle-share-copy" data-url="<?php echo esc_attr( $list_url ); ?>"> 814 <?php echo $this->icon( 'copy-alt', '' ); ?> <?php esc_html_e( 'Copy link', 'mrz-gift-lists-exp' ); ?>813 <?php $this->render_icon( 'copy-alt', '' ); ?> <?php esc_html_e( 'Copy link', 'mrz-gift-lists-exp' ); ?> 815 814 </button> 816 815 </div> -
mrz-gift-lists-exp/trunk/includes/integrations/class-woo-commerce.php
r3777163 r3780103 151 151 152 152 // Clé unique pour permettre le même produit plusieurs fois 153 $cart_item_data['unique_key'] = md5( microtime() . rand() );153 $cart_item_data['unique_key'] = md5( microtime() . wp_rand() ); 154 154 } 155 155 } -
mrz-gift-lists-exp/trunk/languages/mrz-gift-lists-exp-fr_FR.l10n.php
r3780021 r3780103 1 1 <?php 2 return ['domain'=>'mrz-gift-lists-exp','plural-forms'=>'nplurals=2; plural=(n > 1);','language'=>'fr_FR','project-id-version'=>'MRZ Gift Lists 0.12. 1','pot-creation-date'=>'2026-10-31T16:37:09+00:00','po-revision-date'=>'2026-10-31 16:37+0000','x-generator'=>'WP-CLI 2.12.0','messages'=>['MRZ Gift Lists Exp'=>'MRZ Gift Lists Exp','https://github.com/m0r3z/mrz-gift-lists-exp'=>'https://github.com/m0r3z/mrz-gift-lists-exp','Gift lists for WooCommerce: your customers build a list of products to receive, share the link, and their friends and family buy them.'=>'Listes de cadeaux pour WooCommerce : vos clients créent une liste de produits, partagent le lien, et leurs proches achètent.','Morez.co'=>'Morez.co','https://morez.co'=>'https://morez.co','MRZ Gift Lists: no lists page is set. Create a page containing the [mrzgle_lists] shortcode, then select it in the settings.'=>'MRZ Gift Lists : aucune page des listes n\'est définie. Créez une page contenant le shortcode [mrzgle_lists], puis sélectionnez-la dans les réglages.','Open settings'=>'Ouvrir les réglages','MRZ Gift Lists'=>'MRZ Gift Lists','All lists'=>'Toutes les listes','Settings'=>'Réglages','Title'=>'Titre','Creator'=>'Créateur','Products'=>'Produits','Status'=>'Statut','Date'=>'Date','View details'=>'Voir détails','View on site'=>'Voir sur le site','Are you sure you want to delete this list?'=>'Êtes-vous sûr de vouloir supprimer cette liste ?','Delete'=>'Supprimer','Deleted user'=>'Utilisateur supprimé','purchased'=>'achetés','Active'=>'Active','Archived'=>'Archivée','Completed'=>'Terminée','No lists found.'=>'Aucune liste trouvée.','All statuses'=>'Tous les statuts','Filter'=>'Filtrer','Action not allowed.'=>'Action non autorisée.','Gift lists'=>'Listes de cadeaux','Search'=>'Rechercher','List not found.'=>'Liste non trouvée.','Back'=>'Retour','Details'=>'Informations','Date created'=>'Date de création','Event date'=>'Date de l\'événement','Access key'=>'Clé d\'accès','View'=>'Voir','Description'=>'Description','No products in this list.'=>'Aucun produit dans cette liste.','Product'=>'Produit','Price'=>'Prix','Purchased by'=>'Acheté par','Favorite'=>'Favori','Available'=>'Disponible','Reserved'=>'Réservé','Purchased'=>'Acheté','Statistics'=>'Statistiques','products in total'=>'produits au total','available'=>'disponibles','Actions'=>'Actions','View list'=>'Voir la liste','Archive'=>'Archiver','Reactivate'=>'Réactiver','List deleted successfully.'=>'Liste supprimée avec succès.','List archived successfully.'=>'Liste archivée avec succès.','List reactivated successfully.'=>'Liste réactivée avec succès.','General settings'=>'Réglages généraux','Lists page'=>'Page des listes','Shop page'=>'Page boutique','Max lists per user'=>'Listes max par utilisateur','Emails'=>'Emails','Admin email'=>'Email administrateur','Notify the list creator'=>'Notifier le créateur','You do not have sufficient permissions.'=>'Vous n\'avez pas les droits nécessaires.','MRZ Gift Lists settings'=>'Réglages MRZ Gift Lists','Configure the general plugin options.'=>'Configurez les options générales du plugin.','Configure email notifications.'=>'Configurez les notifications par email.','-- Select --'=>'-- Sélectionner --','Page containing the [mrzgle_lists] shortcode.'=>'Page contenant le shortcode [mrzgle_lists].','Page that a list’s “Add product” button links to. Defaults to the WooCommerce shop page.'=>'Page vers laquelle renvoie le bouton « Ajouter un produit » d\'une liste. Par défaut, la page boutique WooCommerce.','Maximum number of active lists per user (0 = unlimited).'=>'Nombre maximum de listes actives par utilisateur (0 = illimité).','Email address that receives notifications (leave empty to disable).'=>'Email pour recevoir les notifications (laisser vide pour désactiver).','Send an email to the list creator when a product is purchased'=>'Envoyer un email au créateur de la liste quand un produit est acheté','Security check failed. Please refresh the page.'=>'Erreur de sécurité. Veuillez rafraîchir la page.','You must be logged in.'=>'Vous devez être connecté.','You are not allowed to edit this list.'=>'Vous n\'êtes pas autorisé à modifier cette liste.','Missing data.'=>'Données manquantes.','Product not found.'=>'Produit introuvable.','This product is already in the list.'=>'Ce produit est déjà dans la liste.','Product added to the list.'=>'Produit ajouté à la liste.','Product removed from the list.'=>'Produit retiré de la liste.','Error while deleting.'=>'Erreur lors de la suppression.','Marked as priority.'=>'Marqué comme prioritaire.','Priority removed.'=>'Priorité retirée.','Nothing to update.'=>'Aucune donnée à mettre à jour.','List updated.'=>'Liste mise à jour.','Error while updating.'=>'Erreur lors de la mise à jour.','List deleted.'=>'Liste supprimée.','Product not found in the list.'=>'Produit introuvable dans la liste.','This product has already been gifted.'=>'Ce produit a déjà été offert.','Product added to the cart.'=>'Produit ajouté au panier.','Error while adding to the cart.'=>'Erreur lors de l\'ajout au panier.','Are you sure you want to delete this item?'=>'Êtes-vous sûr de vouloir supprimer cet élément ?','Adding...'=>'Ajout en cours...','Added!'=>'Ajouté !','An error occurred'=>'Une erreur est survenue','Product added to the list'=>'Produit ajouté à la liste','Product removed from the list'=>'Produit retiré de la liste','Product added to the cart'=>'Produit ajouté au panier','Link copied!'=>'Lien copié !','Please select a list.'=>'Veuillez sélectionner une liste.','Are you sure you want to delete this?'=>'Êtes-vous sûr de vouloir supprimer ?','Saved'=>'Enregistré','Error'=>'Erreur','[%s] New gift list created'=>'[%s] Nouvelle liste de cadeaux créée','🎁 A gift has been purchased from your list "%s"'=>'🎁 Un cadeau a été offert depuis votre liste "%s"','[%s] Purchase from a gift list'=>'[%s] Achat depuis une liste de cadeaux','Unknown'=>'Inconnu','2 return ['domain'=>'mrz-gift-lists-exp','plural-forms'=>'nplurals=2; plural=(n > 1);','language'=>'fr_FR','project-id-version'=>'MRZ Gift Lists 0.12.2','pot-creation-date'=>'2026-10-31T16:37:09+00:00','po-revision-date'=>'2026-10-31 16:37+0000','x-generator'=>'WP-CLI 2.12.0','messages'=>['MRZ Gift Lists Exp'=>'MRZ Gift Lists Exp','https://github.com/m0r3z/mrz-gift-lists-exp'=>'https://github.com/m0r3z/mrz-gift-lists-exp','Gift lists for WooCommerce: your customers build a list of products to receive, share the link, and their friends and family buy them.'=>'Listes de cadeaux pour WooCommerce : vos clients créent une liste de produits, partagent le lien, et leurs proches achètent.','Morez.co'=>'Morez.co','https://morez.co'=>'https://morez.co','MRZ Gift Lists: no lists page is set. Create a page containing the [mrzgle_lists] shortcode, then select it in the settings.'=>'MRZ Gift Lists : aucune page des listes n\'est définie. Créez une page contenant le shortcode [mrzgle_lists], puis sélectionnez-la dans les réglages.','Open settings'=>'Ouvrir les réglages','MRZ Gift Lists'=>'MRZ Gift Lists','All lists'=>'Toutes les listes','Settings'=>'Réglages','Title'=>'Titre','Creator'=>'Créateur','Products'=>'Produits','Status'=>'Statut','Date'=>'Date','View details'=>'Voir détails','View on site'=>'Voir sur le site','Are you sure you want to delete this list?'=>'Êtes-vous sûr de vouloir supprimer cette liste ?','Delete'=>'Supprimer','Deleted user'=>'Utilisateur supprimé','purchased'=>'achetés','Active'=>'Active','Archived'=>'Archivée','Completed'=>'Terminée','No lists found.'=>'Aucune liste trouvée.','All statuses'=>'Tous les statuts','Filter'=>'Filtrer','Action not allowed.'=>'Action non autorisée.','Gift lists'=>'Listes de cadeaux','Search'=>'Rechercher','List not found.'=>'Liste non trouvée.','Back'=>'Retour','Details'=>'Informations','Date created'=>'Date de création','Event date'=>'Date de l\'événement','Access key'=>'Clé d\'accès','View'=>'Voir','Description'=>'Description','No products in this list.'=>'Aucun produit dans cette liste.','Product'=>'Produit','Price'=>'Prix','Purchased by'=>'Acheté par','Favorite'=>'Favori','Available'=>'Disponible','Reserved'=>'Réservé','Purchased'=>'Acheté','Statistics'=>'Statistiques','products in total'=>'produits au total','available'=>'disponibles','Actions'=>'Actions','View list'=>'Voir la liste','Archive'=>'Archiver','Reactivate'=>'Réactiver','List deleted successfully.'=>'Liste supprimée avec succès.','List archived successfully.'=>'Liste archivée avec succès.','List reactivated successfully.'=>'Liste réactivée avec succès.','General settings'=>'Réglages généraux','Lists page'=>'Page des listes','Shop page'=>'Page boutique','Max lists per user'=>'Listes max par utilisateur','Emails'=>'Emails','Admin email'=>'Email administrateur','Notify the list creator'=>'Notifier le créateur','You do not have sufficient permissions.'=>'Vous n\'avez pas les droits nécessaires.','MRZ Gift Lists settings'=>'Réglages MRZ Gift Lists','Configure the general plugin options.'=>'Configurez les options générales du plugin.','Configure email notifications.'=>'Configurez les notifications par email.','-- Select --'=>'-- Sélectionner --','Page containing the [mrzgle_lists] shortcode.'=>'Page contenant le shortcode [mrzgle_lists].','Page that a list’s “Add product” button links to. Defaults to the WooCommerce shop page.'=>'Page vers laquelle renvoie le bouton « Ajouter un produit » d\'une liste. Par défaut, la page boutique WooCommerce.','Maximum number of active lists per user (0 = unlimited).'=>'Nombre maximum de listes actives par utilisateur (0 = illimité).','Email address that receives notifications (leave empty to disable).'=>'Email pour recevoir les notifications (laisser vide pour désactiver).','Send an email to the list creator when a product is purchased'=>'Envoyer un email au créateur de la liste quand un produit est acheté','Security check failed. Please refresh the page.'=>'Erreur de sécurité. Veuillez rafraîchir la page.','You must be logged in.'=>'Vous devez être connecté.','You are not allowed to edit this list.'=>'Vous n\'êtes pas autorisé à modifier cette liste.','Missing data.'=>'Données manquantes.','Product not found.'=>'Produit introuvable.','This product is already in the list.'=>'Ce produit est déjà dans la liste.','Product added to the list.'=>'Produit ajouté à la liste.','Product removed from the list.'=>'Produit retiré de la liste.','Error while deleting.'=>'Erreur lors de la suppression.','Marked as priority.'=>'Marqué comme prioritaire.','Priority removed.'=>'Priorité retirée.','Nothing to update.'=>'Aucune donnée à mettre à jour.','List updated.'=>'Liste mise à jour.','Error while updating.'=>'Erreur lors de la mise à jour.','List deleted.'=>'Liste supprimée.','Product not found in the list.'=>'Produit introuvable dans la liste.','This product has already been gifted.'=>'Ce produit a déjà été offert.','Product added to the cart.'=>'Produit ajouté au panier.','Error while adding to the cart.'=>'Erreur lors de l\'ajout au panier.','Are you sure you want to delete this item?'=>'Êtes-vous sûr de vouloir supprimer cet élément ?','Adding...'=>'Ajout en cours...','Added!'=>'Ajouté !','An error occurred'=>'Une erreur est survenue','Product added to the list'=>'Produit ajouté à la liste','Product removed from the list'=>'Produit retiré de la liste','Product added to the cart'=>'Produit ajouté au panier','Link copied!'=>'Lien copié !','Please select a list.'=>'Veuillez sélectionner une liste.','Are you sure you want to delete this?'=>'Êtes-vous sûr de vouloir supprimer ?','Saved'=>'Enregistré','Error'=>'Erreur','[%s] New gift list created'=>'[%s] Nouvelle liste de cadeaux créée','🎁 A gift has been purchased from your list "%s"'=>'🎁 Un cadeau a été offert depuis votre liste "%s"','[%s] Purchase from a gift list'=>'[%s] Achat depuis une liste de cadeaux','Unknown'=>'Inconnu',' 3 3 4 4 Message: %s'=>' -
mrz-gift-lists-exp/trunk/languages/mrz-gift-lists-exp-fr_FR.po
r3780021 r3780103 1 1 msgid "" 2 2 msgstr "" 3 "Project-Id-Version: MRZ Gift Lists 0.12. 1\n"3 "Project-Id-Version: MRZ Gift Lists 0.12.2\n" 4 4 "Report-Msgid-Bugs-To: https://github.com/m0r3z/mrz-gift-lists-exp\n" 5 5 "Last-Translator: Morez.co <hello@morez.co>\n" -
mrz-gift-lists-exp/trunk/languages/mrz-gift-lists-exp.pot
r3780021 r3780103 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: MRZ Gift Lists Exp 0.12. 1\n"5 "Project-Id-Version: MRZ Gift Lists Exp 0.12.2\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mrz-gift-lists-exp\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -
mrz-gift-lists-exp/trunk/mrz-gift-lists-exp.php
r3780021 r3780103 4 4 * Plugin URI: https://github.com/m0r3z/mrz-gift-lists-exp 5 5 * Description: Gift lists for WooCommerce: your customers build a list of products to receive, share the link, and their friends and family buy them. 6 * Version: 0.12. 16 * Version: 0.12.2 7 7 * Requires at least: 6.0 8 8 * Requires PHP: 8.0 … … 30 30 31 31 // Constantes du plugin 32 define( 'MRZGLE_VERSION', '0.12. 1' );32 define( 'MRZGLE_VERSION', '0.12.2' ); 33 33 define( 'MRZGLE_PLUGIN_FILE', __FILE__ ); 34 34 define( 'MRZGLE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); -
mrz-gift-lists-exp/trunk/readme.txt
r3780021 r3780103 5 5 Tested up to: 7.1 6 6 Requires PHP: 8.0 7 Stable tag: 0.12. 17 Stable tag: 0.12.2 8 8 License: GPLv3 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-3.0.html … … 60 60 61 61 == Changelog == 62 63 = 0.12.2 = 64 * Security: escaped the page dropdowns on the settings screen. 65 * Use wp_rand() instead of rand() when adding a gift to the cart. 66 * Code cleanup for Plugin Check: icons are printed with escaped output, the admin list query and the uninstall routine are documented, and uninstall variables are prefixed. 62 67 63 68 = 0.12.1 = -
mrz-gift-lists-exp/trunk/uninstall.php
r3679573 r3780103 17 17 18 18 // Supprime les tables 19 $ tables = [19 $mrzgle_tables = [ 20 20 $wpdb->prefix . 'mrzgle_lists', 21 21 $wpdb->prefix . 'mrzgle_items', 22 22 ]; 23 23 24 foreach ( $tables as $table ) { 25 $wpdb->query( "DROP TABLE IF EXISTS {$table}" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 24 foreach ( $mrzgle_tables as $mrzgle_table ) { 25 // Nom de table construit à partir de $wpdb->prefix et d'une liste fixe : rien à préparer ni à mettre en cache. 26 $wpdb->query( "DROP TABLE IF EXISTS {$mrzgle_table}" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange 26 27 } 27 28 28 29 // Supprime les options 29 $ options = [30 $mrzgle_options = [ 30 31 'mrzgle_db_version', 31 32 'mrzgle_page_id', … … 40 41 ]; 41 42 42 foreach ( $ options as $option ) {43 delete_option( $ option );43 foreach ( $mrzgle_options as $mrzgle_option ) { 44 delete_option( $mrzgle_option ); 44 45 } 45 46 46 47 // Supprime les capabilities 47 $ roles = [ 'administrator', 'shop_manager' ];48 $ capabilities = [ 'mrzgle_manage_lists', 'mrzgle_edit_lists', 'mrzgle_delete_lists' ];48 $mrzgle_roles = [ 'administrator', 'shop_manager' ]; 49 $mrzgle_capabilities = [ 'mrzgle_manage_lists', 'mrzgle_edit_lists', 'mrzgle_delete_lists' ]; 49 50 50 foreach ( $ roles as $role_name ) {51 $ role = get_role( $role_name );52 if ( $ role ) {53 foreach ( $ capabilities as $cap ) {54 $ role->remove_cap( $cap );51 foreach ( $mrzgle_roles as $mrzgle_role_name ) { 52 $mrzgle_role = get_role( $mrzgle_role_name ); 53 if ( $mrzgle_role ) { 54 foreach ( $mrzgle_capabilities as $mrzgle_cap ) { 55 $mrzgle_role->remove_cap( $mrzgle_cap ); 55 56 } 56 57 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)