<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="appear_offline_to_user" active="1">
	<title>Appear Offline to Selected User</title>
	<description>This mod will allow user to go invisible to selected user, instead of going for whole forum.</description>
	<version>1.0</version>
	<url />
	<versioncheckurl />
	<dependencies>
		<dependency dependencytype="vbulletin" minversion="4.0" maxversion="4.99" />
	</dependencies>
	<codes>
<code version="1.0">
			<installcode><![CDATA[$db->hide_errors();
$vbulletin->db->query_write("CREATE TABLE IF NOT EXISTS `". TABLE_PREFIX ."appoffline` (
userid int(10) NOT NULL DEFAULT '0',
toid int(10) NOT NULL DEFAULT '0')");
$db->show_errors();]]></installcode>
			<uninstallcode><![CDATA[$db->hide_errors();

		$vbulletin->db->query_write("DROP TABLE IF EXISTS `" . TABLE_PREFIX . "appoffline` ");



$db->show_errors();]]></uninstallcode>
		</code>
	</codes>
	<templates>
		<template name="aotu_link_in_profile" templatetype="template" date="1312007475" username="admin" version="1.0"><![CDATA[<vb:if condition="!$offlinelist">
<a href="misc.php?{vb:raw session.sessionurl}do=addoffline&amp;toid={vb:raw userinfo.userid}" title="Add {vb:raw userinfo.username} Into Offline List" class="textcontrol imagecontrol"><img src="{vb:stylevar imgdir_siteicons}/markasread.png" alt="Add {vb:raw userinfo.username} Into Offline List" class="inlineimg" /></a> <vb:else />
<a href="misc.php?{vb:raw session.sessionurl}do=deloffline&amp;toid={vb:raw userinfo.userid}" title="Remove {vb:raw userinfo.username} From Offline List" class="textcontrol imagecontrol"><img src="{vb:stylevar imgdir_siteicons}/x.png" alt="Remove {vb:raw userinfo.username} From Offline List" class="inlineimg" /></a> 
</vb:if> ]]></template>
		<template name="aotu_myofflinelist" templatetype="template" date="1312049508" username="admin" version="1.0"><![CDATA[		{vb:stylevar htmldoctype}
	<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
	<head>
		{vb:raw headinclude}
		{vb:raw headinclude_bottom}
		<title>{vb:raw vboptions.bbtitle} - {vb:rawphrase aotu_offlist}</title>
		
	</head>
	<body>
	{vb:raw header}
	{vb:raw navbar}<center>
<div style="padding:0px;margin:0px;border-top:0px;border-bottom:1px;border-{vb:stylevar left}:1px;border-{vb:stylevar right}:1px;border-color:{vb:stylevar shade_color};border-style:solid;width:600px;">
			<table cellpadding="0" cellspacing="0" border="0" width="100%" align="center" >
				<tr>
					<td class="blocksubhead" align="center" width="10%">{vb:rawphrase aotu_sno}</td>
					<td class="blocksubhead" align="center" width="80%">{vb:rawphrase aotu_uname}</td>
					
						

<td class="blocksubhead" align="{vb:stylevar right}" width="10%">{vb:rawphrase aotu_remove}</td>
					
</tr>
{vb:raw offlinelist}

</table></div>
</center>
	<br />
	{vb:raw footer}
	</body>
	</html>

]]></template>
		<template name="aotu_myofflinelistbit" templatetype="template" date="1312047633" username="admin" version="1.0"><![CDATA[<tr><td class="blockrow" align="center" width="10%">{vb:raw sno}</td>
<td class="blockrow" align="center" width="80%"><a href="member.php?u={vb:raw aotuquery.userid}" title="{vb:raw aotuquery.username}">{vb:raw aotuquery.username}</a></td>
<td class="blockrow" align="center" width="10%"><a href="misc.php?do=deloffline&toid={vb:raw aotuquery.userid}" title="Remove {vb:raw aotuquery.username} from Offline list">X</a></td>

</tr>]]></template>
		<template name="aotu_navbar_link" templatetype="template" date="1312028706" username="admin" version="1.0"><![CDATA[<li><a href="misc.php?{vb:raw session.sessionurl}do=offlinelist">My Offline List</a></li>]]></template>
		<template name="aotu_status_in_postbit" templatetype="template" date="1312007294" username="admin" version="1.0"><![CDATA[<img class="inlineimg onlinestatus" src="{vb:stylevar imgdir_statusicon}/user-offline.png" alt="{vb:rawphrase x_is_offline, {vb:raw post.username}}" border="0" />]]></template>
		<template name="aotu_status_in_profile" templatetype="template" date="1312007451" username="admin" version="1.0"><![CDATA[<img class="inlineimg onlinestatus" src="{vb:stylevar imgdir_statusicon}/user-offline.png" alt="{vb:rawphrase x_is_offline, {vb:raw userinfo.username}}" border="0" />
]]></template>
		<template name="aotu_user_status" templatetype="template" date="1312007105" username="admin" version="1.0"><![CDATA[<img class="inlineimg onlinestatus" src="{vb:stylevar imgdir_statusicon}/user-offline.png" alt="{vb:rawphrase x_is_offline, {vb:raw aotu.username}}" border="0" />]]></template>
	</templates>
	<stylevardfns>
	</stylevardfns>
	<stylevars>
	</stylevars>
	<plugins>
		<plugin active="1" executionorder="5">
			<title>User Status in Blog</title>
			<hookname>blog_sidebar_user_complete</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {

if (in_array($userinfo['userid'], explode(",", $vbulletin->userinfo[offlinelist]))) {

$userinfo['onlinestatus'] = 0;

}
}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Cache Template</title>
			<hookname>cache_templates</hookname>
			<phpcode><![CDATA[$cache = array_merge((array)$cache,array(
'aotu_user_status',
'aotu_link_in_profile',
'aotu_myofflinelistbit',
'aotu_myofflinelist',
'aotu_status_in_postbit',
'aotu_status_in_profile',
'aotu_navbar_link'));]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Hide User from Loggedinuser display in Forumdisplay</title>
			<hookname>forumdisplay_loggedinuser</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {


if (in_array($loggedin[userid], explode(",", $listoff))) {

unset($loggedin);

}

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Hide Query For Forumhome</title>
			<hookname>forumhome_loggedinuser</hookname>
			<phpcode><![CDATA[if (in_array($loggedin[userid], explode(",", $listoff))) {

if (fetch_online_status($loggedin))
			{
				$numbervisible++;

}
unset($loggedin);

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Main Query</title>
			<hookname>global_start</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {

if ($vbulletin->userinfo[userid]) {

$offlists = $db->query_read("SELECT DISTINCT userid from ".TABLE_PREFIX."appoffline where toid = ".$vbulletin->userinfo[userid]."");
$listoff = 0;
while ($offlist = $db->fetch_array($offlists)) {
$listoff .= ",". $offlist['userid']; 
}

$db->free_result($offlists);    
unset($offlist, $offlists); 



}
else {
$offlists = $db->query_read("SELECT DISTINCT userid from ".TABLE_PREFIX."appoffline");
$listoff = 0;
while ($offlist = $db->fetch_array($offlists)) {
$listoff .= ",". $offlist['userid']; 
}
$db->free_result($offlists);    
unset($offlist, $offlists); 


}

$vbulletin->userinfo[offlinelist] = $listoff;
}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>User Status in Social Group Page</title>
			<hookname>group_memberbit</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {

if (in_array($user[userid], explode(",", $listoff))) {

$aotu[username] = $user[username];

$templater = vB_Template::create('aotu_user_status');
$templater->register('aotu', $aotu);
$user[onlinestatus] = $templater->render();


}

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>User Online Status in Memberaction DropDown</title>
			<hookname>memberaction_dropdown</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {


if (in_array($memberinfo['userid'], explode(",", $vbulletin->userinfo[offlinelist]))) {

$memberinfo['onlinestatusphrase'] = 'x_is_offline';
}


}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Hide User Acitivity</title>
			<hookname>member_build_blocks_start</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {

if (in_array($userinfo[userid], explode(",", $listoff))) {

$prepared['lastactivitydate'] = 0;
$prepared['action'] = 0;

}

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>User Status in profile</title>
			<hookname>member_complete</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {

if (!is_member_of($userinfo, explode(",", $vbulletin->options[appear_offline_to_user_grps])) AND $vbulletin->userinfo[userid] != $userinfo[userid] AND !in_array($userinfo[userid], explode(",", $vbulletin->options[appear_offline_to_user_ids])) ) {

$offlinelist = $db->query_first("SELECT * FROM ".TABLE_PREFIX."appoffline where userid = ".$vbulletin->userinfo[userid]." AND toid = ".$userinfo[userid]."");

$templater = vB_Template::create('aotu_link_in_profile');
$templater->register('userinfo', $userinfo);
$templater->register('offlinelist', $offlinelist);
$aotu = $templater->render();

vB_Template::preRegister('MEMBERINFO',array('aotu' => $aotu));
$vbulletin->templatecache['MEMBERINFO'] = str_replace('<span id="userinfo">','\' . $aotu . \'<span id="userinfo">',$vbulletin->templatecache['MEMBERINFO']);  

}

if (in_array($userinfo[userid], explode(",", $listoff))) {



$templater = vB_Template::create('aotu_status_in_profile');
$templater->register('userinfo', $userinfo);
$prepared[onlinestatus] = $templater->render();




        } 




}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Query To Appear offline to user</title>
			<hookname>misc_start</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {

if ($_REQUEST['do'] == 'addoffline') {

$toid = $vbulletin->input->clean_gpc('r', 'toid', TYPE_UINT);

if (!$toid OR !$vbulletin->userinfo[userid]) {

eval(standard_error(fetch_error('aotu_error_invalidid')));

}

else {

$toidinfo = $db->query_first("SELECT * FROM ".TABLE_PREFIX."user where userid = $toid");

$appinfo = $db->query_first("SELECT * FROM ".TABLE_PREFIX."appoffline where toid = $toid AND userid = ".$vbulletin->userinfo[userid]."");

if (is_member_of($toidinfo, explode(",", $vbulletin->options[appear_offline_to_user_grps])) OR in_array($toid, explode(",", $vbulletin->options[appear_offline_to_user_ids]))) {

eval(standard_error(fetch_error('aotu_error_wrongid')));


} elseif ($appinfo)

{

eval(standard_error(fetch_error('aotu_error_alreadyid')));

} //Check if user is already there in offline list

else {

$db->query_write("INSERT INTO appoffline (userid, toid) VALUES (".$vbulletin->userinfo[userid].", ".$toid.")");
}
$uprofile = ''.$vbulletin->options['bburl'].'/member.php?u='.$toid.'';
exec_header_redirect($uprofile); 

}

}


if ($_REQUEST['do'] == 'deloffline') {

$toid = $vbulletin->input->clean_gpc('r', 'toid', TYPE_UINT);

if (!$toid OR !$vbulletin->userinfo[userid]) {
eval(standard_error(fetch_error('aotu_error_invalidid')));
}

else {
			$vbulletin->db->hide_errors();
$db->query_write("DELETE FROM ".TABLE_PREFIX."appoffline where userid = ".$vbulletin->userinfo[userid]." AND toid = $toid");
			$vbulletin->db->show_errors();
}
$uprofile = ''.$vbulletin->options['bburl'].'/member.php?u='.$toid.'';
exec_header_redirect($uprofile); 
}


if ($_REQUEST['do'] == 'offlinelist') {

if ($vbulletin->userinfo[userid]) {

$aotuquerys = $db->query_read("select appoffline.toid, user.userid, user.username from ".TABLE_PREFIX."appoffline as appoffline LEFT JOIN ".TABLE_PREFIX."user as user ON appoffline.toid = user.userid where appoffline.userid = ".$vbulletin->userinfo[userid]."");
$sno = 0;
while ($aotuquery = $db->fetch_array($aotuquerys)) {

$sno++;

$templater = vB_Template::Create('aotu_myofflinelistbit');
$templater->register('aotuquery', $aotuquery);
$templater->register('sno', $sno);
$offlinelist .= $templater->render();


}

 $navbits = construct_navbits(array('' => 'My Offline List'));
            $navbar = render_navbar_template($navbits);

            $templater = vB_Template::Create('aotu_myofflinelist');
            $templater->register_page_templates();
            $templater->register('navbar', $navbar);
$templater->register('offlinelist', $offlinelist);
            print_output($templater->render());

}
}

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Hide User In Wol</title>
			<hookname>online_query</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {

$hook_query_where .=" AND session.userid NOT IN ($listoff)";

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>My Offline List Link in Navbar</title>
			<hookname>parse_templates</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user] AND $vbulletin->userinfo[userid]) {

$templater = vB_Template::create('aotu_navbar_link');
$template_hook['navbar_end'] .= $templater->render();

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>User Status in Postbit</title>
			<hookname>postbit_display_complete</hookname>
			<phpcode><![CDATA[if ($this->registry->options[appear_offline_to_selec_user]) {

if (in_array($post[userid], explode(",", $this->registry->userinfo[offlinelist]))) {

$templater = vB_Template::create('aotu_status_in_postbit');
$templater->register('post', $post);
$post[onlinestatus] = $templater->render();


}

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>User Status in Show Groups Page</title>
			<hookname>showgroups_user</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user]) {

if (in_array($user[userid], explode(",", $listoff))) {

$user['online'] = 'offline';

}
}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Hide User from Loggedinuser display in Showthread</title>
			<hookname>showthread_loggedinuser</hookname>
			<phpcode><![CDATA[if ($vbulletin->options[appear_offline_to_selec_user] AND $vbulletin->options[showthreadusers] > 0){


if (in_array($loggedin[userid], explode(",", $listoff))) {

unset($loggedin);

}

}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>AOTU Template Groups</title>
			<hookname>template_groups</hookname>
			<phpcode><![CDATA[$only['aotu_'] = 'AOTU';]]></phpcode>
		</plugin>
	</plugins>
	<phrases>
		<phrasetype name="Error Messages" fieldname="error">
			<phrase name="aotu_error_alreadyid" date="1312010666" username="admin" version="1.0"><![CDATA[This user already added into your offline list.]]></phrase>
			<phrase name="aotu_error_invalidid" date="1312010390" username="admin" version="1.0"><![CDATA[Invalid Userid. ]]></phrase>
			<phrase name="aotu_error_wrongid" date="1312010545" username="admin" version="1.0"><![CDATA[This user cannot be added to your offline list.]]></phrase>
		</phrasetype>
		<phrasetype name="GLOBAL" fieldname="global">
			<phrase name="aotu_offlist" date="1312047670" username="admin" version="1.0"><![CDATA[My Offline List]]></phrase>
			<phrase name="aotu_remove" date="1312048954" username="admin" version="1.0"><![CDATA[Remove]]></phrase>
			<phrase name="aotu_sno" date="1312049050" username="admin" version="1.0"><![CDATA[S.N]]></phrase>
			<phrase name="aotu_uname" date="1312049093" username="admin" version="1.0"><![CDATA[Username]]></phrase>
		</phrasetype>
		<phrasetype name="vBulletin Settings" fieldname="vbsettings">
			<phrase name="setting_appear_offline_to_selec_user_desc" date="1312054631" username="admin" version="1.0"><![CDATA[Enable/Disable the mod from here.]]></phrase>
			<phrase name="setting_appear_offline_to_selec_user_title" date="1312054631" username="admin" version="1.0"><![CDATA[Appear Offline to Selected User]]></phrase>
			<phrase name="setting_appear_offline_to_user_grps_desc" date="1312054624" username="admin" version="1.0"><![CDATA[Enter the usergroupid's seperated by comma to whom user can't appear offline.]]></phrase>
			<phrase name="setting_appear_offline_to_user_grps_title" date="1312054624" username="admin" version="1.0" />
			<phrase name="setting_appear_offline_to_user_ids_desc" date="1311919464" username="admin" version="1.0"><![CDATA[Enter the userid's seperated by comma to whom user can't appear offline.]]></phrase>
			<phrase name="setting_appear_offline_to_user_ids_title" date="1311919464" username="admin" version="1.0" />
			<phrase name="settinggroup_appear_offline_to_user" date="1311918833" username="admin" version="1.0"><![CDATA[Appear Offline To Selected User]]></phrase>
		</phrasetype>
	</phrases>
	<options>
		<settinggroup name="appear_offline_to_user" displayorder="65535">
			<setting varname="appear_offline_to_selec_user" displayorder="10">
				<datatype>boolean</datatype>
				<optioncode>yesno</optioncode>
				<defaultvalue>1</defaultvalue>
			</setting>
			<setting varname="appear_offline_to_user_grps" displayorder="20">
				<datatype>free</datatype>
				<defaultvalue>5,6,7</defaultvalue>
			</setting>
			<setting varname="appear_offline_to_user_ids" displayorder="30">
				<datatype>free</datatype>
			</setting>
		</settinggroup>
	</options>
	<helptopics>
	</helptopics>
	<cronentries>
	</cronentries>
	<faqentries>
	</faqentries>
</product>
