aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/directory.php3
-rw-r--r--mod/dirprofile.php151
-rw-r--r--mod/dirsearch.php18
3 files changed, 168 insertions, 4 deletions
diff --git a/mod/directory.php b/mod/directory.php
index 9e4c37fae..53542db60 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -168,6 +168,7 @@ function directory_content(&$a) {
'id' => ++$t,
'profile_link' => $profile_link,
'photo' => $rr['photo'],
+ 'hash' => $rr['hash'],
'alttext' => $rr['name'] . ' ' . $rr['address'],
'name' => $rr['name'],
'details' => $pdesc . $details,
@@ -186,7 +187,7 @@ function directory_content(&$a) {
call_hooks('directory_item', $arr);
- $entries[] = $entry;
+ $entries[] = $arr['entry'];
unset($profile);
unset($location);
diff --git a/mod/dirprofile.php b/mod/dirprofile.php
new file mode 100644
index 000000000..133089419
--- /dev/null
+++ b/mod/dirprofile.php
@@ -0,0 +1,151 @@
+<?php
+
+require_once('include/dir_fns.php');
+
+function dirprofile_init(&$a) {
+
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ notice( t('Public access denied.') . EOL);
+ return;
+ }
+
+ $hash = $_REQUEST['hash'];
+ if(! $hash)
+ return '';
+
+ $o = '';
+
+ $dirmode = intval(get_config('system','directory_mode'));
+
+ if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) {
+ $url = z_root() . '/dirsearch';
+ }
+ if(! $url) {
+ $directory = find_upstream_directory($dirmode);
+
+ if($directory) {
+ $url = $directory['url'] . '/dirsearch';
+ }
+ else {
+ $url = DIRECTORY_FALLBACK_MASTER . '/dirsearch';
+ }
+ }
+ logger('mod_directory: URL = ' . $url, LOGGER_DEBUG);
+
+ $contacts = array();
+
+ if(local_user()) {
+ $x = q("select abook_xchan from abook where abook_channel = %d",
+ intval(local_user())
+ );
+ if($x) {
+ foreach($x as $xx)
+ $contacts[] = $xx['abook_xchan'];
+ }
+ }
+
+
+
+ if($url) {
+
+ $query = $url . '?f=&hash=' . $hash;
+
+ $x = z_fetch_url($query);
+ logger('dirprofile: return from upstream: ' . print_r($x,true), LOGGER_DATA);
+
+ if($x['success']) {
+ $t = 0;
+ $j = json_decode($x['body'],true);
+ if($j) {
+
+ if($j['results']) {
+
+ $entries = array();
+
+ $photo = 'thumb';
+
+ foreach($j['results'] as $rr) {
+
+ $profile_link = chanlink_url($rr['url']);
+
+ $pdesc = (($rr['description']) ? $rr['description'] . '<br />' : '');
+ $connect_link = ((local_user()) ? z_root() . '/follow?f=&url=' . urlencode($rr['address']) : '');
+
+ if(in_array($rr['hash'],$contacts))
+ $connect_link = '';
+
+ $details = '';
+ if(strlen($rr['locale']))
+ $details .= $rr['locale'];
+ if(strlen($rr['region'])) {
+ if(strlen($rr['locale']))
+ $details .= ', ';
+ $details .= $rr['region'];
+ }
+ if(strlen($rr['country'])) {
+ if(strlen($details))
+ $details .= ', ';
+ $details .= $rr['country'];
+ }
+ if(strlen($rr['birthday'])) {
+ if(($years = age($rr['birthday'],'UTC','')) != 0)
+ $details .= '<br />' . t('Age: ') . $years ;
+ }
+ if(strlen($rr['gender']))
+ $details .= '<br />' . t('Gender: ') . $rr['gender'];
+
+ $page_type = '';
+
+ $profile = $rr;
+
+ if ((x($profile,'locale') == 1)
+ || (x($profile,'region') == 1)
+ || (x($profile,'postcode') == 1)
+ || (x($profile,'country') == 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);
+
+
+
+ $entry = replace_macros(get_markup_template('direntry_large.tpl'), array(
+ '$id' => ++$t,
+ '$profile_link' => $profile_link,
+ '$photo' => $rr['photo_l'],
+ '$alttext' => $rr['name'] . ' ' . $rr['address'],
+ '$name' => $rr['name'],
+ '$details' => $pdesc . $details,
+ '$profile' => $profile,
+ '$location' => $location,
+ '$gender' => $gender,
+ '$pdesc' => $pdesc,
+ '$marital' => $marital,
+ '$homepage' => $homepage,
+ '$about' => $about,
+ '$conn_label' => t('Connect'),
+ '$connect' => $connect_link,
+ ));
+
+
+ echo $entry;
+ killme();
+
+ }
+ }
+ else {
+ info( t("Not found.") . EOL);
+ }
+ }
+ }
+ }
+
+
+
+
+} \ No newline at end of file
diff --git a/mod/dirsearch.php b/mod/dirsearch.php
index 6315cae31..6490d59df 100644
--- a/mod/dirsearch.php
+++ b/mod/dirsearch.php
@@ -27,9 +27,10 @@ function dirsearch_content(&$a) {
json_return_and_die($ret);
}
+ $hash = ((x($_REQUEST['hash'])) ? $_REQUEST['hash'] : '');
$name = ((x($_REQUEST,'name')) ? $_REQUEST['name'] : '');
- $hub = ((x($_REQUEST,'hub')) ? $_REQUEST['hub'] : '');
+ $hub = ((x($_REQUEST,'hub')) ? $_REQUEST['hub'] : '');
$address = ((x($_REQUEST,'address')) ? $_REQUEST['address'] : '');
$locale = ((x($_REQUEST,'locale')) ? $_REQUEST['locale'] : '');
$region = ((x($_REQUEST,'region')) ? $_REQUEST['region'] : '');
@@ -91,6 +92,13 @@ function dirsearch_content(&$a) {
$sql_extra .= " AND xprof_age >= " . intval($agege) . ") ";
}
+
+ if($hash) {
+ $sql_extra = " AND xchan_hash = '" . dbesc($hash) . "' ";
+ }
+
+
+
$perpage = (($_REQUEST['n']) ? $_REQUEST['n'] : 80);
$page = (($_REQUEST['p']) ? intval($_REQUEST['p'] - 1) : 0);
$startrec = (($page+1) * $perpage) - $perpage;
@@ -112,6 +120,9 @@ function dirsearch_content(&$a) {
$logic = ((strlen($sql_extra)) ? 0 : 1);
+ if($hash)
+ $logic = 1;
+
$safesql = (($safe > 0) ? " and not ( xchan_flags & " . intval(XCHAN_FLAGS_CENSORED|XCHAN_FLAGS_SELFCENSORED) . " ) " : '');
if($safe < 0)
$safesql = " and ( xchan_flags & " . intval(XCHAN_FLAGS_CENSORED|XCHAN_FLAGS_SELFCENSORED) . " ) ";
@@ -161,13 +172,13 @@ function dirsearch_content(&$a) {
json_return_and_die($spkt);
}
else {
-
+dbg(1);
$r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash where ( $logic $sql_extra ) and not ( xchan_flags & %d ) and not ( xchan_flags & %d ) and not ( xchan_flags & %d ) $safesql $order $qlimit ",
intval(XCHAN_FLAGS_HIDDEN),
intval(XCHAN_FLAGS_ORPHAN),
intval(XCHAN_FLAGS_DELETED)
);
-
+dbg(0);
}
$ret['page'] = $page + 1;
@@ -187,6 +198,7 @@ function dirsearch_content(&$a) {
// $entry['updated'] = (($rr['ud_date']) ? $rr['ud_date'] : '0000-00-00 00:00:00');
// $entry['update_guid'] = (($rr['ud_guid']) ? $rr['ud_guid'] : '');
$entry['url'] = $rr['xchan_url'];
+ $entry['photo_l'] = $rr['xchan_photo_l'];
$entry['photo'] = $rr['xchan_photo_m'];
$entry['address'] = $rr['xchan_addr'];
$entry['description'] = $rr['xprof_desc'];