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