From ad20e1f617c7e26585153b587eb9a85fc958794b Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 19 Dec 2012 19:51:52 -0800 Subject: 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 --- boot.php | 13 +-- include/dir_fns.php | 6 ++ include/directory.php | 4 +- mod/directory.php | 229 ++++++++++++++++++++++-------------------- view/tpl/directory_header.tpl | 24 ++--- view/tpl/direntry.tpl | 11 ++ 6 files changed, 157 insertions(+), 130 deletions(-) create mode 100644 include/dir_fns.php create mode 100644 view/tpl/direntry.tpl diff --git a/boot.php b/boot.php index 653a0ed59..8b80ea2f0 100644 --- a/boot.php +++ b/boot.php @@ -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 @@ +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 = ''; + + $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) ? '

' . t('Finding: ') . "'" . $search . "'" . '

' : ""), - '$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'] . '
' : ''); + $pdesc = (($rr['pdesc']) ? $rr['pdesc'] . '
' : ''); - $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 .= '
' . t('Age: ') . $years ; - } - if(strlen($rr['gender'])) - $details .= '
' . 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 .= '
' . t('Age: ') . $years ; + } + if(strlen($rr['gender'])) + $details .= '
' . 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 .= "
\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 @@ -

$sitedir

+

$dirlbl

-$globaldir -$admin +{{ if $search }} +

$finddsc $safetxt

+{{ endif }} -$finding +{{for $entries as $entry}} -
-
-$desc - - -
-
-
+{{ inc direntry.tpl }}{{ endinc }} + +{{ endfor }} + + + +
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 @@ + +
+
+
+ $entry.alttext +
+
+ +
$entry.name
+
$entry.details
+
-- cgit v1.2.3