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 | 15 | ||||
-rw-r--r-- | modules/search/views/search.html.php | 12 | ||||
-rw-r--r-- | modules/search/views/search_link.html.php | 2 |
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> |