Please make sure IN_MYBB is defined."); } $plugins->add_hook("postbit", "inplayquotes_postbit"); $plugins->add_hook("misc_start", "inplayquotes_misc"); $plugins->add_hook("index_start", "inplayquotes_index"); $plugins->add_hook("admin_formcontainer_output_row", "inplayquotes_permission"); $plugins->add_hook("admin_user_groups_edit_commit", "inplayquotes_permission_commit"); function inplayquotes_info() { return array( "name" => "Zitate auf dem Forenindex", "description" => "Erlaubt es Mitgliedern, Zitate aus Beiträgen einzufügen, die dann auf dem Index des Forums erscheinen.", "website" => "https://github.com/its-sparks-fly", "author" => "sparks fly", "authorsite" => "https://github.com/its-sparks-fly", "version" => "2.0.1", "compatibility" => "18*" ); } function inplayquotes_install() { global $db, $cache, $mybb; $setting_group = array( 'name' => 'inplayquotes', 'title' => 'Inplayzitate', 'description' => 'Einstellungen für die Inplayzitate', 'disporder' => 1, 'isdefault' => 0 ); $gid = $db->insert_query("settinggroups", $setting_group); $setting_array = array( // A text setting 'inplay_id' => array( 'title' => 'ID der Inplay-Kategorie(n)', 'description' => 'Gib die ID der Inplay-Kategorie(n) an (Kategorie = das "höchste" Inplayforum, in dem sich alle anderen Inplayforen befinden) - mehrere Kategorien mit "," voneinander trennen!', 'optionscode' => 'text', 'value' => '', // Default 'disporder' => 1 ), ); foreach($setting_array as $name => $setting) { $setting['name'] = $name; $setting['gid'] = $gid; $db->insert_query('settings', $setting); } rebuild_settings(); if(!$db->field_exists("canquoteinplay", "usergroups")) { switch($db->type) { case "pgsql": $db->add_column("usergroups", "canquoteinplay", "smallint NOT NULL default '1'"); break; default: $db->add_column("usergroups", "canquoteinplay", "tinyint(1) NOT NULL default '1'"); break; } } $cache->update_usergroups(); $db->query("CREATE TABLE ".TABLE_PREFIX."inplayquotes ( `qid` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `tid` int(11) NOT NULL, `pid` int(11) NOT NULL, `timestamp` int(21) NOT NULL, `quote` varchar(500) COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`qid`), KEY `qid` (`qid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1"); rebuild_settings(); } function inplayquotes_activate() { global $db, $post; // needed for 1.0 => 2.0 update if(!$db->field_exists("timestamp", "inplayquotes")) { switch($db->type) { case "pgsql": $db->add_column("inplayquotes", "timestamp", "int(21) NOT NULL"); break; default: $db->add_column("inplayquotes", "timestamp", "int(21) NOT NULL"); break; } // add timestamp to quotes $query = $db->query("SELECT qid, pid FROM ".TABLE_PREFIX."inplayquotes"); while($quote = $db->fetch_array($query)) { $post = get_post($quote['pid']); $insert_array = array( "timestamp" => $post['dateline'] ); $db->update_query("inplayquotes", $insert_array, "qid = '$quote[qid]'"); } } include MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("postbit_classic", "#".preg_quote('{$post[\'button_edit\']}')."#i", '{$post[\'inplayquotes\']}{$post[\'button_edit\']}'); find_replace_templatesets("postbit", "#".preg_quote('{$post[\'button_edit\']}')."#i", '{$post[\'inplayquotes\']}{$post[\'button_edit\']}'); find_replace_templatesets("index", "#".preg_quote('{$footer}')."#i", '{$inplayquotes}{$footer}'); $insert_array = array( 'title' => 'postbit_inplayquotes', 'template' => $db->escape_string('{$lang->inplayquotes_button}'), 'sid' => '-1', 'version' => '', 'dateline' => TIME_NOW ); $db->insert_query("templates", $insert_array); $insert_array = array( 'title' => 'misc_inplayquotes_add', 'template' => $db->escape_string(' {$mybb->settings[\'bbname\']} - {$lang->inplayquotes_add} {$headerinclude} {$header}
{$lang->inplayquotes_add}
{$insert_quote}

