App::$query_string);
	
		call_hooks('network_content_init', $arr);
	
		$channel = App::get_channel();
		$item_normal = item_normal();
		$item_normal_update = item_normal_update();
	
		$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']) : '');
		$static     = ((x($_GET,'static')) ? intval($_GET['static']) : 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'] : '');
		$order = get_pconfig(local_channel(), 'mod_network', 'order', 0);
		switch($order) {
			case 0:
				$order = 'comment';
				break;
			case 1:
				$order = 'post';
				break;
			case 2:
				$nouveau = true;
				break;
		}
		$search = (($_GET['search']) ? $_GET['search'] : '');
		if($search) {
			if(strpos($search,'#') === 0) {
				$hashtags = substr($search,1);
				$search = '';
			}
		}
	
		if($datequery)
			$order = 'post';
	
	
		// filter by collection (e.g. group)
	
		if($gid) {
			$r = q("SELECT * FROM pgrp 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(z_root() . '/network');
				// NOTREACHED
			}
	
			$group      = $gid;
			$group_hash = $r[0]['hash'];
			$def_acl    = array('allow_gid' => '<' . $r[0]['hash'] . '>');
		}
	
		$default_cmin = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmin',0) : (-1));
		$default_cmax = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmax',99) : (-1));
		$cid      = ((x($_GET,'cid'))   ? intval($_GET['cid'])   : 0);
		$star     = ((x($_GET,'star'))  ? intval($_GET['star'])  : 0);
		$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     = ((array_key_exists('cmin',$_GET))  ? intval($_GET['cmin'])  : $default_cmin);
		$cmax     = ((array_key_exists('cmax',$_GET))  ? intval($_GET['cmax'])  : $default_cmax);
		$file     = ((x($_GET,'file'))  ? $_GET['file']          : '');
		$xchan    = ((x($_GET,'xchan')) ? $_GET['xchan']         : '');
		$net      = ((x($_GET,'net'))   ? $_GET['net']           : '');
		$pf       = ((x($_GET,'pf'))    ? $_GET['pf']            : '');
		$unseen   = ((x($_GET,'unseen'))    ? $_GET['unseen']            : '');
		
		$deftag = '';
	
                if (feature_enabled(local_channel(),'affinity')) {
			$affinity_locked = intval(get_pconfig(local_channel(),'affinity','lock',1));
			if ($affinity_locked) {
                        	set_pconfig(local_channel(),'affinity','cmin',$cmin);
                        	set_pconfig(local_channel(),'affinity','cmax',$cmax);
			}
                }
		if(x($_GET,'search') || $file || (!$pf && $cid) || $hashtags || $verb || $category || $conv || $unseen)
			$nouveau = true;
		if($cid) {
			$cid_r = q("SELECT abook.abook_xchan, xchan.xchan_addr, xchan.xchan_name, xchan.xchan_url, xchan.xchan_photo_s, xchan.xchan_pubforum 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(! $cid_r) {
				if($update) {
					killme();
				}
				notice( t('No such channel') . EOL );
				goaway(z_root() . '/network');
				// NOTREACHED
			}
			if($pf)
				$deftag = '!{' . (($cid_r[0]['xchan_addr']) ? $cid_r[0]['xchan_addr'] : $cid_r[0]['xchan_url']) . '}';
			else
				$def_acl = [ 'allow_cid' => '<' . $cid_r[0]['abook_xchan'] . '>', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ];
		}
	
		if(! $update) {
	
			// search terms header
			if($search || $hashtags) {
				$o .= replace_macros(get_markup_template("section_title.tpl"),array(
					'$title' => t('Search Results For:') . ' ' . (($search) ? htmlspecialchars($search, ENT_COMPAT,'UTF-8') : '#' . htmlspecialchars($hashtags, 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, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post'),
				'permissions'      => (($private_editing) ? $def_acl : $channel_acl),
				'bang'             => (($private_editing) ? '!' : ''),
				'visitor'          => true,
				'profile_uid'      => local_channel(),
				'editor_autocomplete' => true,
				'bbco_autocomplete' => 'bbcode',
				'bbcode' => true,
				'jotnets' => true,
				'reset' => t('Reset form')
			);
			if($deftag)
				$x['pretext'] = $deftag;
	
	
			$status_editor = status_editor($a,$x,false,'Network');
			$o .= $status_editor;
			$static = channel_manual_conv_update(local_channel());
	
		}
	
	
		// 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 = '';
		$item_thread_top = ' AND item_thread_top = 1 ';
	
		$sql_extra = '';
	
		if($group) {
			$contact_str = '';
			$contacts = group_get_members($group);
			if($contacts) {
				$contact_str = ids_to_querystr($contacts,'xchan',true);
			}
			else {
				$contact_str = " '0' ";
				if(! $update) {
					info( t('Privacy group is empty'));
				}
			}
			$item_thread_top = '';
			$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['gname']
				));
			}
	
			$o = $title;
			$o .= $status_editor;
	
		}
		elseif($cid_r) {
			$item_thread_top = '';
			if($load || $update) {
				if(!$pf && $nouveau) {
					// This is for nouveau view cid queries (not a public forum)
					$sql_extra = " AND author_xchan = '" . dbesc($cid_r[0]['abook_xchan']) . "' ";
				}
				elseif($pf && $unseen && $nouveau) {
					$vnotify = get_pconfig(local_channel(), 'system', 'vnotify');
					if(! ($vnotify & VNOTIFY_LIKE))
						$likes_sql = " AND verb NOT IN ('" . dbesc(ACTIVITY_LIKE) . "', '" . dbesc(ACTIVITY_DISLIKE) . "') ";
					// This is for nouveau view public forum cid queries (if a forum notification is clicked)
					$p = q("SELECT oid AS parent FROM term WHERE uid = %d AND ttype = %d AND term = '%s'",
						intval(local_channel()),
						intval(TERM_FORUM),
						dbesc($cid_r[0]['xchan_name'])
					);
					$p_str = ids_to_querystr($p, 'parent');
					if($p_str)
						$p_sql = " OR item.parent IN ( $p_str ) ";
					$sql_extra = " AND ( owner_xchan = '" . protect_sprintf(dbesc($cid_r[0]['abook_xchan'])) . "' OR owner_xchan = '" . protect_sprintf(dbesc($cid_r[0]['abook_xchan'])) . "' $p_sql ) AND item_unseen = 1 $likes_sql ";
				}
				else {
					// This is for threaded view cid queries (e.g. if a forum is selected from the forum filter)
					$ttype = (($pf) ? TERM_FORUM : TERM_MENTION);
					$p1 = q("SELECT DISTINCT parent FROM item WHERE uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($cid_r[0]['abook_xchan']) . "' OR owner_xchan = '" . dbesc($cid_r[0]['abook_xchan']) . "' ) $item_normal ");
					$p2 = q("SELECT oid AS parent FROM term WHERE uid = " . intval(local_channel()) . " AND ttype = $ttype AND term = '" . dbesc($cid_r[0]['xchan_name']) . "'");
					$p_str = ids_to_querystr(array_merge($p1,$p2),'parent');
					if(! $p_str)
						killme();
					$sql_extra = " AND item.parent IN ( $p_str ) ";
				}
			}
			$title = replace_macros(get_markup_template("section_title.tpl"),array(
				'$title' => ' ' . $cid_r[0]['xchan_name'] . ''
			));
			$o = $title;
			$o .= $status_editor;
		}
		elseif($xchan) {
			$r = q("select * from xchan where xchan_hash = '%s'",
				dbesc($xchan)
			);
			if($r) {
				$item_thread_top = '';
				$sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($xchan) . "' or owner_xchan = '" . dbesc($xchan) . "' ) $item_normal ) ";
				$title = replace_macros(get_markup_template("section_title.tpl"),array(
					'$title' => '
 ' . $r[0]['xchan_name'] . ''
				));
				$o = $title;
				$o .= $status_editor;
			}
			else {
				notice( t('Invalid channel.') . EOL);
				goaway(z_root() . '/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).
	
			$maxheight = get_pconfig(local_channel(),'system','network_divmore_height');
			if(! $maxheight)
				$maxheight = 400;
	
	
			$o .= '