Esempio n. 1
0
function relevanssi_install() {
	global $wpdb, $relevanssi_table, $stopword_table, $title_boost_default,
	$tag_boost_default, $comment_boost_default;
	
	add_option('relevanssi_title_boost', $title_boost_default);
	add_option('relevanssi_tag_boost', $tag_boost_default);
	add_option('relevanssi_comment_boost', $comment_boost_default);
	add_option('relevanssi_admin_search', 'off');
	add_option('relevanssi_highlight', 'strong');
	add_option('relevanssi_txt_col', '#ff0000');
	add_option('relevanssi_bg_col', '#ffaf75');
	add_option('relevanssi_css', 'text-decoration: underline; text-color: #ff0000');
	add_option('relevanssi_class', 'relevanssi-query-term');
	add_option('relevanssi_excerpts', 'on');
	add_option('relevanssi_excerpt_length', '450');
	add_option('relevanssi_excerpt_type', 'chars');
	add_option('relevanssi_log_queries', 'off');
	add_option('relevanssi_cat', '0');
	add_option('relevanssi_excat', '0');
	add_option('relevanssi_index_type', 'both');
	add_option('relevanssi_index_fields', '');
	add_option('relevanssi_exclude_posts', ''); 		//added by OdditY
	add_option('relevanssi_include_tags', 'on');		//added by OdditY	
	add_option('relevanssi_hilite_title', ''); 			//added by OdditY	
	add_option('relevanssi_highlight_docs', 'off');
	add_option('relevanssi_highlight_comments', 'off');
	add_option('relevanssi_index_comments', 'none');	//added by OdditY
	add_option('relevanssi_include_cats', '');
	add_option('relevanssi_show_matches', '');
	add_option('relevanssi_show_matches_txt', '(Search hits: %body% in body, %title% in title, %tags% in tags, %comments% in comments. Score: %score%)');
	add_option('relevanssi_fuzzy', 'sometimes');
	add_option('relevanssi_indexed', '');
	add_option('relevanssi_expand_shortcodes', 'on');
	add_option('relevanssi_custom_types', '');
	add_option('relevanssi_custom_taxonomies', '');
	add_option('relevanssi_index_author', '');
	add_option('relevanssi_implicit_operator', 'OR');
	add_option('relevanssi_omit_from_logs', '');
	add_option('relevanssi_synonyms', '');
	add_option('relevanssi_index_excerpt', '');
	add_option('relevanssi_index_limit', '500');
	add_option('relevanssi_index_attachments', '');
	add_option('relevanssi_disable_or_fallback', 'off');
	
	require_once(ABSPATH . 'wp-admin/includes/upgrade.php');

	$relevanssi_table = $wpdb->prefix . "relevanssi";
	$stopword_table = $wpdb->prefix . "relevanssi_stopwords";
	$log_table = $wpdb->prefix . "relevanssi_log";
	
	if($wpdb->get_var("SHOW TABLES LIKE '$relevanssi_table'") != $relevanssi_table) {
		$sql = "CREATE TABLE " . $relevanssi_table . " (id mediumint(9) NOT NULL AUTO_INCREMENT, "
		. "doc bigint(20) NOT NULL, "
		. "term varchar(50) NOT NULL, "
		. "tf mediumint(9) NOT NULL, "
		. "title tinyint(1) NOT NULL, "
	    . "UNIQUE KEY id (id));";

		dbDelta($sql);
		
		$sql = "ALTER TABLE $relevanssi_table ADD INDEX (doc)";
		$wpdb->query($sql);

		$sql = "ALTER TABLE $relevanssi_table ADD INDEX (term)";
		$wpdb->query($sql);
	}


	if($wpdb->get_var("SHOW TABLES LIKE '$stopword_table'") != $stopword_table) {
		$sql = "CREATE TABLE " . $stopword_table . " (stopword varchar(50) NOT NULL, "
	    . "UNIQUE KEY stopword (stopword));";

		dbDelta($sql);
	}
	
	if ($wpdb->get_var("SELECT COUNT(*) FROM $stopword_table WHERE 1") < 1) {
		relevanssi_populate_stopwords();
	}


	if($wpdb->get_var("SHOW TABLES LIKE '$log_table'") != $log_table) {
		$sql = "CREATE TABLE " . $log_table . " (id mediumint(9) NOT NULL AUTO_INCREMENT, "
		. "query varchar(200) NOT NULL, "
		. "hits mediumint(9) NOT NULL, "
		. "time timestamp NOT NULL, "
	    . "UNIQUE KEY id (id));";

		dbDelta($sql);
	}
}
function relevanssi_create_database_tables($relevanssi_db_version)
{
    global $wpdb;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $charset_collate_bin_column = '';
    $charset_collate = '';
    if (!empty($wpdb->charset)) {
        $charset_collate_bin_column = "CHARACTER SET {$wpdb->charset}";
        $charset_collate = "DEFAULT {$charset_collate_bin_column}";
    }
    if (strpos($wpdb->collate, "_") > 0) {
        $charset_collate_bin_column .= " COLLATE " . substr($wpdb->collate, 0, strpos($wpdb->collate, '_')) . "_bin";
        $charset_collate .= " COLLATE {$wpdb->collate}";
    } else {
        if ($wpdb->collate == '' && $wpdb->charset == "utf8") {
            $charset_collate_bin_column .= " COLLATE utf8_bin";
        }
    }
    $relevanssi_table = $wpdb->prefix . "relevanssi";
    $relevanssi_stopword_table = $wpdb->prefix . "relevanssi_stopwords";
    $relevanssi_log_table = $wpdb->prefix . "relevanssi_log";
    $relevanssi_cache = $wpdb->prefix . 'relevanssi_cache';
    $relevanssi_excerpt_cache = $wpdb->prefix . 'relevanssi_excerpt_cache';
    if (get_option('relevanssi_db_version') != $relevanssi_db_version) {
        if ($relevanssi_db_version == 1) {
            if ($wpdb->get_var("SHOW TABLES LIKE '{$relevanssi_table}'") == $relevanssi_table) {
                $sql = "DROP TABLE {$relevanssi_table}";
                $wpdb->query($sql);
            }
            delete_option('relevanssi_indexed');
        }
        $sql = "CREATE TABLE " . $relevanssi_table . " (doc bigint(20) NOT NULL DEFAULT '0', \n\t\tterm varchar(50) NOT NULL DEFAULT '0', \n\t\tterm_reverse varchar(50) NOT NULL DEFAULT '0',\n\t\tcontent mediumint(9) NOT NULL DEFAULT '0', \n\t\ttitle mediumint(9) NOT NULL DEFAULT '0', \n\t\tcomment mediumint(9) NOT NULL DEFAULT '0', \n\t\ttag mediumint(9) NOT NULL DEFAULT '0', \n\t\tlink mediumint(9) NOT NULL DEFAULT '0', \n\t\tauthor mediumint(9) NOT NULL DEFAULT '0', \n\t\tcategory mediumint(9) NOT NULL DEFAULT '0', \n\t\texcerpt mediumint(9) NOT NULL DEFAULT '0', \n\t\ttaxonomy mediumint(9) NOT NULL DEFAULT '0', \n\t\tcustomfield mediumint(9) NOT NULL DEFAULT '0', \n\t\tmysqlcolumn mediumint(9) NOT NULL DEFAULT '0',\n\t\ttaxonomy_detail longtext NOT NULL,\n\t\tcustomfield_detail longtext NOT NULL,\n\t\tmysqlcolumn_detail longtext NOT NULL,\n\t\ttype varchar(210) NOT NULL DEFAULT 'post', \n\t\titem bigint(20) NOT NULL DEFAULT '0', \n\t    UNIQUE KEY doctermitem (doc, term, item)) {$charset_collate}";
        dbDelta($sql);
        $sql = "SHOW INDEX FROM {$relevanssi_table}";
        $indices = $wpdb->get_results($sql);
        $terms_exists = false;
        $relevanssi_term_reverse_idx_exists = false;
        $docs_exists = false;
        $typeitem_exists = false;
        foreach ($indices as $index) {
            if ($index->Key_name == 'terms') {
                $terms_exists = true;
            }
            if ($index->Key_name == 'relevanssi_term_reverse_idx') {
                $relevanssi_term_reverse_idx_exists = true;
            }
            if ($index->Key_name == 'docs') {
                $docs_exists = true;
            }
            if ($index->Key_name == 'typeitem') {
                $typeitem_exists = true;
            }
        }
        if (!$terms_exists) {
            $sql = "CREATE INDEX terms ON {$relevanssi_table} (term(20))";
            $wpdb->query($sql);
        }
        if (!$relevanssi_term_reverse_idx_exists) {
            $sql = "CREATE INDEX relevanssi_term_reverse_idx ON {$relevanssi_table} (term_reverse(10))";
            $wpdb->query($sql);
        }
        if (!$docs_exists) {
            $sql = "CREATE INDEX docs ON {$relevanssi_table} (doc)";
            $wpdb->query($sql);
        }
        if (!$typeitem_exists) {
            $sql = "CREATE INDEX typeitem ON {$relevanssi_table} (type, item)";
            $wpdb->query($sql);
        }
        $sql = "CREATE TABLE " . $relevanssi_stopword_table . " (stopword varchar(50) {$charset_collate_bin_column} NOT NULL,\n\t    UNIQUE KEY stopword (stopword)) {$charset_collate};";
        dbDelta($sql);
        $sql = "CREATE TABLE " . $relevanssi_log_table . " (id bigint(9) NOT NULL AUTO_INCREMENT, \n\t\tquery varchar(200) NOT NULL,\n\t\thits mediumint(9) NOT NULL DEFAULT '0',\n\t\ttime timestamp NOT NULL,\n\t\tuser_id bigint(20) NOT NULL DEFAULT '0',\n\t\tip varchar(40) NOT NULL DEFAULT '',\n\t    UNIQUE KEY id (id)) {$charset_collate};";
        dbDelta($sql);
        $sql = "CREATE TABLE " . $relevanssi_cache . " (param varchar(32) {$charset_collate_bin_column} NOT NULL,\n\t\thits text NOT NULL,\n\t\ttstamp timestamp NOT NULL,\n\t    UNIQUE KEY param (param)) {$charset_collate};";
        dbDelta($sql);
        $sql = "CREATE TABLE " . $relevanssi_excerpt_cache . " (query varchar(100) {$charset_collate_bin_column} NOT NULL, \n\t\tpost mediumint(9) NOT NULL, \n\t\texcerpt text NOT NULL, \n\t    UNIQUE (query, post)) {$charset_collate};";
        dbDelta($sql);
        if (RELEVANSSI_PREMIUM && get_option('relevanssi_db_version') < 12) {
            $charset_collate_bin_column = '';
            $charset_collate = '';
            if (!empty($wpdb->charset)) {
                $charset_collate_bin_column = "CHARACTER SET {$wpdb->charset}";
                $charset_collate = "DEFAULT {$charset_collate_bin_column}";
            }
            if (strpos($wpdb->collate, "_") > 0) {
                $charset_collate_bin_column .= " COLLATE " . substr($wpdb->collate, 0, strpos($wpdb->collate, '_')) . "_bin";
                $charset_collate .= " COLLATE {$wpdb->collate}";
            } else {
                if ($wpdb->collate == '' && $wpdb->charset == "utf8") {
                    $charset_collate_bin_column .= " COLLATE utf8_bin";
                }
            }
            $sql = "ALTER TABLE {$relevanssi_stopword_table} MODIFY COLUMN stopword varchar(50) {$charset_collate_bin_column} NOT NULL";
            $wpdb->query($sql);
            $sql = "ALTER TABLE {$relevanssi_log_table} ADD COLUMN user_id bigint(20) NOT NULL DEFAULT '0'";
            $wpdb->query($sql);
            $sql = "ALTER TABLE {$relevanssi_log_table} ADD COLUMN ip varchar(40) NOT NULL DEFAULT ''";
            $wpdb->query($sql);
            $sql = "ALTER TABLE {$relevanssi_cache} MODIFY COLUMN param varchar(32) {$charset_collate_bin_column} NOT NULL";
            $wpdb->query($sql);
            $sql = "ALTER TABLE {$relevanssi_excerpt_cache} MODIFY COLUMN query(100) {$charset_collate_bin_column} NOT NULL";
            $wpdb->query($sql);
        }
        if (get_option('relevanssi_db_version') < 16) {
            $sql = "ALTER TABLE {$relevanssi_table} ADD COLUMN term_reverse VARCHAR(50);";
            $wpdb->query($sql);
            $sql = "UPDATE {$relevanssi_table} SET term_reverse = REVERSE(term);";
            $wpdb->query($sql);
            $sql = "CREATE INDEX relevanssi_term_reverse_idx ON {$relevanssi_table} (term_reverse(10));";
            $wpdb->query($sql);
        }
        update_option('relevanssi_db_version', $relevanssi_db_version);
    }
    if ($wpdb->get_var("SELECT COUNT(*) FROM {$relevanssi_stopword_table} WHERE 1") < 1) {
        relevanssi_populate_stopwords();
    }
}
Esempio n. 3
0
function relevanssi_install()
{
    global $wpdb, $relevanssi_table, $stopword_table, $title_boost_default, $tag_boost_default, $comment_boost_default;
    add_option('relevanssi_title_boost', $title_boost_default);
    add_option('relevanssi_tag_boost', $tag_boost_default);
    add_option('relevanssi_comment_boost', $comment_boost_default);
    add_option('relevanssi_admin_search', 'off');
    add_option('relevanssi_highlight', 'strong');
    add_option('relevanssi_txt_col', '#ff0000');
    add_option('relevanssi_bg_col', '#ffaf75');
    add_option('relevanssi_css', 'text-decoration: underline; text-color: #ff0000');
    add_option('relevanssi_class', 'relevanssi-query-term');
    add_option('relevanssi_excerpts', 'on');
    add_option('relevanssi_excerpt_length', '450');
    add_option('relevanssi_excerpt_type', 'chars');
    add_option('relevanssi_log_queries', 'off');
    add_option('relevanssi_cat', '0');
    add_option('relevanssi_excat', '0');
    add_option('relevanssi_index_type', 'both');
    add_option('relevanssi_index_fields', '');
    add_option('relevanssi_exclude_posts', '');
    //added by OdditY
    add_option('relevanssi_include_tags', 'on');
    //added by OdditY
    add_option('relevanssi_hilite_title', '');
    //added by OdditY
    add_option('relevanssi_highlight_docs', 'off');
    add_option('relevanssi_highlight_comments', 'off');
    add_option('relevanssi_index_comments', 'none');
    //added by OdditY
    add_option('relevanssi_include_cats', '');
    add_option('relevanssi_show_matches', '');
    add_option('relevanssi_show_matches_txt', '(Search hits: %body% in body, %title% in title, %tags% in tags, %comments% in comments. Score: %score%)');
    add_option('relevanssi_fuzzy', 'sometimes');
    add_option('relevanssi_indexed', '');
    add_option('relevanssi_expand_shortcodes', 'on');
    add_option('relevanssi_custom_types', '');
    add_option('relevanssi_custom_taxonomies', '');
    add_option('relevanssi_index_author', '');
    add_option('relevanssi_implicit_operator', 'OR');
    add_option('relevanssi_omit_from_logs', '');
    add_option('relevanssi_synonyms', '');
    add_option('relevanssi_index_excerpt', '');
    add_option('relevanssi_index_limit', '500');
    add_option('relevanssi_index_attachments', '');
    add_option('relevanssi_disable_or_fallback', 'off');
    add_option('relevanssi_respect_exclude', 'on');
    add_option('relevanssi_cache_seconds', '172800');
    add_option('relevanssi_enable_cache', 'off');
    add_option('relevanssi_min_word_length', 3);
    add_option('relevanssi_wpml_only_current', 'on');
    add_option('relevanssi_word_boundaries', 'on');
    add_option('relevanssi_hidesponsor', 'false');
    add_option('relevanssi_default_orderby', 'relevance');
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $charset_collate = '';
    if (!empty($wpdb->charset)) {
        $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
    }
    if (!empty($wpdb->collate)) {
        $charset_collate .= " COLLATE {$wpdb->collate}";
    }
    $relevanssi_table = $wpdb->prefix . "relevanssi";
    $stopword_table = $wpdb->prefix . "relevanssi_stopwords";
    $log_table = $wpdb->prefix . "relevanssi_log";
    $relevanssi_cache = $wpdb->prefix . 'relevanssi_cache';
    $relevanssi_excerpt_cache = $wpdb->prefix . 'relevanssi_excerpt_cache';
    if ($wpdb->get_var("SHOW TABLES LIKE '{$relevanssi_table}'") != $relevanssi_table) {
        $sql = "CREATE TABLE " . $relevanssi_table . " (id mediumint(9) NOT NULL AUTO_INCREMENT, " . "doc bigint(20) NOT NULL, " . "term varchar(50) NOT NULL, " . "tf mediumint(9) NOT NULL DEFAULT '0', " . "title tinyint(1) NOT NULL, " . "UNIQUE KEY id (id)) {$charset_collate};";
        dbDelta($sql);
        $sql = "CREATE INDEX terms ON {$relevanssi_table} (term(20))";
        $wpdb->query($sql);
    }
    if ($wpdb->get_var("SHOW TABLES LIKE '{$stopword_table}'") != $stopword_table) {
        $sql = "CREATE TABLE " . $stopword_table . " (stopword varchar(50) NOT NULL, " . "UNIQUE KEY stopword (stopword)) {$charset_collate};";
        dbDelta($sql);
    }
    if ($wpdb->get_var("SELECT COUNT(*) FROM {$stopword_table} WHERE 1") < 1) {
        relevanssi_populate_stopwords();
    }
    if ($wpdb->get_var("SHOW TABLES LIKE '{$log_table}'") != $log_table) {
        $sql = "CREATE TABLE " . $log_table . " (id mediumint(9) NOT NULL AUTO_INCREMENT, " . "query varchar(200) NOT NULL, " . "hits mediumint(9) NOT NULL, " . "time timestamp NOT NULL, " . "UNIQUE KEY id (id)) {$charset_collate};";
        dbDelta($sql);
    }
    if ($wpdb->get_var("SHOW TABLES LIKE '{$relevanssi_cache}'") != $relevanssi_cache) {
        $sql = "CREATE TABLE " . $relevanssi_cache . " (param varchar(32) NOT NULL, " . "hits text NOT NULL, " . "tstamp timestamp NOT NULL, " . "UNIQUE KEY param (param)) {$charset_collate};";
        dbDelta($sql);
    }
    if ($wpdb->get_var("SHOW TABLES LIKE '{$relevanssi_excerpt_cache}'") != $relevanssi_excerpt_cache) {
        $sql = "CREATE TABLE " . $relevanssi_excerpt_cache . " (query varchar(100) NOT NULL, " . "post mediumint(9) NOT NULL, " . "excerpt text NOT NULL, " . "UNIQUE (query, post)) {$charset_collate};";
        dbDelta($sql);
    }
}