Advertisement
kitchin

Fix to plugins/relevanssi/lib/init.php, ver 3.0

Jul 18th, 2012
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.88 KB | None | 0 0
  1. <?php // two bug fixes by kitchin below, 2012/07/17, to plugins/relevanssi/lib/init.php, ver 3.0
  2.  
  3. // 2012/07/20: DO NOT USE
  4. // Relevanssi 3.0.1 fixes these two bugs.
  5. // Download here: http://wordpress.org/extend/plugins/relevanssi/
  6. // (It may still identify itself as 3.0)
  7.  
  8. add_action('admin_menu', 'relevanssi_menu');
  9. add_filter('the_posts', 'relevanssi_query');
  10. add_action('save_post', 'relevanssi_edit', 99, 1);              // thanks to Brian D Gajus
  11. add_action('delete_post', 'relevanssi_delete');
  12. add_action('comment_post', 'relevanssi_comment_index');     //added by OdditY
  13. add_action('edit_comment', 'relevanssi_comment_edit');      //added by OdditY
  14. add_action('delete_comment', 'relevanssi_comment_remove');  //added by OdditY
  15. add_action('wp_insert_post', 'relevanssi_insert_edit', 99, 1 ); // added by lumpysimon
  16. // BEGIN added by renaissancehack
  17. // *_page and *_post hooks do not trigger on attachments
  18. add_action('delete_attachment', 'relevanssi_delete');
  19. add_action('add_attachment', 'relevanssi_publish');
  20. add_action('edit_attachment', 'relevanssi_edit');
  21. // When a post status changes, check child posts that inherit their status from parent
  22. add_action('transition_post_status', 'relevanssi_update_child_posts',99,3);
  23. // END added by renaissancehack
  24. add_action('init', 'relevanssi_init');
  25. add_action('init', 'relevanssi_check_old_data', 99);
  26. add_filter('relevanssi_hits_filter', 'relevanssi_wpml_filter');
  27. add_filter('posts_request', 'relevanssi_prevent_default_request', 10, 2 );
  28. add_filter('relevanssi_remove_punctuation', 'relevanssi_remove_punct');
  29. add_filter('relevanssi_post_ok', 'relevanssi_default_post_ok', 10, 2);
  30. add_filter('relevanssi_query_filter', 'relevanssi_limit_filter');
  31. add_filter('query_vars', 'relevanssi_query_vars');
  32.  
  33. global $relevanssi_variables;
  34. register_activation_hook($relevanssi_variables['file'], 'relevanssi_install');
  35. $plugin_dir = dirname(plugin_basename($relevanssi_variables['file']));
  36. load_plugin_textdomain('relevanssi', false, $plugin_dir);
  37.  
  38. function relevanssi_init() {
  39.     global $pagenow, $relevanssi_variables, $wpdb;
  40.  
  41. /////////////////////////////
  42. // bug fix #1 by kitchin
  43. /////////////////////////////
  44. // Fixes error in relevanssi_update_log() in 'common.php'
  45. // due to undefined $relevanssi_variables['relevanssi_log_table']
  46. /////////////////////////////
  47. // add
  48. /////////////////////////////
  49.     $relevanssi_variables['relevanssi_log_table'] = $wpdb->prefix . "relevanssi_log";
  50. /////////////////////////////
  51. // /kitchin
  52. /////////////////////////////
  53.  
  54.     isset($_POST['index']) ? $index = true : $index = false;
  55.     if (!get_option('relevanssi_indexed') && !$index) {
  56.         function relevanssi_warning() {
  57.             RELEVANSSI_PREMIUM ? $plugin = 'relevanssi-premium' : $plugin = 'relevanssi';
  58.             echo "<div id='relevanssi-warning' class='updated fade'><p><strong>"
  59.                . sprintf(__('Relevanssi needs attention: Remember to build the index (you can do it at <a href="%1$s">the settings page</a>), otherwise searching won\'t work.'), "options-general.php?page=" . $plugin . "/relevanssi.php")
  60.                . "</strong></p></div>";
  61.         }
  62.         add_action('admin_notices', 'relevanssi_warning');
  63.     }
  64.    
  65.     if (!function_exists('mb_internal_encoding')) {
  66.         function relevanssi_mb_warning() {
  67.             echo "<div id='relevanssi-warning' class='updated fade'><p><strong>"
  68.                . "Multibyte string functions are not available. Relevanssi may not work well without them. "
  69.                . "Please install (or ask your host to install) the mbstring extension."
  70.                . "</strong></p></div>";
  71.         }
  72.         if ( 'options-general.php' == $pagenow and isset( $_GET['page'] ) and plugin_basename($relevanssi_variables['file']) == $_GET['page'] )
  73.             add_action('admin_notices', 'relevanssi_mb_warning');
  74.     }
  75.  
  76.     if (!wp_next_scheduled('relevanssi_truncate_cache')) {
  77.         wp_schedule_event(time(), 'daily', 'relevanssi_truncate_cache');
  78.         add_action('relevanssi_truncate_cache', 'relevanssi_truncate_cache');
  79.     }
  80.  
  81.     if (get_option('relevanssi_highlight_docs', 'off') != 'off') {
  82.         add_filter('the_content', 'relevanssi_highlight_in_docs', 11);
  83.     }
  84.     if (get_option('relevanssi_highlight_comments', 'off') != 'off') {
  85.         add_filter('comment_text', 'relevanssi_highlight_in_docs', 11);
  86.     }
  87.  
  88.     return;
  89. }
  90.  
  91. function relevanssi_menu() {
  92.     global $relevanssi_variables;
  93.     RELEVANSSI_PREMIUM ? $name = "Relevanssi Premium" : $name = "Relevanssi";
  94.     add_options_page(
  95.         $name,
  96.         $name,
  97.         'manage_options',
  98.         $relevanssi_variables['file'],
  99.         'relevanssi_options'
  100.     );
  101.     add_dashboard_page(
  102.         __('User searches', 'relevanssi'),
  103.         __('User searches', 'relevanssi'),
  104.         'edit_pages',
  105.         $relevanssi_variables['file'],
  106.         'relevanssi_search_stats'
  107.     );
  108. }
  109.  
  110. function relevanssi_query_vars($qv) {
  111.     $qv[] = 'cats';
  112.     $qv[] = 'tags';
  113.     $qv[] = 'post_types';
  114.     $qv[] = 'by_date';
  115.  
  116.     return $qv;
  117. }
  118.  
  119. function relevanssi_create_database_tables($relevanssi_db_version) {
  120.     global $wpdb;
  121.    
  122.     require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
  123.  
  124.     $charset_collate_bin_column = '';
  125.     $charset_collate = '';
  126.  
  127.     if (!empty($wpdb->charset)) {
  128.         $charset_collate_bin_column = "CHARACTER SET $wpdb->charset";
  129.         $charset_collate = "DEFAULT $charset_collate_bin_column";
  130.     }
  131.     if (strpos($wpdb->collate, "_") > 0) {
  132.         $charset_collate_bin_column .= " COLLATE " . substr($wpdb->collate, 0, strpos($wpdb->collate, '_')) . "_bin";
  133.         $charset_collate .= " COLLATE $wpdb->collate";
  134.     } else {
  135.         if ($wpdb->collate == '' && $wpdb->charset == "utf8") {
  136.             $charset_collate_bin_column .= " COLLATE utf8_bin";
  137.         }
  138.     }
  139.    
  140.     $relevanssi_table = $wpdb->prefix . "relevanssi";  
  141.     $relevanssi_stopword_table = $wpdb->prefix . "relevanssi_stopwords";
  142.     $relevanssi_log_table = $wpdb->prefix . "relevanssi_log";
  143.     $relevanssi_cache = $wpdb->prefix . 'relevanssi_cache';
  144.     $relevanssi_excerpt_cache = $wpdb->prefix . 'relevanssi_excerpt_cache';
  145.  
  146.     if(get_option('relevanssi_db_version') != $relevanssi_db_version) {
  147.         if ($relevanssi_db_version == 1) {
  148.             if($wpdb->get_var("SHOW TABLES LIKE '$relevanssi_table'") == $relevanssi_table) {
  149.                 $sql = "DROP TABLE $relevanssi_table";
  150.                 $wpdb->query($sql);
  151.             }
  152.             delete_option('relevanssi_indexed');
  153.         }
  154.    
  155.         $sql = "CREATE TABLE " . $relevanssi_table . " (doc bigint(20) NOT NULL DEFAULT '0',
  156.         term varchar(50) NOT NULL DEFAULT '0',
  157.         content mediumint(9) NOT NULL DEFAULT '0',
  158.         title mediumint(9) NOT NULL DEFAULT '0',
  159.         comment mediumint(9) NOT NULL DEFAULT '0',
  160.         tag mediumint(9) NOT NULL DEFAULT '0',
  161.         link mediumint(9) NOT NULL DEFAULT '0',
  162.         author mediumint(9) NOT NULL DEFAULT '0',
  163.         category mediumint(9) NOT NULL DEFAULT '0',
  164.         excerpt mediumint(9) NOT NULL DEFAULT '0',
  165.         taxonomy mediumint(9) NOT NULL DEFAULT '0',
  166.         customfield mediumint(9) NOT NULL DEFAULT '0',
  167.         mysqlcolumn mediumint(9) NOT NULL DEFAULT '0',
  168.         taxonomy_detail longtext NOT NULL,
  169.         customfield_detail longtext NOT NULL,
  170.         mysqlcolumn_detail longtext NOT NULL,
  171.         type varchar(210) NOT NULL DEFAULT 'post',
  172.         item bigint(20) NOT NULL DEFAULT '0',
  173.         UNIQUE KEY doctermitem (doc, term, item)) $charset_collate";
  174.        
  175.         dbDelta($sql);
  176.  
  177.         $sql = "CREATE INDEX terms ON $relevanssi_table (term(20))";
  178.         $wpdb->query($sql);
  179.  
  180.         $sql = "CREATE INDEX docs ON $relevanssi_table (doc)";
  181.         $wpdb->query($sql);
  182.  
  183.         $sql = "CREATE TABLE " . $relevanssi_stopword_table . " (stopword varchar(50) $charset_collate_bin_column NOT NULL, "
  184.         . "UNIQUE KEY stopword (stopword)) $charset_collate;";
  185.  
  186.         dbDelta($sql);
  187.  
  188. /////////////////////////////
  189. // bug fix #2 by kitchin
  190. /////////////////////////////
  191. // Fixes error in dbDelta() in '../../../../wp-admin/includes/upgrade.php'
  192. // See NOTE below.
  193. /////////////////////////////
  194. // del
  195. /////////////////////////////
  196. //      $sql = "CREATE TABLE " . $relevanssi_log_table . " (id bigint(9) NOT NULL AUTO_INCREMENT, "
  197. //      . "query varchar(200) NOT NULL, "
  198. //      . "hits mediumint(9) NOT NULL DEFAULT '0', "
  199. //      . "time timestamp NOT NULL, "
  200. //      . "user_id bigint(20) NOT NULL DEFAULT '0', "
  201. //      . "ip varchar(40) NOT NULL DEFAULT '', "
  202. //      . "UNIQUE KEY id (id)) $charset_collate;";
  203. /////////////////////////////
  204. // add
  205. /////////////////////////////
  206.         ////////////////////////////////////////////////////////////////////////
  207.         // NOTE: dbDelta() in '../../../../wp-admin/includes/upgrade.php'
  208.         // requires linefeeds between fields in the CREATE TABLE sql syntax.
  209.         // To see errors in dbDelta(), uncomment its echo lines, etc.
  210.         ////////////////////////////////////////////////////////////////////////
  211.         $sql = "CREATE TABLE " . $relevanssi_log_table . " (id bigint(9) NOT NULL AUTO_INCREMENT,\n"
  212.         . "query varchar(200) NOT NULL,\n"
  213.         . "hits mediumint(9) NOT NULL DEFAULT '0',\n"
  214.         . "time timestamp NOT NULL,\n"
  215.         . "user_id bigint(20) NOT NULL DEFAULT '0',\n"
  216.         . "ip varchar(40) NOT NULL DEFAULT '',\n"
  217.         . "UNIQUE KEY id (id)) $charset_collate;";
  218. /////////////////////////////
  219. // /kitchin
  220. /////////////////////////////
  221.  
  222.         dbDelta($sql);
  223.    
  224.         $sql = "CREATE TABLE " . $relevanssi_cache . " (param varchar(32) $charset_collate_bin_column NOT NULL, "
  225.         . "hits text NOT NULL, "
  226.         . "tstamp timestamp NOT NULL, "
  227.         . "UNIQUE KEY param (param)) $charset_collate;";
  228.  
  229.         dbDelta($sql);
  230.  
  231.         $sql = "CREATE TABLE " . $relevanssi_excerpt_cache . " (query varchar(100) $charset_collate_bin_column NOT NULL, "
  232.         . "post mediumint(9) NOT NULL, "
  233.         . "excerpt text NOT NULL, "
  234.         . "UNIQUE (query, post)) $charset_collate;";
  235.  
  236.         dbDelta($sql);
  237.  
  238.         if (RELEVANSSI_PREMIUM && get_option('relevanssi_db_version') < 12) {
  239.             $charset_collate_bin_column = '';
  240.             $charset_collate = '';
  241.        
  242.             if (!empty($wpdb->charset)) {
  243.                 $charset_collate_bin_column = "CHARACTER SET $wpdb->charset";
  244.                 $charset_collate = "DEFAULT $charset_collate_bin_column";
  245.             }
  246.             if (strpos($wpdb->collate, "_") > 0) {
  247.                 $charset_collate_bin_column .= " COLLATE " . substr($wpdb->collate, 0, strpos($wpdb->collate, '_')) . "_bin";
  248.                 $charset_collate .= " COLLATE $wpdb->collate";
  249.             } else {
  250.                 if ($wpdb->collate == '' && $wpdb->charset == "utf8") {
  251.                     $charset_collate_bin_column .= " COLLATE utf8_bin";
  252.                 }
  253.             }
  254.            
  255.             $sql = "ALTER TABLE $relevanssi_stopword_table MODIFY COLUMN stopword varchar(50) $charset_collate_bin_column NOT NULL";
  256.             $wpdb->query($sql);
  257.             $sql = "ALTER TABLE $relevanssi_log_table ADD COLUMN user_id bigint(20) NOT NULL DEFAULT '0'";
  258.             $wpdb->query($sql);
  259.             $sql = "ALTER TABLE $relevanssi_log_table ADD COLUMN ip varchar(40) NOT NULL DEFAULT ''";
  260.             $wpdb->query($sql);
  261.             $sql = "ALTER TABLE $relevanssi_cache MODIFY COLUMN param varchar(32) $charset_collate_bin_column NOT NULL";
  262.             $wpdb->query($sql);
  263.             $sql = "ALTER TABLE $relevanssi_excerpt_cache MODIFY COLUMN query(100) $charset_collate_bin_column NOT NULL";
  264.             $wpdb->query($sql);
  265.         }
  266.        
  267.         update_option('relevanssi_db_version', $relevanssi_db_version);
  268.     }
  269.    
  270.     if ($wpdb->get_var("SELECT COUNT(*) FROM $relevanssi_stopword_table WHERE 1") < 1) {
  271.         relevanssi_populate_stopwords();
  272.     }
  273. }
  274. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement