📄 plugins.inc.php
字号:
}
}
updatecache('plugins');
updatecache('settings');
cpmsg('plugins_import_succeed', 'admincp.php?action=pluginsconfig');
}
} elseif($action == 'pluginsedit' && $pluginid) {
$query = $db->query("SELECT * FROM {$tablepre}plugins WHERE pluginid='$pluginid'");
if(!$plugin = $db->fetch_array($query)) {
cpmsg('undefined_action');
}
$plugin['modules'] = unserialize($plugin['modules']);
if(!submitcheck('editsubmit')) {
$modules = '';
if(is_array($plugin['modules'])) {
foreach($plugin['modules'] as $moduleid => $module) {
$module['type'] = $module['type'] ? $lang["plugins_edit_module_type_".$module['type']] : '';
$adminidselect = array($module['adminid'] => 'selected');
$includecheck = empty($val['include']) ? $lang['no'] : $lang['yes'];
$modules .= "<tr class=\"altbg1\" align=\"center\"><td class=\"altbg1\"><input type=\"checkbox\" name=\"delete[$moduleid]\"></td>\n".
"<td class=\"altbg2\">$module[name]</td>\n".
"<td class=\"altbg1\">$module[menu]</td>\n".
"<td class=\"altbg2\">$module[url]</td>\n".
"<td class=\"altbg1\">$module[type]</td>\n".
"<td class=\"altbg2\"><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></td></tr>\n";
}
}
$vars = '';
$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']] : '';
$vars .= "<tr class=\"altbg1\" align=\"center\"><td class=\"altbg1\"><input type=\"checkbox\" name=\"delete[$var[pluginvarid]]\"></td>\n".
"<td class=\"altbg2\">$var[title]</td>\n".
"<td class=\"altbg1\">$var[variable]</td>\n".
"<td class=\"altbg2\">$var[type]</td>\n".
"<td class=\"altbg1\"><input type=\"text\" size=\"2\" name=\"displayordernew[$var[pluginvarid]]\" value=\"$var[displayorder]\"></td>\n".
"<td class=\"altbg2\"><a href=\"admincp.php?action=pluginvars&pluginid=$plugin[pluginid]&pluginvarid=$var[pluginvarid]\">[$lang[detail]]</a></td></tr>\n";
}
?>
<table cellspacing="<?=INNERBORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="90%" align="center" class="tableborder">
<tr class="header"><td><?=$lang['tips']?></td></tr>
<tr bgcolor="<?=ALTBG1?>"><td>
<br><?=$lang['plugins_edit_tips']?>
</td></tr></table><br><br>
<a name="common"></a>
<form method="post" action="admincp.php?action=pluginsedit&type=common&pluginid=<?=$pluginid?>">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<?
$adminidselect = array($plugin['adminid'] => 'selected');
showtype($lang['plugins_edit'].' - '.$plugin['name'], 'top');
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');
showtype('', 'bottom');
?>
<br><center><input type="submit" name="editsubmit" value="<?=$lang['submit']?>"></center>
</form><br>
<a name="modules"></a>
<form method="post" action="admincp.php?action=pluginsedit&type=modules&pluginid=<?=$pluginid?>">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<table cellspacing="<?=INNERBORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="90%" align="center" class="tableborder">
<tr class="header"><td colspan="6"><?=$lang['plugins_edit_module']?></td></tr>
<tr class="category" align="center"><td width="45"><input type="checkbox" name="chkall" onclick="checkall(this.form,'delete')"><?=$lang['del']?></td>
<td><?=$lang['plugins_edit_module_name']?></td><td><?=$lang['plugins_edit_module_menu']?></td><td><?=$lang['plugins_edit_module_menu_url']?></td>
<td><?=$lang['plugins_edit_module_type']?></td><td><?=$lang['plugins_edit_module_adminid']?></td></tr>
<?=$modules?>
<tr><td colspan="6" class="singleborder"> </td></tr>
<tr class="altbg1" align="center"><td><?=$lang['add_new']?></td><td><input type="text" size="15" name="newname"></td>
<td><input type="text" size="15" name="newmenu"></td>
<td><input type="text" size="15" name="newurl"></td>
<td><select name="newtype">
<option value="1"><?=$lang['plugins_edit_module_type_1']?></option>
<option value="2"><?=$lang['plugins_edit_module_type_2']?></option>
<option value="3"><?=$lang['plugins_edit_module_type_3']?></option>
<option value="4"><?=$lang['plugins_edit_module_type_4']?></option>
</select></td><td class="altbg2"><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></td></tr>
</table><br><center><input type="submit" name="editsubmit" value="<?=$lang['submit']?>"></center>
</form><br>
<a name="vars"></a>
<form method="post" action="admincp.php?action=pluginsedit&type=vars&pluginid=<?=$pluginid?>">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<table cellspacing="<?=INNERBORDERWIDTH?>" cellpadding="<?=TABLESPACE?>" width="90%" align="center" class="tableborder">
<tr class="header"><td colspan="6"><?=$lang['plugins_edit_vars']?></td></tr>
<tr class="category" align="center"><td width="45"><input type="checkbox" name="chkall" class="category" onclick="checkall(this.form)"><?=$lang['del']?></td>
<td><?=$lang['plugins_vars_title']?></td><td><?=$lang['plugins_vars_variable']?></td><td><?=$lang['plugins_vars_type']?></td><td><?=$lang['display_order']?></td><td><?=$lang['edit']?></td></tr>
<?=$vars?>
<tr><td colspan="6" class="singleborder"> </td></tr>
<tr align="center" class="altbg1"><td><?=$lang['add_new']?></td>
<td><input type="text" size="15" name="newtitle"></td>
<td><input type="text" size="15" name="newvariable"></td>
<td><select name="newtype">
<option value="number"><?=$lang['plugins_edit_vars_type_number']?></option>
<option value="text" selected><?=$lang['plugins_edit_vars_type_text']?></option>
<option value="textarea"><?=$lang['plugins_edit_vars_type_textarea']?></option>
<option value="radio"><?=$lang['plugins_edit_vars_type_radio']?></option>
<option value="select"><?=$lang['plugins_edit_vars_type_select']?></option>
<option value="color"><?=$lang['plugins_edit_vars_type_color']?></option>
</seletc></td><td><input type="text" size="2" name="newdisplayorder" value="0"></td>
<td> </td></tr>
</table><br><center><input type="submit" name="editsubmit" value="<?=$lang['submit']?>"></center>
</form><br>
<?
} else {
if($type == 'common') {
$namenew = dhtmlspecialchars(trim($namenew));
$directorynew = dhtmlspecialchars(safedir($directorynew));
$identifiernew = trim($identifiernew);
$datatablesnew = dhtmlspecialchars(trim($datatablesnew));
$descriptionnew = dhtmlspecialchars($descriptionnew);
$copyrightnew = $plugin['copyright'] ? addslashes($plugin['copyright']) : dhtmlspecialchars($copyrightnew);
$adminidnew = ($adminidnew > 0 && $adminidnew <= 3) ? $adminidnew : 1;
if(!$namenew) {
cpmsg('plugins_edit_name_invalid');
} elseif($identifiernew != $plugin['identifier']) {
$query = $db->query("SELECT pluginid FROM {$tablepre}plugins WHERE identifier='$identifiernew' LIMIT 1");
if($db->num_rows($query) || !is_key($identifiernew)) {
cpmsg('plugins_edit_identifier_invalid');
}
}
$db->query("UPDATE {$tablepre}plugins SET adminid='$adminidnew', name='$namenew', identifier='$identifiernew', description='$descriptionnew', datatables='$datatablesnew', directory='$directorynew', copyright='$copyrightnew' WHERE pluginid='$pluginid'");
} elseif($type == 'modules') {
$modulesnew = array();
$newname = trim($newname);
if(is_array($plugin['modules'])) {
foreach($plugin['modules'] as $moduleid => $module) {
if(!isset($delete[$moduleid])) {
$module['adminid'] = ($adminidnew[$moduleid] >= 0 && $adminidnew[$moduleid] <= 3) ? $adminidnew[$moduleid] : $module['adminid'];
$modulesnew[] = $module;
if($newname == $module['name']) {
cpmsg('plugins_edit_module_duplicated');
}
}
}
}
$newmodule = array();
if(!empty($newname)) {
if(!is_key($newname)) {
cpmsg('plugins_edit_module_name_invalid');
}
$newadminid = intval($newadminid);
$newmenu = trim($newmenu);
$newurl = trim($newurl);
switch($newtype) {
case 1:
if(empty($newurl)) {
cpmsg('plugins_edit_module_url_invalid');
}
$newmodule = array('name' => $newname, 'menu' => $newmenu, 'url' => $newurl);
break;
case 2:
case 3:
if(empty($newmenu)) {
cpmsg('plugins_edit_module_menu_invalid');
}
$newmodule = array('name' => $newname, 'menu' => $newmenu);
break;
case 4:
$newmodule = array('name' => $newname);
break;
default:
cpmsg('undefined_action');
}
$newmodule['type'] = $newtype;
$newmodule['adminid'] = $newadminid >= 0 && $newadminid <= 3 ? $newadminid : 1 ;
}
if($newmodule) {
$modulesnew[] = $newmodule;
}
$db->query("UPDATE {$tablepre}plugins SET modules='".addslashes(serialize($modulesnew))."' WHERE pluginid='$pluginid'");
} elseif($type == 'vars') {
if(is_array($delete)) {
$ids = $comma = '';
foreach($delete as $id => $val) {
$ids .= "$comma'$id'";
$comma = ',';
}
$db->query("DELETE from {$tablepre}pluginvars WHERE pluginid='$pluginid' AND pluginvarid IN ($ids)");
};
if(is_array($displayordernew)) {
foreach($displayordernew as $id => $displayorder) {
$db->query("UPDATE {$tablepre}pluginvars SET displayorder='$displayorder' WHERE pluginid='$pluginid' AND pluginvarid='$id'");
}
}
$newtitle = dhtmlspecialchars(trim($newtitle));
$newvariable = trim($newvariable);
if($newtitle && $newvariable) {
$query = $db->query("SELECT pluginvarid FROM {$tablepre}pluginvars WHERE pluginid='$pluginid' AND variable='$newvariable' LIMIT 1");
if($db->num_rows($query) || strlen($newvariable) > 40 || !is_key($newvariable)) {
cpmsg('plugins_edit_var_invalid');
}
$db->query("INSERT INTO {$tablepre}pluginvars (pluginid, displayorder, title, variable, type)
VALUES ('$pluginid', '$newdisplayorder', '$newtitle', '$newvariable', '$newtype')");
}
}
updatecache('plugins');
updatecache('settings');
cpmsg('plugins_edit_succeed', "admincp.php?action=pluginsedit&pluginid=$pluginid#$type");
}
} elseif($action == 'pluginvars' && $pluginid && $pluginvarid) {
$query = $db->query("SELECT * FROM {$tablepre}plugins p, {$tablepre}pluginvars pv WHERE p.pluginid='$pluginid' AND pv.pluginid=p.pluginid AND pv.pluginvarid='$pluginvarid'");
if(!$pluginvar = $db->fetch_array($query)) {
cpmsg('undefined_action');
}
if(!submitcheck('varsubmit')) {
$typeselect = '<select name="typenew">';
foreach(array('number', 'text', 'radio', 'textarea', 'select', 'color') as $type) {
$typeselect .= '<option value="'.$type.'" '.($pluginvar['type'] == $type ? 'selected' : '').'>'.$lang['plugins_edit_vars_type_'.$type].'</option>';
}
$typeselect .= '</select>';
echo "<form method=\"post\" action=\"admincp.php?action=pluginvars&pluginid=$pluginid&pluginvarid=$pluginvarid&formhash=".FORMHASH."\">\n";
showtype($lang['plugins_edit_vars'].' - '.$pluginvar['title'], 'top');
showsetting('plugins_edit_vars_title', 'titlenew', $pluginvar['title'], 'text');
showsetting('plugins_edit_vars_description', 'descriptionnew', $pluginvar['description'], 'textarea');
showsetting('plugins_edit_vars_type', '', '', $typeselect);
showsetting('plugins_edit_vars_variable', 'variablenew', $pluginvar['variable'], 'text');
showsetting('plugins_edit_vars_extra', 'extranew', $pluginvar['extra'], 'textarea');
showtype('', 'bottom');
echo "<br><center><input type=\"submit\" name=\"varsubmit\" value=\"$lang[submit]\"></center></form>\n<br>";
} else {
$titlenew = cutstr(dhtmlspecialchars(trim($titlenew)), 25);
$descriptionnew = cutstr(dhtmlspecialchars(trim($descriptionnew)), 255);
$variablenew = trim($variablenew);
$extranew = dhtmlspecialchars(trim($extranew));
if(!$titlenew) {
cpmsg('plugins_edit_var_title_invalid');
} elseif($variablenew != $pluginvar['variable']) {
$query = $db->query("SELECT pluginvarid FROM {$tablepre}pluginvars WHERE variable='$variablenew'");
if($db->num_rows($query) || !$variablenew || strlen($variablenew) > 40 || !is_key($variablenew)) {
cpmsg('plugins_edit_var_invalid');
}
}
$db->query("UPDATE {$tablepre}pluginvars SET title='$titlenew', description='$descriptionnew', type='$typenew', variable='$variablenew', extra='$extranew' WHERE pluginid='$pluginid' AND pluginvarid='$pluginvarid'");
updatecache('plugins');
cpmsg('plugins_edit_var_succeed', "admincp.php?action=pluginsedit&pluginid=$pluginid");
}
}
//debug!!! REPLACE THESE TWO FUNCTIONS!
function is_key( $str ){
return ereg("^[a-zA-Z]+[a-zA-Z0-9_]+$", $str);
}
function safedir($dir){
$dir = str_replace( '.', '', $dir );
$dir = str_replace( ' ', '', $dir );
if (empty($dir)) return '';
$dir .= (substr( $dir, -1 ) !='/') ? '/' :'';
return (substr( $dir, 0, 1 )=='/') ? safedir(substr( $dir, 1 )) : $dir;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -