aboutsummaryrefslogtreecommitdiffstats
path: root/mod/directory.php
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2012-12-19 19:51:52 -0800
committerfriendica <info@friendica.com>2012-12-19 19:51:52 -0800
commitad20e1f617c7e26585153b587eb9a85fc958794b (patch)
tree34dea42657f13affc9721a443f2582662f1080f9 /mod/directory.php
parent2f48c31082179d8ff29952e8fe983c99ab0ff5f3 (diff)
downloadvolse-hubzilla-ad20e1f617c7e26585153b587eb9a85fc958794b.tar.gz
volse-hubzilla-ad20e1f617c7e26585153b587eb9a85fc958794b.tar.bz2
volse-hubzilla-ad20e1f617c7e26585153b587eb9a85fc958794b.zip
directory page still needs a lot of work, look up locally if local master or standalone, need to put some basic profile info in discovery page and direct to local directory master
Diffstat (limited to 'mod/directory.php')
-rw-r--r--mod/directory.php229
1 files changed, 120 insertions, 109 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;
}