275 lines
		
	
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			275 lines
		
	
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
use Friendica\App;
 | 
						|
 | 
						|
function follow_widget($value = "") {
 | 
						|
 | 
						|
	return replace_macros(get_markup_template('follow.tpl'), array(
 | 
						|
		'$connect' => t('Add New Contact'),
 | 
						|
		'$desc' => t('Enter address or web location'),
 | 
						|
		'$hint' => t('Example: bob@example.com, http://example.com/barbara'),
 | 
						|
		'$value' => $value,
 | 
						|
		'$follow' => t('Connect')
 | 
						|
	));
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
function findpeople_widget() {
 | 
						|
	require_once 'include/Contact.php';
 | 
						|
 | 
						|
	$a = get_app();
 | 
						|
 | 
						|
	if (get_config('system', 'invitation_only')) {
 | 
						|
		$x = get_pconfig(local_user(), 'system', 'invites_remaining');
 | 
						|
		if ($x || is_site_admin()) {
 | 
						|
			$a->page['aside'] .= '<div class="side-link" id="side-invite-remain">'
 | 
						|
			. sprintf( tt('%d invitation available', '%d invitations available', $x), $x)
 | 
						|
			. '</div>' . $inv;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return replace_macros(get_markup_template('peoplefind.tpl'), array(
 | 
						|
		'$findpeople' => t('Find People'),
 | 
						|
		'$desc' => t('Enter name or interest'),
 | 
						|
		'$label' => t('Connect/Follow'),
 | 
						|
		'$hint' => t('Examples: Robert Morgenstein, Fishing'),
 | 
						|
		'$findthem' => t('Find'),
 | 
						|
		'$suggest' => t('Friend Suggestions'),
 | 
						|
		'$similar' => t('Similar Interests'),
 | 
						|
		'$random' => t('Random Profile'),
 | 
						|
		'$inv' => t('Invite Friends')
 | 
						|
	));
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
function unavailable_networks() {
 | 
						|
	$network_filter = "";
 | 
						|
 | 
						|
	$networks = array();
 | 
						|
 | 
						|
	if (!plugin_enabled("appnet")) {
 | 
						|
		$networks[] = NETWORK_APPNET;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!plugin_enabled("fbpost") && !plugin_enabled("facebook")) {
 | 
						|
		$networks[] = NETWORK_FACEBOOK;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!plugin_enabled("statusnet")) {
 | 
						|
		$networks[] = NETWORK_STATUSNET;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!plugin_enabled("pumpio")) {
 | 
						|
		$networks[] = NETWORK_PUMPIO;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!plugin_enabled("twitter")) {
 | 
						|
		$networks[] = NETWORK_TWITTER;
 | 
						|
	}
 | 
						|
 | 
						|
	if (get_config("system", "ostatus_disabled")) {
 | 
						|
		$networks[] = NETWORK_OSTATUS;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!get_config("system", "diaspora_enabled")) {
 | 
						|
		$networks[] = NETWORK_DIASPORA;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!plugin_enabled("pnut")) {
 | 
						|
		$networks[] = NETWORK_PNUT;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!sizeof($networks)) {
 | 
						|
		return "";
 | 
						|
	}
 | 
						|
 | 
						|
	$network_filter = implode("','", $networks);
 | 
						|
 | 
						|
	$network_filter = "AND `network` NOT IN ('$network_filter')";
 | 
						|
 | 
						|
	return $network_filter;
 | 
						|
}
 | 
						|
 | 
						|
function networks_widget($baseurl, $selected = '') {
 | 
						|
 | 
						|
	$a = get_app();
 | 
						|
 | 
						|
	if (!local_user()) {
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	if (!feature_enabled(local_user(), 'networks')) {
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	$extra_sql = unavailable_networks();
 | 
						|
 | 
						|
	$r = q("SELECT DISTINCT(`network`) FROM `contact` WHERE `uid` = %d AND `network` != '' $extra_sql ORDER BY `network`",
 | 
						|
		intval(local_user())
 | 
						|
	);
 | 
						|
 | 
						|
	$nets = array();
 | 
						|
	if (dbm::is_result($r)) {
 | 
						|
		require_once 'include/contact_selectors.php';
 | 
						|
		foreach ($r as $rr) {
 | 
						|
			/// @TODO If 'network' is not there, this triggers an E_NOTICE
 | 
						|
			if ($rr['network']) {
 | 
						|
				$nets[] = array('ref' => $rr['network'], 'name' => network_to_name($rr['network']), 'selected' => (($selected == $rr['network']) ? 'selected' : '' ));
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if (count($nets) < 2) {
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	return replace_macros(get_markup_template('nets.tpl'), array(
 | 
						|
		'$title' => t('Networks'),
 | 
						|
		'$desc' => '',
 | 
						|
		'$sel_all' => (($selected == '') ? 'selected' : ''),
 | 
						|
		'$all' => t('All Networks'),
 | 
						|
		'$nets' => $nets,
 | 
						|
		'$base' => $baseurl,
 | 
						|
 | 
						|
	));
 | 
						|
}
 | 
						|
 | 
						|
function fileas_widget($baseurl, $selected = '') {
 | 
						|
	if (! local_user()) {
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	if (! feature_enabled(local_user(), 'filing')) {
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	$saved = get_pconfig(local_user(), 'system', 'filetags');
 | 
						|
	if (! strlen($saved)) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	$matches = false;
 | 
						|
	$terms = array();
 | 
						|
	$cnt = preg_match_all('/\[(.*?)\]/', $saved, $matches, PREG_SET_ORDER);
 | 
						|
	if ($cnt) {
 | 
						|
		foreach ($matches as $mtch) {
 | 
						|
			$unescaped = xmlify(file_tag_decode($mtch[1]));
 | 
						|
			$terms[] = array('name' => $unescaped, 'selected' => (($selected == $unescaped) ? 'selected' : ''));
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return replace_macros(get_markup_template('fileas_widget.tpl'), array(
 | 
						|
		'$title' => t('Saved Folders'),
 | 
						|
		'$desc' => '',
 | 
						|
		'$sel_all' => (($selected == '') ? 'selected' : ''),
 | 
						|
		'$all' => t('Everything'),
 | 
						|
		'$terms' => $terms,
 | 
						|
		'$base' => $baseurl,
 | 
						|
 | 
						|
	));
 | 
						|
}
 | 
						|
 | 
						|
function categories_widget($baseurl, $selected = '') {
 | 
						|
 | 
						|
	$a = get_app();
 | 
						|
 | 
						|
	if (! feature_enabled($a->profile['profile_uid'], 'categories')) {
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	$saved = get_pconfig($a->profile['profile_uid'], 'system', 'filetags');
 | 
						|
	if (! strlen($saved)) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	$matches = false;
 | 
						|
	$terms = array();
 | 
						|
	$cnt = preg_match_all('/<(.*?)>/', $saved, $matches, PREG_SET_ORDER);
 | 
						|
 | 
						|
	if ($cnt) {
 | 
						|
		foreach ($matches as $mtch) {
 | 
						|
			$unescaped = xmlify(file_tag_decode($mtch[1]));
 | 
						|
			$terms[] = array('name' => $unescaped, 'selected' => (($selected == $unescaped) ? 'selected' : ''));
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return replace_macros(get_markup_template('categories_widget.tpl'), array(
 | 
						|
		'$title' => t('Categories'),
 | 
						|
		'$desc' => '',
 | 
						|
		'$sel_all' => (($selected == '') ? 'selected' : ''),
 | 
						|
		'$all' => t('Everything'),
 | 
						|
		'$terms' => $terms,
 | 
						|
		'$base' => $baseurl,
 | 
						|
 | 
						|
	));
 | 
						|
}
 | 
						|
 | 
						|
function common_friends_visitor_widget($profile_uid) {
 | 
						|
 | 
						|
	$a = get_app();
 | 
						|
 | 
						|
	if (local_user() == $profile_uid) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	$cid = $zcid = 0;
 | 
						|
 | 
						|
	if (is_array($_SESSION['remote'])) {
 | 
						|
		foreach ($_SESSION['remote'] as $visitor) {
 | 
						|
			if ($visitor['uid'] == $profile_uid) {
 | 
						|
				$cid = $visitor['cid'];
 | 
						|
				break;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if (! $cid) {
 | 
						|
		if (get_my_url()) {
 | 
						|
			$r = q("select id from contact where nurl = '%s' and uid = %d limit 1",
 | 
						|
				dbesc(normalise_link(get_my_url())),
 | 
						|
				intval($profile_uid)
 | 
						|
			);
 | 
						|
			if (dbm::is_result($r)) {
 | 
						|
				$cid = $r[0]['id'];
 | 
						|
			} else {
 | 
						|
				$r = q("select id from gcontact where nurl = '%s' limit 1",
 | 
						|
					dbesc(normalise_link(get_my_url()))
 | 
						|
				);
 | 
						|
				if (dbm::is_result($r))
 | 
						|
					$zcid = $r[0]['id'];
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if ($cid == 0 && $zcid == 0) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	require_once 'include/socgraph.php';
 | 
						|
 | 
						|
	if ($cid) {
 | 
						|
		$t = count_common_friends($profile_uid, $cid);
 | 
						|
	} else {
 | 
						|
		$t = count_common_friends_zcid($profile_uid, $zcid);
 | 
						|
	}
 | 
						|
	if (! $t) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	if ($cid) {
 | 
						|
		$r = common_friends($profile_uid, $cid, 0, 5, true);
 | 
						|
	} else {
 | 
						|
		$r = common_friends_zcid($profile_uid, $zcid, 0, 5, true);
 | 
						|
	}
 | 
						|
 | 
						|
	return replace_macros(get_markup_template('remote_friends_common.tpl'), array(
 | 
						|
		'$desc' =>  sprintf( tt("%d contact in common", "%d contacts in common", $t), $t),
 | 
						|
		'$base' => App::get_baseurl(),
 | 
						|
		'$uid' => $profile_uid,
 | 
						|
		'$cid' => (($cid) ? $cid : '0'),
 | 
						|
		'$linkmore' => (($t > 5) ? 'true' : ''),
 | 
						|
		'$more' => t('show more'),
 | 
						|
		'$items' => $r
 | 
						|
	));
 | 
						|
 | 
						|
};
 |