From 18f97fe5886dc6d6ba277f2ff11db2b07bc1e2c5 Mon Sep 17 00:00:00 2001 From: shadguy <38797333+shadguy@users.noreply.github.com> Date: Thu, 14 Mar 2024 23:45:36 -0600 Subject: [PATCH 1/3] Update rineditor.php Fixed some errors that showed up when we updated our board to PHP 8 --- inc/plugins/rineditor.php | 2096 +++++++++++++++++++++++-------------- 1 file changed, 1292 insertions(+), 804 deletions(-) diff --git a/inc/plugins/rineditor.php b/inc/plugins/rineditor.php index 48dc562..96e2885 100644 --- a/inc/plugins/rineditor.php +++ b/inc/plugins/rineditor.php @@ -1,853 +1,1341 @@
Please make sure IN_MYBB is defined."); -} -define('RE_PLUGIN_VER', '1.2.4'); +/* +Page Manager Plugin for MyBB -function rineditor_info() -{ - global $db, $lang; - - $lang->load('config_rineditor'); - - $YE_description = << -{$lang->rineditor_plug_desc} - - - - - -EOF; - - return array( - 'name' => 'Rin Editor', - 'description' => $YE_description, - 'website' => 'https://github.com/martec/Rin-Editor', - 'author' => 'martec', - 'authorsite' => 'http://community.mybb.com/user-49058.html', - 'version' => RE_PLUGIN_VER, - 'codename' => 'rineditor', - 'compatibility' => '18*' - ); +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -} +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -function rineditor_install() -{ - global $db, $lang, $mybb; - - $lang->load('config_rineditor'); - - $query = $db->simple_select("settinggroups", "COUNT(*) as counts"); - $dorder = $db->fetch_field($query, 'counts') + 1; - - $groupid = $db->insert_query('settinggroups', array( - 'name' => 'rineditor', - 'title' => 'Rin Editor', - 'description' => $lang->rineditor_sett_desc, - 'disporder' => $dorder, - 'isdefault' => '0' - )); - - $dorder_set = 0; - $new_setting[] = array( - 'name' => 'rineditor_enb_quick', - 'title' => $lang->rineditor_enbquick_title, - 'description' => $lang->rineditor_enbquick_desc, - 'optionscode' => 'yesno', - 'value' => '1', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_language', - 'title' => $lang->rineditor_language_title, - 'description' => $lang->rineditor_language_desc, - 'optionscode' => 'select -'.$lang->rineditor_language_val.'', - 'value' => '', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_mobm_source', - 'title' => $lang->rineditor_mobms_title, - 'description' => $lang->rineditor_mobms_desc, - 'optionscode' => 'yesno', - 'value' => '1', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_quickquote', - 'title' => $lang->rineditor_quickquote_title, - 'description' => $lang->rineditor_quickquote_desc, - 'optionscode' => 'yesno', - 'value' => '1', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_smile', - 'title' => $lang->rineditor_smile_title, - 'description' => $lang->rineditor_smile_desc, - 'optionscode' => 'yesno', - 'value' => '1', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_smiley_sc', - 'title' => $lang->rineditor_scsmiley_title, - 'description' => $lang->rineditor_scsmiley_desc, - 'optionscode' => 'yesno', - 'value' => '0', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_autosave', - 'title' => $lang->rineditor_autosave_title, - 'description' => $lang->rineditor_autosave_desc, - 'optionscode' => 'yesno', - 'value' => '0', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_autosave_message', - 'title' => $lang->rineditor_autosavemsg_title, - 'description' => $lang->rineditor_autosavemsg_desc, - 'optionscode' => 'select -'.$lang->rineditor_autosavemsg_val.'', - 'value' => '', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_sel_text', - 'title' => $lang->rineditor_seltext_title, - 'description' => $lang->rineditor_seltext_desc, - 'optionscode' => 'yesno', - 'value' => '1', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_partial_mode', - 'title' => $lang->rineditor_partial_title, - 'description' => $lang->rineditor_partial_desc, - 'optionscode' => 'yesno', - 'value' => '0', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_img_resize', - 'title' => $lang->rineditor_imgs_title, - 'description' => $lang->rineditor_imgs_desc, - 'optionscode' => 'yesno', - 'value' => '0', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_height_full', - 'title' => $lang->rineditor_heightf_title, - 'description' => $lang->rineditor_heightf_desc, - 'optionscode' => 'numeric', - 'value' => '250', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_height_other', - 'title' => $lang->rineditor_heighto_title, - 'description' => $lang->rineditor_heighto_desc, - 'optionscode' => 'numeric', - 'value' => '200', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_rmv_buttonsf', - 'title' => $lang->rineditor_buttonsf_title, - 'description' => $lang->rineditor_buttonsf_desc, - 'optionscode' => 'textarea', - 'value' => 'Subscript,Superscript', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_rmv_buttonso', - 'title' => $lang->rineditor_buttonso_title, - 'description' => $lang->rineditor_buttonsf_desc, - 'optionscode' => 'textarea', - 'value' => 'Subscript,Superscript', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_rulesf', - 'title' => $lang->rineditor_rulesf_title, - 'description' => $lang->rineditor_rules_desc, - 'optionscode' => 'textarea', - 'value' => '', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_rulesf_des', - 'title' => $lang->rineditor_rulesdesf_title, - 'description' => $lang->rineditor_rules_desc, - 'optionscode' => 'textarea', - 'value' => '', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_ruleso', - 'title' => $lang->rineditor_ruleso_title, - 'description' => $lang->rineditor_rules_desc, - 'optionscode' => 'textarea', - 'value' => '', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_ruleso_des', - 'title' => $lang->rineditor_rulesdeso_title, - 'description' => $lang->rineditor_rules_desc, - 'optionscode' => 'textarea', - 'value' => '', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $new_setting[] = array( - 'name' => 'rineditor_imgurapi', - 'title' => $lang->rineditor_imgur_title, - 'description' => $lang->rineditor_imgur_desc, - 'optionscode' => 'text', - 'value' => '', - 'disporder' => ++$dorder_set, - 'gid' => $groupid - ); - - $db->insert_query_multiple("settings", $new_setting); - rebuild_settings(); -} +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ -function rineditor_is_installed() +if (!defined('IN_MYBB')) { - global $db; - - $query = $db->simple_select("settinggroups", "COUNT(*) as counts", "name = 'rineditor'"); - $rows = $db->fetch_field($query, 'counts'); - - return ($rows > 0); + die('This file cannot be accessed directly.'); } -function rineditor_uninstall() +if (defined('THIS_SCRIPT') && THIS_SCRIPT == 'misc.php') { - global $db; + global $mybb, $cache; + $pagecache = $cache->read('pages'); - $groupid = $db->fetch_field( - $db->simple_select('settinggroups', 'gid', "name='rineditor'"), - 'gid' - ); + if (!isset($mybb->input['page'])) { + $mybb->input['page'] = NULL; + } - $db->delete_query('settings', 'gid=' . $groupid); - $db->delete_query("settinggroups", "name = 'rineditor'"); - rebuild_settings(); + if ($mybb->input['page'] && isset($pagecache[$mybb->input['page']]) && $pagecache[$mybb->input['page']]['online'] != 1) + { + define('NO_ONLINE', 1); + } } -function rineditor_activate() +if (defined('IN_ADMINCP')) { - global $db; - include_once MYBB_ROOT.'inc/adminfunctions_templates.php'; - - $new_template_global['rinbutquick'] = " -{\$rin_js_files} -{\$quickquote} -{\$quickquotesty} -{\$black_text} -"; - - foreach($new_template_global as $title => $template) - { - $new_template_global = array('title' => $db->escape_string($title), 'template' => $db->escape_string($template), 'sid' => '-1', 'version' => '1806', 'dateline' => TIME_NOW); - $db->insert_query('templates', $new_template_global); - } - - $new_template['postbit_quickquote'] = "
{\$lang->postbit_button_quote}
-"; - - foreach($new_template as $title => $template2) - { - $new_template = array('title' => $db->escape_string($title), 'template' => $db->escape_string($template2), 'sid' => '-2', 'version' => '1806', 'dateline' => TIME_NOW); - $db->insert_query('templates', $new_template); - } - - find_replace_templatesets( - 'showthread', - '#' . preg_quote('{$footer}') . '#i', - '{$footer}{$rinbutquick}' - ); - - find_replace_templatesets( - 'private_quickreply', - '#' . preg_quote('') . '#i', - '{$rinbutquick}' - ); - - find_replace_templatesets( - 'showthread_quickreply', - '#' . preg_quote('{$lang->message_note}
') . '#i', - '{$lang->message_note}
{$smilieinserter}' - ); - - find_replace_templatesets( - 'private_quickreply', - '#' . preg_quote('{$lang->message_note}
') . '#i', - '{$lang->message_note}
{$smilieinserter}' - ); - - find_replace_templatesets( - 'postbit_classic', - '#' . preg_quote('{$post[\'iplogged\']}') . '#i', - '{$post[\'quick_quote\']}{$post[\'iplogged\']}' - ); - - find_replace_templatesets( - 'postbit', - '#' . preg_quote('{$post[\'iplogged\']}') . '#i', - '{$post[\'quick_quote\']}{$post[\'iplogged\']}' - ); - - find_replace_templatesets( - 'post_attachments_attachment_postinsert', - '#' . preg_quote('onclick=') . '#i', - 'onclick="MyBBEditor.insertText(\'[attachment={$attachment[\'aid\']}]\');" desonclick=' - ); - - $codebuttons_local = array('calendar_addevent', 'calendar_editevent', 'editpost', 'modcp_announcements_edit', 'modcp_announcements_new', 'modcp_editprofile', 'newreply', 'newthread', 'private_send', 'usercp_editsig', 'warnings_warn_pm'); - foreach ($codebuttons_local as &$local) { - find_replace_templatesets( - ''.$local.'', - '#' . preg_quote('{$codebuttons}') . '#i', - '{$rinbutquick}' - ); - } + $plugins->add_hook('misc_start', 'pagemanager'); + $plugins->add_hook('build_friendly_wol_location_end', 'pagemanager_online'); } -function rineditor_deactivate() +function pagemanager_info() { - global $db; - include_once MYBB_ROOT."inc/adminfunctions_templates.php"; - - $db->delete_query("templates", "title IN('rinbutquick','postbit_quickquote')"); - - find_replace_templatesets( - 'showthread', - '#' . preg_quote('{$footer}{$rinbutquick}') . '#i', - '{$footer}' - ); - - find_replace_templatesets( - 'private_quickreply', - '#' . preg_quote('{$rinbutquick}') . '#i', - '' - ); - - find_replace_templatesets( - 'showthread_quickreply', - '#' . preg_quote('{$lang->message_note}
{$smilieinserter}') . '#i', - '{$lang->message_note}
' - ); - - find_replace_templatesets( - 'private_quickreply', - '#' . preg_quote('{$lang->message_note}
{$smilieinserter}') . '#i', - '{$lang->message_note}
' - ); - - find_replace_templatesets( - 'postbit_classic', - '#' . preg_quote('{$post[\'quick_quote\']}{$post[\'iplogged\']}') . '#i', - '{$post[\'iplogged\']}' - ); - - find_replace_templatesets( - 'postbit', - '#' . preg_quote('{$post[\'quick_quote\']}{$post[\'iplogged\']}') . '#i', - '{$post[\'iplogged\']}' - ); - - find_replace_templatesets( - 'post_attachments_attachment_postinsert', - '#' . preg_quote('onclick="MyBBEditor.insertText(\'[attachment={$attachment[\'aid\']}]\');" desonclick=') . '#i', - 'onclick=' - ); - - $codebuttons_local = array('calendar_addevent', 'calendar_editevent', 'editpost', 'modcp_announcements_edit', 'modcp_announcements_new', 'modcp_editprofile', 'newreply', 'newthread', 'private_send', 'usercp_editsig', 'warnings_warn_pm'); - foreach ($codebuttons_local as &$local) { - find_replace_templatesets( - ''.$local.'', - '#' . preg_quote('{$rinbutquick}') . '#i', - '{$codebuttons}' - ); - } + global $mybb, $db, $lang, $plugins_cache; + $lang->load("config_pagemanager"); + + $editedby = '*Edited for MyBB 1.8 & maintained by: SvePu'; + $sources = '*Sources: GitHub'; + + + $info = array( + 'name' => $db->escape_string($lang->pagemanager_info_name), + 'description' => $db->escape_string($lang->pagemanager_info_description), + 'website' => 'https://community.mybb.com/thread-208230.html', + 'author' => 'Sebastian "querschlaeger" Wunderlich', + 'authorsite' => '', + 'version' => '2.1.5', + 'codename' => 'mybbpagemanager', + 'compatibility' => '18*' + ); + + $info_paypal = ""; + if (is_array($plugins_cache) && is_array($plugins_cache['active']) && $plugins_cache['active']['pagemanager']) + { + $info_paypal = '
+ + + + +
'; + } + + $info['description'] = $info_paypal . $info['description'] . '
' . $editedby . '
' . $sources; + + $installed_func = "pagemanager_is_installed"; + + if (function_exists($installed_func) && $installed_func() != true) + { + $info['description'] = "post_code}\">escape_string($lang->delete_pagemanager_link) . "\" alt=\"settings_icon\" width=\"16\" height=\"16\" />" . $info['description']; + } + + return $info; } -$plugins->add_hook('global_start', 're_cache'); -function re_cache() +function pagemanager_activate() { - global $templatelist, $mybb, $settings; - - if (isset($templatelist)) { - $templatelist .= ','; - } - - if (THIS_SCRIPT == 'showthread.php' || THIS_SCRIPT == 'private.php') { - if($mybb->settings['rineditor_smile'] != 0 && $mybb->settings['rineditor_quickquote'] != 1) { - $templatelist .= 'rinbutquick,smilieinsert,smilieinsert_smilie,smilieinsert_getmore'; - } - elseif($mybb->settings['rineditor_quickquote'] != 0 && $mybb->settings['rineditor_smile'] != 1) { - $templatelist .= 'rinbutquick,postbit_quickquote'; - } - elseif($mybb->settings['rineditor_quickquote'] != 0 && $mybb->settings['rineditor_smile'] != 0) { - $templatelist .= 'rinbutquick,postbit_quickquote,smilieinsert,smilieinsert_smilie,smilieinsert_getmore'; - } - else { - $templatelist .= 'rinbutquick'; - } - } - $plugin_local = array('calendar.php', 'editpost.php', 'modcp.php', 'newreply.php', 'newthread.php', 'private.php', 'usercp.php', 'warnings.php'); - foreach ($plugin_local as &$local) { - if (THIS_SCRIPT == ''.$local.'') { - $templatelist .= 'rinbutquick'; - } - } + pagemanager_plugin_update(); + change_admin_permission('config', 'pagemanager'); + pagemanager_cache(); } -function rineditor_inserter_quick($smilies = true) +function pagemanager_deactivate() { - global $db, $mybb, $theme, $templates, $lang, $smiliecache, $cache, $templatelist, $cache; - - if (!$lang->rineditor) { - $lang->load('rineditor'); - } - - $editor_lang_strings = array( - "editor_videourl" => "Video URL:", - "editor_videotype" => "Video Type:", - "editor_insert" => "Insert", - "editor_description" => "Description (optional):", - "editor_enterimgurl" => "Enter the image URL:", - "editor_enterurl" => "Enter URL:", - "editor_dailymotion" => "Dailymotion", - "editor_metacafe" => "MetaCafe", - "editor_mixer" => "Mixer", - "editor_vimeo" => "Vimeo", - "editor_youtube" => "Youtube", - "editor_facebook" => "Facebook", - "editor_liveleak" => "LiveLeak", - "editor_twitch" => "Twitch", - "editor_insertvideo" => "Insert a video", - "editor_more" => "More", - "rineditor_restore" => "Restore", - "rineditor_uploading" => "Uploading", - "rineditor_fail" => "Fail", - "wrote" => "Wrote", - "quote" => "Quote" - ); - $editor_language = "RinEditor = {\n"; - - $editor_languages_count = count($editor_lang_strings); - $i = 0; - foreach($editor_lang_strings as $lang_string => $key) - { - $i++; - $js_lang_string = str_replace("\"", "\\\"", $key); - $string = str_replace("\"", "\\\"", $lang->$lang_string); - $editor_language .= "\t\"{$js_lang_string}\": \"{$string}\""; - - if($i < $editor_languages_count) - { - $editor_language .= ","; - } - - $editor_language .= "\n"; - } - - $editor_language .= "};"; - - // Smilies - $emoticon = ""; - $emoticons_enabled = "false"; - if($smilies && $mybb->settings['smilieinserter'] != 0 && $mybb->settings['smilieinsertercols'] && $mybb->settings['smilieinsertertot']) - { - $emoticon = ",emoticon"; - $emoticons_enabled = "true"; - - if(!$smiliecache) - { - if(!is_array($smilie_cache)) - { - $smilie_cache = $cache->read("smilies"); - } - foreach($smilie_cache as $smilie) - { - if($smilie['showclickable'] != 0) - { - $smilie['image'] = str_replace("{theme}", $theme['imgdir'], $smilie['image']); - $smiliecache[$smilie['sid']] = $smilie; - } - } - } - - unset($smilie); - - if(is_array($smiliecache)) - { - reset($smiliecache); - - $rinsmiledir = $dropdownsmiliesurl = $dropdownsmiliesdes = $dropdownsmiliesnam = $dropdownsmiliesurlmore = $dropdownsmiliesdesmore = $dropdownsmiliesnamemore = ""; - $i = 0; - - foreach($smiliecache as $smilie) - { - $finds = explode("\n", $smilie['find']); - - // Only show the first text to replace in the box - $smilie['find'] = $finds[0]; - - $find = htmlspecialchars_uni($smilie['find']); - $image = htmlspecialchars_uni($smilie['image']); - $name = htmlspecialchars_uni($smilie['name']); - - if($i < $mybb->settings['smilieinsertertot']) - { - $dropdownsmiliesurl .= '"'.$mybb->asset_url.'/'.$image.'",'; - $dropdownsmiliesdes .= '"'.$find.'",'; - $dropdownsmiliesname .= '"'.$name.'",'; - if (empty($rinsmiledir)) { - $rinsmiledir = substr($dropdownsmiliesurl, 1, strrpos($dropdownsmiliesurl, '/')); - } - } - else - { - $dropdownsmiliesurlmore .= '"'.$mybb->asset_url.'/'.$image.'",'; - $dropdownsmiliesdesmore .= '"'.$find.'",'; - $dropdownsmiliesnamemore .= '"'.$name.'",'; - } - - ++$i; - } - } - } - - $rin_js_files = $quickquote = $quickquotesty = $sourcemode = $rin_height = $rin_rmvbut = $rin_extbut = $rin_extbutd = $rin_imgur = $rin_autosave = $rinlang = $rinscsmiley = $rin_vbquote = $black_text = $content_skin = ""; - - $rin_js_files = " - -"; - - if(strpos($templatelist,'showthread_quickreply') || strpos($templatelist,'private_quickreply')) { - $rin_height = $mybb->settings['rineditor_height_other']; - $rin_rmvbut = $mybb->settings['rineditor_rmv_buttonso']; - $rin_extbut = $mybb->settings['rineditor_ruleso']; - $rin_extbutd = $mybb->settings['rineditor_ruleso_des']; - } - else { - $rin_height = $mybb->settings['rineditor_height_full']; - $rin_rmvbut = $mybb->settings['rineditor_rmv_buttonsf']; - $rin_extbut = $mybb->settings['rineditor_rulesf']; - $rin_extbutd = $mybb->settings['rineditor_rulesf_des']; - } - - $rin_imgur = $mybb->settings['rineditor_imgurapi']; - if ($mybb->settings['rineditor_autosave']) { - $rin_autosave = 'autosave'; - } - - if($mybb->settings['rineditor_quickquote'] == 1 && strpos($templatelist,'showthread_quickreply')) { - $quickquote = ""; - $quickquotesty = "asset_url."/jscripts/rin/editor/quickquote.css?ver=".RE_PLUGIN_VER."\" type=\"text/css\" />"; - } - - if($mybb->user['sourceeditor'] == 1) - { - $sourcemode = "source"; - } - else { - $sourcemode = "wysiwyg"; - } - - $plu_vb = $cache->read("plugins"); - if($plu_vb['active']['vbquote']) { - $rin_vbquote = 1; - } - else { - $rin_vbquote = 0; - } - - $content_skin = "".$mybb->asset_url."/jscripts/rin/editor/contents.css?ver=".RE_PLUGIN_VER.""; - if(substr($theme['editortheme'], 0, 4) === "rin-") { - $rin_style = substr($theme['editortheme'], 0, -4); - } - elseif (substr($theme['editortheme'], 0, 6) === "b_rin-") { - $rin_style = substr($theme['editortheme'], 2, -4); - $black_text = ""; - $content_skin = "".$mybb->asset_url."/jscripts/rin/editor/contents_black.css?ver=".RE_PLUGIN_VER.""; - } - else { - $rin_style = 'rin-moonocolor'; - } - $rinlang = $mybb->settings['rineditor_language']; - $rinscsmiley = $mybb->settings['rineditor_smiley_sc']; - - eval("\$rininsertquick = \"".$templates->get("rinbutquick")."\";"); +function pagemanager_install() +{ + global $db; + + /** Install DB Table */ + $collation = $db->build_create_table_collation(); + + if (!$db->table_exists('pages')) + { + switch ($db->type) + { + case "pgsql": + $db->write_query("CREATE TABLE " . TABLE_PREFIX . "pages ( + pid serial, + name varchar(120) NOT NULL default '', + url varchar(30) NOT NULL default '', + pagegroups varchar(200) NOT NULL default '', + framework smallint NOT NULL default '0', + template text NOT NULL default '', + deviceselect varchar(10) NOT NULL default '', + online smallint NOT NULL default '1', + enabled smallint NOT NULL default '1', + dateline int NOT NULL default '0', + PRIMARY KEY (pid) + );"); + break; + case "sqlite": + $db->write_query("CREATE TABLE " . TABLE_PREFIX . "pages ( + pid INTEGER PRIMARY KEY, + name varchar(120) NOT NULL default '', + url varchar(30) NOT NULL default '', + pagegroups varchar(200) NOT NULL default '', + framework tinyint(1) NOT NULL default '0', + template text NOT NULL, + deviceselect varchar(10) NOT NULL default '', + online tinyint(1) NOT NULL default '1', + enabled tinyint(1) NOT NULL default '1', + dateline int(10) NOT NULL default '0' + );"); + break; + default: + $db->write_query("CREATE TABLE " . TABLE_PREFIX . "pages ( + pid int(10) unsigned NOT NULL auto_increment, + name varchar(120) NOT NULL default '', + url varchar(30) NOT NULL default '', + pagegroups varchar(200) NOT NULL default '', + framework tinyint(1) NOT NULL default '0', + template text NOT NULL, + deviceselect varchar(10) NOT NULL default '', + online tinyint(1) NOT NULL default '1', + enabled tinyint(1) NOT NULL default '1', + dateline int unsigned NOT NULL default '0', + UNIQUE KEY url (url), + PRIMARY KEY (pid) + ) ENGINE=MyISAM{$collation};"); + break; + } + } +} - return $rininsertquick; +function pagemanager_is_installed() +{ + global $mybb, $db; + $pmcache = $db->simple_select('datacache', '*', 'title="pages"'); + if ($db->num_rows($pmcache) > 0 && $db->table_exists('pages')) + { + $fields = $db->show_fields_from('pages'); + $list = array(); + $check = array( + 'pid', + 'name', + 'url', + 'pagegroups', + 'framework', + 'template', + 'deviceselect', + 'online', + 'enabled', + 'dateline' + ); + foreach ($fields as $key => $val) + { + array_push($list, $val['Field']); + } + $diff = array_diff($check, $list); + if (empty($diff)) + { + return true; + } + } + return false; } -global $settings; +function pagemanager_uninstall() +{ + global $mybb, $db; + if ($mybb->request_method != 'post') + { + global $page, $lang; + $lang->load('config_pagemanager'); + $page->output_confirm_action('index.php?module=config-plugins&action=deactivate&uninstall=1&plugin=pagemanager', $lang->pagemanager_uninstall_message, $lang->pagemanager_uninstall); + } + + if (!isset($mybb->input['no']) && $db->table_exists('pages')) + { + $db->drop_table('pages'); + } + pagemanager_cache(true, true); +} -$enbq = ''; +function pagemanager_plugin_update() +{ + global $db; + if ($db->table_exists('pages')) + { + if (!$db->field_exists('pagegroups', 'pages')) + { + $db->add_column("pages", "pagegroups", "varchar(200) NOT NULL default '' AFTER `url`"); + $db->update_query("pages", array('pagegroups' => '-1')); + } + + if (!$db->field_exists('deviceselect', 'pages')) + { + $db->add_column("pages", "deviceselect", "varchar(10) NOT NULL default '' AFTER `template`"); + $db->update_query("pages", array('deviceselect' => 'all')); + } + + if ($db->field_exists('groups', 'pages') && $db->field_exists('pagegroups', 'pages')) + { + $db->drop_column("pages", "pagegroups"); + $db->rename_column("pages", "groups", "pagegroups", "varchar(200) NOT NULL default '' AFTER `url`"); + } + } +} -if($settings['rineditor_enb_quick']) { - $enbq = 'showthread_start'; +function pagemanager_admin_action(&$action) +{ + $action['pagemanager'] = array( + 'active' => 'pagemanager' + ); } -$plugin_local = array($enbq, 'calendar_start', 'editpost_start', 'modcp_start', 'newreply_start', 'newthread_start', 'private_start', 'usercp_start', 'warnings_start'); -foreach ($plugin_local as &$local) { - $plugins->add_hook(''.$local.'', 'rineditor'); +function pagemanager_admin_menu(&$sub_menu) +{ + global $lang; + $lang->load("config_pagemanager"); + end($sub_menu); + $key = (key($sub_menu)) + 10; + $sub_menu[$key] = array( + 'id' => 'pagemanager', + 'title' => $lang->pagemanager_info_name, + 'link' => 'index.php?module=config-pagemanager' + ); } -function rineditor () { - - global $rinbutquick, $mybb, $forum, $plugins, $calendar; - - $allow_mycode = true; - - if($plugins->current_hook == 'private_start') - { - $allow_mycode = $mybb->settings['pmsallowmycode']; - } - elseif($plugins->current_hook == 'calendar_start' && isset($calendar['allowmycode'])) - { - $allow_mycode = $calendar['allowmycode']; - } - elseif(isset($forum['allowmycode'])) - { - $allow_mycode = $forum['allowmycode']; - } - - // If MyCode is on for this forum and the MyCode editor is enabled in the Admin CP, draw the rin editor. - if($mybb->settings['bbcodeinserter'] != 0 && $allow_mycode && (!$mybb->user['uid'] || $mybb->user['showcodebuttons'] != 0)) { - $rinbutquick = rineditor_inserter_quick(); - } +function pagemanager_admin_permissions(&$admin_permissions) +{ + global $lang; + $lang->load("config_pagemanager"); + $admin_permissions['pagemanager'] = $lang->pagemanager_can_manage_pages; } -if($settings['rineditor_quickquote'] && $settings['rineditor_enb_quick']) { - $plugins->add_hook('postbit', 're_quickquote_postbit'); +function pagemanager_admin() +{ + global $mybb, $page, $db, $lang; + $lang->load("config_pagemanager"); + if ($page->active_action != 'pagemanager') + { + return false; + } + $info = pagemanager_info(); + $sub_tabs['pagemanager'] = array( + 'title' => $lang->pagemanager_main_title, + 'link' => 'index.php?module=config-pagemanager', + 'description' => $lang->pagemanager_main_description + ); + $sub_tabs['pagemanager_add'] = array( + 'title' => $lang->pagemanager_add_title, + 'link' => 'index.php?module=config-pagemanager&action=add', + 'description' => $lang->pagemanager_add_description + ); + $sub_tabs['pagemanager_import'] = array( + 'title' => $lang->pagemanager_import_title, + 'link' => 'index.php?module=config-pagemanager&action=import', + 'description' => $lang->pagemanager_import_description + ); + if (!$mybb->input['action']) + { + $page->add_breadcrumb_item($lang->pagemanager_info_name); + $page->output_header($lang->pagemanager_info_name); + if (!pagemanager_is_installed()) + { + $page->output_error('

