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> | 
