diff options
Diffstat (limited to 'modules/search/helpers/search_task.php')
| -rw-r--r-- | modules/search/helpers/search_task.php | 56 | 
1 files changed, 32 insertions, 24 deletions
| diff --git a/modules/search/helpers/search_task.php b/modules/search/helpers/search_task.php index 876661e4..395bcd98 100644 --- a/modules/search/helpers/search_task.php +++ b/modules/search/helpers/search_task.php @@ -39,34 +39,42 @@ class search_task_Core {    }    static function update_index($task) { -    $completed = $task->get("completed", 0); +    try { +      $completed = $task->get("completed", 0); -    $start = microtime(true); -    foreach (ORM::factory("item") -             ->join("search_records", "items.id", "search_records.item_id", "left") -             ->where("search_records.item_id", null) -             ->orwhere("search_records.dirty", 1) -             ->find_all() as $item) { -      if (microtime(true) - $start > 1.5) { -        break; -      } +      $start = microtime(true); +      foreach (ORM::factory("item") +               ->join("search_records", "items.id", "search_records.item_id", "left") +               ->where("search_records.item_id", null) +               ->orwhere("search_records.dirty", 1) +               ->find_all() as $item) { +        if (microtime(true) - $start > 1.5) { +          break; +        } -      search::update($item); -      $completed++; -    } +        $message[] = search::update($item); +        $completed++; +      } -    list ($remaining, $total, $percent) = search::stats(); -    $task->set("completed", $completed); -    if ($remaining == 0 || !($remaining + $completed)) { +      list ($remaining, $total, $percent) = search::stats(); +      $task->set("completed", $completed); +      if ($remaining == 0 || !($remaining + $completed)) { +        $task->done = true; +        $task->state = "success"; +        site_status::clear("search_index_out_of_date"); +        $task->percent_complete = 100; +      } else { +        $task->percent_complete = round(100 * $completed / ($remaining + $completed)); +      } +      $task->status = t2("one record updated, index is %percent% up-to-date", +                         "%count records updated, index is %percent% up-to-date", +                         $completed, array("percent" => $percent)); +    } catch (Exception $e) {        $task->done = true; -      $task->state = "success"; -      site_status::clear("search_index_out_of_date"); -      $task->percent_complete = 100; -    } else { -      $task->percent_complete = round(100 * $completed / ($remaining + $completed)); +      $task->state = "error"; +      $task->status = $e->getMessage(); +      $message[] = $e->__toString();      } -    $task->status = t2("one record updated, index is %percent% up-to-date", -                       "%count records updated, index is %percent% up-to-date", -                       $completed, array("percent" => $percent)); +    $task->log($message);    }  } | 
