# XXX common parent for people and content search?
class NoticesearchAction extends SearchAction {
-
+
function get_instructions() {
return _('Search for notices on %%site.name%% by their contents. ' .
'Separate search terms by spaces; they must be 3 characters or more.');
}
-
+
function get_title() {
return _('Text search');
}
-
+
function show_results($q, $page) {
-
+
$notice = new Notice();
# lcase it for comparison
$notice->whereAdd('MATCH(content) against (\''.addslashes($q).'\')');
# Ask for an extra to see if there's more.
-
+
$notice->limit((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
$cnt = $notice->find();
} else {
common_element('p', 'error', _('No results'));
}
-
+
common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
$page, 'noticesearch', array('q' => $q));
}
'title' => _('Search Stream Feed')));
}
}
-
+
# XXX: refactor and combine with StreamAction::show_notice()
-
+
function show_notice($notice, $terms) {
$profile = $notice->getProfile();
# XXX: RDFa
_('in reply to...'));
common_text(')');
}
- common_element_start('a',
+ common_element_start('a',
array('href' => common_local_url('newnotice',
array('replyto' => $profile->nickname)),
'onclick' => 'doreply("'.$profile->nickname.'"); return false',
function init() {
return true;
}
-
+
function get_notices($limit=0) {
$q = $this->trimmed('q');
$notices = array();
-
+
$notice = new Notice();
# lcase it for comparison
$q = strtolower($q);
-
+
$notice->whereAdd('MATCH(content) against (\''.addslashes($q).'\')');
$notice->orderBy('created DESC');
-
+
# Ask for an extra to see if there's more.
-
+
if ($limit != 0) {
$notice->limit(0, $limit);
}
$notice->find();
-
+
while ($notice->fetch()) {
$notices[] = clone($notice);
}
-
+
return $notices;
}
-
+
function get_channel() {
global $config;
$q = $this->trimmed('q');
'description' => sprintf(_('All updates matching search term "%s"'), $q));
return $c;
}
-
+
function get_image() {
return NULL;
}
define(PROFILES_PER_PAGE, 10);
class PeoplesearchAction extends SearchAction {
-
+
function get_instructions() {
return _('Search for people on %%site.name%% by their name, location, or interests. ' .
'Separate the terms by spaces; they must be 3 characters or more.');
function get_title() {
return _('People search');
}
-
+
function show_results($q, $page) {
-
+
$profile = new Profile();
# lcase it for comparison
$q = strtolower($q);
- $profile->whereAdd('MATCH(nickname, fullname, location, bio, homepage) ' .
+ $profile->whereAdd('MATCH(nickname, fullname, location, bio, homepage) ' .
'against (\''.addslashes($q).'\')');
# Ask for an extra to see if there's more.
-
+
$profile->limit((($page-1)*PROFILES_PER_PAGE), PROFILES_PER_PAGE + 1);
$cnt = $profile->find();
} else {
common_element('p', 'error', _('No results'));
}
-
+
common_pagination($page > 1, $cnt > PROFILES_PER_PAGE,
$page, 'peoplesearch', array('q' => $q));
}
-
+
function show_profile($profile, $terms) {
common_element_start('li', array('class' => 'profile_single',
'id' => 'profile-' . $profile->id));
unset($args['action']);
return common_local_url($action, $args);
}
-
+
function nav_menu($menu) {
$action = $this->trimmed('action');
common_element_start('ul', array('id' => 'nav_views'));