diff options
Diffstat (limited to 'mod/directory.php')
-rw-r--r-- | mod/directory.php | 419 |
1 files changed, 0 insertions, 419 deletions
diff --git a/mod/directory.php b/mod/directory.php deleted file mode 100644 index 79c03777e..000000000 --- a/mod/directory.php +++ /dev/null @@ -1,419 +0,0 @@ -<?php - -require_once('include/socgraph.php'); -require_once('include/dir_fns.php'); -require_once('include/widgets.php'); -require_once('include/bbcode.php'); - -function directory_init(&$a) { - App::set_pager_itemspage(60); - - if(x($_GET,'ignore')) { - q("insert into xign ( uid, xchan ) values ( %d, '%s' ) ", - intval(local_channel()), - dbesc($_GET['ignore']) - ); - goaway(z_root() . '/directory?suggest=1'); - } - - $observer = get_observer_hash(); - $global_changed = false; - $safe_changed = false; - $pubforums_changed = false; - - if(array_key_exists('global',$_REQUEST)) { - $globaldir = intval($_REQUEST['global']); - $global_changed = true; - } - if($global_changed) { - $_SESSION['globaldir'] = $globaldir; - if($observer) - set_xconfig($observer,'directory','globaldir',$globaldir); - } - - if(array_key_exists('safe',$_REQUEST)) { - $safemode = intval($_REQUEST['safe']); - $safe_changed = true; - } - if($safe_changed) { - $_SESSION['safemode'] = $safemode; - if($observer) - set_xconfig($observer,'directory','safemode',$safemode); - } - - - if(array_key_exists('pubforums',$_REQUEST)) { - $pubforums = intval($_REQUEST['pubforums']); - $pubforums_changed = true; - } - if($pubforums_changed) { - $_SESSION['pubforums'] = $pubforums; - if($observer) - set_xconfig($observer,'directory','pubforums',$pubforums); - } -} - -function directory_content(&$a) { - - if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) { - notice( t('Public access denied.') . EOL); - return; - } - - $observer = get_observer_hash(); - - $globaldir = get_directory_setting($observer, 'globaldir'); - // override your personal global search pref if we're doing a navbar search of the directory - if(intval($_REQUEST['navsearch'])) - $globaldir = 1; - - $safe_mode = get_directory_setting($observer, 'safemode'); - - $pubforums = get_directory_setting($observer, 'pubforums'); - - $o = ''; - nav_set_selected('directory'); - - if(x($_POST,'search')) - $search = notags(trim($_POST['search'])); - else - $search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : ''); - - - if(strpos($search,'=') && local_channel() && get_pconfig(local_channel(),'feature','expert')) - $advanced = $search; - - - $keywords = (($_GET['keywords']) ? $_GET['keywords'] : ''); - - // Suggest channels if no search terms or keywords are given - $suggest = (local_channel() && x($_REQUEST,'suggest')) ? $_REQUEST['suggest'] : ''; - - if($suggest) { - - $r = suggestion_query(local_channel(),get_observer_hash()); - - // Remember in which order the suggestions were - $addresses = array(); - $common = array(); - $index = 0; - foreach($r as $rr) { - $common[$rr['xchan_addr']] = $rr['total']; - $addresses[$rr['xchan_addr']] = $index++; - } - - // Build query to get info about suggested people - $advanced = ''; - foreach(array_keys($addresses) as $address) { - $advanced .= "address=\"$address\" "; - } - // Remove last space in the advanced query - $advanced = rtrim($advanced); - - } - - $tpl = get_markup_template('directory_header.tpl'); - - $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) || (! array_key_exists('url',$directory)) || (! $directory['url'])) - logger('CRITICAL: No directory server URL'); - $url = $directory['url'] . '/dirsearch'; - } - - $token = get_config('system','realm_token'); - - - logger('mod_directory: URL = ' . $url, LOGGER_DEBUG); - - $contacts = array(); - - if(local_channel()) { - $x = q("select abook_xchan from abook where abook_channel = %d", - intval(local_channel()) - ); - if($x) { - foreach($x as $xx) - $contacts[] = $xx['abook_xchan']; - } - } - - if($url) { - - $numtags = get_config('system','directorytags'); - - $kw = ((intval($numtags) > 0) ? intval($numtags) : 50); - - if(get_config('system','disable_directory_keywords')) - $kw = 0; - - $query = $url . '?f=&kw=' . $kw . (($safe_mode != 1) ? '&safe=' . $safe_mode : ''); - - if($token) - $query .= '&t=' . $token; - - if(! $globaldir) - $query .= '&hub=' . App::get_hostname(); - - if($search) - $query .= '&name=' . urlencode($search) . '&keywords=' . urlencode($search); - if(strpos($search,'@')) - $query .= '&address=' . urlencode($search); - if($keywords) - $query .= '&keywords=' . urlencode($keywords); - if($advanced) - $query .= '&query=' . urlencode($advanced); - if(! is_null($pubforums)) - $query .= '&pubforums=' . intval($pubforums); - - $directory_sort_order = get_config('system','directory_sort_order'); - if(! $directory_sort_order) - $directory_sort_order = 'date'; - - $sort_order = ((x($_REQUEST,'order')) ? $_REQUEST['order'] : $directory_sort_order); - - if($sort_order) - $query .= '&order=' . urlencode($sort_order); - - if(App::$pager['page'] != 1) - $query .= '&p=' . App::$pager['page']; - - logger('mod_directory: query: ' . $query); - - $x = z_fetch_url($query); - logger('directory: 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_channel()) ? z_root() . '/follow?f=&url=' . urlencode($rr['address']) : ''); - - // Checking status is disabled ATM until someone checks the performance impact more carefully - //$online = remote_online_status($rr['address']); - $online = ''; - - if(in_array($rr['hash'],$contacts)) - $connect_link = ''; - - $location = ''; - if(strlen($rr['locale'])) - $location .= $rr['locale']; - if(strlen($rr['region'])) { - if(strlen($rr['locale'])) - $location .= ', '; - $location .= $rr['region']; - } - if(strlen($rr['country'])) { - if(strlen($location)) - $location .= ', '; - $location .= $rr['country']; - } - - $age = ''; - if(strlen($rr['birthday'])) { - if(($years = age($rr['birthday'],'UTC','')) != 0) - $age = $years; - } - - $page_type = ''; - - if($rr['total_ratings']) - $total_ratings = sprintf( tt("%d rating", "%d ratings", $rr['total_ratings']), $rr['total_ratings']); - else - $total_ratings = ''; - - $profile = $rr; - - if ((x($profile,'locale') == 1) - || (x($profile,'region') == 1) - || (x($profile,'postcode') == 1) - || (x($profile,'country') == 1)) - - $gender = ((x($profile,'gender') == 1) ? t('Gender: ') . $profile['gender']: False); - - $marital = ((x($profile,'marital') == 1) ? t('Status: ') . $profile['marital']: False); - - $homepage = ((x($profile,'homepage') == 1) ? t('Homepage: ') : False); - $homepageurl = ((x($profile,'homepage') == 1) ? $profile['homepage'] : ''); - - $hometown = ((x($profile,'hometown') == 1) ? $profile['hometown'] : False); - - $about = ((x($profile,'about') == 1) ? bbcode($profile['about']) : False); - - $keywords = ((x($profile,'keywords')) ? $profile['keywords'] : ''); - - $out = ''; - - if($keywords) { - $keywords = str_replace(',',' ', $keywords); - $keywords = str_replace(' ',' ', $keywords); - $karr = explode(' ', $keywords); - - if($karr) { - if(local_channel()) { - $r = q("select keywords from profile where uid = %d and is_default = 1 limit 1", - intval(local_channel()) - ); - if($r) { - $keywords = str_replace(',',' ', $r[0]['keywords']); - $keywords = str_replace(' ',' ', $keywords); - $marr = explode(' ', $keywords); - } - } - foreach($karr as $k) { - if(strlen($out)) - $out .= ', '; - if($marr && in_arrayi($k,$marr)) - $out .= '<strong>' . $k . '</strong>'; - else - $out .= $k; - } - } - - } - - $entry = array( - 'id' => ++$t, - 'profile_link' => $profile_link, - 'public_forum' => $rr['public_forum'], - 'photo' => $rr['photo'], - 'hash' => $rr['hash'], - 'alttext' => $rr['name'] . ((local_channel() || remote_channel()) ? ' ' . $rr['address'] : ''), - 'name' => $rr['name'], - 'age' => $age, - 'age_label' => t('Age:'), - 'profile' => $profile, - 'address' => $rr['address'], - 'nickname' => substr($rr['address'],0,strpos($rr['address'],'@')), - 'location' => $location, - 'location_label' => t('Location:'), - 'gender' => $gender, - 'total_ratings' => $total_ratings, - 'viewrate' => true, - 'canrate' => ((local_channel()) ? true : false), - 'pdesc' => $pdesc, - 'pdesc_label' => t('Description:'), - 'marital' => $marital, - 'homepage' => $homepage, - 'homepageurl' => linkify($homepageurl), - 'hometown' => $hometown, - 'hometown_label' => t('Hometown:'), - 'about' => $about, - 'about_label' => t('About:'), - 'conn_label' => t('Connect'), - 'forum_label' => t('Public Forum:'), - 'connect' => $connect_link, - 'online' => $online, - 'kw' => (($out) ? t('Keywords: ') : ''), - 'keywords' => $out, - 'ignlink' => $suggest ? z_root() . '/directory?ignore=' . $rr['hash'] : '', - 'ignore_label' => t('Don\'t suggest'), - 'common_friends' => (($common[$rr['address']]) ? intval($common[$rr['address']]) : ''), - 'common_label' => t('Common connections:'), - 'common_count' => intval($common[$rr['address']]), - 'safe' => $safe_mode - ); - - $arr = array('contact' => $rr, 'entry' => $entry); - - call_hooks('directory_item', $arr); - - unset($profile); - unset($location); - - if(! $arr['entry']) { - continue; - } - - if($sort_order == '' && $suggest) { - $entries[$addresses[$rr['address']]] = $arr['entry']; // Use the same indexes as originally to get the best suggestion first - } - - else { - $entries[] = $arr['entry']; - } - } - - ksort($entries); // Sort array by key so that foreach-constructs work as expected - - if($j['keywords']) { - App::$data['directory_keywords'] = $j['keywords']; - } - - logger('mod_directory: entries: ' . print_r($entries,true), LOGGER_DATA); - - - if($_REQUEST['aj']) { - if($entries) { - $o = replace_macros(get_markup_template('directajax.tpl'),array( - '$entries' => $entries - )); - } - else { - $o = '<div id="content-complete"></div>'; - } - echo $o; - killme(); - } - else { - $maxheight = 94; - - $dirtitle = (($globaldir) ? t('Global Directory') : t('Local Directory')); - - $o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; divmore_height = " . intval($maxheight) . "; </script>"; - $o .= replace_macros($tpl, array( - '$search' => $search, - '$desc' => t('Find'), - '$finddsc' => t('Finding:'), - '$safetxt' => htmlspecialchars($search,ENT_QUOTES,'UTF-8'), - '$entries' => $entries, - '$dirlbl' => $suggest ? t('Channel Suggestions') : $dirtitle, - '$submit' => t('Find'), - '$next' => alt_pager($a,$j['records'], t('next page'), t('previous page')), - '$sort' => t('Sort options'), - '$normal' => t('Alphabetic'), - '$reverse' => t('Reverse Alphabetic'), - '$date' => t('Newest to Oldest'), - '$reversedate' => t('Oldest to Newest'), - '$suggest' => $suggest ? '&suggest=1' : '' - )); - - - } - - } - else { - if($_REQUEST['aj']) { - $o = '<div id="content-complete"></div>'; - echo $o; - killme(); - } - if(App::$pager['page'] == 1 && $j['records'] == 0 && strpos($search,'@')) { - goaway(z_root() . '/chanview/?f=&address=' . $search); - } - info( t("No entries (some entries may be hidden).") . EOL); - } - } - } - } - return $o; -} - |