⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plugins.inc.php

📁 Discuz_7.0.0 是一款社区程序源码!! 国内80 的站长使用此程序
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php

/*
	[Discuz!] (C)2001-2009 Comsenz Inc.
	This is NOT a freeware, use is subject to license terms

	$Id: plugins.inc.php 17025 2008-12-03 07:37:56Z monkey $
*/

if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
        exit('Access Denied');
}

cpheader();

if(!empty($identifier) && !empty($mod)) {
	$operation = 'config';
}

if(!$operation) {

	if(!submitcheck('submit')) {

		shownav('extended', 'nav_plugins');
		showsubmenu('nav_plugins', array(
			array('config', 'plugins&operation=config', 0),
			array('admin', 'plugins', 1),
			array('import', 'plugins&operation=import', 0)
		));
		showtips('plugins_config_tips');
		showformheader('plugins');
		showtableheader();
		showsubtitle(array('', 'available', 'plugins_name', 'plugins_identifier', 'plugins_directory', ''));

		$query = $db->query("SELECT * FROM {$tablepre}plugins");
		while($plugin = $db->fetch_array($query)) {
			showtablerow('', array('class="td25"', 'class="td25"', 'class="bold"', 'width="20%"', 'width="30%"', 'width="10%"'), array(
				"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$plugin[pluginid]\">",
				"<input class=\"checkbox\" type=\"checkbox\" name=\"availablenew[$plugin[pluginid]]\" value=\"1\" ".(!$plugin['name'] || !$plugin['identifier'] ? 'disabled' : ($plugin['available'] ? 'checked' : '')).">",
				$plugin['name'],
				$plugin['identifier'],
				$plugin['directory'],
				"<a href=\"$BASESCRIPT?action=plugins&operation=export&pluginid=$plugin[pluginid]\" class=\"act\">$lang[export]</a>&nbsp;<a href=\"$BASESCRIPT?action=plugins&operation=edit&pluginid=$plugin[pluginid]\" target=\"_blank\" class=\"act\">$lang[detail]</a>"
			));
		}

?>
<script type="text/JavaScript">
	var rowtypedata = [
		[
			[1,''],
			[1,''],
			[1,'<input type="text" class="txt" name="newname[]" size="12">'],
			[1,'<input type="text" class="txt" name="newidentifier[]" size="8">'],
			[1,''],
			[1,'']
		]
	];
</script>
<?

		echo '<tr><td></td><td colspan="5"><div><a href="###" onclick="addrow(this, 0)" class="addtr">'.$lang['plugins_add'].'</a></div></td></tr>';
		showsubmit('submit', 'submit', 'del');
		showtablefooter();
		showformfooter();

	} else {

		$db->query("UPDATE {$tablepre}plugins SET available='0'");
		if(is_array($availablenew)) {
			foreach($availablenew as $id => $available) {
				$db->query("UPDATE {$tablepre}plugins SET available='$available' WHERE pluginid='$id'");
			}
		}

		if($ids = implodeids($delete)) {
			$db->query("DELETE FROM {$tablepre}plugins WHERE pluginid IN ($ids)");
			$db->query("DELETE FROM {$tablepre}pluginvars WHERE pluginid IN ($ids)");
		}

		if(is_array($newname)) {

			foreach($newname as $key => $value) {
				$newname1 = trim($value);
				$newidentifier1 = trim($newidentifier[$key]);
				if($newname1 || $newidentifier1) {
					if(!$newname1) {
						cpmsg('plugins_edit_name_invalid', '', 'error');
					}
					$query = $db->query("SELECT pluginid FROM {$tablepre}plugins WHERE identifier='$newidentifier1' LIMIT 1");
					if($db->num_rows($query) || !$newidentifier1 || !ispluginkey($newidentifier1)) {
						cpmsg('plugins_edit_identifier_invalid', '', 'error');
					}
					$db->query("INSERT INTO {$tablepre}plugins (name, identifier, available) VALUES ('".dhtmlspecialchars(trim($newname1))."', '$newidentifier1', '0')");
				}
			}
		}

		updatecache('plugins');
		updatecache('settings');
		cpmsg('plugins_edit_succeed', $BASESCRIPT.'?action=plugins', 'succeed');

	}

} elseif($operation == 'export' && $pluginid) {

	$plugin = $db->fetch_first("SELECT * FROM {$tablepre}plugins WHERE pluginid='$pluginid'");
	if(!$plugin) {
		cpheader();
		cpmsg('undefined_action', '', 'error');
	}

	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='$pluginid'");
	while($hook = $db->fetch_array($query)) {
		unset($hook['pluginhookid'], $hook['pluginid']);
		$pluginarray['hooks'][] = $hook;
	}

	$query = $db->query("SELECT * FROM {$tablepre}pluginvars WHERE pluginid='$pluginid'");
	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();
	dheader('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
	dheader('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
	dheader('Cache-Control: no-cache, must-revalidate');
	dheader('Pragma: no-cache');
	dheader('Content-Encoding: none');
	dheader('Content-Length: '.strlen($plugin_export));
	dheader('Content-Disposition: attachment; filename=discuz_plugin_'.$plugin['identifier'].'.txt');
	dheader('Content-Type: '.(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'application/octetstream' : 'application/octet-stream'));
	echo $plugin_export;
	dexit();

} elseif($operation == 'import') {

	if(!submitcheck('importsubmit')) {

		shownav('extended', 'nav_plugins');
		showsubmenu('nav_plugins', array(
			array('config', 'plugins&operation=config', 0),
			array('admin', 'plugins', 0),
			array('import', 'plugins&operation=import', 1)
		));
		showformheader('plugins&operation=import', 'enctype');
		showtableheader('plugins_import', 'fixpadding');
		showimportdata();
		showtablerow('', '', '<input type="checkbox" name="ignoreversion" value="1" class="checkbox" /> '.lang('plugins_import_ignore_version'));
		showsubmit('importsubmit');
		showtablefooter();
		showformfooter();

	} else {

		$pluginarray = getimportdata();

		if(empty($ignoreversion) && strip_tags($pluginarray['version']) != strip_tags($version)) {
			cpmsg('plugins_import_version_invalid', '', 'error');
		}

		$query = $db->query("SELECT pluginid FROM {$tablepre}plugins WHERE identifier='{$pluginarray[plugin][identifier]}' LIMIT 1");
		if($db->num_rows($query)) {
			cpmsg('plugins_import_identifier_duplicated', '', 'error');
		}

		$sql1 = $sql2 = $comma = '';
		foreach($pluginarray['plugin'] as $key => $val) {
			if($key == 'directory') {
				//compatible for old versions
				$val .= (!empty($val) && substr($val, -1) != '/') ? '/' : '';
			}
			$sql1 .= $comma.$key;
			$sql2 .= $comma.'\''.$val.'\'';
			$comma = ',';
		}
		$db->query("INSERT INTO {$tablepre}plugins ($sql1) VALUES ($sql2)");
		$pluginid = $db->insert_id();

		foreach(array('hooks', 'vars') as $pluginconfig) {
			if(is_array($pluginarray[$pluginconfig])) {
				foreach($pluginarray[$pluginconfig] as $config) {
					$sql1 = 'pluginid';
					$sql2 = '\''.$pluginid.'\'';
					foreach($config as $key => $val) {
						$sql1 .= ','.$key;
						$sql2 .= ',\''.$val.'\'';
					}
					$db->query("INSERT INTO {$tablepre}plugin$pluginconfig ($sql1) VALUES ($sql2)");
				}
			}
		}

		updatecache('plugins');
		updatecache('settings');
		cpmsg('plugins_import_succeed', $BASESCRIPT.'?action=plugins', 'succeed');

	}

} elseif($operation == 'config') {

	if(!$pluginid && !$identifier) {

		shownav('extended', 'nav_plugins');
		showsubmenu('nav_plugins', array(
			array('config', 'plugins&operation=config', 1),
			array('admin', 'plugins', 0),
			array('import', 'plugins&operation=import', 0)
		));
		$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");

		if(!$db->num_rows($query)) {
			dheader("location: $BASESCRIPT?action=plugins");
		}
		while($plugin = $db->fetch_array($query)) {
			if(!$plugin['adminid'] || $plugin['adminid'] >= $adminid) {
				$plugin['edit'] = $plugin['pluginvarid'] ? "<a href=\"$BASESCRIPT?action=plugins&operation=config&pluginid=$plugin[pluginid]\" class=\"act\">$lang[plugins_config]</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=\"$BASESCRIPT?action=plugins&operation=config&identifier=$plugin[identifier]&mod=$module[name]\" class=\"act\">$module[menu]</a> ";
						}
					}
				}
			} else {
				$plugin['edit'] = lang('detail');
			}
			echo '<div class="colorbox"><h4>'.$plugin['name'].(!$plugin['available'] ? ' ('.$lang['plugins_unavailable'].')' : '').'</h4>'.nl2br($plugin['description']).'<br><div style="width:95%" style="clear:both"><div style="float:right">'.$plugin['copyright'].'</div>'.$plugin['edit'].'</div></div><br /><br />';
		}

	} else {

		$plugin = $db->fetch_first("SELECT * FROM {$tablepre}plugins WHERE ".($identifier ? "identifier='$identifier'" : "pluginid='$pluginid'"));
		if(!$plugin) {
			cpmsg('undefined_action', '', 'error');
		} else {
			$pluginid = $plugin['pluginid'];
		}

		$pluginvars = array();
		$query = $db->query("SELECT * FROM {$tablepre}pluginvars WHERE pluginid='$pluginid' 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', '', 'error');
			}

			if(!submitcheck('editsubmit')) {
				shownav('extended', 'nav_plugins');
				showsubmenu('nav_plugins', array(
					array('config', 'plugins&operation=config', 0),
					array('admin', 'plugins', 0),
					array('import', 'plugins&operation=import', 0)
				));
				showformheader("plugins&operation=config&pluginid=$pluginid");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -