Changeset - 3a3b48074168
[Not reviewed]
chain
0 1 0
Chel Sea (chain) - 5 years ago 2020-11-17 10:22:53
chain@rpgfiction.net
update plugin to version 2.0.7
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
inc/plugins/inplaytracker.php
Show inline comments
 
<?php
 

	
 
if(!defined("IN_MYBB"))
 
{
 
	die("Direct initialization of this file is not allowed.");
 
}
 

	
 
$plugins->add_hook("newthread_start", "inplaytracker_newthread");
 
$plugins->add_hook("newthread_do_newthread_end", "inplaytracker_do_newthread");
 
$plugins->add_hook("editpost_end", "inplaytracker_editpost");
 
$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");
 
$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("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()
 
{
 
	return array(
 
		"name"			=> "Inplaytracker",
 
		"description"	=> "Eintragen von Postpartnern in eine Szene, PN-Benachrichtigung bei neuen Szenen/Posts & Komplette Übersicht offener Szenen.",
 
		"website"		=> "https://github.com/its-sparks-fly",
 
		"author"		=> "sparks fly, patched by chain",
 
		"authorsite"	=> "https://github.com/its-sparks-fly",
 
		"version"		=> "2.0.6",
 
		"version"		=> "2.0.7",
 
		"compatibility" => "*"
 
	);
 
}
 

	
 
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."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(
 
  	'name' => 'inplaytracker',
 
    'title' => 'Inplaytracker',
 
    'description' => 'Einstellungen für das Inplaytracker-Plugin',
 
    'disporder' => 5, // The order your setting group will display
 
    'isdefault' => 0
 
  );
 

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

	
 
  $setting_array =
 
		array(
 
    	'inplaytracker_forum' => array(
 
    	'title' => 'Inplay-Kategorie',
 
    	'description' => 'Gib die ID deiner Inplay-Kategorie an.',
 
    	'optionscode' => 'text',
 
    	'value' => '998', // Default
 
    	'disporder' => 1
 
  	),
 
    	'inplaytracker_archiv' => array(
 
      'title' => 'Archiv-Forum',
 
      'description' => 'Gib die ID deines Inplay-Archivs an.',
 
      '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
 
		),
 
  );
 

	
 
  foreach($setting_array as $name => $setting)
 
  {
 
    $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('{$posticons}')."#i", '{$posticons} {$tracker_partners} {$tracker_date} {$tracker_ort} {$tracker_daytime}');
 
	find_replace_templatesets("editpost", "#".preg_quote('{$posticons}')."#i", '{$posticons} {$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("showthread", "#".preg_quote('<tr><td id="posts_container">')."#i", '{$inplaytracker}<tr><td id="posts_container">');
 

	
 
	$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'		=> '-2',
 
		'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'		=> '-2',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
 
	);
 
	$db->insert_query("templates", $insert_array);
 

	
 
	$insert_array = array(
 
        'title'        => 'newthread_inplaytracker_ort',
 
        'template'    => $db->escape_string('<tr>
 
<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'        => '-2',
 
        'version'    => '',
 
        'dateline'    => TIME_NOW
 
    );
 
    $db->insert_query("templates", $insert_array);
 

	
 
		$insert_array = array(
 
	        'title'        => 'newthread_inplaytracker_daytime',
 
	        'template'    => $db->escape_string('<tr>
 
	<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'        => '-2',
 
	        'version'    => '',
 
	        'dateline'    => TIME_NOW
 
	    );
 
	    $db->insert_query("templates", $insert_array);
 

	
 
  $insert_array = array(
 
		'title'		=> 'misc_inplaytracker',
 
		'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">
 
<h1><i>{$countgesamt}</i> {$lang->inplaytracker_all_scenes}, <i>{$opengesamt}</i> {$lang->inplaytracker_open_scenes}</h1>
 
{$scenes_user}
 
</td>
 
</tr>
 
</table>
 
{$footer}
 
</body>
 
</html>'),
 
		'sid'		=> '-2',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
 
	);
 
	$db->insert_query("templates", $insert_array);
 

	
 
  $insert_array = array(
 
		'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">
 
			{$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>{$lang->inplaytracker_next_post}</strong>
 
	</td>
 
	<td>
 
		<strong>{$lang->inplaytracker_scene_information}</strong>
 
	</td>
 
	<td style="width: 25%">
 
		<strong>{$lang->inplaytracker_last_post}</strong>
 
	</td>
 
</tr>
 
{$scenes_bit}
 
</table>'),
 
		'sid'		=> '-2',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
 
	);
 
	$db->insert_query("templates", $insert_array);
 

	
 
  $insert_array = array(
 
		'title'		=> 'misc_inplaytracker_bit',
 
		'template'	=> $db->escape_string('<tr class="trow1">
 
	<td width="20%">
 
		{$status}
 
	</td>
 
	<td>
 
		<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\']}&pid={$lastpost}#pid{$lastpost}" target="blank">{$szene[\'subject\']}</a><br />
 
	{$szene[\'lastpost\']}<br />
 
	{$szene[\'lastposter\']}
 
	</td>
 
</tr>'),
 
		'sid'		=> '-2',
 
		'version'	=> '',
 
		'dateline'	=> TIME_NOW
0 comments (0 inline, 0 general)