' . $lang->pagemanager_install_error . '

'); + } + $page->output_nav_tabs($sub_tabs, 'pagemanager'); + $table = new Table; + $table->construct_header($lang->name); + $table->construct_header($lang->pagemanager_main_table_id, array('width' => 40, 'class' => 'align_center')); + $table->construct_header($lang->pagemanager_main_table_framework, array('width' => 125, 'class' => 'align_center')); + $table->construct_header($lang->pagemanager_main_table_online, array('width' => 100, 'class' => 'align_center')); + $table->construct_header($lang->pagemanager_main_table_groups, array('width' => 125, 'class' => 'align_center')); + $table->construct_header($lang->pagemanager_main_table_devices, array('width' => 125, 'class' => 'align_center')); + $table->construct_header($lang->pagemanager_main_table_modified, array('width' => 150, 'class' => 'align_center')); + $table->construct_header($lang->controls, array('width' => 100, 'class' => 'align_center')); + $query = $db->simple_select('pages', '*', '', array('order_by' => 'name', 'order_dir' => 'ASC')); + if ($db->num_rows($query) > 0) + { + while ($pages = $db->fetch_array($query)) + { + + // PHP 8 fix - 2024-March-13 - Dave + if (!isset($mybb->input['highlight'])) { + $mybb->input['highlight'] = NULL; + } + + if ($mybb->input['highlight'] == $pages['pid']) + { + $highlight = array('style' => 'text-align:left; background-color: #FFFBD9;'); + $highlightc40 = array('width' => 40, 'style' => 'background-color: #FFFBD9;', 'class' => 'align_center'); + $highlightc100 = array('width' => 100, 'style' => 'background-color: #FFFBD9;', 'class' => 'align_center'); + $highlightc125 = array('width' => 125, 'style' => 'background-color: #FFFBD9;', 'class' => 'align_center'); + $highlightc150 = array('width' => 150, 'style' => 'background-color: #FFFBD9;', 'class' => 'align_center'); + } + else + { + $highlight = array('style' => 'text-align:left;'); + $highlightc40 = array('width' => 40, 'class' => 'align_center'); + $highlightc100 = array('width' => 100, 'class' => 'align_center'); + $highlightc125 = array('width' => 125, 'class' => 'align_center'); + $highlightc150 = array('width' => 150, 'class' => 'align_center'); + } + if ($pages['enabled']) + { + $status_icon = '' . $lang->pagemanager_main_table_enabled . ' '; + $status_lang = $lang->pagemanager_main_control_disable; + $status_action = 'disable'; + $pagelink = '
' . $lang->pagemanager_main_open_page . '' . $mybb->settings['bburl'] . '/misc.php?page=' . $pages['url'] . ''; + } + else + { + $status_icon = '' . $lang->pagemanager_main_table_disabled . ' '; + $status_lang = $lang->pagemanager_main_control_enable; + $status_action = 'enable'; + $pagelink = '
' . $lang->pagemanager_main_page_disabled . ''; + } + if ($pages['framework']) + { + $framework_status = $lang->yes; + } + else + { + $framework_status = $lang->no; + } + if ($pages['online']) + { + $online_status = $lang->yes; + } + else + { + $online_status = $lang->no; + } + if ($pages['pagegroups'] == "-1") + { + $groups_allowed = $lang->all_groups; + } + else + { + $groups_allowed = $comma = ''; + $groups = $db->simple_select("usergroups", "gid, title", "gid IN ({$pages['pagegroups']})"); + while ($gt = $db->fetch_array($groups)) + { + $groups_allowed .= $comma . '' . $gt['gid'] . ''; + $comma = ', '; + } + } + + $visible_on_devices = "pagemanager_edit_form_deviceselect_" . $pages['deviceselect']; + + $table->construct_cell($status_icon . '' . $pages['name'] . '' . $pagelink, $highlight); + $table->construct_cell($pages['pid'], $highlightc40); + $table->construct_cell($framework_status, $highlightc125); + $table->construct_cell($online_status, $highlightc100); + $table->construct_cell($groups_allowed, $highlightc125); + $table->construct_cell($lang->$visible_on_devices, $highlightc125); + $table->construct_cell($lang->sprintf($lang->pagemanager_main_table_dateline, my_date($mybb->settings['dateformat'], $pages['dateline']), my_date($mybb->settings['timeformat'], $pages['dateline'])), $highlightc150); + $popup = new PopupMenu('page_' . $pages['pid'], $lang->options); + $popup->add_item($lang->pagemanager_main_control_edit, $sub_tabs['pagemanager']['link'] . '&action=edit&pid=' . $pages['pid']); + $popup->add_item($lang->pagemanager_main_control_export, $sub_tabs['pagemanager']['link'] . '&action=export&pid=' . $pages['pid']); + $popup->add_item($status_lang, $sub_tabs['pagemanager']['link'] . '&action=' . $status_action . '&pid=' . $pages['pid'] . '&my_post_key=' . $mybb->post_code); + $popup->add_item($lang->pagemanager_main_control_delete, $sub_tabs['pagemanager']['link'] . '&action=delete&pid=' . $pages['pid'] . '&my_post_key=' . $mybb->post_code, 'return AdminCP.deleteConfirmation(this,\'' . $lang->pagemanager_main_control_delete_question . '\')'); + $table->construct_cell($popup->fetch(), $highlightc100); + $table->construct_row(); + } + } + else + { + $table->construct_cell($lang->pagemanager_main_table_no_pages, array('colspan' => 8)); + $table->construct_row(); + } + $table->output($lang->pagemanager_main_table); + $page->output_footer(); + } + if ($mybb->input['action'] == 'add') + { + if ($mybb->request_method == 'post') + { + if ($mybb->input['import']) + { + if (!$_FILES['file'] || $_FILES['file']['error'] == 4) + { + $error = $lang->pagemanager_import_error_no_file; + } + elseif ($_FILES['file']['error']) + { + $error = $lang->sprintf($lang->pagemanager_import_error_php, $_FILES['file']['error']); + } + else + { + if (!is_uploaded_file($_FILES['file']['tmp_name'])) + { + $error = $lang->pagemanager_import_error_lost; + } + else + { + $contents = @file_get_contents($_FILES['file']['tmp_name']); + @unlink($_FILES['file']['tmp_name']); + if (!trim($contents)) + { + $error = $lang->pagemanager_import_error_no_contents; + } + } + } + if (!$error) + { + require_once MYBB_ROOT . 'inc/class_xml.php'; + $parser = new XMLParser($contents); + $tree = $parser->get_tree(); + if (!is_array($tree) || !is_array($tree['pagemanager']) || !is_array($tree['pagemanager']['attributes']) || !is_array($tree['pagemanager']['page'])) + { + $error = $lang->pagemanager_import_error_no_contents; + } + if (!$error) + { + foreach ($tree['pagemanager']['page'] as $property => $value) + { + if ($property == 'tag' || $property == 'value') + { + continue; + } + $input_array[$property] = $value['value']; + } + if (!$mybb->input['version'] && $info['version'] != $tree['pagemanager']['attributes']['version']) + { + $error = $lang->pagemanager_import_error_version; + } + if ($mybb->input['name_overwrite']) + { + $input_array['name'] = $mybb->input['name_overwrite']; + } + $form_array = pagemanager_setinput($input_array, true); + if (!$form_array['name'] || !$form_array['url'] || !$form_array['template']) + { + $error = $lang->pagemanager_import_error_no_contents; + } + } + } + if ($error) + { + flash_message($error, 'error'); + admin_redirect($sub_tabs['pagemanager']['link'] . '&action=import'); + } + } + else + { + $form_array = pagemanager_setinput($mybb->input); + } + $querycheck = $db->simple_select('pages', 'pid', 'url="' . $db->escape_string($form_array['url']) . '"'); + $check = $db->fetch_array($querycheck); + if (!$form_array['name']) + { + $errors[] = $lang->pagemanager_edit_error_name; + } + if (!$form_array['url']) + { + $errors[] = $lang->pagemanager_edit_error_url; + } + if ($check['pid']) + { + $errors[] = $lang->pagemanager_edit_error_url_duplicate; + } + if (!$form_array['template']) + { + $errors[] = $lang->pagemanager_edit_error_template; + } + if ($mybb->input['group_type'] == 2) + { + if (count($mybb->input['group_1_groups']) < 1) + { + $errors[] = $lang->pagemanager_edit_no_groups_selected; + } + + $group_checked[2] = "checked=\"checked\""; + } + else + { + $group_checked[1] = "checked=\"checked\""; + } + if (!$errors && !$mybb->input['manual']) + { + if ($mybb->input['group_type'] == 2) + { + if (is_array($mybb->input['group_1_groups'])) + { + $checked = array(); + foreach ($mybb->input['group_1_groups'] as $gid) + { + $checked[] = (int)$gid; + } + + $selected_groups = implode(',', $checked); + } + } + else + { + $selected_groups = '-1'; + } + + $updated_page = array( + 'name' => $db->escape_string($form_array['name']), + 'url' => $db->escape_string($form_array['url']), + 'pagegroups' => $selected_groups, + 'framework' => $form_array['framework'], + 'template' => $db->escape_string($form_array['template']), + 'deviceselect' => $db->escape_string($form_array['deviceselect']), + 'online' => $form_array['online'], + 'enabled' => $form_array['enabled'], + 'dateline' => TIME_NOW + ); + $db->insert_query('pages', $updated_page); + $query = $db->simple_select('pages', '*', 'url="' . $db->escape_string($form_array['url']) . '"'); + $pages = $db->fetch_array($query); + pagemanager_cache(); + if ($mybb->input['import']) + { + flash_message($lang->pagemanager_import_success, 'success'); + } + else + { + flash_message($lang->pagemanager_add_success, 'success'); + } + admin_redirect($sub_tabs['pagemanager']['link'] . '&highlight=' . $pages['pid']); + } + } + else + { + $form_array = pagemanager_setinput(); + $mybb->input['group_1_groups'] = ''; + $group_checked[1] = "checked=\"checked\""; + $group_checked[2] = ''; + } + $queryadmin = $db->simple_select('adminoptions', '*', 'uid=' . $mybb->user['uid']); + $admin_options = $db->fetch_array($queryadmin); + if ($admin_options['codepress'] != 0) + { + $page->extra_header = ' + + + + + + + + + + + + + + + + + + + + '; + } + $page->add_breadcrumb_item($lang->pagemanager_info_name, $sub_tabs['pagemanager']['link']); + $page->add_breadcrumb_item($sub_tabs['pagemanager_add']['title']); + $page->output_header($lang->pagemanager_info_name . ' - ' . $sub_tabs['pagemanager_add']['title']); + if (!pagemanager_is_installed()) + { + $page->output_error('

' . $lang->pagemanager_install_error . '

'); + } + $page->output_nav_tabs($sub_tabs, 'pagemanager_add'); + $form = new Form($sub_tabs['pagemanager_add']['link'], 'post', 'add_template'); + if ($errors) + { + $page->output_inline_error($errors); + } + $form_container = new FormContainer($lang->pagemanager_add_form); + $form_container->output_row($lang->pagemanager_edit_form_name . ' *', $lang->pagemanager_edit_form_name_description, $form->generate_text_box('name', $form_array['name'], array('id' => 'name')), 'name'); + $form_container->output_row($lang->pagemanager_edit_form_url . ' *', $lang->pagemanager_edit_form_url_description, $form->generate_text_box('url', $form_array['url'], array('id' => 'url')), 'url'); + $group_select = " +
+
+
+
+ + + + + +
{$lang->groups_colon}" . $form->generate_group_select('group_1_groups[]', $mybb->input['group_1_groups'], array('multiple' => true, 'size' => 10)) . "
+
+
+ "; + $form_container->output_row($lang->pagemanager_add_edit_groupselect . " *", '', $group_select); + $form_container->output_row($lang->pagemanager_edit_form_framework, $lang->pagemanager_edit_form_framework_description, $form->generate_yes_no_radio('framework', $form_array['framework'])); + $form_container->output_row($lang->pagemanager_edit_form_template . ' *', $lang->pagemanager_edit_form_template_description, $form->generate_text_area('template', $form_array['template'], array('id' => 'template', 'style' => 'width:100%;height:500px;')), 'template'); + + $device_select = array( + 'all' => $lang->pagemanager_edit_form_deviceselect_all, + 'desktop' => $lang->pagemanager_edit_form_deviceselect_desktop, + 'mobile' => $lang->pagemanager_edit_form_deviceselect_mobile + ); + $form_container->output_row($lang->pagemanager_edit_form_deviceselect, $lang->pagemanager_edit_form_deviceselect_description, $form->generate_select_box('deviceselect', $device_select, $form_array['deviceselect'], array('id' => 'deviceselect')), 'deviceselect'); + $form_container->output_row($lang->pagemanager_edit_form_online, $lang->pagemanager_edit_form_online_description, $form->generate_yes_no_radio('online', $form_array['online'])); + $form_container->output_row($lang->pagemanager_edit_form_enable, $lang->pagemanager_edit_form_enable_description, $form->generate_yes_no_radio('enabled', $form_array['enabled'])); + $form_container->end(); + $buttons[] = $form->generate_submit_button($lang->pagemanager_edit_form_close); + $form->output_submit_wrapper($buttons); + $form->end(); + if ($admin_options['codepress'] != 0) + { + echo ''; + } + $page->output_footer(); + } + if ($mybb->input['action'] == 'import') + { + $page->add_breadcrumb_item($lang->pagemanager_info_name, $sub_tabs['pagemanager']['link']); + $page->add_breadcrumb_item($sub_tabs['pagemanager_import']['title']); + $page->output_header($lang->pagemanager_info_name . ' - ' . $sub_tabs['pagemanager_import']['title']); + if (!pagemanager_is_installed()) + { + $page->output_error('

' . $lang->pagemanager_install_error . '

'); + } + $page->output_nav_tabs($sub_tabs, 'pagemanager_import'); + $form = new Form($sub_tabs['pagemanager_add']['link'], 'post', '', 1); + $form_container = new FormContainer($lang->pagemanager_import_form); + $form_container->output_row($lang->pagemanager_import_form_file . ' *', $lang->pagemanager_import_form_file_description, $form->generate_file_upload_box('file')); + $form_container->output_row($lang->pagemanager_import_form_name, $lang->pagemanager_import_form_name_description, $form->generate_text_box('name_overwrite', '', array('id' => 'name_overwrite')), 'name_overwrite'); + $form_container->output_row($lang->pagemanager_import_form_manual, $lang->pagemanager_import_form_manual_description, $form->generate_on_off_radio('manual', 0)); + $form_container->output_row($lang->pagemanager_import_form_version, $lang->pagemanager_import_form_version_description, $form->generate_yes_no_radio('version', 0)); + $form_container->end(); + $buttons[] = $form->generate_submit_button($lang->pagemanager_import_form_action, array('name' => 'import')); + $form->output_submit_wrapper($buttons); + $form->end(); + $page->output_footer(); + } + if ($mybb->input['action'] == 'edit') + { + $query = $db->simple_select('pages', '*', 'pid=' . intval($mybb->input['pid'])); + $pages = $db->fetch_array($query); + if (!$pages['pid']) + { + flash_message($lang->pagemanager_invalid_page, 'error'); + admin_redirect($sub_tabs['pagemanager']['link']); + } + if ($mybb->request_method == 'post') + { + $form_array = pagemanager_setinput($mybb->input); + $querycheck = $db->simple_select('pages', 'pid', 'url="' . $db->escape_string($form_array['url']) . '" AND pid != ' . $pages['pid']); + $check = $db->fetch_array($querycheck); + if (!$form_array['name']) + { + $errors[] = $lang->pagemanager_edit_error_name; + } + if (!$form_array['url']) + { + $errors[] = $lang->pagemanager_edit_error_url; + } + if ($check['pid']) + { + $errors[] = $lang->pagemanager_edit_error_url_duplicate; + } + if (!$form_array['template']) + { + $errors[] = $lang->pagemanager_edit_error_template; + } + if ($mybb->input['group_type'] == 2) + { + if (count($mybb->input['group_1_groups']) < 1) + { + $errors[] = $lang->pagemanager_edit_no_groups_selected; + } + $group_checked[2] = "checked=\"checked\""; + } + else + { + $group_checked[1] = "checked=\"checked\""; + } + if (!$errors) + { + if ($mybb->input['group_type'] == 2) + { + if (is_array($mybb->input['group_1_groups'])) + { + $checked = array(); + foreach ($mybb->input['group_1_groups'] as $gid) + { + $checked[] = (int)$gid; + } + + $selected_groups = implode(',', $checked); + } + } + else + { + $selected_groups = '-1'; + } + if ($form_array['name'] == $pages['name'] && $form_array['url'] == $pages['url'] && $form_array['framework'] == $pages['framework'] && $form_array['template'] == $pages['template'] && $form_array['deviceselect'] == $pages['deviceselect'] && $form_array['online'] == $pages['online'] && $pages['pagegroups'] == $selected_groups) + { + $modified = $pages['dateline']; + if ($form_array['enabled'] == $pages['enabled']) + { + $update_lang = $lang->pagemanager_edit_success_nothing; + } + else + { + if ($form_array['enabled']) + { + $update_lang = $lang->pagemanager_enable_success; + } + else + { + $update_lang = $lang->pagemanager_disable_success; + } + } + } + else + { + $modified = TIME_NOW; + $update_lang = $lang->pagemanager_edit_success; + } + $updated_page = array( + 'name' => $db->escape_string($form_array['name']), + 'url' => $db->escape_string($form_array['url']), + 'pagegroups' => $selected_groups, + 'framework' => $form_array['framework'], + 'template' => $db->escape_string($form_array['template']), + 'deviceselect' => $db->escape_string($form_array['deviceselect']), + 'online' => $form_array['online'], + 'enabled' => $form_array['enabled'], + 'dateline' => $modified + ); + $db->update_query('pages', $updated_page, 'pid=' . $pages['pid']); + pagemanager_cache(); + flash_message($update_lang, 'success'); + if ($mybb->input['continue']) + { + admin_redirect($sub_tabs['pagemanager']['link'] . '&action=edit&pid=' . $pages['pid']); + } + else + { + admin_redirect($sub_tabs['pagemanager']['link'] . '&highlight=' . $pages['pid']); + } + } + } + else + { + $form_array = pagemanager_setinput($pages); + $mybb->input['group_1_groups'] = explode(",", $pages['pagegroups']); + + if (!$pages['pagegroups'] || $pages['pagegroups'] == -1) + { + $group_checked[1] = "checked=\"checked\""; + $group_checked[2] = ''; + } + else + { + $group_checked[1] = ''; + $group_checked[2] = "checked=\"checked\""; + } + } + $queryadmin = $db->simple_select('adminoptions', '*', 'uid=' . $mybb->user['uid']); + $admin_options = $db->fetch_array($queryadmin); + $sub_tabs['pagemanager_edit'] = array( + 'title' => $lang->pagemanager_edit_title, + 'link' => 'index.php?module=config-pagemanager&action=edit&pid=' . $pages['pid'], + 'description' => $lang->pagemanager_edit_description + ); + if ($admin_options['codepress'] != 0) + { + $page->extra_header = ' + + + + + + + + + + + + + + + + + + + + '; + } + $page->add_breadcrumb_item($lang->pagemanager_info_name, $sub_tabs['pagemanager']['link']); + $page->add_breadcrumb_item($sub_tabs['pagemanager_edit']['title']); + $page->output_header($lang->pagemanager_info_name . ' - ' . $sub_tabs['pagemanager_edit']['title']); + if (!pagemanager_is_installed()) + { + $page->output_error('

' . $lang->pagemanager_install_error . '

'); + } + $page->output_nav_tabs($sub_tabs, 'pagemanager_edit'); + $form = new Form($sub_tabs['pagemanager_edit']['link'], 'post', 'edit_template'); + if ($errors) + { + $page->output_inline_error($errors); + } + $form_container = new FormContainer($lang->pagemanager_edit_form); + $form_container->output_row($lang->pagemanager_edit_form_name . ' *', $lang->pagemanager_edit_form_name_description, $form->generate_text_box('name', $form_array['name'], array('id' => 'name')), 'name'); + $form_container->output_row($lang->pagemanager_edit_form_url . ' *', $lang->pagemanager_edit_form_url_description, $form->generate_text_box('url', $form_array['url'], array('id' => 'url')), 'url'); + $group_select = " +
+
+
+
+ + + + + +
{$lang->groups_colon}" . $form->generate_group_select('group_1_groups[]', $mybb->input['group_1_groups'], array('multiple' => true, 'size' => 10)) . "
+
+
+ "; + $form_container->output_row($lang->pagemanager_add_edit_groupselect . " *", '', $group_select); + $form_container->output_row($lang->pagemanager_edit_form_framework, $lang->pagemanager_edit_form_framework_description, $form->generate_yes_no_radio('framework', $form_array['framework'])); + $form_container->output_row($lang->pagemanager_edit_form_template . ' *', $lang->pagemanager_edit_form_template_description, $form->generate_text_area('template', $form_array['template'], array('id' => 'template', 'style' => 'width: 100%; height: 500px;')), 'template'); + + $device_select = array( + 'all' => $lang->pagemanager_edit_form_deviceselect_all, + 'desktop' => $lang->pagemanager_edit_form_deviceselect_desktop, + 'mobile' => $lang->pagemanager_edit_form_deviceselect_mobile + ); + $form_container->output_row($lang->pagemanager_edit_form_deviceselect, $lang->pagemanager_edit_form_deviceselect_description, $form->generate_select_box('deviceselect', $device_select, $form_array['deviceselect'], array('id' => 'deviceselect')), 'deviceselect'); + $form_container->output_row($lang->pagemanager_edit_form_online, $lang->pagemanager_edit_form_online_description, $form->generate_yes_no_radio('online', $form_array['online'])); + $form_container->output_row($lang->pagemanager_edit_form_enable, $lang->pagemanager_edit_form_enable_description, $form->generate_yes_no_radio('enabled', $form_array['enabled'])); + $form_container->end(); + $buttons[] = $form->generate_submit_button($lang->pagemanager_edit_form_continue, array('name' => 'continue')); + $buttons[] = $form->generate_submit_button($lang->pagemanager_edit_form_close, array('name' => 'close')); + $form->output_submit_wrapper($buttons); + $form->end(); + if ($admin_options['codepress'] != 0) + { + echo ''; + } + $page->output_footer(); + } + if ($mybb->input['action'] == 'export') + { + $query = $db->simple_select('pages', '*', 'pid=' . intval($mybb->input['pid'])); + $pages = $db->fetch_array($query); + if (!$pages['pid']) + { + flash_message($lang->pagemanager_invalid_page, 'error'); + admin_redirect($sub_tabs['pagemanager']['link']); + } + $extra_xml = ''; + if ($pages['framework']) + { + $extra_xml .= ' + ' . $pages['framework'] . ''; + } + if ($pages['deviceselect'] != 'all') + { + $extra_xml .= ' + ' . $pages['deviceselect'] . ''; + } + if (isset($pages['online']) && $pages['online'] == 0) + { + $extra_xml .= ' + ' . $pages['online'] . ''; + } + $xml = 'settings['charset'] . '"?> + + + + + + ' . md5($pages['template']) . '' . $extra_xml . ' + + '; + header('Content-Disposition: attachment; filename=' . rawurlencode($pages['url']) . '.xml'); + header('Content-Type: application/xhtml+xml'); + header('Content-Length: ' . strlen($xml)); + header('Pragma: no-cache'); + header('Expires: 0'); + echo $xml; + } + if ($mybb->input['action'] == 'enable' || $mybb->input['action'] == 'disable') + { + $highlight = '&highlight=' . intval($mybb->input['pid']); + if (!verify_post_check($mybb->input['my_post_key'])) + { + $highlight = ''; + flash_message($lang->invalid_post_verify_key2, 'error'); + } + else + { + $query = $db->simple_select('pages', 'pid', 'pid=' . intval($mybb->input['pid'])); + $pages = $db->fetch_array($query); + if (!$pages['pid']) + { + $highlight = ''; + flash_message($lang->pagemanager_invalid_page, 'error'); + } + else + { + if ($mybb->input['action'] == 'enable') + { + $status_lang = $lang->pagemanager_enable_success; + $status_action = array('enabled' => 1); + } + else + { + $status_lang = $lang->pagemanager_disable_success; + $status_action = array('enabled' => 0); + } + $db->update_query('pages', $status_action, 'pid=' . $pages['pid']); + pagemanager_cache(); + flash_message($status_lang, 'success'); + } + } + admin_redirect($sub_tabs['pagemanager']['link'] . $highlight); + } + if ($mybb->input['action'] == 'delete') + { + if (!verify_post_check($mybb->input['my_post_key'])) + { + flash_message($lang->invalid_post_verify_key2, 'error'); + } + else + { + $query = $db->simple_select('pages', 'pid', 'pid=' . intval($mybb->input['pid'])); + $pages = $db->fetch_array($query); + if (!$pages['pid']) + { + flash_message($lang->pagemanager_invalid_page, 'error'); + } + else + { + $db->delete_query('pages', 'pid=' . $pages['pid']); + pagemanager_cache(); + flash_message($lang->pagemanager_delete_success, 'success'); + } + } + admin_redirect($sub_tabs['pagemanager']['link']); + } + exit(); } -function re_quickquote_postbit(&$post) +function pagemanager() { - global $templates, $lang, $mybb, $forum; + global $mybb, $cache, $lang; + $lang->load("pagemanager"); + $pagecache = $cache->read('pages'); + + if ($mybb->input['page'] && !isset($pagecache[$mybb->input['page']])) + { + redirect("index.php", $lang->pagemanager_page_disabled_redirect, '', true); + exit(); + } + + if ($mybb->input['page'] && isset($pagecache[$mybb->input['page']])) + { + global $db; + + require_once MYBB_ROOT . $mybb->config['admin_dir'] . "/inc/functions.php"; + $useragent = $_SERVER["HTTP_USER_AGENT"]; + + $query = $db->simple_select('pages', '*', 'pid=' . $pagecache[$mybb->input['page']]['pid']); + $pages = $db->fetch_array($query); + if ($pages && ($pages['pagegroups'] == "-1" || is_member($pages['pagegroups']))) + { + if ($pages['deviceselect'] == 'mobile' && !is_mobile($useragent)) + { + error($lang->pagemanager_page_error_only_mobile); + } + elseif ($pages['deviceselect'] == 'desktop' && is_mobile($useragent)) + { + error($lang->pagemanager_page_error_only_desktop); + } + else + { + if ($pages['framework']) + { + global $headerinclude, $header, $theme, $footer; + $template = ' + + ' . $pages['name'] . ' - ' . $mybb->settings['bbname'] . ' + {$headerinclude} + + + {$header} + ' . $pages['template'] . ' + {$footer} + + '; + $template = str_replace("\\'", "'", addslashes($template)); + add_breadcrumb($pages['name']); + eval("\$page=\"" . $template . "\";"); + output_page($page); + } + else + { + eval('?>' . $pages['template']); + } + exit(); + } + } + else + { + error_no_permission(); + } + } +} - $post['quick_quote'] = ''; - // If MyCode is on for this forum and the MyCode editor is enabled in the Admin CP, enable quick quote. - if($mybb->settings['bbcodeinserter'] != 0 && $forum['allowmycode'] != 0 && (!$mybb->user['uid'] || $mybb->user['showcodebuttons'] != 0)) { - eval("\$post['quick_quote'] = \"" . $templates->get("postbit_quickquote") . "\";"); - } +function pagemanager_tools_cache_rebuild() +{ + global $cache; + class MyPagemanagerCache extends datacache + { + function update_pages() + { + pagemanager_cache(); + } + } + $cache = null; + $cache = new MyPagemanagerCache; } -if($settings['rineditor_smile']) { - $plugins->add_hook("showthread_start", "rineditor_quick"); - $plugins->add_hook("private_start", "rineditor_quick"); +function pagemanager_online(&$plugin_array) +{ + if ($plugin_array['user_activity']['activity'] == 'misc' && my_strpos($plugin_array['user_activity']['location'], 'page=')) + { + global $cache; + $pagecache = $cache->read('pages'); + $location = parse_url($plugin_array['user_activity']['location']); + while (my_strpos($location['query'], '&')) + { + $location['query'] = html_entity_decode($location['query']); + } + $var = explode('&', $location['query']); + foreach ($var as $val) + { + $param = explode('=', $val); + $list[$param[0]] = $param[1]; + } + if (isset($pagecache[$list['page']])) + { + global $lang; + $lang->load("pagemanager"); + $plugin_array['location_name'] = $lang->sprintf($lang->pagemanager_online, $pagecache[$list['page']]['url'], $pagecache[$list['page']]['name']); + } + } } -function rineditor_quick () { +function pagemanager_cache($clear = false, $deinst = false) +{ + global $cache; + if ($clear == true) + { + $cache->update('pages', false); + + if ($deinst == true) + { + $cache->delete('pages'); + } + } + else + { + global $db; + $pages = array(); + $query = $db->simple_select('pages', 'pid,name,url,pagegroups,deviceselect,online', 'enabled=1'); + while ($page = $db->fetch_array($query)) + { + $pages[$page['url']] = $page; + } + $cache->update('pages', $pages); + } +} - global $smilieinserter, $mybb, $forum; +function pagemanager_setinput($input = false, $import = false) +{ + $default = array( + 'name' => '', + 'url' => '', + 'pagegroups' => '-1', + 'framework' => 0, + 'template' => '', + 'deviceselect' => 'all', + 'online' => 1, + 'enabled' => 1 + ); + if ($input != false) + { + if ($input['name']) + { + $default['name'] = trim(my_substr($input['name'], 0, 120)); + } + if ($input['url']) + { + $default['url'] = trim(my_substr($input['url'], 0, 30)); + } + if ($input['framework'] == 1) + { + $default['framework'] = 1; + } + if ($input['template']) + { + if ($import == true) + { + if ($input['checksum']) + { + if (my_strtolower(md5(base64_decode($input['template']))) == my_strtolower($input['checksum'])) + { + $default['template'] = trim(base64_decode($input['template'])); + } + } + else + { + $default['template'] = trim($input['template']); + } + } + else + { + $default['template'] = trim($input['template']); + } + } + if ($input['deviceselect']) + { + if ($input['deviceselect'] != 'desktop' && $input['deviceselect'] != 'mobile') + { + $default['deviceselect'] = 'all'; + } + else + { + $default['deviceselect'] = $input['deviceselect']; + } + } + if (isset($input['online']) && $input['online'] == 0) + { + $default['online'] = 0; + } + if ($input['enabled'] == 0 || $import == true) + { + $default['enabled'] = 0; + } + } + return $default; +} - // If MyCode is on for this forum and the MyCode editor is enabled in the Admin CP, draw the smile inserter. - if($mybb->settings['bbcodeinserter'] != 0 && $forum['allowmycode'] != 0 && (!$mybb->user['uid'] || $mybb->user['showcodebuttons'] != 0)) { - $smilieinserter = build_clickable_smilies(); - } +function pagemanager_delete_plugin() +{ + global $mybb; + if (!$mybb->get_input('delete')) + { + return; + } + + if ($mybb->get_input('delete') == 1) + { + global $lang; + $lang->load("config_pagemanager"); + $codename = str_replace('.php', '', basename(__FILE__)); + + $installed_func = "{$codename}_is_installed"; + + if (function_exists($installed_func) && $installed_func() != false) + { + flash_message($lang->pagemanager_still_installed, 'error'); + admin_redirect('index.php?module=config-plugins'); + exit; + } + + if ($mybb->request_method != 'post') + { + global $page; + $page->output_confirm_action("index.php?module=config-plugins&action=deactivate&plugin={$codename}&delete=1&my_post_key={$mybb->post_code}", $lang->pagemanager_delete_confirm_message, $lang->pagemanager_delete_confirm); + } + + if (!isset($mybb->input['no'])) + { + global $message; + + if (($handle = @fopen(MYBB_ROOT . "inc/plugins/pluginstree/" . $codename . ".csv", "r")) !== FALSE) + { + while (($pluginfiles = fgetcsv($handle, 1000, ",")) !== FALSE) + { + foreach ($pluginfiles as $file) + { + $filepath = MYBB_ROOT . $file; + + if (@file_exists($filepath)) + { + if (is_file($filepath)) + { + @unlink($filepath); + } + elseif (is_dir($filepath)) + { + $dirfiles = array_diff(@scandir($filepath), array('.', '..')); + if (empty($dirfiles)) + { + @rmdir($filepath); + } + } + else + { + continue; + } + } + } + } + @fclose($handle); + @unlink(MYBB_ROOT . "inc/plugins/pluginstree/" . $codename . ".csv"); + + $message = $lang->pagemanager_delete_message; + } + else + { + flash_message($lang->pagemanager_undelete_message, 'error'); + admin_redirect('index.php?module=config-plugins'); + exit; + } + } + else + { + admin_redirect('index.php?module=config-plugins'); + exit; + } + } } -?> From 09542e15587f292f19c4b529ffb6af12a8f3f7f5 Mon Sep 17 00:00:00 2001 From: shadguy <38797333+shadguy@users.noreply.github.com> Date: Thu, 14 Mar 2024 23:47:12 -0600 Subject: [PATCH 2/3] Update rineditor.php bah, wrong plugin first go around. --- inc/plugins/rineditor.php | 2106 +++++++++++++++---------------------- 1 file changed, 822 insertions(+), 1284 deletions(-) diff --git a/inc/plugins/rineditor.php b/inc/plugins/rineditor.php index 96e2885..e148528 100644 --- a/inc/plugins/rineditor.php +++ b/inc/plugins/rineditor.php @@ -1,1341 +1,879 @@ . -*/ - -if (!defined('IN_MYBB')) +/** + * Rin Editor (Powerd by CKEditor) + * https://github.com/martec + * + * Copyright (C) 2015-2021, Martec + * + * Rin Editor is licensed under the GPL Version 3, 29 June 2007 license: + * http://www.gnu.org/copyleft/gpl.html + * + * @fileoverview Rin Editor (Powerd by CKEditor) + * @author Martec + * @requires jQuery and Mybb + * @credits CKEditor (http://ckeditor.com/). + */ + +// Disallow direct access to this file for security reasons +if(!defined("IN_MYBB")) { - die('This file cannot be accessed directly.'); + die("Direct initialization of this file is not allowed.

Please make sure IN_MYBB is defined."); } -if (defined('THIS_SCRIPT') && THIS_SCRIPT == 'misc.php') -{ - global $mybb, $cache; - $pagecache = $cache->read('pages'); +define('RE_PLUGIN_VER', '1.2.4'); - if (!isset($mybb->input['page'])) { - $mybb->input['page'] = NULL; - } +function rineditor_info() +{ + global $db, $lang; + + $lang->load('config_rineditor'); + + $YE_description = << +{$lang->rineditor_plug_desc} + + + + + +EOF; + + return array( + 'name' => 'Rin Editor', + 'description' => $YE_description, + 'website' => 'https://github.com/martec/Rin-Editor', + 'author' => 'martec', + 'authorsite' => 'http://community.mybb.com/user-49058.html', + 'version' => RE_PLUGIN_VER, + 'codename' => 'rineditor', + 'compatibility' => '18*' + ); - if ($mybb->input['page'] && isset($pagecache[$mybb->input['page']]) && $pagecache[$mybb->input['page']]['online'] != 1) - { - define('NO_ONLINE', 1); - } } -if (defined('IN_ADMINCP')) -{ - $plugins->add_hook("admin_config_plugins_deactivate_commit", 'pagemanager_delete_plugin'); - $plugins->add_hook('admin_config_action_handler', 'pagemanager_admin_action'); - $plugins->add_hook('admin_config_menu', 'pagemanager_admin_menu'); - $plugins->add_hook('admin_config_permissions', 'pagemanager_admin_permissions'); - $plugins->add_hook('admin_load', 'pagemanager_admin'); - $plugins->add_hook("admin_tools_cache_start", "pagemanager_tools_cache_rebuild"); - $plugins->add_hook("admin_tools_cache_rebuild", "pagemanager_tools_cache_rebuild"); -} -else +function rineditor_install() { - $plugins->add_hook('misc_start', 'pagemanager'); - $plugins->add_hook('build_friendly_wol_location_end', 'pagemanager_online'); + global $db, $lang, $mybb; + + $lang->load('config_rineditor'); + + $query = $db->simple_select("settinggroups", "COUNT(*) as counts"); + $dorder = $db->fetch_field($query, 'counts') + 1; + + $groupid = $db->insert_query('settinggroups', array( + 'name' => 'rineditor', + 'title' => 'Rin Editor', + 'description' => $lang->rineditor_sett_desc, + 'disporder' => $dorder, + 'isdefault' => '0' + )); + + $dorder_set = 0; + $new_setting[] = array( + 'name' => 'rineditor_enb_quick', + 'title' => $lang->rineditor_enbquick_title, + 'description' => $lang->rineditor_enbquick_desc, + 'optionscode' => 'yesno', + 'value' => '1', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_language', + 'title' => $lang->rineditor_language_title, + 'description' => $lang->rineditor_language_desc, + 'optionscode' => 'select +'.$lang->rineditor_language_val.'', + 'value' => '', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_mobm_source', + 'title' => $lang->rineditor_mobms_title, + 'description' => $lang->rineditor_mobms_desc, + 'optionscode' => 'yesno', + 'value' => '1', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_quickquote', + 'title' => $lang->rineditor_quickquote_title, + 'description' => $lang->rineditor_quickquote_desc, + 'optionscode' => 'yesno', + 'value' => '1', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_smile', + 'title' => $lang->rineditor_smile_title, + 'description' => $lang->rineditor_smile_desc, + 'optionscode' => 'yesno', + 'value' => '1', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_smiley_sc', + 'title' => $lang->rineditor_scsmiley_title, + 'description' => $lang->rineditor_scsmiley_desc, + 'optionscode' => 'yesno', + 'value' => '0', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_autosave', + 'title' => $lang->rineditor_autosave_title, + 'description' => $lang->rineditor_autosave_desc, + 'optionscode' => 'yesno', + 'value' => '0', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_autosave_message', + 'title' => $lang->rineditor_autosavemsg_title, + 'description' => $lang->rineditor_autosavemsg_desc, + 'optionscode' => 'select +'.$lang->rineditor_autosavemsg_val.'', + 'value' => '', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_sel_text', + 'title' => $lang->rineditor_seltext_title, + 'description' => $lang->rineditor_seltext_desc, + 'optionscode' => 'yesno', + 'value' => '1', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_partial_mode', + 'title' => $lang->rineditor_partial_title, + 'description' => $lang->rineditor_partial_desc, + 'optionscode' => 'yesno', + 'value' => '0', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_img_resize', + 'title' => $lang->rineditor_imgs_title, + 'description' => $lang->rineditor_imgs_desc, + 'optionscode' => 'yesno', + 'value' => '0', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_height_full', + 'title' => $lang->rineditor_heightf_title, + 'description' => $lang->rineditor_heightf_desc, + 'optionscode' => 'numeric', + 'value' => '250', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_height_other', + 'title' => $lang->rineditor_heighto_title, + 'description' => $lang->rineditor_heighto_desc, + 'optionscode' => 'numeric', + 'value' => '200', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_rmv_buttonsf', + 'title' => $lang->rineditor_buttonsf_title, + 'description' => $lang->rineditor_buttonsf_desc, + 'optionscode' => 'textarea', + 'value' => 'Subscript,Superscript', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_rmv_buttonso', + 'title' => $lang->rineditor_buttonso_title, + 'description' => $lang->rineditor_buttonsf_desc, + 'optionscode' => 'textarea', + 'value' => 'Subscript,Superscript', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_rulesf', + 'title' => $lang->rineditor_rulesf_title, + 'description' => $lang->rineditor_rules_desc, + 'optionscode' => 'textarea', + 'value' => '', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_rulesf_des', + 'title' => $lang->rineditor_rulesdesf_title, + 'description' => $lang->rineditor_rules_desc, + 'optionscode' => 'textarea', + 'value' => '', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_ruleso', + 'title' => $lang->rineditor_ruleso_title, + 'description' => $lang->rineditor_rules_desc, + 'optionscode' => 'textarea', + 'value' => '', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_ruleso_des', + 'title' => $lang->rineditor_rulesdeso_title, + 'description' => $lang->rineditor_rules_desc, + 'optionscode' => 'textarea', + 'value' => '', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $new_setting[] = array( + 'name' => 'rineditor_imgurapi', + 'title' => $lang->rineditor_imgur_title, + 'description' => $lang->rineditor_imgur_desc, + 'optionscode' => 'text', + 'value' => '', + 'disporder' => ++$dorder_set, + 'gid' => $groupid + ); + + $db->insert_query_multiple("settings", $new_setting); + rebuild_settings(); } -function pagemanager_info() +function rineditor_is_installed() { - global $mybb, $db, $lang, $plugins_cache; - $lang->load("config_pagemanager"); - - $editedby = '*Edited for MyBB 1.8 & maintained by: SvePu'; - $sources = '*Sources: GitHub'; - - - $info = array( - 'name' => $db->escape_string($lang->pagemanager_info_name), - 'description' => $db->escape_string($lang->pagemanager_info_description), - 'website' => 'https://community.mybb.com/thread-208230.html', - 'author' => 'Sebastian "querschlaeger" Wunderlich', - 'authorsite' => '', - 'version' => '2.1.5', - 'codename' => 'mybbpagemanager', - 'compatibility' => '18*' - ); - - $info_paypal = ""; - if (is_array($plugins_cache) && is_array($plugins_cache['active']) && $plugins_cache['active']['pagemanager']) - { - $info_paypal = '
- - - - -
'; - } + global $db; - $info['description'] = $info_paypal . $info['description'] . '
' . $editedby . '
' . $sources; - - $installed_func = "pagemanager_is_installed"; - - if (function_exists($installed_func) && $installed_func() != true) - { - $info['description'] = "post_code}\">escape_string($lang->delete_pagemanager_link) . "\" alt=\"settings_icon\" width=\"16\" height=\"16\" />" . $info['description']; - } + $query = $db->simple_select("settinggroups", "COUNT(*) as counts", "name = 'rineditor'"); + $rows = $db->fetch_field($query, 'counts'); - return $info; + return ($rows > 0); } -function pagemanager_activate() +function rineditor_uninstall() { - pagemanager_plugin_update(); - change_admin_permission('config', 'pagemanager'); - pagemanager_cache(); + global $db; + + $groupid = $db->fetch_field( + $db->simple_select('settinggroups', 'gid', "name='rineditor'"), + 'gid' + ); + + $db->delete_query('settings', 'gid=' . $groupid); + $db->delete_query("settinggroups", "name = 'rineditor'"); + rebuild_settings(); } -function pagemanager_deactivate() +function rineditor_activate() { - change_admin_permission('config', 'pagemanager', -1); - pagemanager_cache(true, false); + global $db; + include_once MYBB_ROOT.'inc/adminfunctions_templates.php'; + + $new_template_global['rinbutquick'] = " +{\$rin_js_files} +{\$quickquote} +{\$quickquotesty} +{\$black_text} +"; + + foreach($new_template_global as $title => $template) + { + $new_template_global = array('title' => $db->escape_string($title), 'template' => $db->escape_string($template), 'sid' => '-1', 'version' => '1806', 'dateline' => TIME_NOW); + $db->insert_query('templates', $new_template_global); + } + + $new_template['postbit_quickquote'] = "
{\$lang->postbit_button_quote}
+"; + + foreach($new_template as $title => $template2) + { + $new_template = array('title' => $db->escape_string($title), 'template' => $db->escape_string($template2), 'sid' => '-2', 'version' => '1806', 'dateline' => TIME_NOW); + $db->insert_query('templates', $new_template); + } + + find_replace_templatesets( + 'showthread', + '#' . preg_quote('{$footer}') . '#i', + '{$footer}{$rinbutquick}' + ); + + find_replace_templatesets( + 'private_quickreply', + '#' . preg_quote('') . '#i', + '{$rinbutquick}' + ); + + find_replace_templatesets( + 'showthread_quickreply', + '#' . preg_quote('{$lang->message_note}
') . '#i', + '{$lang->message_note}
{$smilieinserter}' + ); + + find_replace_templatesets( + 'private_quickreply', + '#' . preg_quote('{$lang->message_note}
') . '#i', + '{$lang->message_note}
{$smilieinserter}' + ); + + find_replace_templatesets( + 'postbit_classic', + '#' . preg_quote('{$post[\'iplogged\']}') . '#i', + '{$post[\'quick_quote\']}{$post[\'iplogged\']}' + ); + + find_replace_templatesets( + 'postbit', + '#' . preg_quote('{$post[\'iplogged\']}') . '#i', + '{$post[\'quick_quote\']}{$post[\'iplogged\']}' + ); + + find_replace_templatesets( + 'post_attachments_attachment_postinsert', + '#' . preg_quote('onclick=') . '#i', + 'onclick="MyBBEditor.insertText(\'[attachment={$attachment[\'aid\']}]\');" desonclick=' + ); + + $codebuttons_local = array('calendar_addevent', 'calendar_editevent', 'editpost', 'modcp_announcements_edit', 'modcp_announcements_new', 'modcp_editprofile', 'newreply', 'newthread', 'private_send', 'usercp_editsig', 'warnings_warn_pm'); + foreach ($codebuttons_local as &$local) { + find_replace_templatesets( + ''.$local.'', + '#' . preg_quote('{$codebuttons}') . '#i', + '{$rinbutquick}' + ); + } } -function pagemanager_install() +function rineditor_deactivate() { - global $db; - - /** Install DB Table */ - $collation = $db->build_create_table_collation(); - - if (!$db->table_exists('pages')) - { - switch ($db->type) - { - case "pgsql": - $db->write_query("CREATE TABLE " . TABLE_PREFIX . "pages ( - pid serial, - name varchar(120) NOT NULL default '', - url varchar(30) NOT NULL default '', - pagegroups varchar(200) NOT NULL default '', - framework smallint NOT NULL default '0', - template text NOT NULL default '', - deviceselect varchar(10) NOT NULL default '', - online smallint NOT NULL default '1', - enabled smallint NOT NULL default '1', - dateline int NOT NULL default '0', - PRIMARY KEY (pid) - );"); - break; - case "sqlite": - $db->write_query("CREATE TABLE " . TABLE_PREFIX . "pages ( - pid INTEGER PRIMARY KEY, - name varchar(120) NOT NULL default '', - url varchar(30) NOT NULL default '', - pagegroups varchar(200) NOT NULL default '', - framework tinyint(1) NOT NULL default '0', - template text NOT NULL, - deviceselect varchar(10) NOT NULL default '', - online tinyint(1) NOT NULL default '1', - enabled tinyint(1) NOT NULL default '1', - dateline int(10) NOT NULL default '0' - );"); - break; - default: - $db->write_query("CREATE TABLE " . TABLE_PREFIX . "pages ( - pid int(10) unsigned NOT NULL auto_increment, - name varchar(120) NOT NULL default '', - url varchar(30) NOT NULL default '', - pagegroups varchar(200) NOT NULL default '', - framework tinyint(1) NOT NULL default '0', - template text NOT NULL, - deviceselect varchar(10) NOT NULL default '', - online tinyint(1) NOT NULL default '1', - enabled tinyint(1) NOT NULL default '1', - dateline int unsigned NOT NULL default '0', - UNIQUE KEY url (url), - PRIMARY KEY (pid) - ) ENGINE=MyISAM{$collation};"); - break; - } - } + global $db; + include_once MYBB_ROOT."inc/adminfunctions_templates.php"; + + $db->delete_query("templates", "title IN('rinbutquick','postbit_quickquote')"); + + find_replace_templatesets( + 'showthread', + '#' . preg_quote('{$footer}{$rinbutquick}') . '#i', + '{$footer}' + ); + + find_replace_templatesets( + 'private_quickreply', + '#' . preg_quote('{$rinbutquick}') . '#i', + '' + ); + + find_replace_templatesets( + 'showthread_quickreply', + '#' . preg_quote('{$lang->message_note}
{$smilieinserter}') . '#i', + '{$lang->message_note}
' + ); + + find_replace_templatesets( + 'private_quickreply', + '#' . preg_quote('{$lang->message_note}
{$smilieinserter}') . '#i', + '{$lang->message_note}
' + ); + + find_replace_templatesets( + 'postbit_classic', + '#' . preg_quote('{$post[\'quick_quote\']}{$post[\'iplogged\']}') . '#i', + '{$post[\'iplogged\']}' + ); + + find_replace_templatesets( + 'postbit', + '#' . preg_quote('{$post[\'quick_quote\']}{$post[\'iplogged\']}') . '#i', + '{$post[\'iplogged\']}' + ); + + find_replace_templatesets( + 'post_attachments_attachment_postinsert', + '#' . preg_quote('onclick="MyBBEditor.insertText(\'[attachment={$attachment[\'aid\']}]\');" desonclick=') . '#i', + 'onclick=' + ); + + $codebuttons_local = array('calendar_addevent', 'calendar_editevent', 'editpost', 'modcp_announcements_edit', 'modcp_announcements_new', 'modcp_editprofile', 'newreply', 'newthread', 'private_send', 'usercp_editsig', 'warnings_warn_pm'); + foreach ($codebuttons_local as &$local) { + find_replace_templatesets( + ''.$local.'', + '#' . preg_quote('{$rinbutquick}') . '#i', + '{$codebuttons}' + ); + } } -function pagemanager_is_installed() +$plugins->add_hook('global_start', 're_cache'); +function re_cache() { - global $mybb, $db; - $pmcache = $db->simple_select('datacache', '*', 'title="pages"'); - if ($db->num_rows($pmcache) > 0 && $db->table_exists('pages')) - { - $fields = $db->show_fields_from('pages'); - $list = array(); - $check = array( - 'pid', - 'name', - 'url', - 'pagegroups', - 'framework', - 'template', - 'deviceselect', - 'online', - 'enabled', - 'dateline' - ); - foreach ($fields as $key => $val) - { - array_push($list, $val['Field']); - } - $diff = array_diff($check, $list); - if (empty($diff)) - { - return true; - } - } - return false; + global $templatelist, $mybb, $settings; + + if (isset($templatelist)) { + $templatelist .= ','; + } + + if (THIS_SCRIPT == 'showthread.php' || THIS_SCRIPT == 'private.php') { + if($mybb->settings['rineditor_smile'] != 0 && $mybb->settings['rineditor_quickquote'] != 1) { + $templatelist .= 'rinbutquick,smilieinsert,smilieinsert_smilie,smilieinsert_getmore'; + } + elseif($mybb->settings['rineditor_quickquote'] != 0 && $mybb->settings['rineditor_smile'] != 1) { + $templatelist .= 'rinbutquick,postbit_quickquote'; + } + elseif($mybb->settings['rineditor_quickquote'] != 0 && $mybb->settings['rineditor_smile'] != 0) { + $templatelist .= 'rinbutquick,postbit_quickquote,smilieinsert,smilieinsert_smilie,smilieinsert_getmore'; + } + else { + $templatelist .= 'rinbutquick'; + } + } + $plugin_local = array('calendar.php', 'editpost.php', 'modcp.php', 'newreply.php', 'newthread.php', 'private.php', 'usercp.php', 'warnings.php'); + foreach ($plugin_local as &$local) { + if (THIS_SCRIPT == ''.$local.'') { + $templatelist .= 'rinbutquick'; + } + } } -function pagemanager_uninstall() +function rineditor_inserter_quick($smilies = true) { - global $mybb, $db; - if ($mybb->request_method != 'post') - { - global $page, $lang; - $lang->load('config_pagemanager'); - $page->output_confirm_action('index.php?module=config-plugins&action=deactivate&uninstall=1&plugin=pagemanager', $lang->pagemanager_uninstall_message, $lang->pagemanager_uninstall); - } + global $db, $mybb, $theme, $templates, $lang, $smiliecache, $cache, $templatelist, $cache; - if (!isset($mybb->input['no']) && $db->table_exists('pages')) - { - $db->drop_table('pages'); + // PHP 8 fix - 2024-March-13 - Dave + if (!isset($lang->rineditor)) { + $lang->rineditor = NULL; } - pagemanager_cache(true, true); -} -function pagemanager_plugin_update() -{ - global $db; - if ($db->table_exists('pages')) - { - if (!$db->field_exists('pagegroups', 'pages')) - { - $db->add_column("pages", "pagegroups", "varchar(200) NOT NULL default '' AFTER `url`"); - $db->update_query("pages", array('pagegroups' => '-1')); - } - - if (!$db->field_exists('deviceselect', 'pages')) - { - $db->add_column("pages", "deviceselect", "varchar(10) NOT NULL default '' AFTER `template`"); - $db->update_query("pages", array('deviceselect' => 'all')); - } - - if ($db->field_exists('groups', 'pages') && $db->field_exists('pagegroups', 'pages')) - { - $db->drop_column("pages", "pagegroups"); - $db->rename_column("pages", "groups", "pagegroups", "varchar(200) NOT NULL default '' AFTER `url`"); - } + if (!$lang->rineditor) { + $lang->load('rineditor'); + } + + $editor_lang_strings = array( + "editor_videourl" => "Video URL:", + "editor_videotype" => "Video Type:", + "editor_insert" => "Insert", + "editor_description" => "Description (optional):", + "editor_enterimgurl" => "Enter the image URL:", + "editor_enterurl" => "Enter URL:", + "editor_dailymotion" => "Dailymotion", + "editor_metacafe" => "MetaCafe", + "editor_mixer" => "Mixer", + "editor_vimeo" => "Vimeo", + "editor_youtube" => "Youtube", + "editor_facebook" => "Facebook", + "editor_liveleak" => "LiveLeak", + "editor_twitch" => "Twitch", + "editor_insertvideo" => "Insert a video", + "editor_more" => "More", + "rineditor_restore" => "Restore", + "rineditor_uploading" => "Uploading", + "rineditor_fail" => "Fail", + "wrote" => "Wrote", + "quote" => "Quote" + ); + $editor_language = "RinEditor = {\n"; + + $editor_languages_count = count($editor_lang_strings); + $i = 0; + foreach($editor_lang_strings as $lang_string => $key) + { + $i++; + $js_lang_string = str_replace("\"", "\\\"", $key); + $string = str_replace("\"", "\\\"", $lang->$lang_string); + $editor_language .= "\t\"{$js_lang_string}\": \"{$string}\""; + + if($i < $editor_languages_count) + { + $editor_language .= ","; + } + + $editor_language .= "\n"; + } + + $editor_language .= "};"; + + // Smilies + $emoticon = ""; + $emoticons_enabled = "false"; + if($smilies && $mybb->settings['smilieinserter'] != 0 && $mybb->settings['smilieinsertercols'] && $mybb->settings['smilieinsertertot']) + { + $emoticon = ",emoticon"; + $emoticons_enabled = "true"; + + if(!$smiliecache) + { + if(!is_array($smiliecache)) + { + $smiliecache = $cache->read("smilies"); + } + foreach($smiliecache as $smilie) + { + if($smilie['showclickable'] != 0) + { + $smilie['image'] = str_replace("{theme}", $theme['imgdir'], $smilie['image']); + $smiliecache[$smilie['sid']] = $smilie; + } + } + } + + unset($smilie); + + if(is_array($smiliecache)) + { + reset($smiliecache); + + $rinsmiledir = $dropdownsmiliesurl = $dropdownsmiliesdes = $dropdownsmiliesname = $dropdownsmiliesurlmore = $dropdownsmiliesdesmore = $dropdownsmiliesnamemore = ""; + $i = 0; + + foreach($smiliecache as $smilie) + { + $finds = explode("\n", $smilie['find']); + + // Only show the first text to replace in the box + $smilie['find'] = $finds[0]; + + $find = htmlspecialchars_uni($smilie['find']); + $image = htmlspecialchars_uni($smilie['image']); + $name = htmlspecialchars_uni($smilie['name']); + + if($i < $mybb->settings['smilieinsertertot']) + { + $dropdownsmiliesurl .= '"'.$mybb->asset_url.'/'.$image.'",'; + $dropdownsmiliesdes .= '"'.$find.'",'; + $dropdownsmiliesname .= '"'.$name.'",'; + if (empty($rinsmiledir)) { + $rinsmiledir = substr($dropdownsmiliesurl, 1, strrpos($dropdownsmiliesurl, '/')); + } + } + else + { + $dropdownsmiliesurlmore .= '"'.$mybb->asset_url.'/'.$image.'",'; + $dropdownsmiliesdesmore .= '"'.$find.'",'; + $dropdownsmiliesnamemore .= '"'.$name.'",'; + } + + ++$i; + } + } + } + + $rin_js_files = $quickquote = $quickquotesty = $sourcemode = $rin_height = $rin_rmvbut = $rin_extbut = $rin_extbutd = $rin_imgur = $rin_autosave = $rinlang = $rinscsmiley = $rin_vbquote = $black_text = $content_skin = ""; + + $rin_js_files = " + +"; + + if(strpos($templatelist,'showthread_quickreply') || strpos($templatelist,'private_quickreply')) { + $rin_height = $mybb->settings['rineditor_height_other']; + $rin_rmvbut = $mybb->settings['rineditor_rmv_buttonso']; + $rin_extbut = $mybb->settings['rineditor_ruleso']; + $rin_extbutd = $mybb->settings['rineditor_ruleso_des']; + } + else { + $rin_height = $mybb->settings['rineditor_height_full']; + $rin_rmvbut = $mybb->settings['rineditor_rmv_buttonsf']; + $rin_extbut = $mybb->settings['rineditor_rulesf']; + $rin_extbutd = $mybb->settings['rineditor_rulesf_des']; + } + + $rin_imgur = $mybb->settings['rineditor_imgurapi']; + if ($mybb->settings['rineditor_autosave']) { + $rin_autosave = 'autosave'; + } + + if($mybb->settings['rineditor_quickquote'] == 1 && strpos($templatelist,'showthread_quickreply')) { + $quickquote = ""; + $quickquotesty = "asset_url."/jscripts/rin/editor/quickquote.css?ver=".RE_PLUGIN_VER."\" type=\"text/css\" />"; + } + + if($mybb->user['sourceeditor'] == 1) + { + $sourcemode = "source"; + } + else { + $sourcemode = "wysiwyg"; + } + + $plu_vb = $cache->read("plugins"); + + // PHP 8 fix - 2024-March-13 - Dave + if (!isset($plu_vb['active']['vbquote'])) { + $plu_vb['active']['vbquote'] = NULL; } + + if($plu_vb['active']['vbquote']) { + $rin_vbquote = 1; + } + else { + $rin_vbquote = 0; + } + + $content_skin = "".$mybb->asset_url."/jscripts/rin/editor/contents.css?ver=".RE_PLUGIN_VER.""; + if(substr($theme['editortheme'], 0, 4) === "rin-") { + $rin_style = substr($theme['editortheme'], 0, -4); + } + elseif (substr($theme['editortheme'], 0, 6) === "b_rin-") { + $rin_style = substr($theme['editortheme'], 2, -4); + $black_text = ""; + $content_skin = "".$mybb->asset_url."/jscripts/rin/editor/contents_black.css?ver=".RE_PLUGIN_VER.""; + } + else { + $rin_style = 'rin-moonocolor'; + } -function pagemanager_admin_action(&$action) -{ - $action['pagemanager'] = array( - 'active' => 'pagemanager' - ); + $rinlang = $mybb->settings['rineditor_language']; + $rinscsmiley = $mybb->settings['rineditor_smiley_sc']; + + eval("\$rininsertquick = \"".$templates->get("rinbutquick")."\";"); + + return $rininsertquick; } -function pagemanager_admin_menu(&$sub_menu) -{ - global $lang; - $lang->load("config_pagemanager"); - end($sub_menu); - $key = (key($sub_menu)) + 10; - $sub_menu[$key] = array( - 'id' => 'pagemanager', - 'title' => $lang->pagemanager_info_name, - 'link' => 'index.php?module=config-pagemanager' - ); +global $settings; + +$enbq = ''; + +// PHP 8 fix - 2024-March-13 - Dave +if (!isset($settings['rineditor_enb_quick'])) { + $settings['rineditor_enb_quick'] = NULL; } -function pagemanager_admin_permissions(&$admin_permissions) -{ - global $lang; - $lang->load("config_pagemanager"); - $admin_permissions['pagemanager'] = $lang->pagemanager_can_manage_pages; +if($settings['rineditor_enb_quick']) { + $enbq = 'showthread_start'; } -function pagemanager_admin() -{ - global $mybb, $page, $db, $lang; - $lang->load("config_pagemanager"); - if ($page->active_action != 'pagemanager') - { - return false; - } - $info = pagemanager_info(); - $sub_tabs['pagemanager'] = array( - 'title' => $lang->pagemanager_main_title, - 'link' => 'index.php?module=config-pagemanager', - 'description' => $lang->pagemanager_main_description - ); - $sub_tabs['pagemanager_add'] = array( - 'title' => $lang->pagemanager_add_title, - 'link' => 'index.php?module=config-pagemanager&action=add', - 'description' => $lang->pagemanager_add_description - ); - $sub_tabs['pagemanager_import'] = array( - 'title' => $lang->pagemanager_import_title, - 'link' => 'index.php?module=config-pagemanager&action=import', - 'description' => $lang->pagemanager_import_description - ); - if (!$mybb->input['action']) - { - $page->add_breadcrumb_item($lang->pagemanager_info_name); - $page->output_header($lang->pagemanager_info_name); - if (!pagemanager_is_installed()) - { - $page->output_error('

' . $lang->pagemanager_install_error . '

'); - } - $page->output_nav_tabs($sub_tabs, 'pagemanager'); - $table = new Table; - $table->construct_header($lang->name); - $table->construct_header($lang->pagemanager_main_table_id, array('width' => 40, 'class' => 'align_center')); - $table->construct_header($lang->pagemanager_main_table_framework, array('width' => 125, 'class' => 'align_center')); - $table->construct_header($lang->pagemanager_main_table_online, array('width' => 100, 'class' => 'align_center')); - $table->construct_header($lang->pagemanager_main_table_groups, array('width' => 125, 'class' => 'align_center')); - $table->construct_header($lang->pagemanager_main_table_devices, array('width' => 125, 'class' => 'align_center')); - $table->construct_header($lang->pagemanager_main_table_modified, array('width' => 150, 'class' => 'align_center')); - $table->construct_header($lang->controls, array('width' => 100, 'class' => 'align_center')); - $query = $db->simple_select('pages', '*', '', array('order_by' => 'name', 'order_dir' => 'ASC')); - if ($db->num_rows($query) > 0) - { - while ($pages = $db->fetch_array($query)) - { - - // PHP 8 fix - 2024-March-13 - Dave - if (!isset($mybb->input['highlight'])) { - $mybb->input['highlight'] = NULL; - } - - if ($mybb->input['highlight'] == $pages['pid']) - { - $highlight = array('style' => 'text-align:left; background-color: #FFFBD9;'); - $highlightc40 = array('width' => 40, 'style' => 'background-color: #FFFBD9;', 'class' => 'align_center'); - $highlightc100 = array('width' => 100, 'style' => 'background-color: #FFFBD9;', 'class' => 'align_center'); - $highlightc125 = array('width' => 125, 'style' => 'background-color: #FFFBD9;', 'class' => 'align_center'); - $highlightc150 = array('width' => 150, 'style' => 'background-color: #FFFBD9;', 'class' => 'align_center'); - } - else - { - $highlight = array('style' => 'text-align:left;'); - $highlightc40 = array('width' => 40, 'class' => 'align_center'); - $highlightc100 = array('width' => 100, 'class' => 'align_center'); - $highlightc125 = array('width' => 125, 'class' => 'align_center'); - $highlightc150 = array('width' => 150, 'class' => 'align_center'); - } - if ($pages['enabled']) - { - $status_icon = '' . $lang->pagemanager_main_table_enabled . ' '; - $status_lang = $lang->pagemanager_main_control_disable; - $status_action = 'disable'; - $pagelink = '
' . $lang->pagemanager_main_open_page . '' . $mybb->settings['bburl'] . '/misc.php?page=' . $pages['url'] . ''; - } - else - { - $status_icon = '' . $lang->pagemanager_main_table_disabled . ' '; - $status_lang = $lang->pagemanager_main_control_enable; - $status_action = 'enable'; - $pagelink = '
' . $lang->pagemanager_main_page_disabled . ''; - } - if ($pages['framework']) - { - $framework_status = $lang->yes; - } - else - { - $framework_status = $lang->no; - } - if ($pages['online']) - { - $online_status = $lang->yes; - } - else - { - $online_status = $lang->no; - } - if ($pages['pagegroups'] == "-1") - { - $groups_allowed = $lang->all_groups; - } - else - { - $groups_allowed = $comma = ''; - $groups = $db->simple_select("usergroups", "gid, title", "gid IN ({$pages['pagegroups']})"); - while ($gt = $db->fetch_array($groups)) - { - $groups_allowed .= $comma . '' . $gt['gid'] . ''; - $comma = ', '; - } - } - - $visible_on_devices = "pagemanager_edit_form_deviceselect_" . $pages['deviceselect']; - - $table->construct_cell($status_icon . '' . $pages['name'] . '' . $pagelink, $highlight); - $table->construct_cell($pages['pid'], $highlightc40); - $table->construct_cell($framework_status, $highlightc125); - $table->construct_cell($online_status, $highlightc100); - $table->construct_cell($groups_allowed, $highlightc125); - $table->construct_cell($lang->$visible_on_devices, $highlightc125); - $table->construct_cell($lang->sprintf($lang->pagemanager_main_table_dateline, my_date($mybb->settings['dateformat'], $pages['dateline']), my_date($mybb->settings['timeformat'], $pages['dateline'])), $highlightc150); - $popup = new PopupMenu('page_' . $pages['pid'], $lang->options); - $popup->add_item($lang->pagemanager_main_control_edit, $sub_tabs['pagemanager']['link'] . '&action=edit&pid=' . $pages['pid']); - $popup->add_item($lang->pagemanager_main_control_export, $sub_tabs['pagemanager']['link'] . '&action=export&pid=' . $pages['pid']); - $popup->add_item($status_lang, $sub_tabs['pagemanager']['link'] . '&action=' . $status_action . '&pid=' . $pages['pid'] . '&my_post_key=' . $mybb->post_code); - $popup->add_item($lang->pagemanager_main_control_delete, $sub_tabs['pagemanager']['link'] . '&action=delete&pid=' . $pages['pid'] . '&my_post_key=' . $mybb->post_code, 'return AdminCP.deleteConfirmation(this,\'' . $lang->pagemanager_main_control_delete_question . '\')'); - $table->construct_cell($popup->fetch(), $highlightc100); - $table->construct_row(); - } - } - else - { - $table->construct_cell($lang->pagemanager_main_table_no_pages, array('colspan' => 8)); - $table->construct_row(); - } - $table->output($lang->pagemanager_main_table); - $page->output_footer(); - } - if ($mybb->input['action'] == 'add') - { - if ($mybb->request_method == 'post') - { - if ($mybb->input['import']) - { - if (!$_FILES['file'] || $_FILES['file']['error'] == 4) - { - $error = $lang->pagemanager_import_error_no_file; - } - elseif ($_FILES['file']['error']) - { - $error = $lang->sprintf($lang->pagemanager_import_error_php, $_FILES['file']['error']); - } - else - { - if (!is_uploaded_file($_FILES['file']['tmp_name'])) - { - $error = $lang->pagemanager_import_error_lost; - } - else - { - $contents = @file_get_contents($_FILES['file']['tmp_name']); - @unlink($_FILES['file']['tmp_name']); - if (!trim($contents)) - { - $error = $lang->pagemanager_import_error_no_contents; - } - } - } - if (!$error) - { - require_once MYBB_ROOT . 'inc/class_xml.php'; - $parser = new XMLParser($contents); - $tree = $parser->get_tree(); - if (!is_array($tree) || !is_array($tree['pagemanager']) || !is_array($tree['pagemanager']['attributes']) || !is_array($tree['pagemanager']['page'])) - { - $error = $lang->pagemanager_import_error_no_contents; - } - if (!$error) - { - foreach ($tree['pagemanager']['page'] as $property => $value) - { - if ($property == 'tag' || $property == 'value') - { - continue; - } - $input_array[$property] = $value['value']; - } - if (!$mybb->input['version'] && $info['version'] != $tree['pagemanager']['attributes']['version']) - { - $error = $lang->pagemanager_import_error_version; - } - if ($mybb->input['name_overwrite']) - { - $input_array['name'] = $mybb->input['name_overwrite']; - } - $form_array = pagemanager_setinput($input_array, true); - if (!$form_array['name'] || !$form_array['url'] || !$form_array['template']) - { - $error = $lang->pagemanager_import_error_no_contents; - } - } - } - if ($error) - { - flash_message($error, 'error'); - admin_redirect($sub_tabs['pagemanager']['link'] . '&action=import'); - } - } - else - { - $form_array = pagemanager_setinput($mybb->input); - } - $querycheck = $db->simple_select('pages', 'pid', 'url="' . $db->escape_string($form_array['url']) . '"'); - $check = $db->fetch_array($querycheck); - if (!$form_array['name']) - { - $errors[] = $lang->pagemanager_edit_error_name; - } - if (!$form_array['url']) - { - $errors[] = $lang->pagemanager_edit_error_url; - } - if ($check['pid']) - { - $errors[] = $lang->pagemanager_edit_error_url_duplicate; - } - if (!$form_array['template']) - { - $errors[] = $lang->pagemanager_edit_error_template; - } - if ($mybb->input['group_type'] == 2) - { - if (count($mybb->input['group_1_groups']) < 1) - { - $errors[] = $lang->pagemanager_edit_no_groups_selected; - } - - $group_checked[2] = "checked=\"checked\""; - } - else - { - $group_checked[1] = "checked=\"checked\""; - } - if (!$errors && !$mybb->input['manual']) - { - if ($mybb->input['group_type'] == 2) - { - if (is_array($mybb->input['group_1_groups'])) - { - $checked = array(); - foreach ($mybb->input['group_1_groups'] as $gid) - { - $checked[] = (int)$gid; - } - - $selected_groups = implode(',', $checked); - } - } - else - { - $selected_groups = '-1'; - } - - $updated_page = array( - 'name' => $db->escape_string($form_array['name']), - 'url' => $db->escape_string($form_array['url']), - 'pagegroups' => $selected_groups, - 'framework' => $form_array['framework'], - 'template' => $db->escape_string($form_array['template']), - 'deviceselect' => $db->escape_string($form_array['deviceselect']), - 'online' => $form_array['online'], - 'enabled' => $form_array['enabled'], - 'dateline' => TIME_NOW - ); - $db->insert_query('pages', $updated_page); - $query = $db->simple_select('pages', '*', 'url="' . $db->escape_string($form_array['url']) . '"'); - $pages = $db->fetch_array($query); - pagemanager_cache(); - if ($mybb->input['import']) - { - flash_message($lang->pagemanager_import_success, 'success'); - } - else - { - flash_message($lang->pagemanager_add_success, 'success'); - } - admin_redirect($sub_tabs['pagemanager']['link'] . '&highlight=' . $pages['pid']); - } - } - else - { - $form_array = pagemanager_setinput(); - $mybb->input['group_1_groups'] = ''; - $group_checked[1] = "checked=\"checked\""; - $group_checked[2] = ''; - } - $queryadmin = $db->simple_select('adminoptions', '*', 'uid=' . $mybb->user['uid']); - $admin_options = $db->fetch_array($queryadmin); - if ($admin_options['codepress'] != 0) - { - $page->extra_header = ' - - - - - - - - - - - - - - - - - - - - '; - } - $page->add_breadcrumb_item($lang->pagemanager_info_name, $sub_tabs['pagemanager']['link']); - $page->add_breadcrumb_item($sub_tabs['pagemanager_add']['title']); - $page->output_header($lang->pagemanager_info_name . ' - ' . $sub_tabs['pagemanager_add']['title']); - if (!pagemanager_is_installed()) - { - $page->output_error('

' . $lang->pagemanager_install_error . '

'); - } - $page->output_nav_tabs($sub_tabs, 'pagemanager_add'); - $form = new Form($sub_tabs['pagemanager_add']['link'], 'post', 'add_template'); - if ($errors) - { - $page->output_inline_error($errors); - } - $form_container = new FormContainer($lang->pagemanager_add_form); - $form_container->output_row($lang->pagemanager_edit_form_name . ' *', $lang->pagemanager_edit_form_name_description, $form->generate_text_box('name', $form_array['name'], array('id' => 'name')), 'name'); - $form_container->output_row($lang->pagemanager_edit_form_url . ' *', $lang->pagemanager_edit_form_url_description, $form->generate_text_box('url', $form_array['url'], array('id' => 'url')), 'url'); - $group_select = " -
-
-
-
- - - - - -
{$lang->groups_colon}" . $form->generate_group_select('group_1_groups[]', $mybb->input['group_1_groups'], array('multiple' => true, 'size' => 10)) . "
-
-
- "; - $form_container->output_row($lang->pagemanager_add_edit_groupselect . " *", '', $group_select); - $form_container->output_row($lang->pagemanager_edit_form_framework, $lang->pagemanager_edit_form_framework_description, $form->generate_yes_no_radio('framework', $form_array['framework'])); - $form_container->output_row($lang->pagemanager_edit_form_template . ' *', $lang->pagemanager_edit_form_template_description, $form->generate_text_area('template', $form_array['template'], array('id' => 'template', 'style' => 'width:100%;height:500px;')), 'template'); - - $device_select = array( - 'all' => $lang->pagemanager_edit_form_deviceselect_all, - 'desktop' => $lang->pagemanager_edit_form_deviceselect_desktop, - 'mobile' => $lang->pagemanager_edit_form_deviceselect_mobile - ); - $form_container->output_row($lang->pagemanager_edit_form_deviceselect, $lang->pagemanager_edit_form_deviceselect_description, $form->generate_select_box('deviceselect', $device_select, $form_array['deviceselect'], array('id' => 'deviceselect')), 'deviceselect'); - $form_container->output_row($lang->pagemanager_edit_form_online, $lang->pagemanager_edit_form_online_description, $form->generate_yes_no_radio('online', $form_array['online'])); - $form_container->output_row($lang->pagemanager_edit_form_enable, $lang->pagemanager_edit_form_enable_description, $form->generate_yes_no_radio('enabled', $form_array['enabled'])); - $form_container->end(); - $buttons[] = $form->generate_submit_button($lang->pagemanager_edit_form_close); - $form->output_submit_wrapper($buttons); - $form->end(); - if ($admin_options['codepress'] != 0) - { - echo ''; - } - $page->output_footer(); - } - if ($mybb->input['action'] == 'import') - { - $page->add_breadcrumb_item($lang->pagemanager_info_name, $sub_tabs['pagemanager']['link']); - $page->add_breadcrumb_item($sub_tabs['pagemanager_import']['title']); - $page->output_header($lang->pagemanager_info_name . ' - ' . $sub_tabs['pagemanager_import']['title']); - if (!pagemanager_is_installed()) - { - $page->output_error('

' . $lang->pagemanager_install_error . '

'); - } - $page->output_nav_tabs($sub_tabs, 'pagemanager_import'); - $form = new Form($sub_tabs['pagemanager_add']['link'], 'post', '', 1); - $form_container = new FormContainer($lang->pagemanager_import_form); - $form_container->output_row($lang->pagemanager_import_form_file . ' *', $lang->pagemanager_import_form_file_description, $form->generate_file_upload_box('file')); - $form_container->output_row($lang->pagemanager_import_form_name, $lang->pagemanager_import_form_name_description, $form->generate_text_box('name_overwrite', '', array('id' => 'name_overwrite')), 'name_overwrite'); - $form_container->output_row($lang->pagemanager_import_form_manual, $lang->pagemanager_import_form_manual_description, $form->generate_on_off_radio('manual', 0)); - $form_container->output_row($lang->pagemanager_import_form_version, $lang->pagemanager_import_form_version_description, $form->generate_yes_no_radio('version', 0)); - $form_container->end(); - $buttons[] = $form->generate_submit_button($lang->pagemanager_import_form_action, array('name' => 'import')); - $form->output_submit_wrapper($buttons); - $form->end(); - $page->output_footer(); - } - if ($mybb->input['action'] == 'edit') - { - $query = $db->simple_select('pages', '*', 'pid=' . intval($mybb->input['pid'])); - $pages = $db->fetch_array($query); - if (!$pages['pid']) - { - flash_message($lang->pagemanager_invalid_page, 'error'); - admin_redirect($sub_tabs['pagemanager']['link']); - } - if ($mybb->request_method == 'post') - { - $form_array = pagemanager_setinput($mybb->input); - $querycheck = $db->simple_select('pages', 'pid', 'url="' . $db->escape_string($form_array['url']) . '" AND pid != ' . $pages['pid']); - $check = $db->fetch_array($querycheck); - if (!$form_array['name']) - { - $errors[] = $lang->pagemanager_edit_error_name; - } - if (!$form_array['url']) - { - $errors[] = $lang->pagemanager_edit_error_url; - } - if ($check['pid']) - { - $errors[] = $lang->pagemanager_edit_error_url_duplicate; - } - if (!$form_array['template']) - { - $errors[] = $lang->pagemanager_edit_error_template; - } - if ($mybb->input['group_type'] == 2) - { - if (count($mybb->input['group_1_groups']) < 1) - { - $errors[] = $lang->pagemanager_edit_no_groups_selected; - } - $group_checked[2] = "checked=\"checked\""; - } - else - { - $group_checked[1] = "checked=\"checked\""; - } - if (!$errors) - { - if ($mybb->input['group_type'] == 2) - { - if (is_array($mybb->input['group_1_groups'])) - { - $checked = array(); - foreach ($mybb->input['group_1_groups'] as $gid) - { - $checked[] = (int)$gid; - } - - $selected_groups = implode(',', $checked); - } - } - else - { - $selected_groups = '-1'; - } - if ($form_array['name'] == $pages['name'] && $form_array['url'] == $pages['url'] && $form_array['framework'] == $pages['framework'] && $form_array['template'] == $pages['template'] && $form_array['deviceselect'] == $pages['deviceselect'] && $form_array['online'] == $pages['online'] && $pages['pagegroups'] == $selected_groups) - { - $modified = $pages['dateline']; - if ($form_array['enabled'] == $pages['enabled']) - { - $update_lang = $lang->pagemanager_edit_success_nothing; - } - else - { - if ($form_array['enabled']) - { - $update_lang = $lang->pagemanager_enable_success; - } - else - { - $update_lang = $lang->pagemanager_disable_success; - } - } - } - else - { - $modified = TIME_NOW; - $update_lang = $lang->pagemanager_edit_success; - } - $updated_page = array( - 'name' => $db->escape_string($form_array['name']), - 'url' => $db->escape_string($form_array['url']), - 'pagegroups' => $selected_groups, - 'framework' => $form_array['framework'], - 'template' => $db->escape_string($form_array['template']), - 'deviceselect' => $db->escape_string($form_array['deviceselect']), - 'online' => $form_array['online'], - 'enabled' => $form_array['enabled'], - 'dateline' => $modified - ); - $db->update_query('pages', $updated_page, 'pid=' . $pages['pid']); - pagemanager_cache(); - flash_message($update_lang, 'success'); - if ($mybb->input['continue']) - { - admin_redirect($sub_tabs['pagemanager']['link'] . '&action=edit&pid=' . $pages['pid']); - } - else - { - admin_redirect($sub_tabs['pagemanager']['link'] . '&highlight=' . $pages['pid']); - } - } - } - else - { - $form_array = pagemanager_setinput($pages); - $mybb->input['group_1_groups'] = explode(",", $pages['pagegroups']); - - if (!$pages['pagegroups'] || $pages['pagegroups'] == -1) - { - $group_checked[1] = "checked=\"checked\""; - $group_checked[2] = ''; - } - else - { - $group_checked[1] = ''; - $group_checked[2] = "checked=\"checked\""; - } - } - $queryadmin = $db->simple_select('adminoptions', '*', 'uid=' . $mybb->user['uid']); - $admin_options = $db->fetch_array($queryadmin); - $sub_tabs['pagemanager_edit'] = array( - 'title' => $lang->pagemanager_edit_title, - 'link' => 'index.php?module=config-pagemanager&action=edit&pid=' . $pages['pid'], - 'description' => $lang->pagemanager_edit_description - ); - if ($admin_options['codepress'] != 0) - { - $page->extra_header = ' - - - - - - - - - - - - - - - - - - - - '; - } - $page->add_breadcrumb_item($lang->pagemanager_info_name, $sub_tabs['pagemanager']['link']); - $page->add_breadcrumb_item($sub_tabs['pagemanager_edit']['title']); - $page->output_header($lang->pagemanager_info_name . ' - ' . $sub_tabs['pagemanager_edit']['title']); - if (!pagemanager_is_installed()) - { - $page->output_error('

' . $lang->pagemanager_install_error . '

'); - } - $page->output_nav_tabs($sub_tabs, 'pagemanager_edit'); - $form = new Form($sub_tabs['pagemanager_edit']['link'], 'post', 'edit_template'); - if ($errors) - { - $page->output_inline_error($errors); - } - $form_container = new FormContainer($lang->pagemanager_edit_form); - $form_container->output_row($lang->pagemanager_edit_form_name . ' *', $lang->pagemanager_edit_form_name_description, $form->generate_text_box('name', $form_array['name'], array('id' => 'name')), 'name'); - $form_container->output_row($lang->pagemanager_edit_form_url . ' *', $lang->pagemanager_edit_form_url_description, $form->generate_text_box('url', $form_array['url'], array('id' => 'url')), 'url'); - $group_select = " -
-
-
-
- - - - - -
{$lang->groups_colon}" . $form->generate_group_select('group_1_groups[]', $mybb->input['group_1_groups'], array('multiple' => true, 'size' => 10)) . "
-
-
- "; - $form_container->output_row($lang->pagemanager_add_edit_groupselect . " *", '', $group_select); - $form_container->output_row($lang->pagemanager_edit_form_framework, $lang->pagemanager_edit_form_framework_description, $form->generate_yes_no_radio('framework', $form_array['framework'])); - $form_container->output_row($lang->pagemanager_edit_form_template . ' *', $lang->pagemanager_edit_form_template_description, $form->generate_text_area('template', $form_array['template'], array('id' => 'template', 'style' => 'width: 100%; height: 500px;')), 'template'); - - $device_select = array( - 'all' => $lang->pagemanager_edit_form_deviceselect_all, - 'desktop' => $lang->pagemanager_edit_form_deviceselect_desktop, - 'mobile' => $lang->pagemanager_edit_form_deviceselect_mobile - ); - $form_container->output_row($lang->pagemanager_edit_form_deviceselect, $lang->pagemanager_edit_form_deviceselect_description, $form->generate_select_box('deviceselect', $device_select, $form_array['deviceselect'], array('id' => 'deviceselect')), 'deviceselect'); - $form_container->output_row($lang->pagemanager_edit_form_online, $lang->pagemanager_edit_form_online_description, $form->generate_yes_no_radio('online', $form_array['online'])); - $form_container->output_row($lang->pagemanager_edit_form_enable, $lang->pagemanager_edit_form_enable_description, $form->generate_yes_no_radio('enabled', $form_array['enabled'])); - $form_container->end(); - $buttons[] = $form->generate_submit_button($lang->pagemanager_edit_form_continue, array('name' => 'continue')); - $buttons[] = $form->generate_submit_button($lang->pagemanager_edit_form_close, array('name' => 'close')); - $form->output_submit_wrapper($buttons); - $form->end(); - if ($admin_options['codepress'] != 0) - { - echo ''; - } - $page->output_footer(); - } - if ($mybb->input['action'] == 'export') - { - $query = $db->simple_select('pages', '*', 'pid=' . intval($mybb->input['pid'])); - $pages = $db->fetch_array($query); - if (!$pages['pid']) - { - flash_message($lang->pagemanager_invalid_page, 'error'); - admin_redirect($sub_tabs['pagemanager']['link']); - } - $extra_xml = ''; - if ($pages['framework']) - { - $extra_xml .= ' - ' . $pages['framework'] . ''; - } - if ($pages['deviceselect'] != 'all') - { - $extra_xml .= ' - ' . $pages['deviceselect'] . ''; - } - if (isset($pages['online']) && $pages['online'] == 0) - { - $extra_xml .= ' - ' . $pages['online'] . ''; - } - $xml = 'settings['charset'] . '"?> - - - - - - ' . md5($pages['template']) . '' . $extra_xml . ' - - '; - header('Content-Disposition: attachment; filename=' . rawurlencode($pages['url']) . '.xml'); - header('Content-Type: application/xhtml+xml'); - header('Content-Length: ' . strlen($xml)); - header('Pragma: no-cache'); - header('Expires: 0'); - echo $xml; - } - if ($mybb->input['action'] == 'enable' || $mybb->input['action'] == 'disable') - { - $highlight = '&highlight=' . intval($mybb->input['pid']); - if (!verify_post_check($mybb->input['my_post_key'])) - { - $highlight = ''; - flash_message($lang->invalid_post_verify_key2, 'error'); - } - else - { - $query = $db->simple_select('pages', 'pid', 'pid=' . intval($mybb->input['pid'])); - $pages = $db->fetch_array($query); - if (!$pages['pid']) - { - $highlight = ''; - flash_message($lang->pagemanager_invalid_page, 'error'); - } - else - { - if ($mybb->input['action'] == 'enable') - { - $status_lang = $lang->pagemanager_enable_success; - $status_action = array('enabled' => 1); - } - else - { - $status_lang = $lang->pagemanager_disable_success; - $status_action = array('enabled' => 0); - } - $db->update_query('pages', $status_action, 'pid=' . $pages['pid']); - pagemanager_cache(); - flash_message($status_lang, 'success'); - } - } - admin_redirect($sub_tabs['pagemanager']['link'] . $highlight); - } - if ($mybb->input['action'] == 'delete') - { - if (!verify_post_check($mybb->input['my_post_key'])) - { - flash_message($lang->invalid_post_verify_key2, 'error'); - } - else - { - $query = $db->simple_select('pages', 'pid', 'pid=' . intval($mybb->input['pid'])); - $pages = $db->fetch_array($query); - if (!$pages['pid']) - { - flash_message($lang->pagemanager_invalid_page, 'error'); - } - else - { - $db->delete_query('pages', 'pid=' . $pages['pid']); - pagemanager_cache(); - flash_message($lang->pagemanager_delete_success, 'success'); - } - } - admin_redirect($sub_tabs['pagemanager']['link']); - } - exit(); +$plugin_local = array($enbq, 'calendar_start', 'editpost_start', 'modcp_start', 'newreply_start', 'newthread_start', 'private_start', 'usercp_start', 'warnings_start'); +foreach ($plugin_local as &$local) { + $plugins->add_hook(''.$local.'', 'rineditor'); } -function pagemanager() -{ - global $mybb, $cache, $lang; - $lang->load("pagemanager"); - $pagecache = $cache->read('pages'); - - if ($mybb->input['page'] && !isset($pagecache[$mybb->input['page']])) - { - redirect("index.php", $lang->pagemanager_page_disabled_redirect, '', true); - exit(); - } +function rineditor () { + + global $rinbutquick, $mybb, $forum, $plugins, $calendar; + + $allow_mycode = true; + + if($plugins->current_hook == 'private_start') + { + $allow_mycode = $mybb->settings['pmsallowmycode']; + } + elseif($plugins->current_hook == 'calendar_start' && isset($calendar['allowmycode'])) + { + $allow_mycode = $calendar['allowmycode']; + } + elseif(isset($forum['allowmycode'])) + { + $allow_mycode = $forum['allowmycode']; + } + + // If MyCode is on for this forum and the MyCode editor is enabled in the Admin CP, draw the rin editor. + if($mybb->settings['bbcodeinserter'] != 0 && $allow_mycode && (!$mybb->user['uid'] || $mybb->user['showcodebuttons'] != 0)) { + $rinbutquick = rineditor_inserter_quick(); + } +} - if ($mybb->input['page'] && isset($pagecache[$mybb->input['page']])) - { - global $db; - - require_once MYBB_ROOT . $mybb->config['admin_dir'] . "/inc/functions.php"; - $useragent = $_SERVER["HTTP_USER_AGENT"]; - - $query = $db->simple_select('pages', '*', 'pid=' . $pagecache[$mybb->input['page']]['pid']); - $pages = $db->fetch_array($query); - if ($pages && ($pages['pagegroups'] == "-1" || is_member($pages['pagegroups']))) - { - if ($pages['deviceselect'] == 'mobile' && !is_mobile($useragent)) - { - error($lang->pagemanager_page_error_only_mobile); - } - elseif ($pages['deviceselect'] == 'desktop' && is_mobile($useragent)) - { - error($lang->pagemanager_page_error_only_desktop); - } - else - { - if ($pages['framework']) - { - global $headerinclude, $header, $theme, $footer; - $template = ' - - ' . $pages['name'] . ' - ' . $mybb->settings['bbname'] . ' - {$headerinclude} - - - {$header} - ' . $pages['template'] . ' - {$footer} - - '; - $template = str_replace("\\'", "'", addslashes($template)); - add_breadcrumb($pages['name']); - eval("\$page=\"" . $template . "\";"); - output_page($page); - } - else - { - eval('?>' . $pages['template']); - } - exit(); - } - } - else - { - error_no_permission(); - } - } +// PHP 8 fix - 2024-March-13 - Dave +if (!isset($settings['rineditor_quickquote'])) { + $settings['rineditor_quickquote'] = NULL; } -function pagemanager_tools_cache_rebuild() -{ - global $cache; - class MyPagemanagerCache extends datacache - { - function update_pages() - { - pagemanager_cache(); - } - } - $cache = null; - $cache = new MyPagemanagerCache; +if($settings['rineditor_quickquote'] && $settings['rineditor_enb_quick']) { + $plugins->add_hook('postbit', 're_quickquote_postbit'); } -function pagemanager_online(&$plugin_array) +function re_quickquote_postbit(&$post) { - if ($plugin_array['user_activity']['activity'] == 'misc' && my_strpos($plugin_array['user_activity']['location'], 'page=')) - { - global $cache; - $pagecache = $cache->read('pages'); - $location = parse_url($plugin_array['user_activity']['location']); - while (my_strpos($location['query'], '&')) - { - $location['query'] = html_entity_decode($location['query']); - } - $var = explode('&', $location['query']); - foreach ($var as $val) - { - $param = explode('=', $val); - $list[$param[0]] = $param[1]; - } - if (isset($pagecache[$list['page']])) - { - global $lang; - $lang->load("pagemanager"); - $plugin_array['location_name'] = $lang->sprintf($lang->pagemanager_online, $pagecache[$list['page']]['url'], $pagecache[$list['page']]['name']); - } - } + global $templates, $lang, $mybb, $forum; + + $post['quick_quote'] = ''; + // If MyCode is on for this forum and the MyCode editor is enabled in the Admin CP, enable quick quote. + if($mybb->settings['bbcodeinserter'] != 0 && $forum['allowmycode'] != 0 && (!$mybb->user['uid'] || $mybb->user['showcodebuttons'] != 0)) { + eval("\$post['quick_quote'] = \"" . $templates->get("postbit_quickquote") . "\";"); + } } -function pagemanager_cache($clear = false, $deinst = false) -{ - global $cache; - if ($clear == true) - { - $cache->update('pages', false); - - if ($deinst == true) - { - $cache->delete('pages'); - } - } - else - { - global $db; - $pages = array(); - $query = $db->simple_select('pages', 'pid,name,url,pagegroups,deviceselect,online', 'enabled=1'); - while ($page = $db->fetch_array($query)) - { - $pages[$page['url']] = $page; - } - $cache->update('pages', $pages); - } +// PHP 8 fix - 2024-March-13 - Dave +if (!isset($settings['rineditor_smile'])) { + $settings['rineditor_smile'] = NULL; } -function pagemanager_setinput($input = false, $import = false) -{ - $default = array( - 'name' => '', - 'url' => '', - 'pagegroups' => '-1', - 'framework' => 0, - 'template' => '', - 'deviceselect' => 'all', - 'online' => 1, - 'enabled' => 1 - ); - if ($input != false) - { - if ($input['name']) - { - $default['name'] = trim(my_substr($input['name'], 0, 120)); - } - if ($input['url']) - { - $default['url'] = trim(my_substr($input['url'], 0, 30)); - } - if ($input['framework'] == 1) - { - $default['framework'] = 1; - } - if ($input['template']) - { - if ($import == true) - { - if ($input['checksum']) - { - if (my_strtolower(md5(base64_decode($input['template']))) == my_strtolower($input['checksum'])) - { - $default['template'] = trim(base64_decode($input['template'])); - } - } - else - { - $default['template'] = trim($input['template']); - } - } - else - { - $default['template'] = trim($input['template']); - } - } - if ($input['deviceselect']) - { - if ($input['deviceselect'] != 'desktop' && $input['deviceselect'] != 'mobile') - { - $default['deviceselect'] = 'all'; - } - else - { - $default['deviceselect'] = $input['deviceselect']; - } - } - if (isset($input['online']) && $input['online'] == 0) - { - $default['online'] = 0; - } - if ($input['enabled'] == 0 || $import == true) - { - $default['enabled'] = 0; - } - } - return $default; +if($settings['rineditor_smile']) { + $plugins->add_hook("showthread_start", "rineditor_quick"); + $plugins->add_hook("private_start", "rineditor_quick"); } -function pagemanager_delete_plugin() -{ - global $mybb; - if (!$mybb->get_input('delete')) - { - return; - } +function rineditor_quick () { - if ($mybb->get_input('delete') == 1) - { - global $lang; - $lang->load("config_pagemanager"); - $codename = str_replace('.php', '', basename(__FILE__)); - - $installed_func = "{$codename}_is_installed"; - - if (function_exists($installed_func) && $installed_func() != false) - { - flash_message($lang->pagemanager_still_installed, 'error'); - admin_redirect('index.php?module=config-plugins'); - exit; - } - - if ($mybb->request_method != 'post') - { - global $page; - $page->output_confirm_action("index.php?module=config-plugins&action=deactivate&plugin={$codename}&delete=1&my_post_key={$mybb->post_code}", $lang->pagemanager_delete_confirm_message, $lang->pagemanager_delete_confirm); - } - - if (!isset($mybb->input['no'])) - { - global $message; - - if (($handle = @fopen(MYBB_ROOT . "inc/plugins/pluginstree/" . $codename . ".csv", "r")) !== FALSE) - { - while (($pluginfiles = fgetcsv($handle, 1000, ",")) !== FALSE) - { - foreach ($pluginfiles as $file) - { - $filepath = MYBB_ROOT . $file; - - if (@file_exists($filepath)) - { - if (is_file($filepath)) - { - @unlink($filepath); - } - elseif (is_dir($filepath)) - { - $dirfiles = array_diff(@scandir($filepath), array('.', '..')); - if (empty($dirfiles)) - { - @rmdir($filepath); - } - } - else - { - continue; - } - } - } - } - @fclose($handle); - @unlink(MYBB_ROOT . "inc/plugins/pluginstree/" . $codename . ".csv"); - - $message = $lang->pagemanager_delete_message; - } - else - { - flash_message($lang->pagemanager_undelete_message, 'error'); - admin_redirect('index.php?module=config-plugins'); - exit; - } - } - else - { - admin_redirect('index.php?module=config-plugins'); - exit; - } - } + global $smilieinserter, $mybb, $forum; + + // If MyCode is on for this forum and the MyCode editor is enabled in the Admin CP, draw the smile inserter. + if($mybb->settings['bbcodeinserter'] != 0 && $forum['allowmycode'] != 0 && (!$mybb->user['uid'] || $mybb->user['showcodebuttons'] != 0)) { + $smilieinserter = build_clickable_smilies(); + } } +?> From 1a46627d4bfccde6c432a4e63ca1f3fd769aef2c Mon Sep 17 00:00:00 2001 From: shadguy <38797333+shadguy@users.noreply.github.com> Date: Thu, 14 Mar 2024 23:51:39 -0600 Subject: [PATCH 3/3] Update rineditor.php cleaned up some useless comments (my own) --- inc/plugins/rineditor.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/inc/plugins/rineditor.php b/inc/plugins/rineditor.php index e148528..824ae66 100644 --- a/inc/plugins/rineditor.php +++ b/inc/plugins/rineditor.php @@ -592,7 +592,6 @@ function rineditor_inserter_quick($smilies = true) { global $db, $mybb, $theme, $templates, $lang, $smiliecache, $cache, $templatelist, $cache; - // PHP 8 fix - 2024-March-13 - Dave if (!isset($lang->rineditor)) { $lang->rineditor = NULL; } @@ -749,10 +748,9 @@ function rineditor_inserter_quick($smilies = true) $plu_vb = $cache->read("plugins"); - // PHP 8 fix - 2024-March-13 - Dave - if (!isset($plu_vb['active']['vbquote'])) { - $plu_vb['active']['vbquote'] = NULL; - } + if (!isset($plu_vb['active']['vbquote'])) { + $plu_vb['active']['vbquote'] = NULL; + } if($plu_vb['active']['vbquote']) { $rin_vbquote = 1; @@ -798,7 +796,6 @@ function rineditor_inserter_quick($smilies = true) $enbq = ''; -// PHP 8 fix - 2024-March-13 - Dave if (!isset($settings['rineditor_enb_quick'])) { $settings['rineditor_enb_quick'] = NULL; } @@ -837,7 +834,6 @@ function rineditor () { } } -// PHP 8 fix - 2024-March-13 - Dave if (!isset($settings['rineditor_quickquote'])) { $settings['rineditor_quickquote'] = NULL; } @@ -857,7 +853,6 @@ function re_quickquote_postbit(&$post) } } -// PHP 8 fix - 2024-March-13 - Dave if (!isset($settings['rineditor_smile'])) { $settings['rineditor_smile'] = NULL; }