diff options
Diffstat (limited to 'modules/search')
| -rw-r--r-- | modules/search/helpers/search.php | 8 | ||||
| -rw-r--r-- | modules/search/helpers/search_installer.php | 19 |
2 files changed, 18 insertions, 9 deletions
diff --git a/modules/search/helpers/search.php b/modules/search/helpers/search.php index 2c7be123..15efa3b2 100644 --- a/modules/search/helpers/search.php +++ b/modules/search/helpers/search.php @@ -67,8 +67,8 @@ class search_Core { $record->item_id = $item->id; } - foreach (module::installed() as $module_name => $module_info) { - $class_name = "{$module_name}_search"; + foreach (module::active() as $module) { + $class_name = "{$module->name}_search"; if (method_exists($class_name, "item_index_data")) { $data[] = call_user_func(array($class_name, "item_index_data"), $record->item()); } @@ -83,12 +83,16 @@ class search_Core { ->select("items.id") ->from("items") ->join("search_records", "items.id", "search_records.item_id", "left") + ->open_paren() ->where("search_records.item_id", null) ->orwhere("search_records.dirty", 1) + ->close_paren() ->get() ->count(); + $total = ORM::factory("item")->count_all(); $percent = round(100 * ($total - $remaining) / $total); + return array($remaining, $total, $percent); } } diff --git a/modules/search/helpers/search_installer.php b/modules/search/helpers/search_installer.php index a3d0f79e..5fc9b37b 100644 --- a/modules/search/helpers/search_installer.php +++ b/modules/search/helpers/search_installer.php @@ -31,18 +31,23 @@ class search_installer { KEY(`item_id`), FULLTEXT INDEX (`data`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;"); - - // populate the index with dirty records - $db->query("INSERT INTO {search_records} (`item_id`) SELECT `id` FROM {items}"); module::set_version("search", 1); + } + } + + static function activate() { + // Update the root item. This is a quick hack because the search module is activated as part + // of the official install, so this way we don't start off with a "your index is out of date" + // banner. + search::update(model_cache::get("item", 1)); search::check_index(); } + + static function deactivate() { + site_status::clear("search_index_out_of_date"); } static function uninstall() { - $db = Database::instance(); - $db->query("DROP TABLE {search_records}"); - site_status::clear("search_index_out_of_date"); - module::delete("search"); + Database::instance()->query("DROP TABLE {search_records}"); } } |
