Changeset - e738144737dd
[Not reviewed]
0 1 0
Julia - 8 years ago 2017-10-25 00:05:06
midnightwhisper@web.de
Update inplaytracker.php
1 file changed with 1102 insertions and 297 deletions:
0 comments (0 inline, 0 general)
inc/plugins/inplaytracker.php
Show inline comments
 
@@ -12,10 +12,17 @@ $plugins->add_hook("editpost_do_editpost_end", "inplaytracker_do_editpost");
 
$plugins->add_hook("newreply_do_newreply_end", "inplaytracker_do_newreply");
 
$plugins->add_hook("forumdisplay_thread_end", "inplaytracker_forumdisplay");
 
$plugins->add_hook("misc_start", "inplaytracker_misc");
 
if (class_exists('MybbStuff_MyAlerts_AlertTypeManager')) {
 
	$plugins->add_hook("global_start", "inplaytracker_alerts");
 
}
 
$plugins->add_hook("global_intermediate", "inplaytracker_global");
 
$plugins->add_hook("member_profile_end", "inplaytracker_profile");
 
$plugins->add_hook("usercp_do_options_end", "inplaytracker_usercp_options");
 
$plugins->add_hook("usercp_options_start", "inplaytracker_usercp");
 
$plugins->add_hook("showthread_start", "inplaytracker_showthread");
 

	
 
$plugins->add_hook("admin_tools_menu", "inplaytracker_tools_menu");
 
$plugins->add_hook("admin_tools_action_handler", "inplaytracker_tools_action_handler");
 

	
 

	
 
function inplaytracker_info()
 
@@ -23,10 +30,10 @@ function inplaytracker_info()
 
	return array(
 
		"name"			=> "Inplaytracker",
 
		"description"	=> "Eintragen von Postpartnern in eine Szene, PN-Benachrichtigung bei neuen Szenen/Posts & Komplette Übersicht offener Szenen.",
 
		"website"		=> "http://www.storming-gates.de",
 
		"website"		=> "https://github.com/its-sparks-fly",
 
		"author"		=> "sparks fly",
 
		"authorsite"	=> "http://www.storming-gates.de",
 
		"version"		=> "1.0",
 
		"authorsite"	=> "https://github.com/its-sparks-fly",
 
		"version"		=> "2.0",
 
		"compatibility" => "*"
 
	);
 
}
 
@@ -35,12 +42,41 @@ function inplaytracker_install()
 
