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);
- if(local_user()) {
- require_once('include/contact_widgets.php');
-
- $a->page['aside'] .= findpeople_widget();
-
- }
}
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 = '';
-
- $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($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) " : "");
-
- $publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " );
+// FIXME
+$localdir = true;
- $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) {
+ $directory = find_upstream_directory($dirmode);
- $order = " ORDER BY `name` ASC ";
+ if($directory) {
+ $url = $directory['url'];
+ }
+ else {
+ $url = DIRECTORY_FALLBACK_MASTER . '/post';
+ }
+ }
- $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)) {
- if(in_array('small', $a->argv))
+ 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) " : "");
+
+
+ $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']);
+
+ $order = " ORDER BY `name` ASC ";
+
+
+ $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();
+
$photo = 'thumb';
- else
- $photo = 'photo';
- foreach($r as $rr) {
+ foreach($r as $rr) {
-
- $profile_link = $a->get_baseurl() . '/channel/' . $rr['nickname'];
+ $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'];
- 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";
+ $page_type = '';
- $profile = $rr;
+ $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:');
+ 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);
+ $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False);
- $marital = ((x($profile,'marital') == 1) ? t('Status:') : False);
+ $marital = ((x($profile,'marital') == 1) ? t('Status:') : False);
+
+ $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False);
- $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False);
-
- $about = ((x($profile,'about') == 1) ? t('About:') : False);
+ $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,
+ $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,
+
+ );
+
+ $arr = array('contact' => $rr, 'entry' => $entry);
+
+ call_hooks('directory_item', $arr);
+
+ unset($profile);
+ unset($location);
+
+ $entries[] = $entry;
+
+ }
+
+ 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}}
-
-
-
-
+{{ 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.name
+
$entry.details
+