get_channel();
	$a->profile_uid = local_channel();
	head_set_icon($channel['xchan_photo_s']);
}
function network_content(&$a, $update = 0, $load = false) {
	if(! local_channel()) {
		$_SESSION['return_url'] = $a->query_string;
		return login(false);
	}
	if($load)
		$_SESSION['loadtime'] = datetime_convert();
	$arr = array('query' => $a->query_string);
	call_hooks('network_content_init', $arr);
	$channel = $a->get_channel();
	$item_normal = item_normal();
	$datequery = $datequery2 = '';
	$group = 0;
	$nouveau    = false;
	$datequery  = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
	$datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
	$nouveau    = ((x($_GET,'new')) ? intval($_GET['new']) : 0);
	$gid        = ((x($_GET,'gid')) ? intval($_GET['gid']) : 0);
	$category   = ((x($_REQUEST,'cat')) ? $_REQUEST['cat'] : '');
	$hashtags   = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : '');
	$verb       = ((x($_REQUEST,'verb')) ? $_REQUEST['verb'] : '');
	$search = (($_GET['search']) ? $_GET['search'] : '');
	if($search) {
		if(strpos($search,'@') === 0) {
			$r = q("select abook_id from abook left join xchan on abook_xchan = xchan_hash where xchan_name = '%s' and abook_channel = %d limit 1",
				dbesc(substr($search,1)),
				intval(local_channel())
			);
			if($r) {
				$_GET['cid'] = $r[0]['abook_id'];
				$search = $_GET['search'] = '';
			}
		}
		elseif(strpos($search,'#') === 0) {
			$hashtags = substr($search,1);
			$search = $_GET['search'] = '';
		}
	}
	if($datequery)
		$_GET['order'] = 'post';
	// filter by collection (e.g. group)
	if($gid) {
		$r = q("SELECT * FROM groups WHERE id = %d AND uid = %d LIMIT 1",
			intval($gid),
			intval(local_channel())
		);
		if(! $r) {
			if($update)
				killme();
			notice( t('No such group') . EOL );
			goaway($a->get_baseurl(true) . '/network');
			// NOTREACHED
		}
		$group      = $gid;
		$group_hash = $r[0]['hash'];
		$def_acl    = array('allow_gid' => '<' . $r[0]['hash'] . '>');
	}
	$o = '';
	// if no tabs are selected, defaults to comments
	$cid      = ((x($_GET,'cid'))   ? intval($_GET['cid'])   : 0);
	$star     = ((x($_GET,'star'))  ? intval($_GET['star'])  : 0);
	$order    = ((x($_GET,'order')) ? notags($_GET['order']) : 'comment');
	$liked    = ((x($_GET,'liked')) ? intval($_GET['liked']) : 0);
	$conv     = ((x($_GET,'conv'))  ? intval($_GET['conv'])  : 0);
	$spam     = ((x($_GET,'spam'))  ? intval($_GET['spam'])  : 0);
	$cmin     = ((x($_GET,'cmin'))  ? intval($_GET['cmin'])  : 0);
	$cmax     = ((x($_GET,'cmax'))  ? intval($_GET['cmax'])  : 99);
	$firehose = ((x($_GET,'fh'))    ? intval($_GET['fh'])    : 0);
	$file     = ((x($_GET,'file'))  ? $_GET['file']          : '');
	$deftag = '';
	if(x($_GET,'search') || x($_GET,'file'))
		$nouveau = true;
	if($cid) {
		$r = q("SELECT abook_xchan FROM abook WHERE abook_id = %d AND abook_channel = %d LIMIT 1",
			intval($cid),
			intval(local_channel())
		);
		if(! $r) {
			if($update) {
				killme();
			}
			notice( t('No such channel') . EOL );
			goaway($a->get_baseurl(true) . '/network');
			// NOTREACHED
		}
		if($_GET['pf'] === '1')
			$deftag = '@' . t('forum') . '+' . intval($cid) . '+';
		else
			$def_acl = array('allow_cid' => '<' . $r[0]['abook_xchan'] . '>');
	}
	if(! $update) {
		$tabs = network_tabs();
		$o .= $tabs;
		// search terms header
		if($search) {
			$o .= replace_macros(get_markup_template("section_title.tpl"),array(
				'$title' => t('Search Results For:') . ' ' . htmlspecialchars($search, ENT_COMPAT,'UTF-8')
			));
		}
		nav_set_selected('network');
		$channel_acl = array(
			'allow_cid' => $channel['channel_allow_cid'], 
			'allow_gid' => $channel['channel_allow_gid'], 
			'deny_cid'  => $channel['channel_deny_cid'], 
			'deny_gid'  => $channel['channel_deny_gid']
		); 
		$private_editing = ((($group || $cid) && (! intval($_GET['pf']))) ? true : false);
		$x = array(
			'is_owner'         => true,
			'allow_location'   => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''),
			'default_location' => $channel['channel_location'],
			'nickname'         => $channel['channel_address'],
			'lockstate'        => (($private_editing || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
			'acl'              => populate_acl((($private_editing) ? $def_acl : $channel_acl), true, (($channel['channel_r_stream'] & PERMS_PUBLIC) ? t('Public') : '')),
			'bang'             => (($private_editing) ? '!' : ''),
			'visitor'          => true,
			'profile_uid'      => local_channel()
		);
		if($deftag)
			$x['pretext'] = $deftag;
		$status_editor = status_editor($a,$x);
		$o .= $status_editor;
	}
	// We don't have to deal with ACL's on this page. You're looking at everything
	// that belongs to you, hence you can see all of it. We will filter by group if
	// desired.
	$sql_options  = (($star)
		? " and item_starred = 1 "
		: '');
	$sql_nets = '';
	$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE item_thread_top = 1 $sql_options ) ";
	if($group) {
		$contact_str = '';
		$contacts = group_get_members($group);
		if($contacts) {
			foreach($contacts as $c) {
				if($contact_str)
					$contact_str .= ',';
				$contact_str .= "'" . $c['xchan'] . "'";
			}
		}
		else {
			$contact_str = ' 0 ';
			info( t('Privacy group is empty'));
		}
		$sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND (( author_xchan IN ( $contact_str ) OR owner_xchan in ( $contact_str )) or allow_gid like '" . protect_sprintf('%<' . dbesc($group_hash) . '>%') . "' ) and id = parent $item_normal ) ";
		$x = group_rec_byhash(local_channel(), $group_hash);
		if($x) {
			$title = replace_macros(get_markup_template("section_title.tpl"),array(
				'$title' => t('Privacy group: ') . $x['name']
			));
		}
		$o = $tabs;
		$o .= $title;
		$o .= $status_editor;
	}
	elseif($cid) {
		$r = q("SELECT abook.*, xchan.* from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_channel = %d and abook_blocked = 0 limit 1",
			intval($cid),
			intval(local_channel())
		);
		if($r) {
			$sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($r[0]['abook_xchan']) . "' or owner_xchan = '" . dbesc($r[0]['abook_xchan']) . "' ) $item_normal ) ";
			$title = replace_macros(get_markup_template("section_title.tpl"),array(
				'$title' => ' ' . $r[0]['xchan_name'] . ''
			));
			$o = $tabs;
			$o .= $title;
			$o .= $status_editor;
		}
		else {
			notice( t('Invalid connection.') . EOL);
			goaway($a->get_baseurl(true) . '/network');
		}
	}
	if(x($category)) {
		$sql_extra .= protect_sprintf(term_query('item', $category, TERM_CATEGORY));
	}
	if(x($hashtags)) {
		$sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG, TERM_COMMUNITYTAG));
	}
	if(! $update) {
		// The special div is needed for liveUpdate to kick in for this page.
		// We only launch liveUpdate if you aren't filtering in some incompatible
		// way and also you aren't writing a comment (discovered in javascript).
		if($gid || $cid || $cmin || ($cmax != 99) || $star || $liked || $conv || $spam || $nouveau || $list)
			$firehose = 0;
		$maxheight = get_pconfig(local_channel(),'system','network_divmore_height');
		if(! $maxheight)
			$maxheight = 400;
		$o .= '