summaryrefslogtreecommitdiff
path: root/modules/search
diff options
context:
space:
mode:
Diffstat (limited to 'modules/search')
-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
-rw-r--r--modules/search/views/search.html.php12
-rw-r--r--modules/search/views/search_link.html.php2
6 files changed, 25 insertions, 33 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);
}
}
diff --git a/modules/search/views/search.html.php b/modules/search/views/search.html.php
index 6a222ef1..91d9eec8 100644
--- a/modules/search/views/search.html.php
+++ b/modules/search/views/search.html.php
@@ -8,10 +8,10 @@
<ul>
<li>
<label for="q"><?= t("Search the gallery") ?></label>
- <input name="q" id="q" type="text" value="<?= p::clean($q) ?>"/>
+ <input name="q" id="q" type="text" value="<?= html::clean_attribute($q) ?>"/>
</li>
<li>
- <input type="submit" value="<?= t("Search") ?>" />
+ <input type="submit" value="<?= t("Search")->for_html_attr() ?>" />
</li>
</ul>
</fieldset>
@@ -28,13 +28,13 @@
<? $item_class = "gAlbum"; ?>
<? endif ?>
<li class="gItem <?= $item_class ?>">
- <a href="<?= url::site("items/$item->id") ?>">
+ <a href="<?= $item->url() ?>">
<?= $item->thumb_img() ?>
<p>
- <?= p::purify($item->title) ?>
+ <?= html::purify($item->title) ?>
</p>
<div>
- <?= nl2br(p::purify($item->description)) ?>
+ <?= nl2br(html::purify($item->description)) ?>
</div>
</a>
</li>
@@ -44,7 +44,7 @@
<? else: ?>
<p>
- <?= t("No results found for <b>%term</b>", array("term" => p::clean($q))) ?>
+ <?= t("No results found for <b>%term</b>", array("term" => $q)) ?>
</p>
<? endif; ?>
diff --git a/modules/search/views/search_link.html.php b/modules/search/views/search_link.html.php
index 3f1bca91..51bb4e14 100644
--- a/modules/search/views/search_link.html.php
+++ b/modules/search/views/search_link.html.php
@@ -6,7 +6,7 @@
<input type="text" name="q" id="gSearch"/>
</li>
<li>
- <input type="submit" value="<?= t("Go") ?>" />
+ <input type="submit" value="<?= t("Go")->for_html_attr() ?>" />
</li>
</ul>
</form>