diff options
Diffstat (limited to 'modules/search')
| -rw-r--r-- | modules/search/helpers/search.php | 16 | ||||
| -rw-r--r-- | modules/search/helpers/search_event.php | 11 | ||||
| -rw-r--r-- | modules/search/helpers/search_installer.php | 2 | ||||
| -rw-r--r-- | modules/search/helpers/search_task.php | 54 | ||||
| -rw-r--r-- | modules/search/module.info | 4 | 
5 files changed, 43 insertions, 44 deletions
| diff --git a/modules/search/helpers/search.php b/modules/search/helpers/search.php index ea8dad81..355c4493 100644 --- a/modules/search/helpers/search.php +++ b/modules/search/helpers/search.php @@ -24,7 +24,7 @@ class search_Core {      if (!user::active()->admin) {        foreach (user::group_ids() as $id) { -        $fields[] = "`view_$id` = " . access::ALLOW; +        $fields[] = "`view_$id` = TRUE"; // access::ALLOW        }        $access_sql = "AND (" . join(" AND ", $fields) . ")";      } else { @@ -50,6 +50,9 @@ class search_Core {      return array($count, new ORM_Iterator(ORM::factory("item"), $db->query($query)));    } +  /** +   * @return string An error message suitable for inclusion in the task log +   */    static function check_index() {      list ($remaining) = search::stats();      if ($remaining) { @@ -61,19 +64,14 @@ class search_Core {    }    static function update($item) { -    $data = array(); +    $data = new ArrayObject();      $record = ORM::factory("search_record")->where("item_id", $item->id)->find();      if (!$record->loaded) {        $record->item_id = $item->id;      } -    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()); -      } -    } -    $record->data = join(" ", $data); +    module::event("item_index_data", $record->item(), $data); +    $record->data = join(" ", (array)$data);      $record->dirty = 0;      $record->save();    } diff --git a/modules/search/helpers/search_event.php b/modules/search/helpers/search_event.php index b9657395..836bbe15 100644 --- a/modules/search/helpers/search_event.php +++ b/modules/search/helpers/search_event.php @@ -22,11 +22,11 @@ class search_event_Core {      search::update($item);    } -  static function item_updated($old_item, $new_item) { -    search::update($new_item); +  static function item_updated($original, $new) { +    search::update($new);    } -  static function item_before_delete($item) { +  static function item_deleted($item) {      ORM::factory("search_record")        ->where("item_id", $item->id)        ->delete_all(); @@ -35,9 +35,4 @@ class search_event_Core {    static function item_related_update($item) {      search::update($item);    } - -  static function item_related_update_batch($sql) { -    $db = Database::instance(); -    $db->query("UPDATE {search_records} SET `dirty` = 1 WHERE item_id IN ($sql)"); -  }  } diff --git a/modules/search/helpers/search_installer.php b/modules/search/helpers/search_installer.php index cd253be4..10d8211f 100644 --- a/modules/search/helpers/search_installer.php +++ b/modules/search/helpers/search_installer.php @@ -28,7 +28,7 @@ class search_installer {                   PRIMARY KEY (`id`),                   KEY(`item_id`),                   FULLTEXT INDEX (`data`)) -               ENGINE=MyISAM DEFAULT CHARSET=utf8;"); +               DEFAULT CHARSET=utf8;");      module::set_version("search", 1);    } diff --git a/modules/search/helpers/search_task.php b/modules/search/helpers/search_task.php index 876661e4..5643573a 100644 --- a/modules/search/helpers/search_task.php +++ b/modules/search/helpers/search_task.php @@ -39,34 +39,40 @@ 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++; -    } +        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();      } -    $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));    }  } diff --git a/modules/search/module.info b/modules/search/module.info index b286ab6c..f417c4fa 100644 --- a/modules/search/module.info +++ b/modules/search/module.info @@ -1,3 +1,3 @@ -name = Search -description = Allows users to search their Gallery +name = "Search" +description = "Allows users to search their Gallery"  version = 1 | 