{
 
  global $db, $mybb;
 

	
 
		if(class_exists('MybbStuff_MyAlerts_AlertTypeManager')) {
 
		$alertTypeManager = MybbStuff_MyAlerts_AlertTypeManager::getInstance();
 

	
 
		if (!$alertTypeManager) {
 
			$alertTypeManager = MybbStuff_MyAlerts_AlertTypeManager::createInstance($db, $cache);
 
		}
 

	
 
		$alertType = new MybbStuff_MyAlerts_Entity_AlertType();
 
		$alertType->setCode('inplaytracker_newthread'); // The codename for your alert type. Can be any unique string.
 
		$alertType->setEnabled(true);
 
		$alertType->setCanBeUserDisabled(true);
 

	
 
		$alertTypeManager->add($alertType);
 

	
 
		$alertType = new MybbStuff_MyAlerts_Entity_AlertType();
 
		$alertType->setCode('inplaytracker_newreply'); // The codename for your alert type. Can be any unique string.
 
		$alertType->setEnabled(true);
 
		$alertType->setCanBeUserDisabled(true);
 

	
 
		$alertTypeManager->add($alertType);
 
	}
 

	
 
  // Tabellen erstellen
 
  $db->query("ALTER TABLE `".TABLE_PREFIX."threads` ADD `partners` VARCHAR(1155) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `attachmentcount`;");
 
  $db->query("ALTER TABLE `".TABLE_PREFIX."posts` ADD `partners` VARCHAR(1155) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `visible`;");
 
  $db->query("ALTER TABLE `".TABLE_PREFIX."threads` ADD `ipdate` VARCHAR(155) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `partners`;");
 
  $db->query("ALTER TABLE `".TABLE_PREFIX."posts` ADD `ipdate` VARCHAR(155) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `partners`;");
 
	$db->query("ALTER TABLE `".TABLE_PREFIX."users` ADD `inplaytrackerpm` int(11) NOT NULL DEFAULT '1';");
 
	$db->query("ALTER TABLE `".TABLE_PREFIX."threads` ADD `iport` VARCHAR(155) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `ipdate`;");
 
  $db->query("ALTER TABLE `".TABLE_PREFIX."posts` ADD `iport` VARCHAR(155) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `ipdate`;");
 
	$db->query("ALTER TABLE `".TABLE_PREFIX."threads` ADD `ipdaytime` VARCHAR(155) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `iport`;");
 
  $db->query("ALTER TABLE `".TABLE_PREFIX."posts` ADD `ipdaytime` VARCHAR(155) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `iport`;");
 
	$db->query("ALTER TABLE `".TABLE_PREFIX."threads` ADD `openscene` int(11) NOT NULL DEFAULT '-1';");
 
	$db->query("ALTER TABLE `".TABLE_PREFIX."posts` ADD `openscene` int(11) NOT NULL DEFAULT '-1';");
 
	$db->query("ALTER TABLE `".TABLE_PREFIX."threads` ADD `postorder` int(11) NOT NULL DEFAULT '1';");
 
	$db->query("ALTER TABLE `".TABLE_PREFIX."posts` ADD `postorder` int(11) NOT NULL DEFAULT '1';");
 

	
 
  // Einstellungen
 
  $setting_group = array(
 
@@ -53,7 +89,8 @@ function inplaytracker_install()
 

	
 
  $gid = $db->insert_query("settinggroups", $setting_group);
 

	
 
  $setting_array = array(
 
  $setting_array =
 
		array(
 
    	'inplaytracker_forum' => array(
 
    	'title' => 'Inplay-Kategorie',
 
    	'description' => 'Gib die ID deiner Inplay-Kategorie an.',
 
@@ -67,6 +104,34 @@ function inplaytracker_install()
 
      'optionscode' => 'text',
 
      'value' => '999', // Default
 
      'disporder' => 2
 
    ),
 
			'inplaytracker_location' => array(
 
      'title' => 'Ort-Feld hinzufügen?',
 
      'description' => 'Sollen User ein Feld ausfüllen können, in dem siie zusätzlich den Spielort angeben können?',
 
      'optionscode' => 'yesno',
 
      'value' => 1,
 
      'disporder' => 3
 
    ),
 
			'inplaytracker_daytime' => array(
 
			'title' => 'Tageszeit-Feld hinzufügen?',
 
			'description' => 'Sollen User ein Feld ausfüllen können, in dem siie zusätzlich die Tageszeit angeben können?',
 
			'optionscode' => 'yesno',
 
			'value' => 0,
 
			'disporder' => 4
 
		),
 
			'inplaytracker_timeformat' => array(
 
			'title' => 'Eigene Zeitrechnung nutzen?',
 
			'description' => 'Soll das Plugin eine Zeitrechnung abseits vom gregorianischen Kalender nutzen (auch ankreuzen, wenn euer Forum vor 1970 oder nach 2038 spielt!)?',
 
			'optionscode' => 'yesno',
 
			'value' => 0,
 
			'disporder' => 5
 
		),
 
			'inplaytracker_months' => array(
 
				'title' => 'Monatsnamen',
 
				'description' => '<b>Nur bei eigener Zeitrechnung:</b> Welche Monate sollen in deinem Forum auswählbar sein? Besonders interessant für Fantasy- und/oder Fandomforen!',
 
				'optionscode' => 'text',
 
				'value' => 'Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember',
 
				'disporder' => 6
 
		),
 
  );
 

	
 
@@ -74,16 +139,192 @@ function inplaytracker_install()
 
  {
 
    $setting['name'] = $name;
 
    $setting['gid'] = $gid;
 

	
 
    $db->insert_query('settings', $setting);
 
  }
 

	
 
  rebuild_settings();
 

	
 
}
 

	
 
function inplaytracker_is_installed()
 
{
 
  global $db;
 
  if($db->field_exists("partners", "threads"))
 
  {
 
      return true;
 
  }
 
  return false;
 
}
 

	
 
function inplaytracker_uninstall()
 
{
 
  global $db;
 

	
 
	if (class_exists('MybbStuff_MyAlerts_AlertTypeManager')) {
 
		$alertTypeManager = MybbStuff_MyAlerts_AlertTypeManager::getInstance();
 

	
 
		if (!$alertTypeManager) {
 
			$alertTypeManager = MybbStuff_MyAlerts_AlertTypeManager::createInstance($db, $cache);
 
		}
 

	
 
		$alertTypeManager->deleteByCode('inplaytracker_newthread');
 
		$alertTypeManager->deleteByCode('inplaytracker_newreply');
 
	}
 

	
 
  // Tabellen entfernen
 
	if($db->field_exists("partners", "threads"))
 
  {
 
    $db->drop_column("threads", "partners");
 
  }
 
  if($db->field_exists("partners", "posts"))
 
  {
 
    $db->drop_column("posts", "partners");
 
  }
 
  if($db->field_exists("ipdate", "threads"))
 
  {
 
    $db->drop_column("threads", "ipdate");
 
  }
 
  if($db->field_exists("ipdate", "posts"))
 
  {
 
    $db->drop_column("posts", "ipdate");
 
  }
 
	if($db->field_exists("iport", "threads"))
 
  {
 
    $db->drop_column("threads", "iport");
 
  }
 
  if($db->field_exists("iport", "posts"))
 
  {
 
    $db->drop_column("posts", "iport");
 
  }
 
	if($db->field_exists("ipdaytime", "threads"))
 
  {
 
    $db->drop_column("threads", "ipdaytime");
 
  }
 
  if($db->field_exists("ipdaytime", "posts"))
 
  {
 
    $db->drop_column("posts", "ipdaytime");
 
  }
 
	if($db->field_exists("openscene", "threads"))
 
  {
 
    $db->drop_column("threads", "openscene");
 
  }
 
  if($db->field_exists("openscene", "posts"))
 
  {
 
    $db->drop_column("posts", "openscene");
 
  }
 
	if($db->field_exists("postorder", "threads"))
 
	{
 
		$db->drop_column("threads", "postorder");
 
	}
 
	if($db->field_exists("postorder", "posts"))
 
	{
 
		$db->drop_column("posts", "postorder");
 
	}
 

	
 
  // Einstellungen entfernen
 
  $db->delete_query('settings', "name LIKE '%inplaytracker%'");
 
  $db->delete_query('settinggroups', "name = 'inplaytracker'");
 

	
 
  rebuild_settings();
 

	
 
}
 

	
 
function inplaytracker_activate()
 
{
 
  global $db, $mybb;
 

	
 
  // Variablen einfügen
 
  include MYBB_ROOT."/inc/adminfunctions_templates.php";
 
	find_replace_templatesets("newthread", "#".preg_quote('{$loginbox}')."#i", '{$loginbox} {$tracker_partners} {$tracker_date} {$tracker_ort} {$tracker_daytime}');
 
	find_replace_templatesets("editpost", "#".preg_quote('{$loginbox}')."#i", '{$loginbox} {$tracker_partners} {$tracker_date} {$tracker_ort} {$tracker_daytime}');
 
	find_replace_templatesets("header", "#".preg_quote('{$menu_calendar}')."#i", '{$menu_calendar} {$menu_inplaytracker} {$tracker_date}');
 
	find_replace_templatesets("member_profile", "#".preg_quote('{$awaybit}')."#i", '{$awaybit} {$inplaytracker}');
 
	find_replace_templatesets("member_profile", "#".preg_quote('{$referrals}')."#i", '{$referrals} {$inplaytracker_lastpost}');
 
	find_replace_templatesets("usercp_options", "#".preg_quote('{$board_style}')."#i", '{$inplaytrackerpm}{$board_style}');
 
	find_replace_templatesets("showthread", "#".preg_quote('<tr><td id="posts_container">')."#i", '<tr><td id="posts_container">{$inplaytracker}');
 

	
 
	$insert_array = array(
 
		'title'		=> 'newthread_inplaytracker_partners',
 
		'template'	=> $db->escape_string('<tr>
 
<td class="trow1" width="20%"><strong>{$lang->inplaytracker_partner}</strong></td>
 
<td class="trow1"><span class="smalltext">{$lang->inplaytracker_partner_desc} <input type="text" class="textbox" name="partners" id="partners" size="40" maxlength="1155" value="{$partners}" style="min-width: 347px; max-width: 100%;" /> {$lang->inplaytracker_partner_desc_2}</span> </td>
 
</tr>
 
<tr>
 
<td class="trow1" width="20%"><strong>{$lang->inplaytracker_settings}</strong></td>
 
	<td class="trow1"><select name="postorder">{$postorder_bit}</select> <select name="private">{$private_bit}</select></td>
 
</tr>
 

	
 
<link rel="stylesheet" href="{$mybb->asset_url}/jscripts/select2/select2.css?ver=1807">
 
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/select2/select2.min.js?ver=1806"></script>
 
<script type="text/javascript">
 
<!--
 
if(use_xmlhttprequest == "1")
 
{
 
    MyBB.select2();
 
    $("#partners").select2({
 
        placeholder: "{$lang->search_user}",
 
        minimumInputLength: 2,
 
        maximumSelectionSize: \'\',
 
        multiple: true,
 
        ajax: { // instead of writing the function to execute the request we use Select2\'s convenient helper
 
            url: "xmlhttp.php?action=get_users",
 
            dataType: \'json\',
 
            data: function (term, page) {
 
                return {
 
                    query: term, // search term
 
                };
 
            },
 
            results: function (data, page) { // parse the results into the format expected by Select2.
 
                // since we are using custom formatting functions we do not need to alter remote JSON data
 
                return {results: data};
 
            }
 
        },
 
        initSelection: function(element, callback) {
 
            var query = $(element).val();
 
            if (query !== "") {
 
                var newqueries = [];
 
                exp_queries = query.split(",");
 
                $.each(exp_queries, function(index, value ){
 
                    if(value.replace(/\s/g, \'\') != "")
 
                    {
 
                        var newquery = {
 
                            id: value.replace(/,\s?/g, ","),
 
                            text: value.replace(/,\s?/g, ",")
 
                        };
 
                        newqueries.push(newquery);
 
                    }
 
                });
 
                callback(newqueries);
 
            }
 
        }
 
    })
 
}
 
// -->
 
</script>'),
 
		'sid'		=> '-1',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
 
	);
 
	$db->insert_query("templates", $insert_array);
 

	
 
  $insert_array = array(
 
		'title'		=> 'newthread_inplaytracker_date',
 
		'template'	=> $db->escape_string('<tr>
 
<td class="trow1" width="20%"><strong>{$lang->inplaytracker_date}</strong></td>
 
<td class="trow1"><span class="smalltext"><select name="day">{$day_bit}</select> <select name="month">{$month_bit}</select>
 
<input type="text" name="year" value="{$year}" style="width: 55px;" /></td>
 
</tr>'),
 
		'sid'		=> '-1',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
 
	);
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
		'title'		=> 'newthread_ip_partners',
 
        'title'        => 'newthread_inplaytracker_ort',
 
        'template'    => $db->escape_string('<tr>
 
<td class="trow1" width="20%"><strong>Postpartner:</strong></td>
 
<td class="trow1"><span class="smalltext">Trenne deine Postpartner mit <strong>", "</strong> voneinander und füge deinen eigenen Namen <i>nicht</i> mit ein!<br /> <input type="text" class="textbox" name="partners" size="40" maxlength="1155" value="{$partners}" /> <br /> Für optimale Funktionsweise, fügst du bei mehreren Postpartnern die Namen in der entsprechenden Postreihenfolge ein.</span> </td>
 
<td class="trow1" width="20%"><strong>{$lang->inplaytracker_location}</strong></td>
 
<td class="trow1"><span class="smalltext"><input type="text" class="textbox" name="iport" size="40" maxlength="155" value="{$iport}" /> <br />{$lang->inplaytracker_location_desc}</span> </td>
 
</tr>'),
 
        'sid'        => '-1',
 
        'version'    => '',
 
@@ -92,10 +333,10 @@ function inplaytracker_install()
 
    $db->insert_query("templates", $insert_array);
 

	
 
		$insert_array = array(
 
		'title'		=> 'newthread_ip_date',
 
	        'title'        => 'newthread_inplaytracker_daytime',
 
	        'template'    => $db->escape_string('<tr>
 
<td class="trow1" width="20%"><strong>Inplaydatum:</strong></td>
 
<td class="trow1"><span class="smalltext"><input type="text" class="textbox" name="ipdate" size="40" maxlength="155" value="{$ipdate}" /> <br /> Die Angabe des Inplaydatums muss die <i>volle</i> Angabe des Spielmonats ausgeben (deutsch)!</span> </td>
 
	<td class="trow1" width="20%"><strong>{$lang->inplaytracker_daytime}</strong></td>
 
	<td class="trow1"><span class="smalltext"><input type="text" class="textbox" name="ipdaytime" size="40" maxlength="155" value="{$ipdaytime}" /> <br />{$lang->inplaytracker_daytime_desc}</span> </td>
 
	</tr>'),
 
	        'sid'        => '-1',
 
	        'version'    => '',
 
@@ -107,18 +348,18 @@ function inplaytracker_install()
 
		'title'		=> 'misc_inplaytracker',
 
		'template'	=> $db->escape_string('<html>
 
<head>
 
<title>{$mybb->settings[\'bbname\']} - Inplayszenen</title>
 
<title>{$mybb->settings[\'bbname\']} - {$lang->inplaytracker}</title>
 
{$headerinclude}
 
</head>
 
<body>
 
{$header}
 
<table border="0" cellspacing="{$theme[\'borderwidth\']}" cellpadding="{$theme[\'tablespace\']}" class="tborder">
 
<tr>
 
<td class="thead"><strong>Inplayszenen</strong></td>
 
<td class="thead"><strong>{$lang->inplaytracker}</strong></td>
 
</tr>
 
<tr>
 
<td class="trow1" align="center">
 
<h1><i>{$countgesamt}</i> Szenen insgesamt, <i>{$opengesamt}</i> davon offen!</h1>
 
<h1><i>{$countgesamt}</i> {$lang->inplaytracker_all_scenes}, <i>{$opengesamt}</i> {$lang->inplaytracker_open_scenes}</h1>
 
{$scenes_user}
 
</td>
 
</tr>
 
@@ -133,22 +374,22 @@ function inplaytracker_install()
 
	$db->insert_query("templates", $insert_array);
 

	
 
  $insert_array = array(
 
		'title'		=> 'misc_ip_user',
 
		'title'		=> 'misc_inplaytracker_user',
 
		'template'	=> $db->escape_string('<table border="0" cellspacing="{$theme[\'borderwidth\']}" cellpadding="5" class="tborder smalltext" style="width: 85%; margin: 10px;">
 
	<tr>
 
		<td class="tcat" colspan="3">
 
			Szenen von {$username} (insgesamt $countscenes Szenen, an der Reihe in $countactive Szenen)
 
			{$lang->inplaytracker_scenes_by} {$username} ({$lang->inplaytracker_all_scenes} <i>{$countscenes}</i>, <i>{$countactive}</i> {$lang->inplaytracker_open_scenes})
 
		</td>
 
	</tr>
 
	<tr class="trow2">
 
	<td width="20%">
 
		<strong>Nächster Post</strong>
 
		<strong>{$lang->inplaytracker_next_post}</strong>
 
	</td>
 
	<td>
 
		<strong>Szenen-Informationen</strong>
 
		<strong>{$lang->inplaytracker_scene_information}</strong>
 
	</td>
 
	<td style="width: 25%">
 
		<strong>Letzter Post</strong>
 
		<strong>{$lang->inplaytracker_last_post}</strong>
 
	</td>
 
</tr>
 
{$scenes_bit}
 
@@ -160,17 +401,17 @@ function inplaytracker_install()
 
	$db->insert_query("templates", $insert_array);
 

	
 
  $insert_array = array(
 
		'title'		=> 'misc_ip_bit',
 
		'title'		=> 'misc_inplaytracker_bit',
 
		'template'	=> $db->escape_string('<tr class="trow1">
 
	<td width="20%">
 
		{$status}
 
	</td>
 
	<td>
 
		<strong>Charaktere:</strong> {$szene[\'partners\']}<br />
 
		<strong>Inplaydatum:</strong> {$szene[\'ipdate\']}
 
		<strong>{$lang->inplaytracker_characters}</strong> {$szene[\'partners\']}<br />
 
		<strong>{$lang->inplaytracker_date}</strong> {$szene[\'ipdate\']}
 
	</td>
 
	<td style="width: 25%">
 
	<a href="showthread.php?tid={$szene[\'tid\']}&action=lastpost" target="blank">{$szene[\'subject\']}</a><br />
 
	<a href="showthread.php?tid={$szene[\'tid\']}&pid={$lastpost}#pid{$lastpost}" target="blank">{$szene[\'subject\']}</a><br />
 
	{$szene[\'lastpost\']}<br />
 
	{$szene[\'lastposter\']}
 
	</td>
 
@@ -181,9 +422,68 @@ function inplaytracker_install()
 
	);
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
		'title'		=> 'misc_inplaytracker_overview',
 
		'template'	=> $db->escape_string('<html>
 
<head>
 
<title>{$mybb->settings[\'bbname\']} - {$lang->inplaytracker}</title>
 
{$headerinclude}
 
</head>
 
<body>
 
{$header}
 
<table border="0" cellspacing="{$theme[\'borderwidth\']}" cellpadding="{$theme[\'tablespace\']}" class="tborder">
 
<tr>
 
<td class="thead"><strong>{$lang->inplaytracker}</strong></td>
 
</tr>
 
<tr>
 
<td class="trow1" align="center"><br />
 
	<table class="tborder" cellspacing="5" cellpadding="3" style="width: 95%; font-size: 11px;">
 
	<tr class="thead"><td>{$lang->inplaytracker_order_setting}</td><td>{$lang->inplaytracker_open_setting}</td></tr>
 
<form method="get" id="search_scene">
 
	<input type="hidden" name="action" value="inplay" />
 
	<tr class="trow1" align="center">
 
		<td><select name="postorder">
 
			<option value="1">{$lang->inplaytracker_order}</option>
 
			<option value="0">{$lang->inplaytracker_no_order}
 
			</option></select>
 
		</td>
 
		<td><select name="openscene">
 
			<option value="-1">{$lang->inplaytracker_closed}</option>
 
			<option value="0">{$lang->inplaytracker_halfopen}</option>
 
			<option value="1">{$lang->inplaytracker_open}</option>
 
			</select></td>
 
	</tr>
 
	<tr class="trow1" align="center"><td colspan="3"><input type="submit" class="button" value="{$lang->inplaytracker_search_scene}" /></td></tr>
 
</form>
 
</table><br />
 

	
 
	<table border="0" cellspacing="{$theme[\'borderwidth\']}" cellpadding="3" class="tborder" style="width: 95%; font-size: 11px;">
 
		<tr>
 
			<td class="tcat" colspan="3">
 
				{$lang->inplaytracker} ({$count_scenes} {$lang->inplaytracker_all_scenes})
 
			</td>
 
		</tr>
 
		<tr>
 
			<td>
 
				{$scene_bit}
 
			</td>
 
		</tr>
 
	</table><br />
 
</td>
 
</tr>
 
</table>
 
{$footer}
 
</body>
 
</html>'),
 
		'sid'		=> '-1',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
 
	);
 
	$db->insert_query("templates", $insert_array);
 

	
 
  $insert_array = array(
 
		'title'		=> 'header_inplaytracker',
 
		'template'	=> $db->escape_string('<li><a href="{$mybb->settings[\'bburl\']}/misc.php?action=scenes" class="search">Inplayszenen ({$opengesamt}/{$countgesamt})</a></li>'),
 
		'template'	=> $db->escape_string('<li><a href="{$mybb->settings[\'bburl\']}/misc.php?action=scenes" class="search">{$lang->inplaytracker_scenes} ({$opengesamt}/{$countgesamt})</a></li><li><a href="{$mybb->settings[\'bburl\']}/misc.php?action=inplay" class="search">{$lang->inplaytracker}</a></li>'),
 
		'sid'		=> '-1',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
 
@@ -195,7 +495,7 @@ function inplaytracker_install()
 
		'template'	=> $db->escape_string('<br />
 
<table border="0" cellspacing="{$theme[\'borderwidth\']}" cellpadding="5px" class="tborder tfixed">
 
<tr>
 
<td class="thead"><strong>Inplayszenen ({$inplayposts} Beiträge)</strong></td>
 
<td class="thead"><strong>{$lang->inplaytracker_scenes} ({$inplayposts} {$lang->inplaytracker_posts})</strong></td>
 
</tr>
 
<tr>
 
<td class="trow1">
 
@@ -216,7 +516,7 @@ function inplaytracker_install()
 
		'title'		=> 'member_profile_inplaytracker_bit',
 
		'template'	=> $db->escape_string('<tr class="trow1">
 
	<td><a href="showthread.php?tid=$szenen[tid]" target="blank">$szenen[subject]</a><br />
 
		<span class="smalltext">{$szenen[\'ipdate\']}<br /><i>Mitspieler</i>: {$szenen[\'partners\']}</span>
 
		<span class="smalltext">{$szenen[\'ipdate\']}<br /><i>{$lang->inplaytracker_characters}</i>: {$szenen[\'partners\']}</span>
 
	</td>
 
</tr>'),
 
		'sid'		=> '-1',
 
@@ -226,279 +526,476 @@ function inplaytracker_install()
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
		'title'		=> 'usercp_options_inplaytrackerpm',
 
		'title'		=> 'member_profile_inplaytracker_lastpost',
 
		'template'	=> $db->escape_string('<tr>
 
					<td class="trow2"><strong>{$lang->inplaytracker_last_post}:</strong></td>
 
					<td class="trow2">{$last_inplaypost}</td>
 
				</tr>'),
 
		'sid'		=> '-1',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
 
	);
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
				'title'        => 'showthread_inplaytracker',
 
				'template'    => $db->escape_string('<tr>
 
	<td valign="top" width="1"><input type="checkbox" class="checkbox" name="inplaytrackerpm" id="inplaytrackerpm" value="1" {$inplaytrackerpmcheck} /></td>
 
	<td><span class="smalltext"><label for="inplaytrackerpm">PN-Benachrichtigung bei neuen Szenen/Antworten?</label></span></td>
 
	<table cellpadding="5" cellspacing="5" width="100%">
 
<tr>
 
	<td class="tcat" colspan="2">
 
		{$lang->inplaytracker_scene_information}
 
	</td>
 
</tr>
 
<tr>
 
	<td class="trow2" style="width: 100px !important;">
 
		<strong>{$lang->inplaytracker_characters}</strong>
 
	</td>
 
	<td class="trow2">
 
		{$thread[\'partners\']}
 
	</td>
 
</tr>
 
<tr>
 
	<td class="trow2" style="width: 100px !important;">
 
		<strong>{$lang->inplaytracker_date}</strong>
 
	</td>
 
	<td class="trow2">
 
		{$thread[\'ipdate\']}
 
	</td>
 
</tr>
 
{$inplaytracker_location}
 
{$inplaytracker_daytime}
 
{$inplaytracker_openscene}
 
{$inplaytracker_order}
 
	</table>
 
</tr>'),
 
				'sid'        => '-1',
 
				'version'    => '',
 
				'dateline'    => TIME_NOW
 
		);
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
				'title'        => 'showthread_inplaytracker_location',
 
				'template'    => $db->escape_string('<tr>
 
	<td class="trow2" style="width: 120px !important;">
 
		<strong>{$lang->inplaytracker_location}</strong>
 
	</td>
 
	<td class="trow2">
 
		{$thread[\'iport\']}
 
	</td>
 
</tr>'),
 
				'sid'        => '-1',
 
				'version'    => '',
 
				'dateline'    => TIME_NOW
 
		);
 
	$db->insert_query("templates", $insert_array);
 

	
 
  rebuild_settings();
 
	$insert_array = array(
 
				'title'        => 'showthread_inplaytracker_daytime',
 
				'template'    => $db->escape_string('<tr>
 
	<td class="trow2" style="width: 120px !important;">
 
		<strong>{$lang->inplaytracker_daytime}</strong>
 
	</td>
 
	<td class="trow2">
 
		{$thread[\'ipdaytime\']}
 
	</td>
 
</tr>'),
 
				'sid'        => '-1',
 
				'version'    => '',
 
				'dateline'    => TIME_NOW
 
		);
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
				'title'        => 'showthread_inplaytracker_halfopenscene',
 
				'template'    => $db->escape_string('<tr>
 
	<td class="trow2" style="width: 100px !important;">
 
		<i class="fa fa-ticket" aria-hidden="true"></i> <strong>{$lang->inplaytracker_halfopen}</strong>
 
	</td>
 
	<td class="trow2">
 
		{$lang->inplaytracker_scene_halfopen}
 
	</td>
 
</tr>'),
 
				'sid'        => '-1',
 
				'version'    => '',
 
				'dateline'    => TIME_NOW
 
		);
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
				'title'        => 'showthread_inplaytracker_openscene',
 
				'template'    => $db->escape_string('<tr>
 
	<td class="trow2" style="width: 100px !important;">
 
		<i class="fa fa-ticket" aria-hidden="true"></i> <strong>{$lang->inplaytracker_open}</strong>
 
	</td>
 
	<td class="trow2">
 
		{$lang->inplaytracker_scene_open} <a href="misc.php?action=add_partner&tid={$thread[\'tid\']}&uid={$mybb->user[\'uid\']}">{$lang->inplaytracker_add_partner}</a>
 
	</td>
 
</tr>'),
 
				'sid'        => '-1',
 
				'version'    => '',
 
				'dateline'    => TIME_NOW
 
		);
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
				'title'        => 'showthread_inplaytracker_order',
 
				'template'    => $db->escape_string('<tr>
 
	<td class="trow2" style="width: 100px !important;">
 
		<i class="fa fa-ticket" aria-hidden="true"></i> <strong>{$lang->inplaytracker_no_order}</strong>
 
	</td>
 
	<td class="trow2">
 
		{$lang->inplaytracker_scene_no_order}</a>
 
	</td>
 
</tr>'),
 
				'sid'        => '-1',
 
				'version'    => '',
 
				'dateline'    => TIME_NOW
 
		);
 
	$db->insert_query("templates", $insert_array);
 

	
 
}
 

	
 
function inplaytracker_is_installed()
 
{
 
  global $db;
 
  if($db->field_exists("partners", "threads"))
 
function inplaytracker_deactivate()
 
{
 
      return true;
 
  }
 
  return false;
 
  global $db, $mybb;
 

	
 
  // Variablen entfernen
 
  include MYBB_ROOT."/inc/adminfunctions_templates.php";
 
	find_replace_templatesets("newthread", "#".preg_quote('{$tracker_partners} {$tracker_date}')."#i", '', 0);
 
	find_replace_templatesets("newthread", "#".preg_quote('{$tracker_ort}')."#i", '', 0);
 
	find_replace_templatesets("newthread", "#".preg_quote('{$tracker_daytime}')."#i", '', 0);
 
	find_replace_templatesets("editpost", "#".preg_quote('{$tracker_partners} {$tracker_date}')."#i", '', 0);
 
	find_replace_templatesets("editpost", "#".preg_quote('{$tracker_ort}')."#i", '', 0);
 
	find_replace_templatesets("editpost", "#".preg_quote('{$tracker_daytime}')."#i", '', 0);
 
  find_replace_templatesets("header", "#".preg_quote('{$menu_inplaytracker}')."#i", '', 0);
 
  find_replace_templatesets("member_profile", "#".preg_quote('{$inplaytracker}')."#i", '', 0);
 
  find_replace_templatesets("member_profile", "#".preg_quote('{$inplaytracker_lastpost}')."#i", '', 0);
 
	find_replace_templatesets("usercp_options", "#".preg_quote('{$inplaytrackerpm}')."#i", '', 0);
 
	find_replace_templatesets("showthread", "#".preg_quote('{$inplaytracker}')."#i", '', 0);
 

	
 
	// Templates entfernen
 
  $db->delete_query("templates", "title LIKE '%inplaytracker%'");
 
}
 

	
 
function inplaytracker_uninstall()
 
function inplaytracker_newthread()
 
{
 
  global $db;
 
  global $mybb, $lang, $templates, $post_errors, $forum, $thread, $tracker_partners, $tracker_date, $tracker_ort, $tracker_daytime;
 
	$lang->load('inplaytracker');
 

	
 
  // Tabellen entfernen
 
	if($db->field_exists("partners", "threads"))
 
  $inplaykategorie = $mybb->settings['inplaytracker_forum'];
 

	
 
	$forum['parentlist'] = ",".$forum['parentlist'].",";
 
	if(preg_match("/,$inplaykategorie,/i", $forum['parentlist'])) {
 
		if(isset($mybb->input['previewpost']) || $post_errors)
 
	 	{
 
    $db->drop_column("threads", "partners");
 
  }
 
  if($db->field_exists("partners", "posts"))
 
  {
 
    $db->drop_column("posts", "partners");
 
  }
 
  if($db->field_exists("ipdate", "threads"))
 
  {
 
    $db->drop_column("threads", "ipdate");
 
  }
 
  if($db->field_exists("ipdate", "posts"))
 
  {
 
    $db->drop_column("posts", "ipdate");
 
			$partners = htmlspecialchars_uni($mybb->get_input('partners'));
 
		  $ipdate = htmlspecialchars_uni($mybb->get_input('ipdate'));
 
			$iport = htmlspecialchars_uni($mybb->get_input('iport'));
 
			$ipdaytime = htmlspecialchars_uni($mybb->get_input('ipdaytime'));
 
	 	}
 
	if($db->field_exists("inplaytrackerpm", "users"))
 
	 	else
 
	 	{
 
		$db->drop_column("users", "inplaytrackerpm");
 
		  $partners = htmlspecialchars_uni($thread['partners']);
 
		  $ipdate = htmlspecialchars_uni($thread['ipdate']);
 
			$iport = htmlspecialchars_uni($thread['iport']);
 
			$ipdaytime = htmlspecialchars_uni($thread['ipdaytime']);
 
	 	}
 

	
 
  // Einstellungen entfernen
 
  $db->delete_query('settings', "name IN ('inplaytracker_forum', 'inplaytracker_archiv')");
 
  $db->delete_query('settinggroups', "name = 'inplaytracker'");
 

	
 
  rebuild_settings();
 

	
 
  // Templates entfernen
 
  $db->delete_query("templates", "title IN('newthread_ip_partners', 'newthread_ip_date', 'misc_inplaytracker', 'misc_ip_user', 'misc_ip_bit', 'header_inplaytracker', 'member_profile_inplaytracker', 'member_profile_inplaytracker_bit', 'usercp_options_inplaytrackerpm')");
 

	
 
	 	for($i = 1 ; $i < 32 ; $i++) {
 
		 	$day_bit .= "<option value=\"$i\">$i</option>";
 
	 	}
 

	
 
function inplaytracker_activate()
 
{
 
  global $db, $mybb;
 
		if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
	 		$months = array(
 
 				"january" => "Januar",
 
 				"february" => "Februar",
 
 				"march" => "März",
 
 				"april" => "April",
 
 				"may" => "Mai",
 
 				"june" => "Juni",
 
 				"july" => "Juli",
 
 				"august" => "August",
 
 				"september" => "September",
 
 				"october" => "Oktober",
 
 				"november" => "November",
 
 				"december" => "Dezember"
 
 			);
 

	
 
	// PM-Feld einfügen
 
	if(!$db->field_exists("inplaytrackerpm", "users"))
 
  {
 
    $db->query("ALTER TABLE `".TABLE_PREFIX."users` ADD `inplaytrackerpm` int(11) NOT NULL;");
 
			foreach($months as $key => $month) {
 
				$month_bit .= "<option value=\"$key\">$month</option>";
 
			}
 

	
 
  // Variablen einfügen
 
  include MYBB_ROOT."/inc/adminfunctions_templates.php";
 
	find_replace_templatesets("newthread", "#".preg_quote('{$loginbox}')."#i", '{$loginbox} {$tracker_partners} {$tracker_date}');
 
	find_replace_templatesets("editpost", "#".preg_quote('{$loginbox}')."#i", '{$loginbox} {$tracker_partners} {$tracker_date}');
 
	find_replace_templatesets("header", "#".preg_quote('{$menu_calendar}')."#i", '{$menu_calendar} {$menu_inplaytracker} {$tracker_date}');
 
	find_replace_templatesets("member_profile", "#".preg_quote('</fieldset>')."#i", '</fieldset> {$inplaytracker}');
 
	find_replace_templatesets("usercp_options", "#".preg_quote('{$board_style}')."#i", '{$inplaytrackerpm}{$board_style}');
 
		}
 

	
 
function inplaytracker_deactivate()
 
{
 
  global $db, $mybb;
 

	
 
  // Variablen entfernen
 
  include MYBB_ROOT."/inc/adminfunctions_templates.php";
 
  find_replace_templatesets("newthread", "#".preg_quote('{$tracker_partners} {$tracker_date}')."#i", '', 0);
 
  find_replace_templatesets("editpost", "#".preg_quote('{$tracker_partners} {$tracker_date}')."#i", '', 0);
 
  find_replace_templatesets("header", "#".preg_quote('{$menu_inplaytracker}')."#i", '', 0);
 
  find_replace_templatesets("member_profile", "#".preg_quote('{$inplaytracker}')."#i", '', 0);
 
	find_replace_templatesets("usercp_options", "#".preg_quote('{$inplaytrackerpm}')."#i", '', 0);
 
		else {
 
			$months = explode(", ", $mybb->settings['inplaytracker_months']);
 
			foreach($months as $month) {
 
				$month_bit .= "<option value=\"$month\">$month</option>";
 
			}
 
		}
 

	
 
function inplaytracker_newthread()
 
{
 
  global $mybb, $templates, $post_errors, $forum, $thread, $tracker_partners, $tracker_date;
 

	
 
  $inplaykategorie = $mybb->settings['inplaytracker_forum'];
 
		$private = array("-1" => "{$lang->inplaytracker_closed}", "0" => "{$lang->inplaytracker_halfopen}", "1" => "{$lang->inplaytracker_open}");
 
		foreach($private as $key => $value) {
 
			$private_bit .= "<option value=\"$key\">$value</option>";
 
		}
 
		$postorder = array("1" => "{$lang->inplaytracker_order}", "0" => "{$lang->inplaytracker_no_order}");
 
		foreach($postorder as $key => $value) {
 
			$postorder_bit .= "<option value=\"$key\">$value</option>";
 
		}
 

	
 
	$forum['parentlist'] = ",".$forum['parentlist'].",";
 
	if(preg_match("/,$inplaykategorie,/i", $forum['parentlist'])) {
 
	 if(isset($mybb->input['previewpost']) || $post_errors)
 
	 	eval("\$tracker_partners = \"".$templates->get("newthread_inplaytracker_partners")."\";");
 
	 	eval("\$tracker_date = \"".$templates->get("newthread_inplaytracker_date")."\";");
 
	 	if($mybb->settings['inplaytracker_location'] == "1")
 
	 	{
 
		  $partners = htmlspecialchars_uni($mybb->get_input('partners'));
 
		  $ipdate = htmlspecialchars_uni($mybb->get_input('ipdate'));
 
	 		eval("\$tracker_ort = \"".$templates->get("newthread_inplaytracker_ort")."\";");
 
	  }
 
	 else
 
		if($mybb->settings['inplaytracker_daytime'] == "1")
 
	 	{
 
		  $partners = htmlspecialchars_uni($thread['partners']);
 
		  $ipdate = htmlspecialchars_uni($thread['ipdate']);
 
	 		eval("\$tracker_daytime = \"".$templates->get("newthread_inplaytracker_daytime")."\";");
 
	  }
 
	 eval("\$tracker_partners = \"".$templates->get("newthread_ip_partners")."\";");
 
	 eval("\$tracker_date = \"".$templates->get("newthread_ip_date")."\";");
 
  }
 
}
 

	
 
function inplaytracker_do_newthread()
 
{
 
	global $db, $mybb, $tid, $pmhandler, $pm, $pminfo, $forum;
 
	global $db, $mybb, $lang, $tid, $pmhandler, $pm, $pminfo, $forum, $partners_new, $partner_uid;
 
	$lang->load('inplaytracker');
 

	
 
  $username = $mybb->user['username'];
 
  $ownuid = $mybb->user['uid'];
 
	$partners = $mybb->get_input('partners');
 
	$inplaykategorie = $mybb->settings['inplaytracker_forum'];
 

	
 
	$forum['parentlist'] = ",".$forum['parentlist'].",";
 

	
 
	if(preg_match("/,$inplaykategorie,/i", $forum['parentlist'])) {
 
		$partners_new = explode(",", $mybb->get_input('partners'));
 
		$partners_new = array_map("trim", $partners_new);
 
		$partner_uids = array();
 
		foreach($partners_new as $partner) {
 
			$db->escape_string($partner);
 
			$partner_uid = $db->fetch_field($db->query("SELECT uid FROM ".TABLE_PREFIX."users WHERE username = '$partner'"), "uid");
 
			$partner_uids[] = $partner_uid;
 
		}
 
		$partner_uids_imp = implode(",", $partner_uids);
 
		if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
			$ipdate = strtotime($mybb->get_input('day')." ".$mybb->get_input('month')." ".$mybb->get_input('year'));
 
		}
 
		else {
 
			$ipdate = $mybb->get_input('day')." ".$mybb->get_input('month')." ".$mybb->get_input('year');
 
		}
 

	
 
		$new_record = array(
 
		"partners" => $username.", ".$db->escape_string($mybb->get_input('partners')),
 
    "ipdate" => $db->escape_string($mybb->input['ipdate'])
 
			"partners" => $ownuid.",".$partner_uids_imp,
 
    	"ipdate" => $ipdate,
 
			"iport" => $db->escape_string($mybb->input['iport']),
 
			"ipdaytime" => $db->escape_string($mybb->input['ipdaytime']),
 
			"openscene" => (int)$mybb->input['private'],
 
			"postorder" => (int)$mybb->input['postorder'],
 
		);
 
		$db->update_query("threads", $new_record, "tid='{$tid}'");
 

	
 
  $tags = explode(", ", $partners);
 
	foreach($tags as $tag) {
 
		$partneruid = $db->fetch_field($db->query("SELECT uid FROM ".TABLE_PREFIX."users WHERE username = '$tag'"), "uid");
 
		$subject = "Neue Szene eröffnet!";
 
    $message = "Hi! Ich habe dir soeben eine neue Szene eröffnet! Du findest sie <a href=\"showthread.php?tid={$tid}\">hier</a>!";
 
  	$fromid = $ownuid;
 
		if(class_exists('MybbStuff_MyAlerts_AlertTypeManager')) {
 
			foreach($partner_uids as $tag) {
 
				$alertType = MybbStuff_MyAlerts_AlertTypeManager::getInstance()->getByCode('inplaytracker_newthread');
 
	    	if ($alertType != NULL && $alertType->getEnabled() && $ownuid != $tag) {
 
					$alert = new MybbStuff_MyAlerts_Entity_Alert((int)$tag, $alertType, (int)$tid);
 
	    	MybbStuff_MyAlerts_AlertManager::getInstance()->addAlert($alert);
 
				}
 
			}
 
		}
 
	}
 
}
 

	
 
    require_once MYBB_ROOT . "inc/datahandlers/pm.php";
 
    $pmhandler = new PMDataHandler();
 
function inplaytracker_editpost()
 
{
 
  global $mybb, $lang, $templates, $post_errors, $forum, $thread, $pid, $tracker_partners, $tracker_date, $tracker_ort, $tracker_daytime;
 
	$lang->load('inplaytracker');
 

	
 
    $pm = array(
 
        "subject" => $subject,
 
        "message" => $message,
 
        "fromid" => $fromid,
 
        "toid" => $partneruid
 
    );
 
  $inplaykategorie = $mybb->settings['inplaytracker_forum'];
 

	
 
		$pmcheck = $db->fetch_field($db->query("SELECT inplaytrackerpm FROM ".TABLE_PREFIX."users where uid = '$partneruid'"), "inplaytrackerpm");
 
	$forum['parentlist'] = ",".$forum['parentlist'].",";
 
	if(preg_match("/,$inplaykategorie,/i", $forum['parentlist'])) {
 
    $pid = $mybb->get_input('pid', MyBB::INPUT_INT);
 
  	if($thread['firstpost'] == $pid) {
 
	  	if(isset($mybb->input['previewpost']) || $post_errors) {
 
		  	$partners = htmlspecialchars_uni($mybb->get_input('partners'));
 
				if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
        	$ipdate = strtotime($mybb->get_input('day')." ".$mybb->get_input('month')." ".$mybb->get_input('year'));
 
				}
 
				$iport = htmlspecialchars_uni($mybb->get_input('iport'));
 
				$ipdaytime = htmlspecialchars_uni($mybb->get_input('ipdaytime'));
 
	   	}
 
	   	else
 
	   	{
 
				$tags = explode(",", $thread['partners']);
 
				$usernames = array();
 
				foreach($tags as $tag) {
 
					$tagged_user = get_user($tag);
 
					$usernames[] = $tagged_user['username'];
 
				}
 
				$usernames = implode(",", $usernames);
 
		    $partners = $usernames;
 
		    $ipdate = htmlspecialchars_uni($thread['ipdate']);
 
				$iport = htmlspecialchars_uni($thread['iport']);
 
				$ipdaytime = htmlspecialchars_uni($thread['ipdaytime']);
 
	   	}
 

	
 
			if($pmcheck == "1") {
 
		if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
		 		for($i = 1 ; $i < 32 ; $i++) {
 
					$checked_day = "";
 
			 		$active_day = date("j", $ipdate);
 
			 		if($active_day == $i) {
 
				 		$checked_day = "selected=\"selected\"";
 
			 		}
 
			 		$day_bit .= "<option value=\"$i\" {$checked_day}>$i</option>";
 
		 		}
 

	
 
    $pmhandler->set_data($pm);
 
		 		$months = array(
 
					"January" => "Januar",
 
					"February" => "Februar",
 
					"March" => "März",
 
					"April" => "April",
 
					"May" => "Mai",
 
					"June" => "Juni",
 
					"July" => "Juli",
 
					"August" => "August",
 
					"September" => "September",
 
					"October" => "Oktober",
 
					"November" => "November",
 
					"December" => "Dezember"
 
				);
 

	
 
    // Now let the pm handler do all the hard work.
 
    if (!$pmhandler->validate_pm()) {
 
        $pm_errors = $pmhandler->get_friendly_errors();
 
				foreach($months as $key => $month) {
 
					$checked_month = "";
 
					$active_month = date("F", $ipdate);
 
					if($active_month == $key) {
 
						$checked_month = "selected=\"selected\"";
 
					}
 
					$month_bit .= "<option value=\"$key\" {$checked_month}>$month</option>";
 
				}
 

	
 
				$year = date("Y", $ipdate);
 
			}
 
			else {
 
        $pminfo = $pmhandler->insert_pm();
 
				for($i = 1 ; $i < 32 ; $i++) {
 
					$checked_day = "";
 
					$active_day = $mybb->get_input('day');
 
					if($active_day == $i) {
 
						$checked_day = "selected=\"selected\"";
 
					}
 

	
 
					$day_bit .= "<option value=\"$i\" {$checked_day}>$i</option>";
 
				}
 

	
 
				$months = explode(", ", $mybb->settings['inplaytracker_months']);
 
				foreach($months as $month) {
 
					$checked_month = "";
 
					$active_month = $mybb->get_input('month');
 
					if($active_month == $month) {
 
						$checked_month = "selected=\"selected\"";
 
					}
 
					$month_bit .= "<option value=\"$month\" {$checked_month}>$month</option>";
 
				}
 

	
 
				$year = $mybb->get_input('year');
 
			}
 

	
 
			$private = array("-1" => "{$lang->inplaytracker_closed}", "0" => "{$lang->inplaytracker_halfopen}", "1" => "{$lang->inplaytracker_open}");
 
			foreach($private as $key => $value) {
 
				$checked = "";
 
				if($thread['openscene'] == $key) {
 
					$checked = "selected=\"selected\"";
 
				}
 
				$private_bit .= "<option value=\"$key\" {$checked}>$value</option>";
 
			}
 

	
 
function inplaytracker_editpost()
 
{
 
  global $mybb, $templates, $post_errors, $forum, $thread, $pid, $tracker_partners, $tracker_date;
 
			$postorder = array("1" => "{$lang->inplaytracker_order}","0" => "{$lang->inplaytracker_no_order}");
 
			foreach($postorder as $key => $value) {
 
				$checked = "";
 
				if($thread['postorder'] == $key) {
 
					$checked = "selected=\"selected\"";
 
				}
 
				$postorder_bit .= "<option value=\"$key\" {$checked}>$value</option>";
 
			}
 

	
 
  $inplaykategorie = $mybb->settings['inplaytracker_forum'];
 

	
 
	$forum['parentlist'] = ",".$forum['parentlist'].",";
 
	if(preg_match("/,$inplaykategorie,/i", $forum['parentlist'])) {
 
    $pid = $mybb->get_input('pid', MyBB::INPUT_INT);
 
  	if($thread['firstpost'] == $pid)
 
    {
 
	   if(isset($mybb->input['previewpost']) || $post_errors)
 
	   {
 
		    $partners = htmlspecialchars_uni($mybb->get_input('partners'));
 
        $ipdate = htmlspecialchars_uni($mybb->get_input('ipdate'));
 
	  	eval("\$tracker_partners = \"".$templates->get("newthread_inplaytracker_partners")."\";");
 
 	  	eval("\$tracker_date = \"".$templates->get("newthread_inplaytracker_date")."\";");
 
			if($mybb->settings['inplaytracker_location'] == "1") {
 
				eval("\$tracker_ort = \"".$templates->get("newthread_inplaytracker_ort")."\";");
 
			}
 
	   else
 
	   {
 
		    $partners = htmlspecialchars_uni($thread['partners']);
 
		    $ipdate = htmlspecialchars_uni($thread['ipdate']);
 
			if($mybb->settings['inplaytracker_daytime'] == "1") {
 
				eval("\$tracker_daytime = \"".$templates->get("newthread_inplaytracker_daytime")."\";");
 
			}
 
	   eval("\$tracker_partners = \"".$templates->get("newthread_ip_partners")."\";");
 
 	   eval("\$tracker_date = \"".$templates->get("newthread_ip_date")."\";");
 
  	}
 
	}
 
}
 

	
 
function inplaytracker_do_editpost()
 
{
 
    global $db, $mybb, $tid, $pid, $thread;
 
    global $db, $mybb, $tid, $pid, $thread, $partners_new, $partner_uid;
 

	
 
    if($pid != $thread['firstpost']) {
 
			return;
 
		}
 

	
 
    if ($pid != $thread['firstpost']) return;
 
		$partners_new = explode(",", $mybb->get_input('partners'));
 
		$partners_new = array_map("trim", $partners_new);
 
		$partner_uids = array();
 
		foreach($partners_new as $partner) {
 
			$db->escape_string($partner);
 
			$partner_uid = $db->fetch_field($db->query("SELECT uid FROM ".TABLE_PREFIX."users WHERE username = '$partner'"), "uid");
 
			$partner_uids[] = $partner_uid;
 
		}
 
		$partner_uids = implode(",", $partner_uids);
 
		if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
			$ipdate = strtotime($mybb->input['day']." ".$mybb->input['month']." ".$mybb->input['year']);
 
		}
 
		else {
 
			$ipdate = $mybb->input['day']." ".$mybb->input['month']." ".$mybb->input['year'];
 
		}
 

	
 
    $new_record = array(
 
        "partners" => $db->escape_string($mybb->input['partners']),
 
        "ipdate" => $db->escape_string($mybb->input['ipdate'])
 
        "partners" => $partner_uids,
 
        "ipdate" => $ipdate,
 
				"iport" => $db->escape_string($mybb->input['iport']),
 
				"ipdaytime" => $db->escape_string($mybb->input['ipdaytime']),
 
				"openscene" => (int)$mybb->input['private'],
 
				"postorder" => (int)$mybb->input['postorder'],
 
    );
 
    $db->update_query("threads", $new_record, "tid='{$tid}'");
 
}
 

	
 
function inplaytracker_do_newreply()
 
{
 
	global $db, $mybb, $username, $pmhandler, $pm, $pminfo, $thread, $forum;
 
	global $db, $mybb, $lang, $username, $pmhandler, $pm, $pminfo, $thread, $forum;
 
	$lang->load('inplaytracker');
 

	
 
  $username = $mybb->user['username'];
 
  $ownuid = $mybb->user['uid'];
 
	$partners = $thread['partners'];
 
	$inplaykategorie = $mybb->settings['inplaytracker_forum'];
 

	
 
	$last_post = $db->fetch_field($db->query("SELECT pid FROM ".TABLE_PREFIX."posts WHERE tid = '$thread[tid]' ORDER BY pid DESC LIMIT 1"), "pid");
 
	$forum['parentlist'] = ",".$forum['parentlist'].",";
 
	if(preg_match("/,$inplaykategorie,/i", $forum['parentlist'])) {
 

	
 
		$fromid = $ownuid;
 
		$tags = explode(",", $partners);
 
		if (class_exists('MybbStuff_MyAlerts_AlertTypeManager')) {
 
			foreach($tags as $tag) {
 
		$partneruid = $db->fetch_field($db->query("SELECT uid FROM ".TABLE_PREFIX."users WHERE username = '$tag'"), "uid");
 
		$subject = "Antwort auf $thread[subject]!";
 
		$message = "Hi! Ich habe so eben eine Antwort auf <a href=\"showthread.php?tid={$thread[tid]}\">unsere Szene</a> veröffentlicht!";
 
		$fromid = $ownuid;
 

	
 
		require_once MYBB_ROOT . "inc/datahandlers/pm.php";
 
		$pmhandler = new PMDataHandler();
 

	
 
		$pm = array(
 
				"subject" => $subject,
 
				"message" => $message,
 
				"fromid" => $fromid,
 
				"toid" => $partneruid
 
		);
 

	
 
		$pmcheck = $db->fetch_field($db->query("SELECT inplaytrackerpm FROM ".TABLE_PREFIX."users where uid = '$partneruid'"), "inplaytrackerpm");
 

	
 
			if($pmcheck == "1") {
 

	
 
		$pmhandler->set_data($pm);
 

	
 
		// Now let the pm handler do all the hard work.
 
		if (!$pmhandler->validate_pm()) {
 
				$pm_errors = $pmhandler->get_friendly_errors();
 
		}
 
		else {
 

	
 
				if ($tag != $username) {
 
				$pminfo = $pmhandler->insert_pm();
 
				$alertType = MybbStuff_MyAlerts_AlertTypeManager::getInstance()->getByCode('inplaytracker_newreply');
 
	    	if ($alertType != NULL && $alertType->getEnabled() && $ownuid != $tag) {
 
					$alert = new MybbStuff_MyAlerts_Entity_Alert((int)$tag, $alertType, (int)$thread['tid']);
 
					$alert->setExtraDetails([
 
						'subject' => $thread['subject'],
 
						'lastpost' => $last_post
 
					]);
 
	    		MybbStuff_MyAlerts_AlertManager::getInstance()->addAlert($alert);
 
				}
 
			}
 

	
 
		}
 

	
 
	}
 

	
 
}
 

	
 
}
 

	
 
function inplaytracker_forumdisplay(&$thread)
 
{
 
  global $db, $mybb, $thread, $foruminfo;
 
  global $db, $lang, $mybb, $thread, $foruminfo;
 
	$lang->load('inplaytracker');
 

	
 
  $inplaykategorie = $mybb->settings['inplaytracker_forum'];
 
  $inplayarchiv = $mybb->settings['inplaytracker_archiv'];
 
@@ -506,223 +1003,531 @@ function inplaytracker_forumdisplay(&$thread)
 
	$foruminfo['parentlist'] = ",".$foruminfo['parentlist'].",";
 
	if(preg_match("/,$inplaykategorie,/i", $foruminfo['parentlist']) OR preg_match("/,$inplayarchiv,/i", $foruminfo['parentlist']) ) {
 
  	$partners = explode(",", $thread['partners']);
 
  $partnerusers = "";
 
  	$partnerusers = array();
 
  	foreach ($partners as $partner) {
 
    $uid = $db->fetch_field($db->query("SELECT uid FROM ".TABLE_PREFIX."users WHERE username = '$partner'"), "uid");
 
    $taguser = build_profile_link($partner, $uid);
 
    $partnerusers .= " $taguser "."##";
 
    	$charakter = get_user($partner);
 
	  	$taguser = build_profile_link($charakter['username'], $partner);
 
    	$partnerusers[] = $taguser;
 
  	}
 
		$partnerusers = implode(" &raquo; ", $partnerusers);
 
		if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
			$ipdate = date("d.m.Y", $thread['ipdate']);
 
		}
 
		else {
 
			$ipdate = $thread['ipdate'];
 
		}
 
		if($mybb->settings['inplaytracker_location'] == "1") {
 
			$thread['profilelink'] =  "<b>{$lang->inplaytracker_characters}:</b> $partnerusers <br /> <b>{$lang->inplaytracker_date}:</b> $ipdate <br /> <b>{$lang->inplaytracker_location}:</b> $thread[iport]";
 
		}
 
		if($mybb->settings['inplaytracker_daytime'] == "1") {
 
			$thread['profilelink'] =  "<b>{$lang->inplaytracker_characters}:</b> $partnerusers <br /> <b>{$lang->inplaytracker_date}:</b> $ipdate <br /> <b>{$lang->inplaytracker_daytime}:</b> $thread[ipdaytime]";
 
		}
 
		if($mybb->settings['inplaytracker_location'] == "1" && $mybb->settings['inplaytracker_daytime']) {
 
			$thread['profilelink'] =  "<b>{$lang->inplaytracker_characters}:</b> $partnerusers <br /> <b>{$lang->inplaytracker_date}:</b> $ipdate <br /> <b>{$lang->inplaytracker_location}:</b> $thread[iport] <br /> <b>{$lang->inplaytracker_daytime}:</b> $thread[ipdaytime]";
 
		}
 
		else {
 
  		$thread['profilelink'] =  "<b>{$lang->inplaytracker_characters}:</b> $partnerusers <br /> <b>{$lang->inplaytracker_date}:</b> $ipdate";
 
		}
 
  $thread['profilelink'] =  "<b>Charaktere:</b> $partnerusers <br /> <b>Inplaydatum:</b> $thread[ipdate]";
 
  	return $thread;
 
  }
 
}
 

	
 
function inplaytracker_misc()
 
{
 
  global $mybb, $db, $templates, $headerinclude, $header, $footer, $scenes_bit, $scenes_user;
 
  global $mybb, $db, $lang, $templates, $headerinclude, $header, $footer, $scenes_bit, $scenes_user;
 
	$lang->load('inplaytracker');
 

	
 
  $mybb->input['action'] = $mybb->get_input('action');
 

	
 
  if($mybb->input['action'] == "scenes") {
 

	
 
	if($mybb->input['action'] == "inplay") {
 
		$postorder = $mybb->get_input('postorder');
 
		$openscene = $mybb->get_input('openscene');
 
		$ipforum = $mybb->settings['inplaytracker_forum'];
 
    $email = $mybb->user['email'];
 
		if(empty($postorder) && $postorder != "0") {
 
			$postorder = "%";
 
		}
 
		if(empty($openscene) && $openscene != "0") {
 
			$openscene = "%";
 
		}
 
		$private = array("-1" => "{$lang->inplaytracker_closed}", "0" => "{$lang->inplaytracker_halfopen}", "1" => "{$lang->inplaytracker_open}");
 
		$order = array("0" => "{$lang->inplaytracker_no_order}", "1" => "{$lang->inplaytracker_order}",);
 
		if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
			$query = $db->query("SELECT *, ".TABLE_PREFIX."threads.lastpost, ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.iport, ".TABLE_PREFIX."threads.postorder, ".TABLE_PREFIX."threads.openscene, ".TABLE_PREFIX."threads.ipdaytime, ".TABLE_PREFIX."threads.subject, ".TABLE_PREFIX."threads.lastposter, ".TABLE_PREFIX."threads.ipdate, ".TABLE_PREFIX."threads.lastposteruid FROM ".TABLE_PREFIX."threads
 
			LEFT JOIN ".TABLE_PREFIX."posts ON ".TABLE_PREFIX."threads.lastpost = ".TABLE_PREFIX."posts.dateline
 
			LEFT JOIN ".TABLE_PREFIX."forums ON ".TABLE_PREFIX."threads.fid = ".TABLE_PREFIX."forums.fid
 
			WHERE ".TABLE_PREFIX."forums.parentlist LIKE '$ipforum,%'
 
			AND ".TABLE_PREFIX."threads.partners != ''
 
			AND ".TABLE_PREFIX."threads.postorder LIKE '$postorder'
 
			AND ".TABLE_PREFIX."threads.openscene LIKE '$openscene'
 
			ORDER by ".TABLE_PREFIX."threads.ipdate");
 
			$count_scenes = mysqli_num_rows($query);
 
			while($szene = $db->fetch_array($query)) {
 
				$status = "";
 
				$partners = explode(",", $szene['partners']);
 
				$partnerusers = array();
 
				foreach ($partners as $partner) {
 
					$charakter = get_user($partner);
 
					$taguser = build_profile_link($charakter['username'], $partner);
 
					$partnerusers[] = $taguser;
 
				}
 
				$szene['partners'] = implode(" &raquo; ", $partnerusers);
 
				if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
					$szene['ipdate'] = date("d.m.Y", $szene['ipdate']);
 
				}
 
				$szene['lastpost'] = my_date('relative', $szene['lastpost']);
 
				if(my_strlen($szene['subject']) > 35) {
 
					$szene['subject'] = my_substr($szene['subject'], 0, 35)."...";
 
				}
 
				$status = $private[$szene[openscene]];
 
				$status .= "<br />".$order[$szene[postorder]];
 
				$lastpost = $db->fetch_field($db->query("SELECT pid FROM ".TABLE_PREFIX."posts WHERE tid = '$szene[tid]' ORDER BY pid DESC LIMIT 1"), "pid");
 
				eval("\$scene_bit .= \"".$templates->get("misc_inplaytracker_bit")."\";");
 
			}
 
		}
 
		else {
 
			$months = explode(", ", $mybb->settings['inplaytracker_months']);
 
			$count_scenes = "0";
 
			foreach($months as $month) {
 
				$query = $db->query("SELECT *, ".TABLE_PREFIX."threads.lastpost, ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.iport, ".TABLE_PREFIX."threads.postorder, ".TABLE_PREFIX."threads.ipdaytime, ".TABLE_PREFIX."threads.subject, ".TABLE_PREFIX."threads.lastposter, ".TABLE_PREFIX."threads.ipdate, ".TABLE_PREFIX."threads.lastposteruid FROM ".TABLE_PREFIX."threads
 
				LEFT JOIN ".TABLE_PREFIX."posts ON ".TABLE_PREFIX."threads.lastpost = ".TABLE_PREFIX."posts.dateline
 
				LEFT JOIN ".TABLE_PREFIX."forums ON ".TABLE_PREFIX."threads.fid = ".TABLE_PREFIX."forums.fid
 
				WHERE ".TABLE_PREFIX."forums.parentlist LIKE '$ipforum,%'
 
				AND ".TABLE_PREFIX."threads.partners != ''
 
				AND ".TABLE_PREFIX."threads.postorder LIKE '$postorder'
 
				AND ".TABLE_PREFIX."threads.openscene LIKE '$openscene'
 
				AND ".TABLE_PREFIX."threads.ipdate LIKE '%$month%'
 
				ORDER by CAST(".TABLE_PREFIX."threads.ipdate AS signed)");
 
				while($szene = $db->fetch_array($query)) {
 
					$count_scenes++;
 
					$partners = explode(",", $szene['partners']);
 
					$partnerusers = array();
 
					foreach ($partners as $partner) {
 
						$charakter = get_user($partner);
 
						$taguser = build_profile_link($charakter['username'], $partner);
 
						$partnerusers[] = $taguser;
 
					}
 
					$szene['partners'] = implode(" &raquo; ", $partnerusers);
 
					$szene['lastpost'] = my_date('relative', $szene['lastpost']);
 
					if(my_strlen($szene['subject']) > 35) {
 
						$szene['subject'] = my_substr($szene['subject'], 0, 35)."...";
 
					}
 
					$private = array("-1" => "{$lang->inplaytracker_closed}", "0" => "{$lang->inplaytracker_halfopen}", "1" => "{$lang->inplaytracker_open}");
 
					$status = $private[$szene[openscene]];
 
					$order = array("0" => "{$lang->inplaytracker_no_order}", "1" => "{$lang->inplaytracker_order}",);
 
					$status .= "<br />".$order[$szene[postorder]];
 
					$lastpost = $db->fetch_field($db->query("SELECT pid FROM ".TABLE_PREFIX."posts WHERE tid = '$szene[tid]' ORDER BY pid DESC LIMIT 1"), "pid");
 
					eval("\$scene_bit .= \"".$templates->get("misc_inplaytracker_bit")."\";");
 
				}
 
			}
 
		}
 
		eval("\$page = \"".$templates->get("misc_inplaytracker_overview")."\";");
 
		output_page($page);
 
	}
 

	
 
		$query = $db->query("SELECT username FROM ".TABLE_PREFIX."users WHERE ".TABLE_PREFIX."users.email = '$email' ORDER By ".TABLE_PREFIX."users.username ASC");
 
	if($mybb->input['action'] == "add_partner") {
 
		$uid = $mybb->get_input('uid');
 
		$tid = $mybb->get_input('tid');
 
		$thread = get_thread($tid);
 
		$partners = explode(",", $thread['partners']);
 
		if(!in_array($uid, $partners)) {
 
			$lastposteruid = $thread['lastposteruid'];
 
			$lastposterkey = array_search($lastposteruid, $partners);
 
			array_splice($partners, $lastposterkey+1, 0, $uid);
 
			$partners = implode(",", $partners);
 
			$new_record = array(
 
				"partners" => $partners
 
			);
 
			$db->update_query("threads", $new_record, "tid = '$tid'");
 
		}
 
		redirect("showthread.php?tid={$tid}", "Dein Charakter wurde hinzugefügt!");
 
	}
 

	
 
  if($mybb->input['action'] == "scenes") {
 
  	$ipforum = $mybb->settings['inplaytracker_forum'];
 
    $email = $mybb->user['email'];
 
		$query = $db->query("SELECT username, uid FROM ".TABLE_PREFIX."users WHERE ".TABLE_PREFIX."users.email = '$email' ORDER By ".TABLE_PREFIX."users.username ASC");
 
		$countgesamt = 0;
 
		$opengesamt = 0;
 

	
 
		while($user = $db->fetch_array($query)) {
 

	
 
			$username = $user['username'];
 

	
 
			$query1 = $db->query("SELECT *, ".TABLE_PREFIX."threads.lastpost, ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.subject, ".TABLE_PREFIX."threads.lastposter, ".TABLE_PREFIX."threads.ipdate, ".TABLE_PREFIX."threads.lastposteruid FROM ".TABLE_PREFIX."threads
 
			$ownuid = $user['uid'];
 
			$query1 = $db->query("SELECT *, ".TABLE_PREFIX."threads.lastpost, ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.iport, ".TABLE_PREFIX."threads.postorder, ".TABLE_PREFIX."threads.ipdaytime, ".TABLE_PREFIX."threads.subject, ".TABLE_PREFIX."threads.lastposter, ".TABLE_PREFIX."threads.ipdate, ".TABLE_PREFIX."threads.lastposteruid FROM ".TABLE_PREFIX."threads
 
			LEFT JOIN ".TABLE_PREFIX."posts ON ".TABLE_PREFIX."threads.lastpost = ".TABLE_PREFIX."posts.dateline
 
      LEFT JOIN ".TABLE_PREFIX."forums ON ".TABLE_PREFIX."threads.fid = ".TABLE_PREFIX."forums.fid
 
			WHERE ".TABLE_PREFIX."threads.partners LIKE '%$username%'
 
      AND ".TABLE_PREFIX."forums.parentlist LIKE '$ipforum,%'
 
      WHERE ".TABLE_PREFIX."forums.parentlist LIKE '$ipforum,%'
 
			ORDER by ".TABLE_PREFIX."threads.lastpost DESC");
 

	
 
			$scenes_bit = "";
 
			$countscenes = 0;
 
			$countactive = 0;
 

	
 
			while($szene = $db->fetch_array($query1)) {
 

	
 
				$szenen_partner = ",".$szene['partners'].",";
 
				if(preg_match("/,$ownuid,/i", $szenen_partner)) {
 
					$countgesamt++;
 

	
 
					$tagged = explode(",", $szene['partners']);
 
  				$szene['lastpost'] = my_date('relative', $szene['lastpost']);
 

	
 
					if(my_strlen($szene['subject']) > 35) {
 
			    	$szene['subject'] = my_substr($szene['subject'], 0, 35)."...";
 
			  	}
 

	
 
				$key = array_search($szene['lastposter'], $tagged);
 
					$key = array_search($szene['lastposteruid'], $tagged);
 
	      	$key = $key + 1;
 
	      	$next = $tagged[$key];
 

	
 
	      	if(!$tagged[$key]) {
 
	        	$next = $tagged[0];
 
	      	}
 

	
 
				if($next == $username) {
 
					$next = get_user($next);
 
					$next = $next['username'];
 
					if($next == $username && $szene['postorder'] == "1") {
 
	          $status = "<center><span style=\"text-transform: uppercase; font-size: 12px; font-weight: bold; color: #66B84B\">DU BIST DRAN!</span></center>";
 
					  $countactive++;
 
					  $opengesamt++;
 
					}
 

	
 
        else {
 
	        if($next != $username && $szene['postorder'] == "1") {
 
	          $status = "<center><span style=\"text-transform: uppercase; font-size: 12px; font-weight: bold; color: #B8664B\">$next</span></center>";
 
	        }
 

	
 
					if($szene['postorder'] == "0") {
 
						$status = "<center><span style=\"text-transform: uppercase; font-size: 12px; font-weight: bold; color: #B8664B\">{$lang->inplaytracker_no_order}</span></center>";
 
					}
 
					$countscenes++;
 

	
 
					$szene['lastposter'] = build_profile_link($szene['lastposter'],$szene['lastposteruid']);
 

	
 
				eval("\$scenes_bit .= \"".$templates->get("misc_ip_bit")."\";");
 

	
 
					$partners = explode(",", $szene['partners']);
 
					$partnerusers = array();
 
					foreach ($partners as $partner) {
 
						$charakter = get_user($partner);
 
						$taguser = build_profile_link($charakter['username'], $partner);
 
						$partnerusers[] = $taguser;
 
					}
 

	
 
		eval("\$scenes_user .= \"".$templates->get("misc_ip_user")."\";");
 

	
 
					$szene['partners'] = implode(" &raquo; ", $partnerusers);
 
					if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
						$szene['ipdate'] = date("d.m.Y", $szene['ipdate']);
 
					}
 
					$lastpost = $db->fetch_field($db->query("SELECT pid FROM ".TABLE_PREFIX."posts WHERE tid = '$szene[tid]' ORDER BY pid DESC LIMIT 1"), "pid");
 
					eval("\$scenes_bit .= \"".$templates->get("misc_inplaytracker_bit")."\";");
 
				}
 
			}
 
			eval("\$scenes_user .= \"".$templates->get("misc_inplaytracker_user")."\";");
 
		}
 

	
 
    eval("\$page = \"".$templates->get("misc_inplaytracker")."\";");
 
    output_page($page);
 
  }
 

	
 
}
 

	
 
function inplaytracker_global()
 
{
 
  global $mybb, $db, $templates, $menu_inplaytracker;
 

	
 
  global $mybb, $db, $lang, $templates, $menu_inplaytracker;
 
	$lang->load('inplaytracker');
 
  $ipforum = $mybb->settings['inplaytracker_forum'];
 
  $email = $mybb->user['email'];
 

	
 
  $query = $db->query("SELECT username FROM ".TABLE_PREFIX."users WHERE ".TABLE_PREFIX."users.email = '$email' ORDER By ".TABLE_PREFIX."users.username ASC");
 

	
 
  $query = $db->query("SELECT username, uid FROM ".TABLE_PREFIX."users WHERE ".TABLE_PREFIX."users.email = '$email' ORDER By ".TABLE_PREFIX."users.username ASC");
 
  $countgesamt = 0;
 
  $opengesamt = 0;
 

	
 
  while($user = $db->fetch_array($query)) {
 

	
 
    $username = $user['username'];
 

	
 
    $query1 = $db->query("SELECT *, ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.lastposter FROM ".TABLE_PREFIX."threads
 
		$ownuid = $user['uid'];
 
    $query1 = $db->query("SELECT *, ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.postorder, ".TABLE_PREFIX."threads.lastposter FROM ".TABLE_PREFIX."threads
 
    LEFT JOIN ".TABLE_PREFIX."posts ON ".TABLE_PREFIX."threads.lastpost = ".TABLE_PREFIX."posts.dateline
 
    LEFT JOIN ".TABLE_PREFIX."forums ON ".TABLE_PREFIX."threads.fid = ".TABLE_PREFIX."forums.fid
 
    WHERE ".TABLE_PREFIX."threads.partners LIKE '%$username%'
 
    AND ".TABLE_PREFIX."forums.parentlist LIKE '$ipforum,%'");
 

	
 
    WHERE ".TABLE_PREFIX."forums.parentlist LIKE '$ipforum,%'");
 
    while($szene = $db->fetch_array($query1)) {
 

	
 
			$szenen_partner = ",".$szene['partners'].",";
 
			if(preg_match("/,$ownuid,/i", $szenen_partner)) {
 
      	$countgesamt++;
 

	
 
      	$tagged = explode(",", $szene['partners']);
 

	
 
      $key = array_search($szene['lastposter'], $tagged);
 
      	$key = array_search($szene['lastposteruid'], $tagged);
 
      	$key = $key + 1;
 
      	$next = $tagged[$key];
 

	
 
				$next = get_user($next);
 
				$next = $next['username'];
 
      	if(!$tagged[$key]) {
 
        	$next = $tagged[0];
 
      	}
 

	
 
      if($next == $username) {
 
				if($next == $username && $szene['postorder'] == "1") {
 
	        $opengesamt++;
 
	      }
 

	
 
      	$countscenes++;
 

	
 
			}
 

	
 
  	}
 

	
 
	}
 
	eval("\$menu_inplaytracker = \"".$templates->get("header_inplaytracker")."\";");
 
}
 

	
 
function inplaytracker_profile() {
 
  global $db, $mybb, $templates, $memprofile, $inplaytracker, $inplaytracker_bit;
 
  global $db, $mybb, $lang, $templates, $memprofile, $inplaytracker_lastpost, $inplaytracker, $inplaytracker_bit;
 
	$lang->load('inplaytracker');
 

	
 
  $ipforum = $mybb->settings['inplaytracker_forum'];
 
  $archiv = $mybb->settings['inplaytracker_archiv'];
 

	
 
  $inplayposts = $db->fetch_field($db->query("SELECT COUNT(*) AS inplayposts FROM ".TABLE_PREFIX."posts
 
	$last_inplaypost = $db->fetch_field($db->query("SELECT ".TABLE_PREFIX."posts.dateline FROM ".TABLE_PREFIX."posts
 
	LEFT JOIN ".TABLE_PREFIX."threads on ".TABLE_PREFIX."threads.tid = ".TABLE_PREFIX."posts.tid
 
	LEFT JOIN ".TABLE_PREFIX."forums on ".TABLE_PREFIX."forums.fid = ".TABLE_PREFIX."threads.fid
 
	WHERE ".TABLE_PREFIX."posts.username = '$memprofile[username]'
 
  AND (".TABLE_PREFIX."forums.parentlist LIKE '$ipforum,%'
 
  OR ".TABLE_PREFIX."forums.parentlist LIKE '%,$archiv%')"), "inplayposts");
 
  OR ".TABLE_PREFIX."forums.parentlist LIKE '%,$archiv%')
 
	AND ".TABLE_PREFIX."posts.visible = '1'"), "dateline");
 
	$last_inplaypost = my_date("relative", $last_inplaypost);
 
	eval("\$inplaytracker_lastpost .= \"".$templates->get("member_profile_inplaytracker_lastpost")."\";");
 

	
 
  $inplayposts = $db->fetch_field($db->query("SELECT COUNT(*) AS inplayposts FROM ".TABLE_PREFIX."posts
 
	LEFT JOIN ".TABLE_PREFIX."threads on ".TABLE_PREFIX."threads.tid = ".TABLE_PREFIX."posts.tid
 
	LEFT JOIN ".TABLE_PREFIX."forums on ".TABLE_PREFIX."forums.fid = ".TABLE_PREFIX."threads.fid
 
	WHERE ".TABLE_PREFIX."posts.username = '$memprofile[username]'
 
  AND (".TABLE_PREFIX."forums.parentlist LIKE '$ipforum,%'
 
  OR ".TABLE_PREFIX."forums.parentlist LIKE '%,$archiv%')
 
	AND ".TABLE_PREFIX."posts.visible = '1'"), "inplayposts");
 
  if($inplayposts != "0") {
 

	
 
	$monate = array(
 
	"januar" => "januar",
 
	"februar" => "februar",
 
	"märz" => "märz",
 
	"april" => "april",
 
	"mai" => "mai",
 
	"juni" => "juni",
 
	"juli" => "juli",
 
	"august" => "august",
 
	"september" => "september",
 
	"oktober" => "oktober",
 
	"november" => "november",
 
	"dezember" => "dezember"
 
);
 
foreach($monate as $monat) {
 
$query = $db->query("SELECT * , ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.ipdate, ".TABLE_PREFIX."threads.subject FROM ".TABLE_PREFIX."threads
 
		if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
			$query = $db->query("SELECT * , ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.ipdate, ".TABLE_PREFIX."threads.iport, ".TABLE_PREFIX."threads.ipdaytime, ".TABLE_PREFIX."threads.subject FROM ".TABLE_PREFIX."threads
 
			LEFT JOIN ".TABLE_PREFIX."posts ON ".TABLE_PREFIX."threads.tid = ".TABLE_PREFIX."posts.tid
 
			LEFT JOIN ".TABLE_PREFIX."forums ON ".TABLE_PREFIX."forums.fid = ".TABLE_PREFIX."threads.fid
 
			WHERE (".TABLE_PREFIX."forums.parentlist LIKE '%$ipforum%' OR ".TABLE_PREFIX."forums.parentlist LIKE '%,$archiv%')
 
AND ".TABLE_PREFIX."threads.ipdate LIKE '%$monat%'
 
AND ".TABLE_PREFIX."threads.partners LIKE '%$memprofile[username]%'
 
			AND ".TABLE_PREFIX."threads.visible = '1'
 
			GROUP by ".TABLE_PREFIX."threads.tid
 
ORDER by ".TABLE_PREFIX."threads.ipdate
 
			ORDER by ".TABLE_PREFIX."threads.ipdate ASC
 
			");
 

	
 
			while($szenen = $db->fetch_array($query)) {
 
				$ownuid = $memprofile['uid'];
 
				$szenen_partner = ",".$szenen['partners'].",";
 
				if(preg_match("/,$ownuid,/i", $szenen_partner)) {
 
					$partners = explode(",", $szenen['partners']);
 
					$partnerusers = array();
 
					foreach ($partners as $partner) {
 
						$charakter = get_user($partner);
 
						$taguser = build_profile_link($charakter['username'], $partner);
 
						$partnerusers[] = $taguser;
 
					}
 
					$szenen['partners'] = implode(" &raquo; ", $partnerusers);
 
					$szenen['ipdate'] = date("d.m.Y", $szenen['ipdate']);
 
	    		eval("\$inplaytracker_bit .= \"".$templates->get("member_profile_inplaytracker_bit")."\";");
 
				}
 
			}
 

	
 
		}
 
		else {
 
			$months = explode(", ", $mybb->settings['inplaytracker_months']);
 
			foreach($months as $month) {
 
				$query = $db->query("SELECT * , ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.ipdate, ".TABLE_PREFIX."threads.iport, ".TABLE_PREFIX."threads.ipdaytime, ".TABLE_PREFIX."threads.subject FROM ".TABLE_PREFIX."threads
 
				LEFT JOIN ".TABLE_PREFIX."posts ON ".TABLE_PREFIX."threads.tid = ".TABLE_PREFIX."posts.tid
 
				LEFT JOIN ".TABLE_PREFIX."forums ON ".TABLE_PREFIX."forums.fid = ".TABLE_PREFIX."threads.fid
 
				WHERE (".TABLE_PREFIX."forums.parentlist LIKE '%$ipforum%' OR ".TABLE_PREFIX."forums.parentlist LIKE '%,$archiv%')
 
				AND ".TABLE_PREFIX."threads.ipdate LIKE '%$month%'
 
				GROUP by ".TABLE_PREFIX."threads.tid
 
				ORDER by CAST(".TABLE_PREFIX."threads.ipdate AS signed)
 
				");
 
				while($szenen = $db->fetch_array($query)) {
 
					$ownuid = $memprofile['uid'];
 
					$szenen_partner = ",".$szenen['partners'].",";
 
					if(preg_match("/,$ownuid,/i", $szenen_partner)) {
 
						$partners = explode(",", $szenen['partners']);
 
						$partnerusers = array();
 
						foreach ($partners as $partner) {
 
							$charakter = get_user($partner);
 
							$taguser = build_profile_link($charakter['username'], $partner);
 
							$partnerusers[] = $taguser;
 
						}
 
						$szenen['partners'] = implode(" &raquo; ", $partnerusers);
 
		    		eval("\$inplaytracker_bit .= \"".$templates->get("member_profile_inplaytracker_bit")."\";");
 
					}
 
				}
 
			}
 
		}
 
		eval("\$inplaytracker = \"".$templates->get("member_profile_inplaytracker")."\";");
 
	}
 
}
 

	
 
function inplaytracker_showthread() {
 
	global $mybb, $lang, $user, $templates, $thread, $inplaytracker, $inplaytracker_location;
 
	$lang->load('inplaytracker');
 
	$uid = $mybb->user['uid'];
 

	
 
	if($mybb->settings['inplaytracker_location'] == "1") {
 
		eval("\$inplaytracker_location = \"".$templates->get("showthread_inplaytracker_location")."\";");
 
	}
 
	if($mybb->settings['inplaytracker_daytime'] == "1") {
 
		eval("\$inplaytracker_daytime = \"".$templates->get("showthread_inplaytracker_daytime")."\";");
 
	}
 
	if($mybb->settings['inplaytracker_timeformat'] == "0") {
 
		$thread['ipdate'] = date("d.m.Y", $thread['ipdate']);
 
	}
 
	$partners = explode(",", $thread['partners']);
 
	$partnerusers = array();
 
	foreach ($partners as $partner) {
 
		$charakter = get_user($partner);
 
		$taguser = build_profile_link($charakter['username'], $partner);
 
		$partnerusers[] = $taguser;
 
	}
 
	$thread['partners'] = implode(" &raquo; ", $partnerusers);
 
	$thread['partners'] = implode(" &raquo; ", $partnerusers);
 
	if($thread['openscene'] == "1" && !in_array($uid, $partners)) {
 
		eval("\$inplaytracker_openscene = \"".$templates->get("showthread_inplaytracker_openscene")."\";");
 
	}
 
	elseif($thread['openscene'] == "0"  && !in_array($uid, $partners)) {
 
		eval("\$inplaytracker_openscene = \"".$templates->get("showthread_inplaytracker_halfopenscene")."\";");
 
	}
 
	else {
 
		$inplaytracker_openscene = "";
 
	}
 
	if($thread['postorder'] == "0") {
 
		eval("\$inplaytracker_order = \"".$templates->get("showthread_inplaytracker_order")."\";");
 
	}
 
	else {
 
		$inplaytracker_order = "";
 
	}
 
	eval("\$inplaytracker = \"".$templates->get("showthread_inplaytracker")."\";");
 
}
 

	
 
function inplaytracker_alerts() {
 
	global $mybb, $lang;
 
	$lang->load('inplaytracker');
 
	/**
 
	 * Alert formatter for my custom alert type.
 
	 */
 
	class MybbStuff_MyAlerts_Formatter_InplaytrackerNewthreadFormatter extends MybbStuff_MyAlerts_Formatter_AbstractFormatter
 
	{
 
	    /**
 
	     * Format an alert into it's output string to be used in both the main alerts listing page and the popup.
 
	     *
 
	     * @param MybbStuff_MyAlerts_Entity_Alert $alert The alert to format.
 
	     *
 
	     * @return string The formatted alert string.
 
	     */
 
	    public function formatAlert(MybbStuff_MyAlerts_Entity_Alert $alert, array $outputAlert)
 
	    {
 
	        return $this->lang->sprintf(
 
	            $this->lang->inplaytracker_newthread,
 
	            $outputAlert['from_user'],
 
	            $outputAlert['dateline']
 
	        );
 
	    }
 

	
 
	    /**
 
	     * Init function called before running formatAlert(). Used to load language files and initialize other required
 
	     * resources.
 
	     *
 
	     * @return void
 
	     */
 
	    public function init()
 
	    {
 
	        if (!$this->lang->inplaytracker) {
 
	            $this->lang->load('inplaytracker');
 
	        }
 
	    }
 

	
 
	    /**
 
	     * Build a link to an alert's content so that the system can redirect to it.
 
	     *
 
	     * @param MybbStuff_MyAlerts_Entity_Alert $alert The alert to build the link for.
 
	     *
 
	     * @return string The built alert, preferably an absolute link.
 
	     */
 
	    public function buildShowLink(MybbStuff_MyAlerts_Entity_Alert $alert)
 
	    {
 
	        return $this->mybb->settings['bburl'] . '/' . get_thread_link($alert->getObjectId());
 
	    }
 
	}
 

	
 
function inplaytracker_usercp() {
 
	if (class_exists('MybbStuff_MyAlerts_AlertFormatterManager')) {
 
		$formatterManager = MybbStuff_MyAlerts_AlertFormatterManager::getInstance();
 

	
 
	global $mybb, $user, $templates, $inplaytrackerpmcheck, $inplaytrackerpm;
 
		if (!$formatterManager) {
 
			$formatterManager = MybbStuff_MyAlerts_AlertFormatterManager::createInstance($mybb, $lang);
 
		}
 

	
 
	if(isset($mybb->user['inplaytrackerpm']) && $mybb->user['inplaytrackerpm'] == 1)
 
		$formatterManager->registerFormatter(
 
				new MybbStuff_MyAlerts_Formatter_InplaytrackerNewthreadFormatter($mybb, $lang, 'inplaytracker_newthread')
 
		);
 
	}
 

	
 
	/**
 
	 * Alert formatter for my custom alert type.
 
	 */
 
	class MybbStuff_MyAlerts_Formatter_InplaytrackerNewreplyFormatter extends MybbStuff_MyAlerts_Formatter_AbstractFormatter
 
	{
 
			/**
 
			 * Format an alert into it's output string to be used in both the main alerts listing page and the popup.
 
			 *
 
			 * @param MybbStuff_MyAlerts_Entity_Alert $alert The alert to format.
 
			 *
 
			 * @return string The formatted alert string.
 
			 */
 
			public function formatAlert(MybbStuff_MyAlerts_Entity_Alert $alert, array $outputAlert)
 
			{
 
		$inplaytrackerpmcheck = "checked=\"checked\"";
 
					$alertContent = $alert->getExtraDetails();
 
					return $this->lang->sprintf(
 
							$this->lang->inplaytracker_newreply,
 
							$outputAlert['from_user'],
 
							$alertContent['subject'],
 
							$outputAlert['dateline']
 
					);
 
			}
 
	else
 

	
 
			/**
 
			 * Init function called before running formatAlert(). Used to load language files and initialize other required
 
			 * resources.
 
			 *
 
			 * @return void
 
			 */
 
			public function init()
 
			{
 
		$inplaytrackerpmcheck = "";
 
					if (!$this->lang->inplaytracker) {
 
							$this->lang->load('inplaytracker');
 
					}
 
			}
 

	
 
	eval("\$inplaytrackerpm = \"".$templates->get("usercp_options_inplaytrackerpm")."\";");
 
			/**
 
			 * Build a link to an alert's content so that the system can redirect to it.
 
			 *
 
			 * @param MybbStuff_MyAlerts_Entity_Alert $alert The alert to build the link for.
 
			 *
 
			 * @return string The built alert, preferably an absolute link.
 
			 */
 
			public function buildShowLink(MybbStuff_MyAlerts_Entity_Alert $alert)
 
			{
 
					$alertContent = $alert->getExtraDetails();
 
					return $this->mybb->settings['bburl'] . '/' . get_post_link((int) $alertContent['lastpost'], (int) $alert->getObjectId()) . '#pid' . $alertContent['lastpost'];
 
			}
 
	}
 

	
 
	if (class_exists('MybbStuff_MyAlerts_AlertFormatterManager')) {
 
		$formatterManager = MybbStuff_MyAlerts_AlertFormatterManager::getInstance();
 

	
 
		if (!$formatterManager) {
 
			$formatterManager = MybbStuff_MyAlerts_AlertFormatterManager::createInstance($mybb, $lang);
 
		}
 

	
 
function inplaytracker_usercp_options()
 
{
 
	global $mybb, $db;
 
		$formatterManager->registerFormatter(
 
				new MybbStuff_MyAlerts_Formatter_InplaytrackerNewreplyFormatter($mybb, $lang, 'inplaytracker_newreply')
 
		);
 
	}
 

	
 
	$uid = $mybb->user['uid'];
 
}
 

	
 
	$new_record = array(
 
		"inplaytrackerpm" => $mybb->get_input('inplaytrackerpm', MyBB::INPUT_INT)
 
function inplaytracker_tools_menu($sub_menu) {
 
	$found_free_index = 0;
 
	$index = 100;
 

	
 
	// Looking for unused Index in $sub_menu
 
	while($found_free_index == 0)
 
	{
 
		if(!isset($sub_menu[$index]))
 
		{
 
			$sub_menu[$index] = array(
 
				'id'	=> 'inplaytracker',
 
				'title'	=> 'Inplaytracker',
 
				'link'	=> 'index.php?module=tools-inplaytracker'
 
			);
 
		$db->update_query("users", $new_record, "uid = '$uid'");
 
			$found_free_index = 1;
 
		}
 
		else
 
		{
 
			$index++;
 
		}
 
		ksort($sub_menu);
 
		return $sub_menu;
 
	}
 
}
 

	
 
function inplaytracker_tools_action_handler($actions) {
 
	$actions['inplaytracker'] = array('active' => 'inplaytracker', 'file' => 'inplaytracker.php');
 
	return $actions;
 
}
 

	
 
?>
0 comments (0 inline, 0 general)