📄 plugins.inc.php
字号:
<?php
/*
[Discuz!] (C)2001-2006 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$RCSfile: plugins.inc.php,v $
$Revision: 1.18.2.2 $
$Date: 2006/03/07 05:20:03 $
*/
if(!defined('IN_DISCUZ') || !isset($PHP_SELF) || !preg_match("/[\/\\\\]admincp\.php$/", $PHP_SELF)) {
exit('Access Denied');
}
if($action == 'pluginsconfig' && $export) {
$query = $db->query("SELECT * FROM {$tablepre}plugins WHERE pluginid='$export'");
if(!$plugin = $db->fetch_array($query)) {
cpheader();
cpmsg('undefined_action');
}
unset($plugin['pluginid']);
$pluginarray = array();
$pluginarray['plugin'] = $plugin;
$pluginarray['version'] = strip_tags($version);
$time = gmdate("$dateformat $timeformat", $timestamp + $timeoffset * 3600);
$query = $db->query("SELECT * FROM {$tablepre}pluginhooks WHERE pluginid='$export'");
while($hook = $db->fetch_array($query)) {
unset($hook['pluginhookid'], $hook['pluginid']);
$pluginarray['hooks'][] = $hook;
}
$query = $db->query("SELECT * FROM {$tablepre}pluginvars WHERE pluginid='$export'");
while($var = $db->fetch_array($query)) {
unset($var['pluginvarid'], $var['pluginid']);
$pluginarray['vars'][] = $var;
}
$plugin_export = "# Discuz! Plugin Dump\n".
"# Version: Discuz! $version\n".
"# Time: $time \n".
"# From: $bbname ($boardurl) \n".
"#\n".
"# Discuz! Community: http://www.Discuz.net\n".
"# Please visit our website for latest news about Discuz!\n".
"# --------------------------------------------------------\n\n\n".
wordwrap(base64_encode(serialize($pluginarray)), 60, "\n", 1);
ob_end_clean();
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Length: '.strlen($plugin_export));
header('Content-Disposition: attachment; filename=discuz_plugin_'.$plugin['identifier'].'.txt');
header('Content-Type: '.(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'application/octetstream' : 'application/octet-stream'));
echo $plugin_export;
dexit();
}
cpheader();
if($action == 'plugins') {
if(!$edit && !$identifier) {
$plugins = '';
$query = $db->query("SELECT p.*, pv.pluginvarid FROM {$tablepre}plugins p
LEFT JOIN {$tablepre}pluginvars pv USING(pluginid)
GROUP BY p.pluginid
ORDER BY p.available DESC, p.pluginid");
while($plugin = $db->fetch_array($query)) {
if(!$plugin['adminid'] || $plugin['adminid'] >= $adminid) {
$plugin['disabled'] = '';
$plugin['edit'] = $plugin['pluginvarid'] ? "<a href=\"admincp.php?action=plugins&edit=$plugin[pluginid]\">[$lang[plugins_settings]]</a> " : '';
if(is_array($plugin['modules'] = unserialize($plugin['modules']))) {
foreach($plugin['modules'] as $module) {
if($module['type'] == 3 && (!$module['adminid'] || $module['adminid'] >= $adminid)){
$plugin['edit'] .= "<a href=\"admincp.php?action=plugins&identifier=$plugin[identifier]&mod=$module[name]\">[$lang[plugins_settings_module]: $module[menu]]</a> ";
}
}
}
} else {
$plugin['disabled'] = 'disabled';
$plugin['edit'] = "[$lang[detail]]";
}
$plugins .= "<table cellspacing=\"".INNERBORDERWIDTH."\" cellpadding=\"".TABLESPACE."\" width=\"80%\" align=\"center\" class=\"tableborder\" $plugin[disabled]>\n".
"<tr class=\"header\"><td colspan=\"2\">$plugin[name]".(!$plugin['available'] ? ' ('.$lang['plugins_unavailable'].')' : '')."</td></tr>\n".
"<tr><td width=\"20%\" class=\"altbg1\">$lang[description]:</td><td class=\"altbg2\">$plugin[description]</td></tr>\n".
"<tr><td width=\"20%\" class=\"altbg1\">$lang[copyright]:</td><td class=\"altbg2\">$plugin[copyright]</td></tr>\n".
"<tr><td width=\"20%\" class=\"altbg1\">$lang[edit]:</td><td class=\"altbg2\">$plugin[edit]</td></tr>\n".
"</table><br>";
}
?>
<table cellspacing="<?=INNERBORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="80%" align="center" class="tableborder">
<tr class="header"><td><?=$lang['tips']?></td></tr>
<tr bgcolor="<?=ALTBG1?>"><td>
<br><?=$lang['plugins_tips']?>
</td></tr></table><br><br>
<?=$plugins?>
<?
} else {
$query = $db->query("SELECT * FROM {$tablepre}plugins WHERE ".($identifier ? "identifier='$identifier'" : "pluginid='$edit'"));
if(!$plugin = $db->fetch_array($query)) {
cpmsg('undefined_action');
} else {
$edit = $plugin['pluginid'];
}
$pluginvars = array();
$query = $db->query("SELECT * FROM {$tablepre}pluginvars WHERE pluginid='$edit' ORDER BY displayorder");
while($var = $db->fetch_array($query)) {
$pluginvars[$var['variable']] = $var;
}
if(empty($mod)) {
if(($plugin['adminid'] && $adminid > $plugin['adminid']) || !$pluginvars) {
cpmsg('noaccess');
}
if(!submitcheck('editsubmit')) {
echo "<form method=\"post\" action=\"admincp.php?action=plugins&edit=$pluginid&edit=$edit&formhash=".FORMHASH."\">\n";
showtype($lang['plugins_settings'].' - '.$plugin['name'], 'top');
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'] = '';
}
$var['title'] = '</b><b>'.(isset($lang[$var['title']]) ? $lang[$var['title']] : $var['title']).'</b><br>'.
(isset($lang[$var['description']]) ? $lang[$var['description']] : $var['description']);
showsetting($var['title'], $var['variable'], $var['value'], $var['type']);
}
showtype('', 'bottom');
echo "<br><center><input type=\"submit\" name=\"editsubmit\" value=\"$lang[submit]\"></center></form>";
} else {
if(is_array($varsnew)){
foreach($varsnew as $variable => $value) {
if(isset($pluginvars[$variable])) {
if($pluginvars[$variable]['type'] == 'number') {
$value = (float)$value;
}
$db->query("UPDATE {$tablepre}pluginvars SET value='$value' WHERE pluginid='$edit' AND variable='$variable'");
}
}
}
updatecache('plugins');
cpmsg('plugins_settings_succeed', 'admincp.php?action=plugins');
}
} 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');
} else {
dexit();
}
} else {
cpmsg('undefined_action');
}
}
}
} elseif($action == 'pluginsconfig') {
if(!submitcheck('configsubmit') && !submitcheck('importsubmit')) {
$plugins = '';
$query = $db->query("SELECT * FROM {$tablepre}plugins");
while($plugin = $db->fetch_array($query)) {
$plugins .= "<tr align=\"center\"><td bgcolor=\"".ALTBG1."\"><input type=\"checkbox\" name=\"delete[]\" value=\"$plugin[pluginid]\"></td>\n".
"<td bgcolor=\"".ALTBG2."\"><b>$plugin[name]</b></td>\n".
"<td bgcolor=\"".ALTBG1."\">$plugin[identifier]</td>\n".
"<td bgcolor=\"".ALTBG2."\">$plugin[description]</td>\n".
"<td bgcolor=\"".ALTBG1."\">$plugin[directory]</td>\n".
"<td bgcolor=\"".ALTBG2."\"><input type=\"checkbox\" name=\"availablenew[$plugin[pluginid]]\" value=\"1\" ".(!$plugin['name'] || !$plugin['identifier'] ? 'disabled' : ($plugin['available'] ? 'checked' : ''))."></td>\n".
"<td bgcolor=\"".ALTBG1."\"><a href=\"admincp.php?action=pluginsconfig&export=$plugin[pluginid]\">[$lang[download]]</a></td>\n".
"<td bgcolor=\"".ALTBG2."\"><a href=\"admincp.php?action=pluginsedit&pluginid=$plugin[pluginid]\">[$lang[detail]]</a></td></tr>\n";
}
?>
<table cellspacing="<?=INNERBORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="98%" align="center" class="tableborder">
<tr class="header"><td><?=$lang['tips']?></td></tr>
<tr bgcolor="<?=ALTBG1?>"><td>
<br><?=$lang['plugins_config_tips']?>
</td></tr></table><br><br>
<form method="post" action="admincp.php?action=pluginsconfig">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<table cellspacing="<?=INNERBORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="98%" align="center" class="tableborder">
<tr class="header" align="center">
<td width="48"><input type="checkbox" name="chkall" class="header" onclick="checkall(this.form, 'delete')"><?=$lang['del']?></td>
<td width="15%"><?=$lang['plugins_name']?></td>
<td width="10%"><?=$lang['plugins_identifier']?></td>
<td width="31%"><?=$lang['description']?></td>
<td width="15%"><?=$lang['plugins_directory']?></td>
<td width="8%"><?=$lang['available']?></td>
<td width="8%"><?=$lang['export']?></td>
<td width="8%"><?=$lang['edit']?></td></tr>
<?=$plugins?>
<tr><td colspan="7" class="singleborder"> </td></tr>
<tr align="center" class="altbg1"><td><?=$lang['add_new']?></td>
<td><input type='text' name="newname" size="12"></td>
<td><input type='text' name="newidentifier" size="8"></td>
<td colspan="6"> </td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -