function rebuild_index($pContentType, $pUnindexedOnly = false) { global $gBitSystem, $gLibertySystem; $arguments = array(); $whereClause = ""; ini_set("max_execution_time", "3000"); if (!$pUnindexedOnly) { delete_index_content_type($pContentType); } $query = "SELECT `content_id`, `content_type_guid` FROM `" . BIT_DB_PREFIX . "liberty_content`"; if (!empty($pContentType) && $pContentType != "pages") { $whereClause = " WHERE `content_type_guid` = ?"; $arguments[] = $pContentType; } if ($pUnindexedOnly) { if (empty($whereClause)) { $whereClause = " WHERE "; } else { $whereClause .= " AND "; } $whereClause .= "`content_id` NOT IN (SELECT DISTINCT `content_id` FROM `" . BIT_DB_PREFIX . "search_index`)"; } $orderBy = " ORDER BY `content_type_guid` "; $result = $gBitSystem->mDb->query($query . $whereClause . $orderBy, $arguments); $count = 0; if ($result) { $count = $result->RecordCount(); while ($res = $result->fetchRow()) { if (isset($gLibertySystem->mContentTypes[$res["content_type_guid"]])) { $type = $gLibertySystem->mContentTypes[$res["content_type_guid"]]; require_once constant(strtoupper($type['handler_package']) . '_PKG_PATH') . $type['handler_file']; $obj = new $type['handler_class'](NULL, $res["content_id"]); refresh_index($obj); unset($obj); } } } return $count; }
<?php // $Header$ // Copyright (c) 2002-2003, Luis Argerich, Garland Foster, Eduardo Polidor, et. al. // All Rights Reserved. See below for details and a complete list of authors. // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details. $feedback = array(); $formSearchToggles = array('search_stats' => array('label' => 'Search Statistics', 'note' => 'Record searches made and their frequency.'), 'search_index_on_submit' => array('label' => 'Index On Submit', 'note' => 'Index articles, blogs and wiki pages immdiately on submission. If unchecked, pages will be updated randomly according the the refresh rate below.')); $formSearchInts = array('search_refresh_rate' => array('label' => 'Search Refresh Rate', 'note' => 'Varies the rate at which updates to the search index are made, 1 = every page read, while rate>1 will introduce a random chance of a refresh every "rate" pages'), 'search_min_wordlength' => array('label' => 'Minimum number of letters for search words', 'note' => 'By settings this value to 3, you can ignore search words such as "a" or "or", however searches for a number like "13" will be ignored as well.'), 'search_max_syllwords' => array('label' => 'Maximum number of words', 'note' => 'The maximum number of words containing a syllable that can be serached for in any one search.'), 'search_syll_age' => array('label' => 'Age in hours of search cache', 'note' => 'Define the Maximum age of cached search results for any given syllable. The results cache will be used to provide a search result if it is available, and will be cleared after either the age, or when the results cache reaches it\'s limit'), 'search_lru_purge_rate' => array('label' => 'Least Recently Used (LRU) list purging rate', 'note' => 'Purge the results cache every "rate" pages. This will keep space available in the cache for new search results'), 'search_lru_length' => array('label' => 'Least Recently Used (LRU) list length', 'note' => 'Limit the results cache to this number of entries')); if (!empty($_REQUEST['del_index'])) { require_once SEARCH_PKG_PATH . '/refresh_functions.php'; delete_index_content_type($_REQUEST["where"]); $feedback['success'] = tra("The search index was successfully deleted."); } if (!empty($_REQUEST['del_index_reindex'])) { require_once SEARCH_PKG_PATH . '/refresh_functions.php'; $count = rebuild_index($_REQUEST["where"]); $feedback['success'] = tra("The search index was successfully deleted.") . tra("Number of items re-indexed") . ": " . $count; } if (!empty($_REQUEST['del_searchwords'])) { require_once SEARCH_PKG_PATH . '/refresh_functions.php'; delete_search_words_and_syllables(); $feedback['success'] = tra("The searchwords were successfully purged from the database."); } if (!empty($_REQUEST['store_prefs'])) { foreach ($formSearchInts as $item => $data) { simple_set_int($item, SEARCH_PKG_NAME); $formSearchInts[$item]['value'] = $_REQUEST[$item]; } foreach ($formSearchToggles as $item => $data) { simple_set_toggle($item, SEARCH_PKG_NAME);