Plugin Directory

Changeset 2290810


Ignore:
Timestamp:
04/24/2020 08:23:55 AM (6 years ago)
Author:
Evigeo
Message:

Corrections

Location:
wp-advanced-search
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • wp-advanced-search/tags/3.3.7/WP-Advanced-Search-Autocompletion.php

    r2289895 r2290810  
    1414            $wpdb->query("CREATE TABLE IF NOT EXISTS ".filter_var($_POST['wp_advanced_search_autocompletion_table'], FILTER_SANITIZE_STRING)." (
    1515                         idindex INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    16                          ".$_POST['wp_advanced_search_autocompletion_column']." VARCHAR(250) NOT NULL)
     16                         ".filter_var($_POST['wp_advanced_search_autocompletion_column'], FILTER_SANITIZE_STRING)." VARCHAR(250) NOT NULL)
    1717                         DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
    1818            );
     
    2727    // Ajout des mots clés dans l'index
    2828    if(isset($_POST['wp_advanced_search_action_addwords'])) {
    29         WP_Advanced_Search_Autocompletion_AddWords($_POST['wp_advanced_search_autocompletion_addwords']);
     29        WP_Advanced_Search_Autocompletion_AddWords(sanitize_text_field($_POST['wp_advanced_search_autocompletion_addwords']));
    3030    }
    3131
     
    3737    // Déclencher la fonction de suppression des extraits
    3838    if(isset($_POST['wp_advanced_search_action_deletewords'])) {
    39         WP_Advanced_Search_Autocompletion_DeleteWords();
     39        WP_Advanced_Search_Autocompletion_DeleteWords();
    4040    }
    4141
     
    140140                    <label for="wp_advanced_search_autocompletion_delete" class="autoCompleteDelete"><strong><?php _e('Supprimer la table de l\'index inversé ?','wp-advanced-search'); ?></strong></label>
    141141                    <br/><em><?php _e('Cette option s\'active uniquement si l\'index inversé existe (déconseillé)','wp-advanced-search'); ?></em>
     142                    <?php if(current_user_can('edit_posts') && is_admin()) { ?>
     143                    <input type="hidden" name="wp_advanced_search_deletewords_nonce" value="<?php echo wp_create_nonce('wp_advanced_search_deletewords_nonce'); ?>"/>
     144                    <?php } ?>
    142145                    <input type="hidden" name="wp_advanced_search_autocompletion_table" value="<?php echo $select->autoCompleteTable; ?>" />
    143146                    <input type="hidden" name="wp_advanced_search_autocompletion_column" value="<?php echo $select->autoCompleteColumn; ?>" />
     
    153156                <p class="tr">
    154157                    <select name="wp_advanced_search_autocompletion_sizemin" id="wp_advanced_search_autocompletion_sizemin">
    155                         <?php for($i = 2; $i < 10; $i++) { ?>
     158                        <?php for($i = 1; $i < 10; $i++) { ?>
    156159                        <option value="<?php echo $i; ?>" <?php if($i == $select->autoCompleteSizeMin) { echo 'selected="selected"'; } ?>><?php echo $i.__(' lettres','wp-advanced-search'); ?></option>
    157160                        <?php } ?>
     
    170173                    <br/><em><?php _e('Séparez les mots ou expressions par des virgules !<br/>Exemple --> moteur, moteur de recherche, recherche, advanced, search<br/>N.B. : les doublons ne s\'ajoutent pas...','wp-advanced-search'); ?></em>
    171174                    <br/><input type="submit" name="wp_advanced_search_action_addwords" class="button-primary" value="<?php _e('Ajouter à l\'index', 'wp-advanced-search'); ?>" />
     175                    <?php if(current_user_can('edit_posts') && is_admin()) { ?>
     176                    <input type="hidden" name="wp_advanced_search_addwords_nonce" value="<?php echo wp_create_nonce('wp_advanced_search_addwords_nonce'); ?>"/>
     177                    <?php } ?>
    172178                </p>
    173179                <h4><?php _e('Ajout des tags existants','wp-advanced-search'); ?></h4>
     
    251257// Function d'ajout des mots clés dans l'index (si rempli !)
    252258function WP_Advanced_Search_Autocompletion_AddWords($datas) {
    253     global $wpdb, $tableName; // insérer les variables globales
    254 
    255     // Sélection des données dans les tables de la base de données     
    256     $select = $wpdb->get_row("SELECT * FROM ".filter_var($wpdb->prefix.$tableName, FILTER_SANITIZE_STRING)." WHERE id=1");
    257     $selectWords = $wpdb->get_results("SELECT ".filter_var($select->autoCompleteColumn, FILTER_SANITIZE_STRING)." FROM ".filter_var($select->autoCompleteTable, FILTER_SANITIZE_STRING)."");
    258     $words = $select->autoCompleteColumn;
    259    
    260     // Récupération des mots et expressions dans un tableau de données
    261     if(is_string($datas)) { // Si c'est une chaîne séparé par des virgules
    262         $expressions = array_map('trim', explode(',', sanitize_text_field($datas)));
    263     } elseif(is_array($datas)) { // Si c'est un tableau de mots (tags, etc.)
    264         $expressions = sanitize_text_field($datas);
     259    if(isset($_POST['wp_advanced_search_addwords_nonce'])) {
     260        if(wp_verify_nonce($_POST['wp_advanced_search_addwords_nonce'], 'wp_advanced_search_addwords_nonce')) {
     261            global $wpdb, $tableName; // insérer les variables globales
     262
     263            // Sélection des données dans les tables de la base de données     
     264            $select = $wpdb->get_row("SELECT * FROM ".filter_var($wpdb->prefix.$tableName, FILTER_SANITIZE_STRING)." WHERE id=1");
     265            $selectWords = $wpdb->get_results("SELECT ".filter_var($select->autoCompleteColumn, FILTER_SANITIZE_STRING)." FROM ".filter_var($select->autoCompleteTable, FILTER_SANITIZE_STRING)."");
     266            $words = $select->autoCompleteColumn;
     267           
     268            // Récupération des mots et expressions dans un tableau de données
     269            if(is_string($datas)) { // Si c'est une chaîne séparé par des virgules
     270                $expressions = array_map('trim', explode(',', $datas));
     271            } elseif(is_array($datas)) { // Si c'est un tableau de mots (tags, etc.)
     272                $expressions = $datas;
     273            }
     274
     275            // Récupération des mots dans l'index inversé
     276            $selected = array();
     277            foreach($selectWords as $w) {
     278                $selected[] = $w->$words;
     279            }
     280
     281            foreach($expressions as $exp) {
     282                $exp = sanitize_text_field($exp); // Sanitize
     283                if(strlen($exp) > $select->autoCompleteSizeMin) {                       
     284                    if(!in_array($exp, $selected)) {
     285                        $wpdb->query("INSERT INTO ".$select->autoCompleteTable."(".$select->autoCompleteColumn.") VALUES ('".$exp."')");
     286                    }
     287                }
     288            }
     289        }
    265290    }
    266    
    267     // Récupération des mots dans l'index inversé
    268     $selected = array();
    269     foreach($selectWords as $w) {
    270         $selected[] = $w->$words;
    271     }
    272 
    273     foreach($expressions as $exp) {
    274         if(strlen($exp) > $select->autoCompleteSizeMin) {                       
    275             if(!in_array($exp, $selected)) {
    276                 $wpdb->query("INSERT INTO ".$select->autoCompleteTable."(".$select->autoCompleteColumn.") VALUES ('".filter_var($exp, FILTER_SANITIZE_STRING)."')");
    277             }
    278         }
    279     }
    280291}
    281292
    282293// Suppression des extraits sélectionnés
    283294function WP_Advanced_Search_Autocompletion_DeleteWords() {
    284     global $wpdb, $tableName; // insérer les variables globales
    285 
    286     $tableDelete = $wpdb->get_row("SELECT autoCompleteTable, autoCompleteColumn FROM ".filter_var($wpdb->prefix.$tableName, FILTER_SANITIZE_STRING), ARRAY_N);
    287     $tabWords = $_POST['wp_advanced_search_autocompletion_deletewords'];
    288    
    289     foreach($tabWords as $word) {
    290         $wpdb->delete($tableDelete[0], array($tableDelete[1] => stripslashes($word)));
    291     }
     295    if(isset($_POST['wp_advanced_search_deletewords_nonce'])) {
     296        if(wp_verify_nonce($_POST['wp_advanced_search_deletewords_nonce'], 'wp_advanced_search_deletewords_nonce')) {
     297            global $wpdb, $tableName; // insérer les variables globales
     298
     299            $tableDelete = $wpdb->get_row("SELECT autoCompleteTable, autoCompleteColumn FROM ".filter_var($wpdb->prefix.$tableName, FILTER_SANITIZE_STRING), ARRAY_N);
     300            $tabWords = $_POST['wp_advanced_search_autocompletion_deletewords'];
     301
     302            foreach($tabWords as $word) {
     303                $wpdb->delete($tableDelete[0], array($tableDelete[1] => sanitize_text_field($word)));
     304            }
     305        }
     306    }
    292307}
    293308?>
  • wp-advanced-search/tags/3.3.7/WP-Advanced-Search-Autocorrection.php

    r2289895 r2290810  
    3030    // Ajout des mots clés dans l'index
    3131    if(isset($_POST['wp_advanced_search_action_addwords'])) {
    32         WP_Advanced_Search_Autocorrection_AddWords($_POST['wp_advanced_search_autocorrection_addwords']);
     32        WP_Advanced_Search_Autocorrection_AddWords(sanitize_text_field($_POST['wp_advanced_search_autocorrection_addwords']));
    3333    }
    3434
     
    105105                    <br/><em><?php _e('Cette option s\'active uniquement quand l\'index inversé n\'est pas créé (recommandé)','wp-advanced-search'); ?></em>
    106106                </p>
     107                <p class="clear"></p>
     108                <p><input type="submit" name="wp_advanced_search_action" class="button-primary" value="<?php _e('Enregistrer' , 'wp-advanced-search'); ?>" /></p>
    107109                <?php
    108110                    } else {
     
    115117                    <label for="wp_advanced_search_autocorrection_delete" class="autoCorrectDelete"><strong><?php _e('Supprimer l\'index inversé ?','wp-advanced-search'); ?></strong></label>
    116118                    <br/><em><?php _e('Cette option s\'active uniquement si l\'index inversé existe (déconseillé)','wp-advanced-search'); ?></em>
     119                    <?php if(current_user_can('edit_posts') && is_admin()) { ?>
     120                    <input type="hidden" name="wp_advanced_search_deletewords_nonce" value="<?php echo wp_create_nonce('wp_advanced_search_deletewords_nonce'); ?>"/>
     121                    <?php } ?>
    117122                </p>
    118123
     
    127132                    <br/><em><?php _e('Séparez les mots ou expressions par des virgules !<br/>Exemple --> moteur, moteur de recherche, recherche, advanced, search<br/>N.B. : les doublons ne s\'ajoutent pas...','wp-advanced-search'); ?></em>
    128133                    <br/><input type="submit" name="wp_advanced_search_action_addwords" class="button-primary" value="<?php _e('Ajouter à l\'index', 'wp-advanced-search'); ?>" />
     134                    <?php if(current_user_can('edit_posts') && is_admin()) { ?>
     135                    <input type="hidden" name="wp_advanced_search_addwords_nonce" value="<?php echo wp_create_nonce('wp_advanced_search_addwords_nonce'); ?>"/>
     136                    <?php } ?>
    129137                </p>
    130138                <p class="tr2">
     
    203211// Function d'ajout des mots clés dans l'index (si rempli !)
    204212function WP_Advanced_Search_Autocorrection_AddWords($datas) {
    205     global $wpdb; // insérer les variables globales
    206 
    207     // Sélection des données dans les tables de la base de données     
    208     $selectWords = $wpdb->get_results("SELECT word FROM ".$wpdb->prefix."autocorrectindex", ARRAY_A);
    209 
    210     // Récupération des mots et expressions dans un tableau de données
    211     if(is_string($datas)) { // Si c'est une chaîne séparé par des virgules
    212         $expressions = array_map('trim', explode(',', sanitize_text_field($datas)));
    213     } elseif(is_array($datas)) { // Si c'est un tableau de mots (tags, etc.)
    214         $expressions = sanitize_text_field($datas);
    215     }
    216 
    217     // Récupération des mots dans l'index inversé
    218     $selected = array();
    219     foreach($selectWords as $w) {
    220         $selected[] = $w['word'];
    221     }
    222 
    223     foreach($expressions as $word) {
    224         if(strlen($word) > 1) {
    225             // Adapte les expressions précises pour les ajouter comme prévu dans l'index
    226             if(preg_match("#[[:blank:]]+#i", trim($word))) {
    227                 $word = '"'.$word.'"';
     213    if(isset($_POST['wp_advanced_search_addwords_nonce'])) {
     214        if(wp_verify_nonce($_POST['wp_advanced_search_addwords_nonce'], 'wp_advanced_search_addwords_nonce')) {
     215            global $wpdb; // insérer les variables globales
     216
     217            // Sélection des données dans les tables de la base de données     
     218            $selectWords = $wpdb->get_results("SELECT word FROM ".$wpdb->prefix."autocorrectindex", ARRAY_A);
     219
     220            // Récupération des mots et expressions dans un tableau de données
     221            if(is_string($datas)) { // Si c'est une chaîne séparé par des virgules
     222                $expressions = array_map('trim', explode(',', $datas));
     223            } elseif(is_array($datas)) { // Si c'est un tableau de mots (tags, etc.)
     224                $expressions = $datas;
     225            }
     226
     227            // Récupération des mots dans l'index inversé
     228            $selected = array();
     229            foreach($selectWords as $w) {
     230                $selected[] = $w['word'];
    228231            }
    229232
    230             // N'ajoute que si le mot ou l'expression n'existe pas
    231             if(!in_array($word, $selected)) {
    232                 // Mesure les valeurs "métaphone" et "soundex" pour chaque mot
    233                 $metaphone = metaphone($word);
    234                 $soundex = soundex($word);
    235 
    236                 // Ajoute les données dans la table de l'index
    237                 $prepare = $wpdb->prepare("INSERT INTO ".$wpdb->prefix."autocorrectindex (word, metaphone, soundex) VALUES (%s, %s, %s)", array($word, $metaphone, $soundex));
    238                 $wpdb->query($prepare);
     233            foreach($expressions as $word) {
     234                if(strlen($word) > 1) {
     235                    // Adapte les expressions précises pour les ajouter comme prévu dans l'index
     236                    if(preg_match("#[[:blank:]]+#i", trim($word))) {
     237                        $word = '"'.sanitize_text_field($word).'"';
     238                    }
     239
     240                    // N'ajoute que si le mot ou l'expression n'existe pas
     241                    if(!in_array($word, $selected)) {
     242                        // Mesure les valeurs "métaphone" et "soundex" pour chaque mot
     243                        $metaphone = metaphone($word);
     244                        $soundex = soundex($word);
     245
     246                        // Ajoute les données dans la table de l'index
     247                        $prepare = $wpdb->prepare("INSERT INTO ".$wpdb->prefix."autocorrectindex (word, metaphone, soundex) VALUES (%s, %s, %s)", array($word, $metaphone, $soundex));
     248                        $wpdb->query($prepare);
     249                    }
     250                }
    239251            }
    240252        }
     
    244256// Suppression des extraits sélectionnés
    245257function WP_Advanced_Search_Autocorrection_DeleteWords() {
    246     global $wpdb; // insérer les variables globales
    247 
    248     $tabWords = $_POST['wp_advanced_search_autocorrection_deletewords'];
    249     foreach($tabWords as $word) {
    250         $wpdb->delete($wpdb->prefix."autocorrectindex", array("word" => esc_sql($word)));
     258    if(isset($_POST['wp_advanced_search_deletewords_nonce'])) {
     259        if(wp_verify_nonce($_POST['wp_advanced_search_deletewords_nonce'], 'wp_advanced_search_deletewords_nonce')) {
     260            global $wpdb; // insérer les variables globales
     261
     262            $tabWords = $_POST['wp_advanced_search_autocorrection_deletewords'];
     263            foreach($tabWords as $word) {
     264                $wpdb->delete($wpdb->prefix."autocorrectindex", array("word" => sanitize_text_field($word)));
     265            }
     266        }
    251267    }
    252268}
  • wp-advanced-search/trunk/WP-Advanced-Search-Autocompletion.php

    r2275171 r2290810  
    1414            $wpdb->query("CREATE TABLE IF NOT EXISTS ".filter_var($_POST['wp_advanced_search_autocompletion_table'], FILTER_SANITIZE_STRING)." (
    1515                         idindex INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    16                          ".$_POST['wp_advanced_search_autocompletion_column']." VARCHAR(250) NOT NULL)
     16                         ".filter_var($_POST['wp_advanced_search_autocompletion_column'], FILTER_SANITIZE_STRING)." VARCHAR(250) NOT NULL)
    1717                         DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
    1818            );
     
    2727    // Ajout des mots clés dans l'index
    2828    if(isset($_POST['wp_advanced_search_action_addwords'])) {
    29         WP_Advanced_Search_Autocompletion_AddWords($_POST['wp_advanced_search_autocompletion_addwords']);
     29        WP_Advanced_Search_Autocompletion_AddWords(sanitize_text_field($_POST['wp_advanced_search_autocompletion_addwords']));
    3030    }
    3131
     
    3737    // Déclencher la fonction de suppression des extraits
    3838    if(isset($_POST['wp_advanced_search_action_deletewords'])) {
    39         WP_Advanced_Search_Autocompletion_DeleteWords();
     39        WP_Advanced_Search_Autocompletion_DeleteWords();
    4040    }
    4141
     
    140140                    <label for="wp_advanced_search_autocompletion_delete" class="autoCompleteDelete"><strong><?php _e('Supprimer la table de l\'index inversé ?','wp-advanced-search'); ?></strong></label>
    141141                    <br/><em><?php _e('Cette option s\'active uniquement si l\'index inversé existe (déconseillé)','wp-advanced-search'); ?></em>
     142                    <?php if(current_user_can('edit_posts') && is_admin()) { ?>
     143                    <input type="hidden" name="wp_advanced_search_deletewords_nonce" value="<?php echo wp_create_nonce('wp_advanced_search_deletewords_nonce'); ?>"/>
     144                    <?php } ?>
    142145                    <input type="hidden" name="wp_advanced_search_autocompletion_table" value="<?php echo $select->autoCompleteTable; ?>" />
    143146                    <input type="hidden" name="wp_advanced_search_autocompletion_column" value="<?php echo $select->autoCompleteColumn; ?>" />
     
    153156                <p class="tr">
    154157                    <select name="wp_advanced_search_autocompletion_sizemin" id="wp_advanced_search_autocompletion_sizemin">
    155                         <?php for($i = 2; $i < 10; $i++) { ?>
     158                        <?php for($i = 1; $i < 10; $i++) { ?>
    156159                        <option value="<?php echo $i; ?>" <?php if($i == $select->autoCompleteSizeMin) { echo 'selected="selected"'; } ?>><?php echo $i.__(' lettres','wp-advanced-search'); ?></option>
    157160                        <?php } ?>
     
    170173                    <br/><em><?php _e('Séparez les mots ou expressions par des virgules !<br/>Exemple --> moteur, moteur de recherche, recherche, advanced, search<br/>N.B. : les doublons ne s\'ajoutent pas...','wp-advanced-search'); ?></em>
    171174                    <br/><input type="submit" name="wp_advanced_search_action_addwords" class="button-primary" value="<?php _e('Ajouter à l\'index', 'wp-advanced-search'); ?>" />
     175                    <?php if(current_user_can('edit_posts') && is_admin()) { ?>
     176                    <input type="hidden" name="wp_advanced_search_addwords_nonce" value="<?php echo wp_create_nonce('wp_advanced_search_addwords_nonce'); ?>"/>
     177                    <?php } ?>
    172178                </p>
    173179                <h4><?php _e('Ajout des tags existants','wp-advanced-search'); ?></h4>
     
    251257// Function d'ajout des mots clés dans l'index (si rempli !)
    252258function WP_Advanced_Search_Autocompletion_AddWords($datas) {
    253     global $wpdb, $tableName; // insérer les variables globales
    254 
    255     // Sélection des données dans les tables de la base de données     
    256     $select = $wpdb->get_row("SELECT * FROM ".filter_var($wpdb->prefix.$tableName, FILTER_SANITIZE_STRING)." WHERE id=1");
    257     $selectWords = $wpdb->get_results("SELECT ".filter_var($select->autoCompleteColumn, FILTER_SANITIZE_STRING)." FROM ".filter_var($select->autoCompleteTable, FILTER_SANITIZE_STRING)."");
    258     $words = $select->autoCompleteColumn;
    259    
    260     // Récupération des mots et expressions dans un tableau de données
    261     if(is_string($datas)) { // Si c'est une chaîne séparé par des virgules
    262         $expressions = array_map('trim', explode(',', sanitize_text_field($datas)));
    263     } elseif(is_array($datas)) { // Si c'est un tableau de mots (tags, etc.)
    264         $expressions = sanitize_text_field($datas);
     259    if(isset($_POST['wp_advanced_search_addwords_nonce'])) {
     260        if(wp_verify_nonce($_POST['wp_advanced_search_addwords_nonce'], 'wp_advanced_search_addwords_nonce')) {
     261            global $wpdb, $tableName; // insérer les variables globales
     262
     263            // Sélection des données dans les tables de la base de données     
     264            $select = $wpdb->get_row("SELECT * FROM ".filter_var($wpdb->prefix.$tableName, FILTER_SANITIZE_STRING)." WHERE id=1");
     265            $selectWords = $wpdb->get_results("SELECT ".filter_var($select->autoCompleteColumn, FILTER_SANITIZE_STRING)." FROM ".filter_var($select->autoCompleteTable, FILTER_SANITIZE_STRING)."");
     266            $words = $select->autoCompleteColumn;
     267           
     268            // Récupération des mots et expressions dans un tableau de données
     269            if(is_string($datas)) { // Si c'est une chaîne séparé par des virgules
     270                $expressions = array_map('trim', explode(',', $datas));
     271            } elseif(is_array($datas)) { // Si c'est un tableau de mots (tags, etc.)
     272                $expressions = $datas;
     273            }
     274
     275            // Récupération des mots dans l'index inversé
     276            $selected = array();
     277            foreach($selectWords as $w) {
     278                $selected[] = $w->$words;
     279            }
     280
     281            foreach($expressions as $exp) {
     282                $exp = sanitize_text_field($exp); // Sanitize
     283                if(strlen($exp) > $select->autoCompleteSizeMin) {                       
     284                    if(!in_array($exp, $selected)) {
     285                        $wpdb->query("INSERT INTO ".$select->autoCompleteTable."(".$select->autoCompleteColumn.") VALUES ('".$exp."')");
     286                    }
     287                }
     288            }
     289        }
    265290    }
    266    
    267     // Récupération des mots dans l'index inversé
    268     $selected = array();
    269     foreach($selectWords as $w) {
    270         $selected[] = $w->$words;
    271     }
    272 
    273     foreach($expressions as $exp) {
    274         if(strlen($exp) > $select->autoCompleteSizeMin) {                       
    275             if(!in_array($exp, $selected)) {
    276                 $wpdb->query("INSERT INTO ".$select->autoCompleteTable."(".$select->autoCompleteColumn.") VALUES ('".filter_var($exp, FILTER_SANITIZE_STRING)."')");
    277             }
    278         }
    279     }
    280291}
    281292
    282293// Suppression des extraits sélectionnés
    283294function WP_Advanced_Search_Autocompletion_DeleteWords() {
    284     global $wpdb, $tableName; // insérer les variables globales
    285 
    286     $tableDelete = $wpdb->get_row("SELECT autoCompleteTable, autoCompleteColumn FROM ".filter_var($wpdb->prefix.$tableName, FILTER_SANITIZE_STRING), ARRAY_N);
    287     $tabWords = $_POST['wp_advanced_search_autocompletion_deletewords'];
    288    
    289     foreach($tabWords as $word) {
    290         $wpdb->delete($tableDelete[0], array($tableDelete[1] => stripslashes($word)));
    291     }
     295    if(isset($_POST['wp_advanced_search_deletewords_nonce'])) {
     296        if(wp_verify_nonce($_POST['wp_advanced_search_deletewords_nonce'], 'wp_advanced_search_deletewords_nonce')) {
     297            global $wpdb, $tableName; // insérer les variables globales
     298
     299            $tableDelete = $wpdb->get_row("SELECT autoCompleteTable, autoCompleteColumn FROM ".filter_var($wpdb->prefix.$tableName, FILTER_SANITIZE_STRING), ARRAY_N);
     300            $tabWords = $_POST['wp_advanced_search_autocompletion_deletewords'];
     301
     302            foreach($tabWords as $word) {
     303                $wpdb->delete($tableDelete[0], array($tableDelete[1] => sanitize_text_field($word)));
     304            }
     305        }
     306    }
    292307}
    293308?>
  • wp-advanced-search/trunk/WP-Advanced-Search-Autocorrection.php

    r2275171 r2290810  
    3030    // Ajout des mots clés dans l'index
    3131    if(isset($_POST['wp_advanced_search_action_addwords'])) {
    32         WP_Advanced_Search_Autocorrection_AddWords($_POST['wp_advanced_search_autocorrection_addwords']);
     32        WP_Advanced_Search_Autocorrection_AddWords(sanitize_text_field($_POST['wp_advanced_search_autocorrection_addwords']));
    3333    }
    3434
     
    105105                    <br/><em><?php _e('Cette option s\'active uniquement quand l\'index inversé n\'est pas créé (recommandé)','wp-advanced-search'); ?></em>
    106106                </p>
     107                <p class="clear"></p>
     108                <p><input type="submit" name="wp_advanced_search_action" class="button-primary" value="<?php _e('Enregistrer' , 'wp-advanced-search'); ?>" /></p>
    107109                <?php
    108110                    } else {
     
    115117                    <label for="wp_advanced_search_autocorrection_delete" class="autoCorrectDelete"><strong><?php _e('Supprimer l\'index inversé ?','wp-advanced-search'); ?></strong></label>
    116118                    <br/><em><?php _e('Cette option s\'active uniquement si l\'index inversé existe (déconseillé)','wp-advanced-search'); ?></em>
     119                    <?php if(current_user_can('edit_posts') && is_admin()) { ?>
     120                    <input type="hidden" name="wp_advanced_search_deletewords_nonce" value="<?php echo wp_create_nonce('wp_advanced_search_deletewords_nonce'); ?>"/>
     121                    <?php } ?>
    117122                </p>
    118123
     
    127132                    <br/><em><?php _e('Séparez les mots ou expressions par des virgules !<br/>Exemple --> moteur, moteur de recherche, recherche, advanced, search<br/>N.B. : les doublons ne s\'ajoutent pas...','wp-advanced-search'); ?></em>
    128133                    <br/><input type="submit" name="wp_advanced_search_action_addwords" class="button-primary" value="<?php _e('Ajouter à l\'index', 'wp-advanced-search'); ?>" />
     134                    <?php if(current_user_can('edit_posts') && is_admin()) { ?>
     135                    <input type="hidden" name="wp_advanced_search_addwords_nonce" value="<?php echo wp_create_nonce('wp_advanced_search_addwords_nonce'); ?>"/>
     136                    <?php } ?>
    129137                </p>
    130138                <p class="tr2">
     
    203211// Function d'ajout des mots clés dans l'index (si rempli !)
    204212function WP_Advanced_Search_Autocorrection_AddWords($datas) {
    205     global $wpdb; // insérer les variables globales
    206 
    207     // Sélection des données dans les tables de la base de données     
    208     $selectWords = $wpdb->get_results("SELECT word FROM ".$wpdb->prefix."autocorrectindex", ARRAY_A);
    209 
    210     // Récupération des mots et expressions dans un tableau de données
    211     if(is_string($datas)) { // Si c'est une chaîne séparé par des virgules
    212         $expressions = array_map('trim', explode(',', sanitize_text_field($datas)));
    213     } elseif(is_array($datas)) { // Si c'est un tableau de mots (tags, etc.)
    214         $expressions = sanitize_text_field($datas);
    215     }
    216 
    217     // Récupération des mots dans l'index inversé
    218     $selected = array();
    219     foreach($selectWords as $w) {
    220         $selected[] = $w['word'];
    221     }
    222 
    223     foreach($expressions as $word) {
    224         if(strlen($word) > 1) {
    225             // Adapte les expressions précises pour les ajouter comme prévu dans l'index
    226             if(preg_match("#[[:blank:]]+#i", trim($word))) {
    227                 $word = '"'.$word.'"';
     213    if(isset($_POST['wp_advanced_search_addwords_nonce'])) {
     214        if(wp_verify_nonce($_POST['wp_advanced_search_addwords_nonce'], 'wp_advanced_search_addwords_nonce')) {
     215            global $wpdb; // insérer les variables globales
     216
     217            // Sélection des données dans les tables de la base de données     
     218            $selectWords = $wpdb->get_results("SELECT word FROM ".$wpdb->prefix."autocorrectindex", ARRAY_A);
     219
     220            // Récupération des mots et expressions dans un tableau de données
     221            if(is_string($datas)) { // Si c'est une chaîne séparé par des virgules
     222                $expressions = array_map('trim', explode(',', $datas));
     223            } elseif(is_array($datas)) { // Si c'est un tableau de mots (tags, etc.)
     224                $expressions = $datas;
     225            }
     226
     227            // Récupération des mots dans l'index inversé
     228            $selected = array();
     229            foreach($selectWords as $w) {
     230                $selected[] = $w['word'];
    228231            }
    229232
    230             // N'ajoute que si le mot ou l'expression n'existe pas
    231             if(!in_array($word, $selected)) {
    232                 // Mesure les valeurs "métaphone" et "soundex" pour chaque mot
    233                 $metaphone = metaphone($word);
    234                 $soundex = soundex($word);
    235 
    236                 // Ajoute les données dans la table de l'index
    237                 $prepare = $wpdb->prepare("INSERT INTO ".$wpdb->prefix."autocorrectindex (word, metaphone, soundex) VALUES (%s, %s, %s)", array($word, $metaphone, $soundex));
    238                 $wpdb->query($prepare);
     233            foreach($expressions as $word) {
     234                if(strlen($word) > 1) {
     235                    // Adapte les expressions précises pour les ajouter comme prévu dans l'index
     236                    if(preg_match("#[[:blank:]]+#i", trim($word))) {
     237                        $word = '"'.sanitize_text_field($word).'"';
     238                    }
     239
     240                    // N'ajoute que si le mot ou l'expression n'existe pas
     241                    if(!in_array($word, $selected)) {
     242                        // Mesure les valeurs "métaphone" et "soundex" pour chaque mot
     243                        $metaphone = metaphone($word);
     244                        $soundex = soundex($word);
     245
     246                        // Ajoute les données dans la table de l'index
     247                        $prepare = $wpdb->prepare("INSERT INTO ".$wpdb->prefix."autocorrectindex (word, metaphone, soundex) VALUES (%s, %s, %s)", array($word, $metaphone, $soundex));
     248                        $wpdb->query($prepare);
     249                    }
     250                }
    239251            }
    240252        }
     
    244256// Suppression des extraits sélectionnés
    245257function WP_Advanced_Search_Autocorrection_DeleteWords() {
    246     global $wpdb; // insérer les variables globales
    247 
    248     $tabWords = $_POST['wp_advanced_search_autocorrection_deletewords'];
    249     foreach($tabWords as $word) {
    250         $wpdb->delete($wpdb->prefix."autocorrectindex", array("word" => esc_sql($word)));
     258    if(isset($_POST['wp_advanced_search_deletewords_nonce'])) {
     259        if(wp_verify_nonce($_POST['wp_advanced_search_deletewords_nonce'], 'wp_advanced_search_deletewords_nonce')) {
     260            global $wpdb; // insérer les variables globales
     261
     262            $tabWords = $_POST['wp_advanced_search_autocorrection_deletewords'];
     263            foreach($tabWords as $word) {
     264                $wpdb->delete($wpdb->prefix."autocorrectindex", array("word" => sanitize_text_field($word)));
     265            }
     266        }
    251267    }
    252268}
Note: See TracChangeset for help on using the changeset viewer.