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

📄 tasks.inc.php

📁 Discuz_7.0.0 是一款社区程序源码!! 国内80 的站长使用此程序
💻 PHP
📖 第 1 页 / 共 3 页
字号:
					} else {
						showsetting($taskvar['name'], $taskvar['variable'], $taskvar['value'], $taskvar['description']);
					}
				}
			}

		}

		showsubmit('editsubmit', 'submit');
		showtablefooter();
		showformfooter();

	} else {

		$applyperm = $grouplimit == 'special' && is_array($applyperm) ? implode("\t", $applyperm) : $grouplimit;
		$starttime = dmktime($starttime);
		$endtime = dmktime($endtime);
		$prize = ${'prize_'.$reward};
		$bonus = ${'bonus_'.$reward};

		if(!$name || !$description) {
			cpmsg('tasks_basic_invalid', '', 'error');
		} elseif(($starttime != $task['starttime'] || $endtime != $task['endtime']) && (($endtime && $endtime <= $timestamp) || ($starttime && $endtime && $endtime <= $starttime))) {
			cpmsg('tasks_time_invalid', '', 'error');
		} elseif($reward && (!$prize || ($reward == 'credit' && !$bonus))) {
			cpmsg('tasks_reward_invalid', '', 'error');
		}

		if($task['available'] == '2' && ($starttime > $timestamp || ($endtime && $endtime <= $timestamp))) {
			$db->query("UPDATE {$tablepre}tasks SET available='1' WHERE taskid='$id'", 'UNBUFFERED');
		}
		if($task['available'] == '1' && (!$starttime || $starttime <= $timestamp) && (!$endtime || $endtime > $timestamp)) {
			$db->query("UPDATE {$tablepre}tasks SET available='2' WHERE taskid='$id'", 'UNBUFFERED');
		}

		if(in_array($task['scriptname'], $sys_scripts)) {
			if(!$threadid && $author) {
				$authorid = $db->result_first("SELECT uid FROM {$tablepre}members WHERE username='$author'");
			}
			$itemarray = ${$task['scriptname'].'vars'};
		} else {
			$itemarray = array();
			$query = $db->query("SELECT variable FROM {$tablepre}taskvars WHERE taskid='$id' AND variable IS NOT NULL");
			while($taskvar = $db->fetch_array($query)) {
				$itemarray[] = $taskvar['variable'];
			}
		}

		$db->query("UPDATE {$tablepre}tasks SET relatedtaskid='$relatedtaskid', name='$name', description='$description', icon='$icon', tasklimits='$tasklimits', applyperm='$applyperm', starttime='$starttime', endtime='$endtime', period='$period', reward='$reward', prize='$prize', bonus='$bonus' WHERE taskid='$id'");

		foreach($itemarray as $item) {
			if(in_array($item, array('num', 'time', 'threadid'))) {
				$$item = intval($$item);
			}
			$db->query("UPDATE {$tablepre}taskvars SET value='".$$item."' WHERE taskid='$id' AND variable='$item'");
		}

		cpmsg('tasks_succeed', "$BASESCRIPT?action=tasks", 'succeed');

	}

} elseif($operation == 'delete' && $id) {

	if(!$confirmed) {
		cpmsg('tasks_del_confirm', "$BASESCRIPT?action=tasks&operation=delete&id=$id", 'form');
	}

	$task = $db->result_first("SELECT count(*) FROM {$tablepre}tasks WHERE taskid='$id'");
	if(!$task) {
		cpmsg('undefined_action', '', 'error');
	}

	$db->query("DELETE FROM {$tablepre}tasks WHERE taskid='$id'");
	$db->query("DELETE FROM {$tablepre}taskvars WHERE taskid='$id'");
	$db->query("DELETE FROM {$tablepre}mytasks WHERE taskid='$id'");

	if($id == $newbietask) {
		$db->query("UPDATE {$tablepre}settings SET value='' WHERE variable='newbietask'");
		updatecache('settings');
	}

	cpmsg('tasks_del', $BASESCRIPT.'?action=tasks', 'succeed');

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

	include language('tasks');

	shownav('extended', 'nav_tasks');
	showsubmenu('nav_tasks', array(
		array('admin', 'tasks', 0),
		array(array('menu' => 'add', 'submenu' => $submenus), '', 0),
		array('nav_task_type', 'tasks&operation=type', 1)
	));
	showtips('tasks_tips_add_type');

	$taskdir = DISCUZ_ROOT.'./include/tasks';
	$tasksdir = dir($taskdir);
	$scripts = array();
	while($entry = $tasksdir->read()) {
		$script = substr($entry, 0, -8);
		if(!in_array($entry, array('.', '..')) && !in_array($script, $sys_scripts) && preg_match("/^[\w\.]+$/", $entry) && substr($entry, -8)== '.inc.php' && strlen($entry) < 30 && is_file($taskdir.'/'.$entry) && is_file($taskdir.'/'.$script.'.cfg.php')) {			
			$scripts[] = array('filename' => $script, 'filemtime' => @filemtime($taskdir.'/'.$entry));
		}
	}
	uasort($scripts, 'filemtimesort');

	showtableheader('', 'fixpadding');
	showsubtitle(array('name', 'tasks_script', 'tasks_version', 'copyright', ''));

	foreach($scripts as $script) {
		require_once $taskdir.'/'.$script['filename'].'.cfg.php';
		showtablerow('', array('id="custom_task_'.$script['filename'].'" onmouseover="showMenu(this.id)"'), array(
			$task_name.($script['filemtime'] > $timestamp - 86400 ? ' <font color="red">New!</font>' : '').'<div class="dropmenu" id="custom_task_'.$script['filename'].'_menu" style="display: none; white-space: normal; width: 30%; padding: 10px;">'.$task_description.'</div>',
			$script['filename'].'.inc.php',
			$task_version,
			$task_copyright,
			in_array($script['filename'], $custom_scripts) ? "<a href=\"$BASESCRIPT?action=tasks&operation=upgrade&script=$script[filename]\" class=\"act\">$lang[tasks_upgrade]</a> <a href=\"$BASESCRIPT?action=tasks&operation=uninstall&script=$script[filename]\" class=\"act\">$lang[tasks_uninstall]</a><br />" : "<a href=\"$BASESCRIPT?action=tasks&operation=install&script=$script[filename]\" class=\"act\">$lang[tasks_install]</a>"
		));
	}
	foreach($sys_types as $script => $task) {
		showtablerow('', '', array(
			$task['name'],
			$script.'.inc.php',
			$task['version'],
			'<a href="http://www.comsenz.com" target="_blank">Comsenz Inc.</a>',
			''
		));
	}

	showtablefooter();

} elseif($operation == 'install' && $script) {

	include language('tasks');

	if((!@include DISCUZ_ROOT.'./include/tasks/'.$script.'.cfg.php') || (!@include DISCUZ_ROOT.'./include/tasks/'.$script.'.inc.php')) {
		cpmsg('tasks_noscript_or_nocfg', '', 'error');
	} elseif(!(function_exists('task_install') && function_exists('task_uninstall') && function_exists('task_upgrade') && function_exists('task_condition') && function_exists('task_preprocess') && function_exists('task_csc') && function_exists('task_sufprocess'))) {
		cpmsg('tasks_code_invalid', '', 'error');
	} elseif($db->result_first("SELECT COUNT(*) FROM {$tablepre}tasks WHERE scriptname='$script'")) {
		cpmsg('tasks_install_duplicate', '', 'error');
	}

	task_install();
	$custom_types[$script] = array('name' => $task_name, 'version' => $task_version);
	$db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('tasktypes', '".addslashes(serialize($custom_types))."')");

	cpmsg('tasks_installed', $BASESCRIPT.'?action=tasks', 'succeed');

} elseif($operation == 'uninstall' && $script) {

	if(!$confirmed) {
		cpmsg('tasks_uninstall_confirm', "$BASESCRIPT?action=tasks&operation=uninstall&script=$script", 'form');
	}

	if(in_array($script, $sys_scripts)) {
		cpmsg('undefined_action', '', 'error');
	} elseif(!@include DISCUZ_ROOT.'./include/tasks/'.$script.'.inc.php') {
		cpmsg('tasks_noscript', '', 'error');
	}

	$ids = $comma = '';
	$query = $db->query("SELECT taskid FROM {$tablepre}tasks WHERE scriptname='$script'");
	while($task = $db->fetch_array($query)) {
		$ids = $comma.$task['taskid'];
		$comma = ',';
	}
	if($ids) {
		$db->query("DELETE FROM {$tablepre}tasks WHERE taskid IN ($ids)");
		$db->query("DELETE FROM {$tablepre}taskvars WHERE taskid IN ($ids)");
		$db->query("DELETE FROM {$tablepre}mytasks WHERE taskid IN ($ids)");
	}

	task_uninstall();
	unset($custom_types[$script]);
	$db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('tasktypes', '".addslashes(serialize($custom_types))."')");

	cpmsg('tasks_uninstalled', $BASESCRIPT.'?action=tasks', 'succeed');

} elseif($operation == 'upgrade' && $script) {

	include language('tasks');

	if(in_array($script, $sys_scripts)) {
		cpmsg('undefined_action', '', 'error');
	} elseif((!@include DISCUZ_ROOT.'./include/tasks/'.$script.'.cfg.php') || (!@include DISCUZ_ROOT.'./include/tasks/'.$script.'.inc.php')) {
		cpmsg('tasks_noscript_or_nocfg', '', 'error');
	} elseif($custom_types[$script]['version'] >= $task_version) {
		cpmsg('tasks_newest', '', 'error');
	}

	task_upgrade();
	$db->query("UPDATE {$tablepre}tasks SET name='$task_name', description='$task_description', icon='$task_icon', tasklimits='$task_tasklimits', starttime='$task_starttime', endtime='$task_endtime', period='$task_period', reward='$task_reward', prize='$task_prize', bonus='$task_bonus', version='$task_version' WHERE scriptname='$script'");
	$custom_types[$script] = array('name' => $task_name, 'version' => $task_version);
	$db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('tasktypes', '".addslashes(serialize($custom_types))."')");

	cpmsg('tasks_updated', $BASESCRIPT.'?action=tasks', 'succeed');

}

