📄 tasks.inc.php
字号:
} 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 + -