Changeset 2290810
- Timestamp:
- 04/24/2020 08:23:55 AM (6 years ago)
- Location:
- wp-advanced-search
- Files:
-
- 4 edited
-
tags/3.3.7/WP-Advanced-Search-Autocompletion.php (modified) (7 diffs)
-
tags/3.3.7/WP-Advanced-Search-Autocorrection.php (modified) (6 diffs)
-
trunk/WP-Advanced-Search-Autocompletion.php (modified) (7 diffs)
-
trunk/WP-Advanced-Search-Autocorrection.php (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wp-advanced-search/tags/3.3.7/WP-Advanced-Search-Autocompletion.php
r2289895 r2290810 14 14 $wpdb->query("CREATE TABLE IF NOT EXISTS ".filter_var($_POST['wp_advanced_search_autocompletion_table'], FILTER_SANITIZE_STRING)." ( 15 15 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) 17 17 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci" 18 18 ); … … 27 27 // Ajout des mots clés dans l'index 28 28 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'])); 30 30 } 31 31 … … 37 37 // Déclencher la fonction de suppression des extraits 38 38 if(isset($_POST['wp_advanced_search_action_deletewords'])) { 39 WP_Advanced_Search_Autocompletion_DeleteWords();39 WP_Advanced_Search_Autocompletion_DeleteWords(); 40 40 } 41 41 … … 140 140 <label for="wp_advanced_search_autocompletion_delete" class="autoCompleteDelete"><strong><?php _e('Supprimer la table de l\'index inversé ?','wp-advanced-search'); ?></strong></label> 141 141 <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 } ?> 142 145 <input type="hidden" name="wp_advanced_search_autocompletion_table" value="<?php echo $select->autoCompleteTable; ?>" /> 143 146 <input type="hidden" name="wp_advanced_search_autocompletion_column" value="<?php echo $select->autoCompleteColumn; ?>" /> … … 153 156 <p class="tr"> 154 157 <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++) { ?> 156 159 <option value="<?php echo $i; ?>" <?php if($i == $select->autoCompleteSizeMin) { echo 'selected="selected"'; } ?>><?php echo $i.__(' lettres','wp-advanced-search'); ?></option> 157 160 <?php } ?> … … 170 173 <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> 171 174 <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 } ?> 172 178 </p> 173 179 <h4><?php _e('Ajout des tags existants','wp-advanced-search'); ?></h4> … … 251 257 // Function d'ajout des mots clés dans l'index (si rempli !) 252 258 function 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 } 265 290 } 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 }280 291 } 281 292 282 293 // Suppression des extraits sélectionnés 283 294 function 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 } 292 307 } 293 308 ?> -
wp-advanced-search/tags/3.3.7/WP-Advanced-Search-Autocorrection.php
r2289895 r2290810 30 30 // Ajout des mots clés dans l'index 31 31 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'])); 33 33 } 34 34 … … 105 105 <br/><em><?php _e('Cette option s\'active uniquement quand l\'index inversé n\'est pas créé (recommandé)','wp-advanced-search'); ?></em> 106 106 </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> 107 109 <?php 108 110 } else { … … 115 117 <label for="wp_advanced_search_autocorrection_delete" class="autoCorrectDelete"><strong><?php _e('Supprimer l\'index inversé ?','wp-advanced-search'); ?></strong></label> 116 118 <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 } ?> 117 122 </p> 118 123 … … 127 132 <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> 128 133 <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 } ?> 129 137 </p> 130 138 <p class="tr2"> … … 203 211 // Function d'ajout des mots clés dans l'index (si rempli !) 204 212 function 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']; 228 231 } 229 232 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 } 239 251 } 240 252 } … … 244 256 // Suppression des extraits sélectionnés 245 257 function 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 } 251 267 } 252 268 } -
wp-advanced-search/trunk/WP-Advanced-Search-Autocompletion.php
r2275171 r2290810 14 14 $wpdb->query("CREATE TABLE IF NOT EXISTS ".filter_var($_POST['wp_advanced_search_autocompletion_table'], FILTER_SANITIZE_STRING)." ( 15 15 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) 17 17 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci" 18 18 ); … … 27 27 // Ajout des mots clés dans l'index 28 28 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'])); 30 30 } 31 31 … … 37 37 // Déclencher la fonction de suppression des extraits 38 38 if(isset($_POST['wp_advanced_search_action_deletewords'])) { 39 WP_Advanced_Search_Autocompletion_DeleteWords();39 WP_Advanced_Search_Autocompletion_DeleteWords(); 40 40 } 41 41 … … 140 140 <label for="wp_advanced_search_autocompletion_delete" class="autoCompleteDelete"><strong><?php _e('Supprimer la table de l\'index inversé ?','wp-advanced-search'); ?></strong></label> 141 141 <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 } ?> 142 145 <input type="hidden" name="wp_advanced_search_autocompletion_table" value="<?php echo $select->autoCompleteTable; ?>" /> 143 146 <input type="hidden" name="wp_advanced_search_autocompletion_column" value="<?php echo $select->autoCompleteColumn; ?>" /> … … 153 156 <p class="tr"> 154 157 <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++) { ?> 156 159 <option value="<?php echo $i; ?>" <?php if($i == $select->autoCompleteSizeMin) { echo 'selected="selected"'; } ?>><?php echo $i.__(' lettres','wp-advanced-search'); ?></option> 157 160 <?php } ?> … … 170 173 <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> 171 174 <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 } ?> 172 178 </p> 173 179 <h4><?php _e('Ajout des tags existants','wp-advanced-search'); ?></h4> … … 251 257 // Function d'ajout des mots clés dans l'index (si rempli !) 252 258 function 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 } 265 290 } 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 }280 291 } 281 292 282 293 // Suppression des extraits sélectionnés 283 294 function 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 } 292 307 } 293 308 ?> -
wp-advanced-search/trunk/WP-Advanced-Search-Autocorrection.php
r2275171 r2290810 30 30 // Ajout des mots clés dans l'index 31 31 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'])); 33 33 } 34 34 … … 105 105 <br/><em><?php _e('Cette option s\'active uniquement quand l\'index inversé n\'est pas créé (recommandé)','wp-advanced-search'); ?></em> 106 106 </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> 107 109 <?php 108 110 } else { … … 115 117 <label for="wp_advanced_search_autocorrection_delete" class="autoCorrectDelete"><strong><?php _e('Supprimer l\'index inversé ?','wp-advanced-search'); ?></strong></label> 116 118 <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 } ?> 117 122 </p> 118 123 … … 127 132 <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> 128 133 <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 } ?> 129 137 </p> 130 138 <p class="tr2"> … … 203 211 // Function d'ajout des mots clés dans l'index (si rempli !) 204 212 function 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']; 228 231 } 229 232 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 } 239 251 } 240 252 } … … 244 256 // Suppression des extraits sélectionnés 245 257 function 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 } 251 267 } 252 268 }
Note: See TracChangeset
for help on using the changeset viewer.