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");
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("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",
"authorsite" => "https://github.com/its-sparks-fly",
"version" => "2.0",
"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' => 'Nur bei eigener Zeitrechnung: 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('
')."#i", '{$inplaytracker} |
');
$insert_array = array(
'title' => 'newthread_inplaytracker_partners',
'template' => $db->escape_string(' |
{$lang->inplaytracker_partner} |
{$lang->inplaytracker_partner_desc} {$lang->inplaytracker_partner_desc_2} |
{$lang->inplaytracker_settings} |
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'newthread_inplaytracker_date',
'template' => $db->escape_string('
{$lang->inplaytracker_date} |
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'newthread_inplaytracker_ort',
'template' => $db->escape_string('
{$lang->inplaytracker_location} |
{$lang->inplaytracker_location_desc} |
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'newthread_inplaytracker_daytime',
'template' => $db->escape_string('
{$lang->inplaytracker_daytime} |
{$lang->inplaytracker_daytime_desc} |
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'misc_inplaytracker',
'template' => $db->escape_string('
{$mybb->settings[\'bbname\']} - {$lang->inplaytracker}
{$headerinclude}
{$header}
{$lang->inplaytracker} |
{$countgesamt} {$lang->inplaytracker_all_scenes}, {$opengesamt} {$lang->inplaytracker_open_scenes}
{$scenes_user}
|
{$footer}
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'misc_inplaytracker_user',
'template' => $db->escape_string('
{$lang->inplaytracker_scenes_by} {$username} ({$lang->inplaytracker_all_scenes} {$countscenes}, {$countactive} {$lang->inplaytracker_open_scenes})
|
{$lang->inplaytracker_next_post}
|
{$lang->inplaytracker_scene_information}
|
{$lang->inplaytracker_last_post}
|
{$scenes_bit}
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'misc_inplaytracker_bit',
'template' => $db->escape_string('
{$status}
|
{$lang->inplaytracker_characters} {$szene[\'partners\']}
{$lang->inplaytracker_date} {$szene[\'ipdate\']}
|
{$szene[\'subject\']}
{$szene[\'lastpost\']}
{$szene[\'lastposter\']}
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'misc_inplaytracker_overview',
'template' => $db->escape_string('
{$mybb->settings[\'bbname\']} - {$lang->inplaytracker}
{$headerinclude}
{$header}
{$lang->inplaytracker} |
{$lang->inplaytracker_order_setting} | {$lang->inplaytracker_open_setting} |
{$lang->inplaytracker} ({$count_scenes} {$lang->inplaytracker_all_scenes})
|
{$scene_bit}
|
|
{$footer}
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'header_inplaytracker',
'template' => $db->escape_string('{$lang->inplaytracker_scenes} ({$opengesamt}/{$countgesamt}){$lang->inplaytracker}'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'member_profile_inplaytracker',
'template' => $db->escape_string('
{$lang->inplaytracker_scenes} ({$inplayposts} {$lang->inplaytracker_posts} / {$numscenes} {$lang->inplaytracker_scenes}) |
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'member_profile_inplaytracker_bit',
'template' => $db->escape_string('
$szenen[subject]
{$szenen[\'ipdate\']} {$lang->inplaytracker_characters}: {$szenen[\'partners\']}
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'member_profile_inplaytracker_lastpost',
'template' => $db->escape_string('
{$lang->inplaytracker_last_post}: |
{$last_inplaypost} |
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'showthread_inplaytracker',
'template' => $db->escape_string('
{$lang->inplaytracker_scene_information}
|
{$lang->inplaytracker_characters}
|
{$thread[\'partners\']}
|
{$lang->inplaytracker_date}
|
{$thread[\'ipdate\']}
|
{$inplaytracker_location}
{$inplaytracker_daytime}
{$inplaytracker_openscene}
{$inplaytracker_order}
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'showthread_inplaytracker_location',
'template' => $db->escape_string('
{$lang->inplaytracker_location}
|
{$thread[\'iport\']}
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'showthread_inplaytracker_daytime',
'template' => $db->escape_string('
{$lang->inplaytracker_daytime}
|
{$thread[\'ipdaytime\']}
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'showthread_inplaytracker_halfopenscene',
'template' => $db->escape_string('
{$lang->inplaytracker_halfopen}
|
{$lang->inplaytracker_scene_halfopen}
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'showthread_inplaytracker_openscene',
'template' => $db->escape_string('
{$lang->inplaytracker_open}
|
{$lang->inplaytracker_scene_open} {$lang->inplaytracker_add_partner}
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
$insert_array = array(
'title' => 'showthread_inplaytracker_order',
'template' => $db->escape_string('
{$lang->inplaytracker_no_order}
|
{$lang->inplaytracker_scene_no_order}
|
'),
'sid' => '-1',
'version' => '',
'dateline' => TIME_NOW
);
$db->insert_query("templates", $insert_array);
}
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("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("showthread", "#".preg_quote('{$inplaytracker}')."#i", '', 0);
// Templates entfernen
$db->delete_query("templates", "title LIKE '%inplaytracker%'");
}
function inplaytracker_newthread()
{
global $mybb, $lang, $templates, $post_errors, $forum, $thread, $tracker_partners, $tracker_date, $tracker_ort, $tracker_daytime;
$lang->load('inplaytracker');
$inplaykategorie = $mybb->settings['inplaytracker_forum'];
$forum['parentlist'] = ",".$forum['parentlist'].",";
if(preg_match("/,$inplaykategorie,/i", $forum['parentlist'])) {
if(isset($mybb->input['previewpost']) || $post_errors)
{
$partners = htmlspecialchars_uni($mybb->get_input('partners'));
$ipdate = strtotime($mybb->get_input('day')." ".$mybb->get_input('month')." ".$mybb->get_input('year'));
$active_day = date("j", $ipdate);
$year = date("Y", $ipdate);
$active_day = $mybb->get_input('day');
$iport = htmlspecialchars_uni($mybb->get_input('iport'));
$ipdaytime = htmlspecialchars_uni($mybb->get_input('ipdaytime'));
}
if($mybb->settings['inplaytracker_timeformat'] == "0") {
for($i = 1 ; $i < 32 ; $i++) {
$checked_day = "";
if($active_day == $i) {
$checked_day = "selected=\"selected\"";
}
$day_bit .= "";
}
$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"
);
foreach($months as $key => $month) {
$checked_month = "";
$active_month = date("F", $ipdate);
if($active_month == $key) {
$checked_month = "selected=\"selected\"";
}
$month_bit .= "";
}
}
else {
for($i = 1 ; $i < 32 ; $i++) {
$checked_day = "";
if($active_day == $i) {
$checked_day = "selected=\"selected\"";
}
$day_bit .= "";
}
$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 .= "";
}
$year = $mybb->get_input('year');
}
$private = array("-1" => "{$lang->inplaytracker_closed}", "0" => "{$lang->inplaytracker_halfopen}", "1" => "{$lang->inplaytracker_open}");
foreach($private as $key => $value) {
$private_bit .= "";
}
$postorder = array("1" => "{$lang->inplaytracker_order}", "0" => "{$lang->inplaytracker_no_order}");
foreach($postorder as $key => $value) {
$postorder_bit .= "";
}
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")."\";");
}
if($mybb->settings['inplaytracker_daytime'] == "1")
{
eval("\$tracker_daytime = \"".$templates->get("newthread_inplaytracker_daytime")."\";");
}
}
}
function inplaytracker_do_newthread()
{
global $db, $mybb, $lang, $tid, $pmhandler, $pm, $pminfo, $forum, $partners_new, $partner_uid;
$lang->load('inplaytracker');
$ownuid = $mybb->user['uid'];
$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" => $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}'");
$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);
}
}
}
}
}
function inplaytracker_editpost()
{
global $mybb, $lang, $templates, $post_errors, $forum, $thread, $pid, $tracker_partners, $tracker_date, $tracker_ort, $tracker_daytime;
$lang->load('inplaytracker');
$inplaykategorie = $mybb->settings['inplaytracker_forum'];
$archiv = $mybb->settings['inplaytracker_archiv'];
$forum['parentlist'] = ",".$forum['parentlist'].",";
if(preg_match("/,$inplaykategorie,/i", $forum['parentlist']) OR preg_match("/,$archiv,/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($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 .= "";
}
$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"
);
foreach($months as $key => $month) {
$checked_month = "";
$active_month = date("F", $ipdate);
if($active_month == $key) {
$checked_month = "selected=\"selected\"";
}
$month_bit .= "";
}
$year = date("Y", $ipdate);
}
else {
for($i = 1 ; $i < 32 ; $i++) {
$checked_day = "";
$active_day = $mybb->get_input('day');
if($active_day == $i) {
$checked_day = "selected=\"selected\"";
}
$day_bit .= "";
}
$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 .= "";
}
$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 .= "";
}
$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 .= "";
}
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")."\";");
}
if($mybb->settings['inplaytracker_daytime'] == "1") {
eval("\$tracker_daytime = \"".$templates->get("newthread_inplaytracker_daytime")."\";");
}
}
}
}
function inplaytracker_do_editpost()
{
global $db, $mybb, $tid, $pid, $thread, $partners_new, $partner_uid;
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" => $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, $lang, $username, $pmhandler, $pm, $pminfo, $thread, $forum;
$lang->load('inplaytracker');
$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) {
$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, $lang, $mybb, $thread, $foruminfo;
$lang->load('inplaytracker');
$inplaykategorie = $mybb->settings['inplaytracker_forum'];
$inplayarchiv = $mybb->settings['inplaytracker_archiv'];
$foruminfo['parentlist'] = ",".$foruminfo['parentlist'].",";
if(preg_match("/,$inplaykategorie,/i", $foruminfo['parentlist']) OR preg_match("/,$inplayarchiv,/i", $foruminfo['parentlist']) ) {
$partners = explode(",", $thread['partners']);
$partnerusers = array();
foreach ($partners as $partner) {
$charakter = get_user($partner);
$taguser = build_profile_link($charakter['username'], $partner);
$partnerusers[] = $taguser;
}
$partnerusers = implode(" » ", $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'] = "{$lang->inplaytracker_characters}: $partnerusers
{$lang->inplaytracker_date}: $ipdate
{$lang->inplaytracker_location}: $thread[iport]";
}
if($mybb->settings['inplaytracker_daytime'] == "1") {
$thread['profilelink'] = "{$lang->inplaytracker_characters}: $partnerusers
{$lang->inplaytracker_date}: $ipdate
{$lang->inplaytracker_daytime}: $thread[ipdaytime]";
}
if($mybb->settings['inplaytracker_location'] == "1" && $mybb->settings['inplaytracker_daytime']) {
$thread['profilelink'] = "{$lang->inplaytracker_characters}: $partnerusers
{$lang->inplaytracker_date}: $ipdate
{$lang->inplaytracker_location}: $thread[iport]
{$lang->inplaytracker_daytime}: $thread[ipdaytime]";
}
else {
$thread['profilelink'] = "{$lang->inplaytracker_characters}: $partnerusers
{$lang->inplaytracker_date}: $ipdate";
}
return $thread;
}
}
function inplaytracker_misc()
{
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'] == "inplay") {
$postorder = $mybb->get_input('postorder');
$openscene = $mybb->get_input('openscene');
$ipforum = $mybb->settings['inplaytracker_forum'];
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(" » ", $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 .= "
".$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(" » ", $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 .= "
".$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);
}
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'];
$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."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['lastposteruid'], $tagged);
$key = $key + 1;
$next = $tagged[$key];
if(!$tagged[$key]) {
$next = $tagged[0];
}
$next = get_user($next);
$next = $next['username'];
if($next == $username && $szene['postorder'] == "1") {
$status = "DU BIST DRAN!";
$countactive++;
$opengesamt++;
}
if($next != $username && $szene['postorder'] == "1") {
$status = "$next";
}
if($szene['postorder'] == "0") {
$status = "{$lang->inplaytracker_no_order}";
}
$countscenes++;
$szene['lastposter'] = build_profile_link($szene['lastposter'],$szene['lastposteruid']);
$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(" » ", $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, $lang, $templates, $menu_inplaytracker, $test;
$lang->load('inplaytracker');
$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'];
$ownuid = $user['uid'];
$query1 = $db->query("SELECT *, ".TABLE_PREFIX."threads.partners, ".TABLE_PREFIX."threads.postorder, ".TABLE_PREFIX."threads.lastposter, ".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,%'");
while($szene = $db->fetch_array($query1)) {
$next = "";
$szenen_partner = ",".$szene['partners'].",";
if(preg_match("/,$ownuid,/i", $szenen_partner)) {
$countgesamt++;
$tagged = explode(",", $szene['partners']);
$key = array_search($szene['lastposteruid'], $tagged);
$key = $key + 1;
$next = $tagged[$key];
if(!$tagged[$key]) {
$next = $tagged[0];
}
$next = get_user($next);
$next = $next['username'];
if($next == $username && $szene['postorder'] == "1") {
$opengesamt++;
$test .= $szene[subject];
}
}
}
}
eval("\$menu_inplaytracker = \"".$templates->get("header_inplaytracker")."\";");
}
function inplaytracker_profile() {
global $db, $mybb, $lang, $templates, $memprofile, $inplaytracker_lastpost, $inplaytracker, $inplaytracker_bit, $numscenes;
$lang->load('inplaytracker');
$ipforum = $mybb->settings['inplaytracker_forum'];
$archiv = $mybb->settings['inplaytracker_archiv'];
$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%')
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") {
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.visible = '1'
GROUP by ".TABLE_PREFIX."threads.tid
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);
if(empty($charakter)) {
$taguser = $db->fetch_field($db->query("SELECT username FROM ".TABLE_PREFIX."posts WHERE tid = '$szenen[tid]' AND uid = '$partner'"), "username");
}
$partnerusers[] = $taguser;
}
$szenen['partners'] = implode(" » ", $partnerusers);
$szenen['ipdate'] = date("d.m.Y", $szenen['ipdate']);
$numscenes++;
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(" » ", $partnerusers);
eval("\$inplaytracker_bit .= \"".$templates->get("member_profile_inplaytracker_bit")."\";");
}
}
}
}
eval("\$inplaytracker = \"".$templates->get("member_profile_inplaytracker")."\";");
}
}
function inplaytracker_showthread() {
global $mybb, $db, $lang, $user, $templates, $thread, $inplaytracker, $inplaytracker_location;
$lang->load('inplaytracker');
$uid = $mybb->user['uid'];
$parentlist = $db->fetch_field($db->query("SELECT parentlist FROM ".TABLE_PREFIX."forums WHERE fid = '$thread[fid]'"), "parentlist");
$inplaykategorie = $mybb->settings['inplaytracker_forum'];
$archiv = $mybb->settings['inplaytracker_archiv'];
$parentlist = ",".$parentlist.",";
if(preg_match("/,$inplaykategorie,/i", $parentlist) OR preg_match("/,$archiv,/i", $parentlist)) {
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(" » ", $partnerusers);
$thread['partners'] = implode(" » ", $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());
}
}
if (class_exists('MybbStuff_MyAlerts_AlertFormatterManager')) {
$formatterManager = MybbStuff_MyAlerts_AlertFormatterManager::getInstance();
if (!$formatterManager) {
$formatterManager = MybbStuff_MyAlerts_AlertFormatterManager::createInstance($mybb, $lang);
}
$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)
{
$alertContent = $alert->getExtraDetails();
return $this->lang->sprintf(
$this->lang->inplaytracker_newreply,
$outputAlert['from_user'],
$alertContent['subject'],
$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)
{
$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);
}
$formatterManager->registerFormatter(
new MybbStuff_MyAlerts_Formatter_InplaytrackerNewreplyFormatter($mybb, $lang, 'inplaytracker_newreply')
);
}
}
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'
);
$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;
}
?>