aboutsummaryrefslogblamecommitdiffstats
path: root/mod/dirprofile.php
blob: d88144f522043c0beacdb0db6c595c336ab4ae2e (plain) (tree)
1
2
3
4

                                    
                                   


































































                                                                                                                     
                                                                          
                                                                                                                                                                

                                                                                               































                                                                                                             
        
                                                                                                                                                 
                
                                                                                                                                                       
 
                                                                                                                                          



















                                                                                                                                                        
                                                                                                        



                                                                                                                      
                        
                                                 

                                                                                                                         
                                                                             

                                                                                                         
                                                                                                        
                                                                                        
                                                                                     



                                                                                  
                                                                                 
                                                                           
                                                                                                 



















                                                                                      
<?php

require_once('include/dir_fns.php');
require_once('include/bbcode.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 />' : '');

						$qrlink = zid($rr['url']);
						$connect_link = ((local_user()) ? z_root() . '/follow?f=&url=' . urlencode($rr['address']) : ''); 		

						$online = remote_online_status($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:');

	
						$marital = ((x($profile,'marital') == 1) ?  t('Status: ') . $profile['marital']  : False);
						$sexual = ((x($profile,'sexual') == 1) ?  t('Sexual Preference: ') . $profile['sexual'] : False);
		
						$homepage = ((x($profile,'homepage') == 1) ?  t('Homepage: ') . linkify($profile['homepage']) : False);
						$hometown = ((x($profile,'hometown') == 1) ?  t('Hometown: ') . $profile['hometown']  : False);

						$about = ((x($profile,'about') == 1) ?  t('About: ') . bbcode($profile['about']) : False);
						
						$keywords = ((x($profile,'keywords')) ? $profile['keywords'] : '');
						if($keywords) {
							$keywords = str_replace(',',' ', $keywords);
							$keywords = str_replace('  ',' ', $keywords);
							$karr = explode(' ', $keywords);
							$out = '';
							if($karr) {
								if(local_user()) {
									$r = q("select keywords from profile where uid = %d and is_default = 1 limit 1",
										intval(local_user())
									);
									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 = replace_macros(get_markup_template('direntry_large.tpl'), array(
							'$id' => ++$t,
							'$profile_link' => $profile_link,
							'$qrlink' => $qrlink,
							'$photo' => $rr['photo_l'],
							'$alttext' => $rr['name'] . ' ' . $rr['address'],
							'$name' => $rr['name'],
							'$online' => (($online) ? t('Online Now') : ''),
							'$details' => $pdesc . $details,
							'$profile' => $profile,
							'$address' => $rr['address'],
							'$location' => $location,
							'$gender'   => $gender,
							'$pdesc'	=> $pdesc,
							'$marital'  => $marital,
							'$homepage' => $homepage,
							'$hometown' => $hometown,
							'$about' => $about,
							'$kw' => (($out) ? t('Keywords: ') : ''),
							'$keywords' => $out,
							'$conn_label' => t('Connect'),
							'$connect' => $connect_link,
						));


						echo $entry;
						killme();

					}
				}
				else {
					info( t("Not found.") . EOL);
				}
			}
		}
	}




}