{$footer} '), 'sid' => '-1', 'version' => '', 'dateline' => TIME_NOW ); $db->insert_query("templates", $insert_array); $insert_array = array( 'title' => 'misc_inplayquotes_overview', 'template' => $db->escape_string(' {$mybb->settings[\'bbname\']} - {$lang->inplayquotes} {$headerinclude} {$header}
{$lang->inplayquotes}

{$lang->inplayquotes_filter}
Charakter{$lang->inplayquotes_timespan}

{$inplayquotes_bit}
{$footer} '), 'sid' => '-1', 'version' => '', 'dateline' => TIME_NOW ); $db->insert_query("templates", $insert_array); $insert_array = array( 'title' => 'misc_inplayquotes_overview_bit', 'template' => $db->escape_string(' {$delete_quote}
{$lang->inplayquotes_character} {$lang->inplayquotes_month} {$lang->inplayquotes_quote}
{$user[\'format_avatar\']} {$date}
{$quote[\'quote\']}
{$user[\'username\']} {$quote[\'thread\']}
'), 'sid' => '-1', 'version' => '', 'dateline' => TIME_NOW ); $db->insert_query("templates", $insert_array); $insert_array = array( 'title' => 'misc_inplayquotes_overview_bit_delete', 'template' => $db->escape_string(' {$lang->inplayquotes_delete} '), 'sid' => '-1', 'version' => '', 'dateline' => TIME_NOW ); $db->insert_query("templates", $insert_array); $insert_array = array( 'title' => 'index_inplayquotes', 'template' => $db->escape_string('
{$lang->inplayquotes_by} {$quoted[\'user\']} {$lang->inplayquotes_overview}
{$quoted[\'quote\']}
{$lang->inplayquotes_in}: {$quoted[\'scene\']}

'), 'sid' => '-1', 'version' => '', 'dateline' => TIME_NOW ); $db->insert_query("templates", $insert_array); } function inplayquotes_is_installed() { global $db; if($db->table_exists('inplayquotes')) { return true; } return false; } function inplayquotes_uninstall() { global $db, $cache; $db->delete_query('settings', "name IN ('inplay_id')"); $db->delete_query('settinggroups', "name = 'inplayquotes'"); rebuild_settings(); if($db->field_exists("canquoteinplay", "usergroups")) { $db->drop_column("usergroups", "canquoteinplay"); } $cache->update_usergroups(); if($db->table_exists("inplayquotes")) { $db->drop_table("inplayquotes"); } rebuild_settings(); } function inplayquotes_deactivate() { global $db; include MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("postbit_classic", "#".preg_quote('{$post[\'inplayquotes\']}')."#i", '', 0); find_replace_templatesets("postbit", "#".preg_quote('{$post[\'inplayquotes\']}')."#i", '', 0); find_replace_templatesets("index", "#".preg_quote('{$inplayquotes}')."#i", '', 0); $db->delete_query("templates", "title LIKE '%inplayquotes%'"); } function inplayquotes_permission($above) { global $mybb, $lang, $form; if($above['title'] == $lang->misc && $lang->misc) { $above['content'] .= "
".$form->generate_check_box("canquoteinplay", 1, "Kann aus dem Inplay zitieren?", array("checked" => $mybb->input['canquoteinplay']))."
"; } return $above; } function inplayquotes_permission_commit() { global $mybb, $updated_group; $updated_group['canquoteinplay'] = $mybb->get_input('canquoteinplay', MyBB::INPUT_INT); } function inplayquotes_postbit(&$post) { global $lang, $templates, $db, $mybb, $forum; $lang->load('inplayquotes'); // insert inplayquote button to inplay boards $quote_forums = $db->fetch_field($db->query("SELECT value FROM ".TABLE_PREFIX."settings WHERE name = 'inplay_id'"), "value"); $quote_forums = explode(",", $quote_forums); $forum['parentlist'] = ",".$forum['parentlist'].","; foreach($quote_forums as $quote_forum) { if(!empty($quote_forum)) { if(preg_match("/,{$quote_forum},/i", $forum['parentlist'])) { $post['inplayquotes'] = eval($templates->render("postbit_inplayquotes")); return $post; } } } } function inplayquotes_misc() { global $lang, $db, $mybb, $templates, $theme, $headerinclude, $header, $footer; $lang->load('inplayquotes'); $mybb->input['action'] = $mybb->get_input('action'); // Inplayzitat eintragen if($mybb->input['action'] == "add_inplayquotes") { if($mybb->usergroup['canquoteinplay'] != 1) { error_no_permission(); } $pid = $mybb->input['pid']; if(isset($_POST['submit'])) { $tid = $db->fetch_field($db->query("SELECT tid from ".TABLE_PREFIX."posts WHERE pid = '$pid'"), "tid"); $quote = $_POST['zitat']; $uid = $db->fetch_field($db->query("SELECT uid from ".TABLE_PREFIX."posts WHERE pid = '$pid'"), "uid"); $new_record = array( "uid" => $uid, "tid" => $tid, "pid" => $pid, "timestamp" => TIME_NOW, "quote" => $db->escape_string($quote) ); $insert_array = $db->insert_query("inplayquotes", $new_record); $insert_quote = "
{$lang->inplayquotes_success}
"; } $query = $db->query("SELECT username, subject FROM ".TABLE_PREFIX."posts WHERE ".TABLE_PREFIX."posts.pid = '$pid'"); $quoted = $db->fetch_array($query); $quotename = $quoted['username']; $quotethread = $quoted['subject']; if(!isset($_POST['submit'])) { $insert_quote = "
{$lang->inplayquotes_scene}: {$quotethread}
{$lang->inplayquotes_by}: {$quotename}
"; } eval("\$inplayquotes = \"".$templates->get("misc_inplayquotes_add")."\";"); output_page($inplayquotes); } if($mybb->input['action'] == "inplayquotes_overview") { if(!$mybb->user['uid']) { error_no_permission(); } // get username dropdown $query = $db->query("SELECT DISTINCT ".TABLE_PREFIX."inplayquotes.uid FROM ".TABLE_PREFIX."inplayquotes LEFT JOIN ".TABLE_PREFIX."users ON ".TABLE_PREFIX."inplayquotes.uid = ".TABLE_PREFIX."users.uid WHERE ".TABLE_PREFIX."inplayquotes.uid IN(SELECT uid FROM ".TABLE_PREFIX."users) ORDER BY username ASC"); while($users = $db->fetch_array($query)) { $user = get_user($users['uid']); $users_bit .= ""; } // get timestamp dropdown $query = $db->query("SELECT DISTINCT from_unixtime(timestamp, '%M %Y') AS quotedate FROM ".TABLE_PREFIX."inplayquotes ORDER by timestamp ASC"); while($months = $db->fetch_array($query)) { $date_bit .= ""; } $quser = $mybb->input['user']; if(empty($quser)) { $quser = "%"; } $qdate = $mybb->input['date']; // get quotes fitting filters $query = $db->query("SELECT * FROM ".TABLE_PREFIX."inplayquotes WHERE uid LIKE '$quser' AND uid IN(SELECT uid FROM ".TABLE_PREFIX."users) ORDER BY qid DESC"); while($quote = $db->fetch_array($query)) { $date = date('F Y', $quote['timestamp']); $post = get_post($quote['pid']); $thread = get_thread($post['tid']); $user = get_user($quote['uid']); // let delete quotes if($mybb->usergroup['cancp'] == 1 OR $mybb->user['uid'] == $user['uid']) { eval("\$delete_quote = \"".$templates->get("misc_inplayquotes_overview_bit_delete")."\";"); } $user['format_avatar'] = ""; $user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']); $user['username'] = build_profile_link($user['username'], $user['uid']); $quote['thread'] = "{$lang->inplayquotes_in}: $thread[subject]"; if($date == $qdate OR empty($qdate)) { eval("\$inplayquotes_bit .= \"".$templates->get("misc_inplayquotes_overview_bit")."\";"); } } eval("\$inplayquotes = \"".$templates->get("misc_inplayquotes_overview")."\";"); output_page($inplayquotes); } if($mybb->input['action'] == "deletequote") { $qid = (int)$mybb->get_input('qid'); $uid = $db->fetch_field($db->query("SELECT uid FROM ".TABLE_PREFIX."inplayquotes WHERE qid = '$qid'"), "uid"); if($mybb->usergroup['cancp'] == 1 OR $mybb->user['uid'] == $uid) { $db->delete_query("inplayquotes", "qid = '$qid'"); } redirect("index.php", $lang->inplayquotes_deleted); } } function inplayquotes_index() { global $lang, $db, $mybb, $templates, $inplayquotes, $quoted; $lang->load('inplayquotes'); $query = $db->query("SELECT * FROM ".TABLE_PREFIX."inplayquotes LEFT JOIN ".TABLE_PREFIX."posts on ".TABLE_PREFIX."inplayquotes.pid = ".TABLE_PREFIX."posts.pid WHERE ".TABLE_PREFIX."inplayquotes.uid IN(SELECT uid FROM ".TABLE_PREFIX."users) ORDER BY rand() LIMIT 1"); $quoted = $db->fetch_array($query); $quoted['user'] = build_profile_link($quoted['username'], $quoted['uid']); $quoted['scene']= "{$quoted['subject']}"; if(!empty($quoted['quote'])) { eval("\$inplayquotes = \"".$templates->get("index_inplayquotes")."\";"); } } ?>