diff options
Diffstat (limited to 'mod/search.php')
-rw-r--r-- | mod/search.php | 112 |
1 files changed, 87 insertions, 25 deletions
diff --git a/mod/search.php b/mod/search.php index 3f34587ef..6f40ad4b0 100644 --- a/mod/search.php +++ b/mod/search.php @@ -88,6 +88,9 @@ function search_content(&$a) { require_once('include/conversation.php'); require_once('include/items.php'); + + $observer = $a->get_observer(); + $o = '<div id="live-search"></div>' . "\r\n"; $o .= '<h3>' . t('Search') . '</h3>'; @@ -136,26 +139,90 @@ function search_content(&$a) { // OR your own posts if you are a logged in member // No items will be shown if the member has a blocked profile wall. - if(! get_pconfig(local_user(),'system','alt_pager')) { - $r = q("SELECT distinct(`item`.`uri`) as `total` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` - WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - AND (( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0) - OR `item`.`uid` = %d ) - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - $sql_extra group by `item`.`uri` ", - intval(local_user()) - ); - - if(count($r)) - $a->set_pager_total(count($r)); - - if(! count($r)) { - info( t('No results.') . EOL); - return $o; - } + + + + if((! $update) && (! $load)) { + + // This is ugly, but we can't pass the profile_uid through the session to the ajax updater, + // because browser prefetching might change it on us. We have to deliver it with the page. + + $o .= '<div id="live-channel"></div>' . "\r\n"; + $o .= "<script> var profile_uid = " . $a->profile['profile_uid'] + . "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; + + $a->page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array( + '$baseurl' => z_root(), + '$pgtype' => 'search', + '$uid' => (($a->profile['profile_uid']) ? $a->profile['profile_uid'] : '0'), + '$gid' => '0', + '$cid' => '0', + '$cmin' => '0', + '$cmax' => '0', + '$star' => '0', + '$liked' => '0', + '$conv' => '0', + '$spam' => '0', + '$nouveau' => '0', + '$wall' => '0', + '$page' => (($a->pager['page'] != 1) ? $a->pager['page'] : 1), + '$search' => (($tag) ? '#' : '') . $search, + '$order' => '', + '$file' => '', + '$cats' => '', + '$dend' => '', + '$dbegin' => '' + )); + + + } + + + + if(($update) && ($load)) { + + $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); + + if($load) { + $r = q("SELECT distinct(uri), item.* from item + WHERE item_restrict = 0 + AND (( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND not ( item_flags & %d )) + OR ( `item`.`uid` = %d )) + $sql_extra + group by uri ORDER BY created DESC $pager_sql ", + intval(ITEM_PRIVATE), + intval(local_user()), + intval(ABOOK_FLAG_BLOCKED) + + ); + } + else { + $r = array(); + } + } + + if($r) { + + $parents_str = ids_to_querystr($r,'item_id'); + + $items = q("SELECT `item`.*, `item`.`id` AS `item_id` + FROM `item` + WHERE item_restrict = 0 and + $sql_extra ", + intval($a->profile['profile_uid']), + dbesc($parents_str) + ); + + xchan_query($items); + $items = fetch_post_tags($items); + $items = conv_sort($items,'created'); + + } else { + $items = array(); } + + $r = q("SELECT distinct(`item`.`uri`), `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, @@ -177,7 +244,7 @@ function search_content(&$a) { ); - $a = fetch_post_tags($a); +// $a = fetch_post_tags($a); if(! count($r)) { info( t('No results.') . EOL); @@ -192,12 +259,7 @@ function search_content(&$a) { $o .= conversation($a,$r,'search',false); - if(! get_pconfig(local_user(),'system','alt_pager')) { - $o .= paginate($a); - } - else { - $o .= alt_pager($a,count($r)); - } + $o .= alt_pager($a,count($r)); return $o; } |