summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/search/helpers/search_task.php19
1 files changed, 13 insertions, 6 deletions
diff --git a/modules/search/helpers/search_task.php b/modules/search/helpers/search_task.php
index 116fd4f9..c0d04ca5 100644
--- a/modules/search/helpers/search_task.php
+++ b/modules/search/helpers/search_task.php
@@ -19,6 +19,19 @@
*/
class search_task_Core {
static function available_tasks() {
+ // Delete extra search_records
+ Database::instance()->query(
+ "DELETE `search_records`.* FROM `search_records` " .
+ "LEFT JOIN `items` ON (`search_records`.`item_id` = `items`.`id`) " .
+ "WHERE `items`.`id` IS NULL");
+
+ // Insert missing search_records
+ Database::instance()->query(
+ "INSERT INTO `search_records`(`item_id`) (" .
+ " SELECT `items`.`id` FROM `items` " .
+ " LEFT JOIN `search_records` ON (`search_records`.`item_id` = `items`.`id`) " .
+ " WHERE `search_records`.`id` IS NULL)");
+
list ($remaining, $total, $percent) = self::_get_stats();
return array(Task_Definition::factory()
->callback("search_task::update_index")
@@ -32,12 +45,6 @@ class search_task_Core {
static function update_index($task) {
$completed = $task->get("completed", 0);
- if ($completed == 0) {
- Database::instance()->query(
- "DELETE `search_records`.* FROM `search_records` " .
- "LEFT JOIN `items` ON (`search_records`.`item_id` = `items`.`id`) " .
- "WHERE `items`.`id` IS NULL");
- }
foreach (ORM::factory("search_record")->where("dirty", 1)->limit(2)->find_all() as $record) {
search::update_record($record);