예제 #1
0
 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");
     }
 }
예제 #2
0
 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();
         }
     }
 }
예제 #3
0
 static function item_related_update($item)
 {
     $record = ORM::factory("search_record")->where("item_id", $item->id)->find();
     search::update_record($record);
 }