aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/search.php112
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;
}