summaryrefslogtreecommitdiff
path: root/modules/search/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'modules/search/helpers')
-rw-r--r--modules/search/helpers/search.php16
-rw-r--r--modules/search/helpers/search_event.php11
-rw-r--r--modules/search/helpers/search_installer.php2
-rw-r--r--modules/search/helpers/search_task.php15
4 files changed, 18 insertions, 26 deletions
diff --git a/modules/search/helpers/search.php b/modules/search/helpers/search.php
index 34eaecbd..0080b4ce 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 {
@@ -58,28 +58,22 @@ class search_Core {
if ($remaining) {
site_status::warning(
t('Your search index needs to be updated. <a href="%url" class="gDialogLink">Fix this now</a>',
- array("url" => url::site("admin/maintenance/start/search_task::update_index?csrf=__CSRF__"))),
+ array("url" => html::mark_clean(url::site("admin/maintenance/start/search_task::update_index?csrf=__CSRF__")))),
"search_index_out_of_date");
}
}
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();
- return t("Search index updated for '%title'", array("title" => p::purify($item->title)));
}
static function stats() {
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 df1dfe16..9508f420 100644
--- a/modules/search/helpers/search_task.php
+++ b/modules/search/helpers/search_task.php
@@ -48,12 +48,18 @@ class search_task_Core {
->where("search_records.item_id", null)
->orwhere("search_records.dirty", 1)
->find_all() as $item) {
- if (microtime(true) - $start > 1.5) {
- break;
+ // The query above can take a long time, so start the timer after its done
+ // to give ourselves a little time to actually process rows.
+ if (!isset($start)) {
+ $start = microtime(true);
}
- $message[] = search::update($item);
+ search::update($item);
$completed++;
+
+ if (microtime(true) - $start > 1.5) {
+ break;
+ }
}
list ($remaining, $total, $percent) = search::stats();
@@ -69,13 +75,10 @@ class search_task_Core {
$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));
- $message[] = $task->status;
} catch (Exception $e) {
$task->done = true;
$task->state = "error";
$task->status = $e->getMessage();
- $message[] = $e->__toString();
}
- $task->log($message);
}
}