static function update_index($task) { $completed = $task->get("completed", 0); foreach (ORM::factory("search_record")->where("dirty", 1)->limit(2)->find_all() as $record) { search::update_record($record); $completed++; } $task->set("completed", $completed); list($remaining, $total, $percent) = self::_get_stats(); $task->percent_complete = round(100 * $completed / ($remaining + $completed)); $task->status = t("%done records records updated, index is %percent% up-to-date", array("done" => $completed, "percent" => $percent)); if ($remaining == 0) { $task->done = true; $task->state = "success"; site_status::clear("search_index_out_of_date"); } }
static function install() { $version = module::get_version("search"); $db = Database::instance(); if ($version == 0) { $db->query("CREATE TABLE `search_records` (\n `id` int(9) NOT NULL auto_increment,\n `item_id` int(9),\n `dirty` boolean default 1,\n `data` LONGTEXT default NULL,\n PRIMARY KEY (`id`),\n FULLTEXT INDEX (`data`))\n 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); if (ORM::factory("search_record")->count_all() < 10) { foreach (ORM::factory("search_record")->where("dirty", 1)->find_all() as $record) { search::update_record($record); } } else { search::check_index(); } } }
static function item_related_update($item) { $record = ORM::factory("search_record")->where("item_id", $item->id)->find(); search::update_record($record); }