<?php

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") AND !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 (!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 NOT `self` $extra_sql ORDER BY `network`",
		intval(local_user())
	);

	$nets = array();
	if(count($r)) {
		require_once('include/contact_selectors.php');
		foreach($r as $rr) {
				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 = '') {
	$a = get_app();
	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(count($r))
				$cid = $r[0]['id'];
			else {
				$r = q("select id from gcontact where nurl = '%s' limit 1",
					dbesc(normalise_link(get_my_url()))
				);
				if(count($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' => $a->get_baseurl(),
		'$uid' => $profile_uid,
		'$cid' => (($cid) ? $cid : '0'),
		'$linkmore' => (($t > 5) ? 'true' : ''),
		'$more' => t('show more'),
		'$items' => $r
	));

};
