📄 plugins.inc.php
字号:
showtableheader();
showtitle($lang['plugins_config'].' - '.$plugin['name']);
$extra = array();
foreach($pluginvars as $var) {
$var['variable'] = 'varsnew['.$var['variable'].']';
if($var['type'] == 'number') {
$var['type'] = 'text';
} elseif($var['type'] == 'select') {
$var['type'] = "<select name=\"$var[variable]\">\n";
foreach(explode("\n", $var['extra']) as $key => $option) {
$option = trim($option);
if(strpos($option, '=') === FALSE) {
$key = $option;
} else {
$item = explode('=', $option);
$key = trim($item[0]);
$option = trim($item[1]);
}
$var['type'] .= "<option value=\"".dhtmlspecialchars($key)."\" ".($var['value'] == $key ? 'selected' : '').">$option</option>\n";
}
$var['type'] .= "</select>\n";
$var['variable'] = $var['value'] = '';
} elseif($var['type'] == 'date') {
$var['type'] = 'calendar';
$extra['date'] = '<script type="text/javascript" src="include/js/calendar.js"></script>';
} elseif($var['type'] == 'datetime') {
$var['type'] = 'calendar';
$var['extra'] = 1;
$extra['date'] = '<script type="text/javascript" src="include/js/calendar.js"></script>';
} elseif($var['type'] == 'forum') {
require_once DISCUZ_ROOT.'./include/forum.func.php';
$var['type'] = '<select name="'.$var['variable'].'">'.forumselect(FALSE, 0, $var['value']).'</select>';
$var['variable'] = $var['value'] = '';
} elseif($var['type'] == 'forums') {
$var['description'] = $lang['plugins_edit_vars_multiselect_comment'].'<br />'.$var['comment'];
$var['value'] = unserialize($var['value']);
$var['value'] = is_array($var['value']) ? $var['value'] : array();
require_once DISCUZ_ROOT.'./include/forum.func.php';
$var['type'] = '<select name="'.$var['variable'].'[]" size="10" multiple="multiple">'.forumselect().'</select>';
foreach($var['value'] as $v) {
$var['type'] = str_replace('<option value="'.$v.'">', '<option value="'.$v.'" selected>', $var['type']);
}
$var['variable'] = $var['value'] = '';
} elseif(substr($var['type'], 0, 5) == 'group') {
if($var['type'] == 'groups') {
$var['description'] = $lang['plugins_edit_vars_multiselect_comment'].'<br />'.$var['comment'];
$var['value'] = unserialize($var['value']);
$var['type'] = '<select name="'.$var['variable'].'[]" size="10" multiple="multiple">';
} else {
$var['type'] = '<select name="'.$var['variable'].'">';
}
$var['value'] = is_array($var['value']) ? $var['value'] : array($var['value']);
$query = $db->query("SELECT groupid, grouptitle FROM {$tablepre}usergroups ORDER BY groupid");
while($group = $db->fetch_array($query)) {
$var['type'] .= '<option value="'.$group['groupid'].'"'.(in_array($group['groupid'], $var['value']) ? ' selected' : '').'>'.$group['grouptitle'].'</option>';
}
$var['type'] .= '</select>';
$var['variable'] = $var['value'] = '';
} elseif($var['type'] == 'extcredit') {
$var['type'] = '<select name="'.$var['variable'].'">';
foreach($extcredits as $id => $credit) {
$var['type'] .= '<option value="'.$id.'"'.($var['value'] == $id ? ' selected' : '').'>'.$credit['title'].'</option>';
}
$var['type'] .= '</select>';
$var['variable'] = $var['value'] = '';
}
showsetting(isset($lang[$var['title']]) ? $lang[$var['title']] : $var['title'], $var['variable'], $var['value'], $var['type'], '', 0, isset($lang[$var['description']]) ? $lang[$var['description']] : $var['description'], $var['extra']);
}
showsubmit('editsubmit');
showtablefooter();
showformfooter();
echo implode('', $extra);
} else {
if(is_array($varsnew)) {
foreach($varsnew as $variable => $value) {
if(isset($pluginvars[$variable])) {
if($pluginvars[$variable]['type'] == 'number') {
$value = (float)$value;
} elseif(in_array($pluginvars[$variable]['type'], array('forums', 'groups'))) {
$value = addslashes(serialize($value));
}
$db->query("UPDATE {$tablepre}pluginvars SET value='$value' WHERE pluginid='$pluginid' AND variable='$variable'");
}
}
}
updatecache('plugins');
cpmsg('plugins_settings_succeed', $BASESCRIPT.'?action=plugins&operation=config', 'succeed');
}
} else {
$modfile = '';
if(is_array($plugin['modules'] = unserialize($plugin['modules']))) {
foreach($plugin['modules'] as $module) {
if($module['type'] == 3 && $module['name'] == $mod && (!$module['adminid'] || $module['adminid'] >= $adminid)) {
$plugin['directory'] .= (!empty($plugin['directory']) && substr($plugin['directory'], -1) != '/') ? '/' : '';
$modfile = './plugins/'.$plugin['directory'].$module['name'].'.inc.php';
break;
}
}
}
if($modfile) {
if(!@include DISCUZ_ROOT.$modfile) {
cpmsg('plugins_settings_module_nonexistence', '', 'error');
} else {
dexit();
}
} else {
cpmsg('undefined_action', '', 'error');
}
}
}
} elseif($operation == 'edit') {
if(empty($pluginid) ) {
$pluginlist = '<select name="pluginid">';
$query = $db->query("SELECT pluginid, name FROM {$tablepre}plugins");
while($plugin = $db->fetch_array($query)) {
$pluginlist .= '<option value="'.$plugin['pluginid'].'">'.$plugin['name'].'</option>';
}
$pluginlist .= '</select>';
cpmsg('plugins_nonexistence', $BASESCRIPT.'?action=plugins&operation=edit'.(!empty($highlight) ? "&highlight=$highlight" : ''), 'form', $pluginlist);
} else {
$condition = !empty($uid) ? "uid='$uid'" : "username='$username'";
}
$plugin = $db->fetch_first("SELECT * FROM {$tablepre}plugins WHERE pluginid='$pluginid'");
if(!$plugin) {
cpmsg('undefined_action', '', 'error');
}
$plugin['modules'] = unserialize($plugin['modules']);
if(!submitcheck('editsubmit')) {
$adminidselect = array($plugin['adminid'] => 'selected');
shownav('extended', 'nav_plugins');
$anchor = in_array($anchor, array('config', 'modules', 'hooks', 'vars')) ? $anchor : 'config';
showsubmenuanchors($lang['plugins_edit'].' - '.$plugin['name'], array(
array('config', 'config', $anchor == 'config'),
array('plugins_config_module', 'modules', $anchor == 'modules'),
array('plugins_config_hooks', 'hooks', $anchor == 'hooks'),
array('plugins_config_vars', 'vars', $anchor == 'vars'),
));
showtips('plugins_edit_tips');
showtagheader('div', 'config', $anchor == 'config');
showformheader("plugins&operation=edit&type=common&pluginid=$pluginid", '', 'configform');
showtableheader();
showsetting('plugins_edit_name', 'namenew', $plugin['name'], 'text');
if(!$plugin['copyright']) {
showsetting('plugins_edit_copyright', 'copyrightnew', $plugin['copyright'], 'text');
}
showsetting('plugins_edit_identifier', 'identifiernew', $plugin['identifier'], 'text');
showsetting('plugins_edit_adminid', '', '', '<select name="adminidnew"><option value="1" '.$adminidselect[1].'>'.$lang['usergroups_system_1'].'</option><option value="2" '.$adminidselect[2].'>'.$lang['usergroups_system_2'].'</option><option value="3" '.$adminidselect[3].'>'.$lang['usergroups_system_3'].'</option></select>');
showsetting('plugins_edit_directory', 'directorynew', $plugin['directory'], 'text');
showsetting('plugins_edit_datatables', 'datatablesnew', $plugin['datatables'], 'text');
showsetting('plugins_edit_description', 'descriptionnew', $plugin['description'], 'textarea');
showsubmit('editsubmit');
showtablefooter();
showformfooter();
showtagfooter('div');
showtagheader('div', 'modules', $anchor == 'modules');
showformheader("plugins&operation=edit&type=modules&pluginid=$pluginid", '', 'modulesform');
showtableheader('plugins_edit_modules');
showsubtitle(array('', 'display_order', 'plugins_edit_modules_name', 'plugins_edit_modules_menu', 'plugins_edit_modules_menu_url', 'plugins_edit_modules_type', 'plugins_edit_modules_adminid'));
if(is_array($plugin['modules'])) {
foreach($plugin['modules'] as $moduleid => $module) {
$adminidselect = array($module['adminid'] => 'selected');
$includecheck = empty($val['include']) ? $lang['no'] : $lang['yes'];
$typeselect = '';
for($i = 1; $i <= 6; $i++) {
$typeselect .= "<option value=\"$i\" ".($module['type'] == $i ? 'selected' : '').">".$lang['plugins_edit_modules_type_'.$i]."</option>";
}
showtablerow('', array('class="td25"', 'class="td28"'), array(
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[$moduleid]\">",
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"ordernew[$moduleid]\" value=\"$module[displayorder]\">",
"<input type=\"text\" class=\"txt\" size=\"15\" name=\"namenew[$moduleid]\" value=\"$module[name]\">",
"<input type=\"text\" class=\"txt\" size=\"15\" name=\"menunew[$moduleid]\" value=\"$module[menu]\">",
"<input type=\"text\" class=\"txt\" size=\"15\" name=\"urlnew[$moduleid]\" value=\"".dhtmlspecialchars($module['url'])."\">",
"<select name=\"typenew[$moduleid]\">$typeselect</select>",
"<select name=\"adminidnew[$moduleid]\">\n".
"<option value=\"0\" $adminidselect[0]>$lang[usergroups_system_0]</option>\n".
"<option value=\"1\" $adminidselect[1]>$lang[usergroups_system_1]</option>\n".
"<option value=\"2\" $adminidselect[2]>$lang[usergroups_system_2]</option>\n".
"<option value=\"3\" $adminidselect[3]>$lang[usergroups_system_3]</option>\n".
"</select>"
));
}
}
showtablerow('', array('class="td25"', 'class="td28"'), array(
lang('add_new'),
'<input type="text" class="txt" size="2" name="neworder">',
'<input type="text" class="txt" size="15" name="newname">',
'<input type="text" class="txt" size="15" name="newmenu">',
'<input type="text" class="txt" size="15" name="newurl">',
'<select name="newtype">
<option value="1">'.lang('plugins_edit_modules_type_1').'</option>
<option value="2">'.lang('plugins_edit_modules_type_2').'</option>
<option value="3">'.lang('plugins_edit_modules_type_3').'</option>
<option value="4">'.lang('plugins_edit_modules_type_4').'</option>
<option value="5">'.lang('plugins_edit_modules_type_5').'</option>
<option value="6">'.lang('plugins_edit_modules_type_6').'</option>
</select>',
'<select name="newadminid">
<option value="0">'.lang('usergroups_system_0').'</option>
<option value="1" selected>'.lang('usergroups_system_1').'</option>
<option value="2">'.lang('usergroups_system_2').'</option>
<option value="3">'.lang('usergroups_system_3').'</option>
</select>'
));
showsubmit('editsubmit', 'submit', 'del');
showtablefooter();
showformfooter();
showtagfooter('div');
showtagheader('div', 'hooks', $anchor == 'hooks');
showformheader("plugins&operation=edit&type=hooks&pluginid=$pluginid", '', 'hooksform');
showtableheader('plugins_edit_hooks');
showsubtitle(array('', 'available', 'plugins_hooks_title', 'plugins_hooks_callback', 'plugins_hooks_description', ''));
$query = $db->query("SELECT pluginhookid, title, description, available FROM {$tablepre}pluginhooks WHERE pluginid='$plugin[pluginid]'");
while($hook = $db->fetch_array($query)) {
$hook['description'] = nl2br(cutstr($hook['description'], 50));
$hook['evalcode'] = 'eval($hooks[\''.$plugin['identifier'].'_'.$hook['title'].'\']);';
showtablerow('', '', array(
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[$hook[pluginhookid]]\">",
"<input class=\"checkbox\" type=\"checkbox\" name=\"availablenew[$hook[pluginhookid]]\" value=\"1\" ".($hook['available'] ? 'checked' : '')." onclick=\"if(this.checked) {\$('hookevalcode{$hook[pluginhookid]}').value='".addslashes($hook[evalcode])."';}else{\$('hookevalcode{$hook[pluginhookid]}').value='N/A';}\">",
"<input type=\"text\" class=\"txt\" name=\"titlenew[$hook[pluginhookid]]\" size=\"15\" value=\"$hook[title]\"></td>\n".
"<td><input type=\"text\" class=\"txt\" name=\"hookevalcode{$hook[pluginhookid]}\" id=\"hookevalcode{$hook[pluginhookid]}\"size=\"30\" value=\"".($hook['available'] ? $hook[evalcode] : 'N/A')."\" readonly>",
$hook[description],
"<a href=\"$BASESCRIPT?action=plugins&operation=hooks&pluginid=$plugin[pluginid]&pluginhookid=$hook[pluginhookid]\" class=\"act\">$lang[edit]</a>"
));
}
showtablerow('', array('', '', '', 'colspan="3"'), array(
lang('add_new'),
'',
'<input type="text" class="txt" name="newtitle" size="15">',
''
));
showsubmit('editsubmit', 'submit', 'del');
showtablefooter();
showformfooter();
showtagfooter('div');
showtagheader('div', 'vars', $anchor == 'vars');
showformheader("plugins&operation=edit&type=vars&pluginid=$pluginid", '', 'varsform');
showtableheader('plugins_edit_vars');
showsubtitle(array('', 'display_order', 'plugins_vars_title', 'plugins_vars_variable', 'plugins_vars_type', ''));
$query = $db->query("SELECT * FROM {$tablepre}pluginvars WHERE pluginid='$plugin[pluginid]' ORDER BY displayorder");
while($var = $db->fetch_array($query)) {
$var['type'] = $lang['plugins_edit_vars_type_'. $var['type']];
$var['title'] .= isset($lang[$var['title']]) ? '<br />'.$lang[$var['title']] : '';
showtablerow('', array('class="td25"', 'class="td28"'), array(
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$var[pluginvarid]\">",
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"displayordernew[$var[pluginvarid]]\" value=\"$var[displayorder]\">",
$var['title'],
$var['variable'],
$var['type'],
"<a href=\"$BASESCRIPT?action=plugins&operation=vars&pluginid=$plugin[pluginid]&pluginvarid=$var[pluginvarid]\" class=\"act\">$lang[detail]</a>"
));
}
showtablerow('', array('class="td25"', 'class="td28"'), array(
lang('add_new'),
'<input type="text" class="txt" size="2" name="newdisplayorder" value="0">',
'<input type="text" class="txt" size="15" name="newtitle">',
'<input type="text" class="txt" size="15" name="newvariable">',
'<select name="newtype">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -