diff options
Diffstat (limited to 'mod')
-rw-r--r-- | mod/directory.php | 229 | ||||
-rw-r--r-- | mod/ping.php | 19 | ||||
-rw-r--r-- | mod/zfinger.php | 18 |
3 files changed, 143 insertions, 123 deletions
diff --git a/mod/directory.php b/mod/directory.php index 58e9be293..b320839a7 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -1,14 +1,11 @@ <?php -function directory_init(&$a) { - $a->set_pager_itemspage(60); +require_once('include/dir_fns.php'); - if(local_user()) { - require_once('include/contact_widgets.php'); - $a->page['aside'] .= findpeople_widget(); +function directory_init(&$a) { + $a->set_pager_itemspage(60); - } } function directory_aside(&$a) { @@ -35,144 +32,158 @@ function directory_content(&$a) { else $search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : ''); + $tpl = get_markup_template('directory_header.tpl'); - $globaldir = ''; - $gdirpath = dirname(get_config('system','directory_submit_url')); - if(strlen($gdirpath)) { - $globaldir = '<ul><li><div id="global-directory-link"><a href="' - . zid($gdirpath,true) . '">' . t('Global Directory') . '</a></div></li></ul>'; + + $dirmode = get_config('system','directory_mode'); + if($dirmode === false) + $dirmode = DIRECTORY_MODE_NORMAL; + + if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) { + $localdir = true; + return; } - $admin = ''; +// FIXME +$localdir = true; + - $o .= replace_macros($tpl, array( - '$search' => $search, - '$globaldir' => $globaldir, - '$desc' => t('Find on this site'), - '$admin' => $admin, - '$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : ""), - '$sitedir' => t('Site Directory'), - '$submit' => t('Find') - )); + if(! $localdir) { + $directory = find_upstream_directory($dirmode); - if($search) - $search = dbesc($search); - $sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country_name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : ""); + if($directory) { + $url = $directory['url']; + } + else { + $url = DIRECTORY_FALLBACK_MASTER . '/post'; + } + } - $publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " ); - $r = q("SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is_default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra "); - if(count($r)) - $a->set_pager_total($r[0]['total']); + if($localdir) { + if($search) + $search = dbesc($search); + $sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, channel.channel_address, `pdesc`, `locality`,`region`,`country_name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : ""); - $order = " ORDER BY `name` ASC "; + $r = q("SELECT COUNT(channel_id) AS `total` FROM channel left join profile on channel.channel_id = profile.uid WHERE `is_default` = 1 and not ( channel_pageflags & %d ) $sql_extra ", + intval(PAGE_HIDDEN) + ); + if($r) + $a->set_pager_total($r[0]['total']); - $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is_default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", - intval($a->pager['start']), - intval($a->pager['itemspage']) - ); - if(count($r)) { + $order = " ORDER BY `name` ASC "; - if(in_array('small', $a->argv)) - $photo = 'thumb'; - else - $photo = 'photo'; - foreach($r as $rr) { + $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, channel_name, channel_address, channel_hash, channel_timezone, channel_pageflags FROM `profile` LEFT JOIN channel ON channel_id = `profile`.`uid` WHERE `is_default` = 1 and not ( channel_pageflags & %d ) $sql_extra $order LIMIT %d , %d ", + intval(PAGE_HIDDEN), + intval($a->pager['start']), + intval($a->pager['itemspage']) + ); + if($r) { + $entries = array(); - $profile_link = $a->get_baseurl() . '/channel/' . $rr['nickname']; + $photo = 'thumb'; + + foreach($r as $rr) { + + $profile_link = chanlink_hash($rr['channel_hash']); - $pdesc = (($rr['pdesc']) ? $rr['pdesc'] . '<br />' : ''); + $pdesc = (($rr['pdesc']) ? $rr['pdesc'] . '<br />' : ''); - $details = ''; - if(strlen($rr['locality'])) - $details .= $rr['locality']; - if(strlen($rr['region'])) { + $details = ''; if(strlen($rr['locality'])) - $details .= ', '; - $details .= $rr['region']; - } - if(strlen($rr['country_name'])) { - if(strlen($details)) - $details .= ', '; - $details .= $rr['country_name']; - } - if(strlen($rr['dob'])) { - if(($years = age($rr['dob'],$rr['timezone'],'')) != 0) - $details .= '<br />' . t('Age: ') . $years ; - } - if(strlen($rr['gender'])) - $details .= '<br />' . t('Gender: ') . $rr['gender']; + $details .= $rr['locality']; + if(strlen($rr['region'])) { + if(strlen($rr['locality'])) + $details .= ', '; + $details .= $rr['region']; + } + if(strlen($rr['country_name'])) { + if(strlen($details)) + $details .= ', '; + $details .= $rr['country_name']; + } + if(strlen($rr['dob'])) { + if(($years = age($rr['dob'],$rr['timezone'],'')) != 0) + $details .= '<br />' . t('Age: ') . $years ; + } + if(strlen($rr['gender'])) + $details .= '<br />' . t('Gender: ') . $rr['gender']; + + $page_type = ''; + + $profile = $rr; + + if((x($profile,'address') == 1) + || (x($profile,'locality') == 1) + || (x($profile,'region') == 1) + || (x($profile,'postal_code') == 1) + || (x($profile,'country_name') == 1)) + $location = t('Location:'); + + $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False); + + $marital = ((x($profile,'marital') == 1) ? t('Status:') : False); + + $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False); + + $about = ((x($profile,'about') == 1) ? t('About:') : False); + - if($rr['page-flags'] == PAGE_NORMAL) - $page_type = "Personal Profile"; - if($rr['page-flags'] == PAGE_SOAPBOX) - $page_type = "Fan Page"; - if($rr['page-flags'] == PAGE_COMMUNITY) - $page_type = "Community Forum"; - if($rr['page-flags'] == PAGE_FREELOVE) - $page_type = "Open Forum"; - if($rr['page-flags'] == PAGE_PRVGROUP) - $page_type = "Private Group"; - $profile = $rr; + $entry = array( + 'id' => $rr['id'], + 'profile_link' => $profile_link, + 'photo' => $rr[$photo], + 'alttext' => $rr['channel_name'], + 'name' => $rr['channel_name'], + 'details' => $pdesc . $details, + 'profile' => $profile, + 'location' => $location, + 'gender' => $gender, + 'pdesc' => $pdesc, + 'marital' => $marital, + 'homepage' => $homepage, + 'about' => $about, - if((x($profile,'address') == 1) - || (x($profile,'locality') == 1) - || (x($profile,'region') == 1) - || (x($profile,'postal_code') == 1) - || (x($profile,'country_name') == 1)) - $location = t('Location:'); + ); - $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False); + $arr = array('contact' => $rr, 'entry' => $entry); - $marital = ((x($profile,'marital') == 1) ? t('Status:') : False); + call_hooks('directory_item', $arr); + + unset($profile); + unset($location); - $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False); + $entries[] = $entry; - $about = ((x($profile,'about') == 1) ? t('About:') : False); - - $tpl = get_markup_template('directory_item.tpl'); - - $entry = replace_macros($tpl,array( - '$id' => $rr['id'], - '$profile-link' => $profile_link, - '$photo' => $a->get_cached_avatar_image($rr[$photo]), - '$alt-text' => $rr['name'], - '$name' => $rr['name'], - '$details' => $pdesc . $details, - '$page-type' => $page_type, - '$profile' => $profile, - '$location' => template_escape($location), - '$gender' => $gender, - '$pdesc' => $pdesc, - '$marital' => $marital, - '$homepage' => $homepage, - '$about' => $about, + } + logger('entries: ' . print_r($entries,true)); + + $o .= replace_macros($tpl, array( + '$search' => $search, + '$desc' => t('Find'), + '$finddsc' => t('Finding:'), + '$safetxt' => htmlspecialchars($search,ENT_QUOTES,'UTF-8'), + '$entries' => $entries, + '$dirlbl' => t('Directory'), + '$submit' => t('Find') )); - $arr = array('contact' => $rr, 'entry' => $entry); - call_hooks('directory_item', $arr); - - unset($profile); - unset($location); - - $o .= $entry; + $o .= paginate($a); } - $o .= "<div class=\"directory-end\" ></div>\r\n"; - $o .= paginate($a); + else + info( t("No entries (some entries may be hidden).") . EOL); } - else - info( t("No entries \x28some entries may be hidden\x29.") . EOL); return $o; } diff --git a/mod/ping.php b/mod/ping.php index f32384952..b135ac6e3 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -158,7 +158,7 @@ function ping_init(&$a) { $t1 = dba_timer(); $r = q("SELECT id, item_restrict, item_flags FROM item - WHERE item_restrict = %d and ( item_flags & %d ) and uid = %d", + WHERE (item_restrict = %d) and ( item_flags & %d ) and uid = %d", intval(ITEM_VISIBLE), intval(ITEM_UNSEEN), intval(local_user()) @@ -180,24 +180,15 @@ function ping_init(&$a) { $t2 = dba_timer(); - $intros1 = q("SELECT `intro`.`id`, `intro`.`datetime`, - `fcontact`.`name`, `fcontact`.`url`, `fcontact`.`photo` - FROM `intro` LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id` - WHERE `intro`.`uid` = %d AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 AND `intro`.`fid`!=0", + $intr = q("select count(abook_id) as total from abook where (abook_flags & %d) and abook_channel = %d", + intval(ABOOK_FLAG_PENDING), intval(local_user()) ); $t3 = dba_timer(); - $intros2 = q("SELECT `intro`.`id`, `intro`.`datetime`, - `contact`.`name`, `contact`.`url`, `contact`.`photo` - FROM `intro` LEFT JOIN `contact` ON `intro`.`contact-id` = `contact`.`id` - WHERE `intro`.`uid` = %d AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 AND `intro`.`contact-id`!=0", - intval(local_user()) - ); - - $intros = count($intros1) + count($intros2); - $result['intros'] = intval($intros); + if($intr) + $result['intros'] = intval($intr[0]['total']); $t4 = dba_timer(); $channel = get_app()->get_channel(); diff --git a/mod/zfinger.php b/mod/zfinger.php index e1afdeba4..b51bf7900 100644 --- a/mod/zfinger.php +++ b/mod/zfinger.php @@ -58,6 +58,9 @@ function zfinger_init(&$a) { $id = $e['channel_id']; + $searchable = (($e['channel_pageflags'] & PAGE_HIDDEN) ? false : true); + + // This is for birthdays and keywords, but must check access permissions // $r = q("select contact.*, profile.* // from contact left join profile on contact.uid = profile.uid @@ -86,6 +89,7 @@ function zfinger_init(&$a) { $ret['name_updated'] = $e['xchan_name_date']; $ret['target'] = $ztarget; $ret['target_sig'] = $zsig; + $ret['searchable'] = $searchable; // FIXME encrypt permissions when targeted so that only the target can view them, requires sending the pubkey and also checking that the target_sig is signed with that pubkey and isn't a forgery. @@ -119,6 +123,20 @@ function zfinger_init(&$a) { } } + $ret['site'] = array(); + $ret['site']['url'] = z_root(); + $dirmode = get_config('system','directory_mode'); + if(($dirmode === false) || ($dirmode == DIRECTORY_MODE_NORMAL)) + $ret['site']['directory_mode'] = 'normal'; + if($dirmode == DIRECTORY_MODE_PRIMARY) + $ret['site']['directory_mode'] = 'primary'; + elseif($dirmode == DIRECTORY_MODE_SECONDARY) + $ret['site']['directory_mode'] = 'secondary'; + elseif($dirmode == DIRECTORY_MODE_STANDALONE) + $ret['site']['directory_mode'] = 'standalone'; + if($dirmode != DIRECTORY_MODE_NORMAL) + $ret['site']['directory_url'] = z_root() . '/dir'; + json_return_and_die($ret); }
\ No newline at end of file |