diff options
-rw-r--r-- | boot.php | 13 | ||||
-rw-r--r-- | include/dir_fns.php | 6 | ||||
-rw-r--r-- | include/directory.php | 4 | ||||
-rw-r--r-- | mod/directory.php | 229 | ||||
-rw-r--r-- | view/tpl/directory_header.tpl | 24 | ||||
-rw-r--r-- | view/tpl/direntry.tpl | 11 |
6 files changed, 157 insertions, 130 deletions
@@ -143,12 +143,13 @@ define ( 'UPDATE_FAILED', 1); * */ -define ( 'PAGE_NORMAL', 0 ); -define ( 'PAGE_SOAPBOX', 1 ); -define ( 'PAGE_COMMUNITY', 2 ); -define ( 'PAGE_FREELOVE', 3 ); -define ( 'PAGE_BLOG', 4 ); -define ( 'PAGE_PRVGROUP', 5 ); +define ( 'PAGE_NORMAL', 0x0000 ); +define ( 'PAGE_HIDDEN', 0x0001 ); +define ( 'PAGE_AUTOCONNECT', 0x0002 ); + +//define ( 'PAGE_FREELOVE', 3 ); +//define ( 'PAGE_BLOG', 4 ); +//define ( 'PAGE_PRVGROUP', 5 ); /** * Network and protocol family types diff --git a/include/dir_fns.php b/include/dir_fns.php new file mode 100644 index 000000000..683ed9e5b --- /dev/null +++ b/include/dir_fns.php @@ -0,0 +1,6 @@ +<?php + +function find_upstream_directory($dirmode) { + return ''; +} + diff --git a/include/directory.php b/include/directory.php index 5b5698768..0378e2003 100644 --- a/include/directory.php +++ b/include/directory.php @@ -2,10 +2,8 @@ require_once('boot.php'); require_once('include/zot.php'); require_once('include/cli_startup.php'); +require_once('include/dir_fns.php'); -function find_upstream_directory($dirmode) { - return; -} function directory_run($argv, $argc){ 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/view/tpl/directory_header.tpl b/view/tpl/directory_header.tpl index 1f03540f2..e1def851b 100644 --- a/view/tpl/directory_header.tpl +++ b/view/tpl/directory_header.tpl @@ -1,16 +1,16 @@ -<h1>$sitedir</h1> +<h1>$dirlbl</h1> -$globaldir -$admin +{{ if $search }} +<h4>$finddsc $safetxt</h4> +{{ endif }} -$finding +{{for $entries as $entry}} -<div id="directory-search-wrapper"> -<form id="directory-search-form" action="directory" method="get" > -<span class="dirsearch-desc">$desc</span> -<input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="$search" /> -<input type="submit" name="submit" id="directory-search-submit" value="$submit" class="button" /> -</form> -</div> -<div id="directory-search-end"></div> +{{ inc direntry.tpl }}{{ endinc }} + +{{ endfor }} + + + +<div class="directory-end"></div> diff --git a/view/tpl/direntry.tpl b/view/tpl/direntry.tpl new file mode 100644 index 000000000..e860da41c --- /dev/null +++ b/view/tpl/direntry.tpl @@ -0,0 +1,11 @@ + +<div class="directory-item lframe" id="directory-item-$entry.id" > + <div class="contact-photo-wrapper" id="directory-photo-wrapper-$entry.id" > + <div class="contact-photo" id="directory-photo-$entry.id" > + <a href="$entry.profile_link" class="directory-profile-link" id="directory-profile-link-$entry.id" ><img class="directory-photo-img" src="$entry.photo" alt="$entry.alttext" title="$entry.alttext" /></a> + </div> + </div> + + <div class="contact-name" id="directory-name-$entry.id">$entry.name</div> + <div class="contact-details">$entry.details</div> +</div> |