function fetcharray($id, $name, $table, $conditions = '1') {
	global $db, $tablepre;

	$array = array(array(0, lang('nolimit')));
	$query = $db->query("SELECT $id, $name FROM $tablepre$table".($conditions ? " WHERE $conditions" : ''));
	while($result = $db->fetch_array($query)) {
		$array[] = array($result[$id], $result[$name]);
	}
	return $array;
}

function runquery($sql) {
	global $dbcharset, $tablepre, $db;

	$sql = str_replace("\r", "\n", str_replace(' cdb_', ' '.$tablepre, $sql));
	$ret = array();
	$num = 0;
	foreach(explode(";\n", trim($sql)) as $query) {
		$queries = explode("\n", trim($query));
		foreach($queries as $query) {
			$ret[$num] .= $query[0] == '#' || $query[0].$query[1] == '--' ? '' : $query;
		}
		$num++;
	}
	unset($sql);

	foreach($ret as $query) {
		$query = trim($query);
		if($query) {

			if(substr($query, 0, 12) == 'CREATE TABLE') {
				$name = preg_replace("/CREATE TABLE ([a-z0-9_]+) .*/is", "\\1", $query);
				$db->query(createtable($query, $dbcharset));

			} else {
				$db->query($query);
			}

		}
	}
}

function createtable($sql, $dbcharset) {
	$type = strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU", "\\2", $sql));
	$type = in_array($type, array('MYISAM', 'HEAP')) ? $type : 'MYISAM';
	return preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU", "\\1", $sql).
	(mysql_get_server_info() > '4.1' ? " ENGINE=$type DEFAULT CHARSET=$dbcharset" : " TYPE=$type");
}

function dmktime($date) {
	if(strpos($date, '-')) {
		$time = explode('-', $date);
		return mktime(0, 0, 0, $time[1], $time[2], $time[0]);
	}
	return 0;
}

?>

⌨️ 快捷键说明

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