📄 task.php
字号:
require_once DISCUZ_ROOT.'./include/tasks/'.$task['scriptname'].'.inc.php';
$result = task_csc($task);
if($result === TRUE) {
$task['csc'] = '100';
$db->query("UPDATE {$tablepre}mytasks SET csc='100' WHERE uid='$discuz_uid' AND taskid='$id'");
} elseif($result === FALSE) {
$db->query("UPDATE {$tablepre}mytasks SET status='-1' WHERE uid='$discuz_uid' AND taskid='$id'", 'UNBUFFERED');
dheader("Location: task.php?action=view&id=$id");
} else {
$task['csc'] = floatval($result['csc']);
$db->query("UPDATE {$tablepre}mytasks SET csc='$task[csc]\t$timestamp' WHERE uid='$discuz_uid' AND taskid='$id'", 'UNBUFFERED');
}
}
} elseif($task['status'] == '1') {
if($task['period']) {
$allowapply = $timestamp - $task['dateline'] >= $task['period'] * 3600 ? 2 : -6;
$task['t'] = tasktimeformat($task['period'] * 3600 - $timestamp + $task['dateline']);
} else {
$allowapply = -5;
}
} else {
$allowapply = 1;
}
if($allowapply > 0) {
if($task['applyperm'] && $task['applyperm'] != 'all' && !(($task['applyperm'] == 'member' && $adminid == '0') || ($task['applyperm'] == 'admin' && $adminid > '0') || forumperm($task['applyperm']))) {
$allowapply = -2;
} elseif($task['tasklimits'] && $task['achievers'] >= $task['tasklimits']) {
$allowapply = -3;
}
}
$task['dateline'] = dgmdate("$dateformat $timeformat", $task['dateline'] + $timeoffset * 3600);
} elseif($action == 'apply' && $id) {
if(!$discuz_uid) {
showmessage('not_loggedin', NULL, 'NOPERM');
}
if(!$task = $db->fetch_first("SELECT * FROM {$tablepre}tasks WHERE taskid='$id' AND available='2'")) {
showmessage('task_nonexistence', NULL, 'HALTED');
} elseif(($task['starttime'] && $task['starttime'] > $timestamp) || ($task['endtime'] && $task['endtime'] <= $timestamp)) {
showmessage('task_offline', NULL, 'HALTED');
} elseif($task['tasklimits'] && $task['achievers'] >= $task['tasklimits']) {
showmessage('task_full', NULL, 'HALTED');
}
if($task['relatedtaskid'] && !$db->result_first("SELECT COUNT(*) FROM {$tablepre}mytasks WHERE uid='$discuz_uid' AND taskid='$task[relatedtaskid]' AND status='1'")) {
showmessage('task_relatedtask', 'task.php?action=view&id='.$task['relatedtaskid']);
} elseif($task['applyperm'] && $task['applyperm'] != 'all' && !(($task['applyperm'] == 'member' && $adminid == '0') || ($task['applyperm'] == 'admin' && $adminid > '0') || forumperm($task['applyperm']))) {
showmessage('task_grouplimit', 'task.php?item=new');
} else {
if(!$task['period'] && $db->result_first("SELECT COUNT(*) FROM {$tablepre}mytasks WHERE uid='$discuz_uid' AND taskid='$id'")) {
showmessage('task_duplicate', 'task.php?item=new');
} elseif($task['period'] && $db->result_first("SELECT COUNT(*) FROM {$tablepre}mytasks WHERE uid='$discuz_uid' AND taskid='$id' AND dateline>=$timestamp-$task[period]*3600")) {
showmessage('task_nextperiod', 'task.php?item=new');
}
}
require_once DISCUZ_ROOT.'./include/task.func.php';
task_apply($task);
showmessage('task_applied', "task.php?action=view&id=$id");
} elseif($action == 'draw' && $id) {
if(!$discuz_uid) {
showmessage('not_loggedin', NULL, 'NOPERM');
}
if(!$task = $db->fetch_first("SELECT t.*, mt.dateline AS applytime, mt.status FROM {$tablepre}tasks t, {$tablepre}mytasks mt WHERE mt.uid='$discuz_uid' AND mt.taskid=t.taskid AND t.taskid='$id' AND t.available='2'")) {
showmessage('task_nonexistence', NULL, 'HALTED');
} elseif($task['status'] != 0) {
showmessage('undefined_action', NULL, 'HALTED');
} elseif($task['tasklimits'] && $task['achievers'] >= $task['tasklimits']) {
showmessage('task_up_to_limit', 'task.php');
}
require_once DISCUZ_ROOT.'./include/tasks/'.$task['scriptname'].'.inc.php';
$result = task_csc($task);
if($result === TRUE) {
if($task['reward']) {
require_once DISCUZ_ROOT.'./include/task.func.php';
$rewards = task_reward($task);
if($task['reward'] == 'magic') {
$magicname = $db->result_first("SELECT name FROM {$tablepre}magics WHERE magicid='$task[prize]'");
} elseif($task['reward'] == 'medal') {
$medalname = $db->result_first("SELECT name FROM {$tablepre}medals WHERE medalid='$task[prize]'");
} elseif($task['reward'] == 'group') {
$grouptitle = $db->result_first("SELECT grouptitle FROM {$tablepre}usergroups WHERE groupid='$task[prize]'");
}
sendpm($discuz_uid, 'task_reward_subject', 'task_reward_'.$task['reward'].'_message', 0);
}
task_sufprocess();
$db->query("UPDATE {$tablepre}mytasks SET status='1', csc='100', dateline='$timestamp' WHERE uid='$discuz_uid' AND taskid='$id'");
$db->query("UPDATE {$tablepre}tasks SET achievers=achievers+1 WHERE taskid='$id'", 'UNBUFFERED');
if(!$db->result_first("SELECT COUNT(*) FROM {$tablepre}mytasks WHERE uid='$discuz_uid' AND status='0'")) {
$db->query("UPDATE {$tablepre}members SET prompt=prompt^2 WHERE uid='$discuz_uid' AND prompt=prompt|2", 'UNBUFFERED');
}
if($inajax) {
taskmessage('100', $task['reward'] ? 'task_reward_'.$task['reward'] : 'task_completed');
} else {
showmessage('task_completed', 'task.php?item=done');
}
} elseif($result === FALSE) {
$db->query("UPDATE {$tablepre}mytasks SET status='-1' WHERE uid='$discuz_uid' AND taskid='$id'", 'UNBUFFERED');
$inajax ? taskmessage('-1', 'task_failed') : showmessage('task_failed', 'task.php?item=failed');
} else {
$result['t'] = tasktimeformat($result['remaintime']);
if($result['csc']) {
$db->query("UPDATE {$tablepre}mytasks SET csc='$result[csc]\t$timestamp' WHERE uid='$discuz_uid' AND taskid='$id'", 'UNBUFFERED');
$msg = $result['t'] ? 'task_doing_rt' : 'task_doing';
$inajax ? taskmessage($result['csc'], $msg) : showmessage($msg, "task.php?action=view&id=$id");
} else {
$msg = $result['t'] ? 'task_waiting_rt' : 'task_waiting';
$inajax ? taskmessage('0', $msg) : showmessage($msg, "task.php?action=view&id=$id");
}
}
} elseif($action == 'giveup' && $id && !empty($formhash)) {
if($formhash != FORMHASH) {
showmessage('undefined_action', NULL, 'HALTED');
} elseif(!$task = $db->fetch_first("SELECT t.taskid, mt.status FROM {$tablepre}tasks t LEFT JOIN {$tablepre}mytasks mt ON mt.taskid=t.taskid AND mt.uid='$discuz_uid' WHERE t.taskid='$id' AND t.available='2'")) {
showmessage('task_nonexistence', NULL, 'HALTED');
} elseif($task['status'] != '0') {
showmessage('undefined_action');
}
$db->query("DELETE FROM {$tablepre}mytasks WHERE uid='$discuz_uid' AND taskid='$id'", 'UNBUFFERED');
$db->query("UPDATE {$tablepre}tasks SET applicants=applicants-1 WHERE taskid='$id'", 'UNBUFFERED');
if(!$db->result_first("SELECT COUNT(*) FROM {$tablepre}mytasks WHERE uid='$discuz_uid' AND status='0'")) {
$db->query("UPDATE {$tablepre}members SET prompt=prompt^2 WHERE uid='$discuz_uid' AND prompt=prompt|2", 'UNBUFFERED');
}
showmessage('task_giveup', "task.php?item=view&id=$id");
} elseif($action == 'parter' && $id) {
$query = $db->query("SELECT * FROM {$tablepre}mytasks WHERE taskid='$id' ORDER BY dateline DESC LIMIT 0, 8");
while($parter = $db->fetch_array($query)) {
$parter['avatar'] = discuz_uc_avatar($parter['uid'], 'small');
$csc = explode("\t", $parter['csc']);
$parter['csc'] = floatval($csc[0]);
$parterlist[] = $parter;
}
include template('task_parter');
dexit();
} else {
showmessage('undefined_action', NULL, 'HALTED');
}
include template('task');
function taskmessage($csc, $msg) {
extract($GLOBALS, EXTR_SKIP);
include_once language('messages');
include template('header_ajax');
eval("\$msg = \"$language[$msg]\";");
echo "$csc|$msg";
include template('footer_ajax');
exit;
}
function tasktimeformat($t) {
global $dlang;
if($t) {
$h = floor($t / 3600);
$m = floor(($t - $h * 3600) / 60);
$s = floor($t - $h * 3600 - $m * 60);
return ($h ? "$h{$dlang[date][4]}" : '').($m ? "$m{$dlang[date][6]}" : '').($h || !$s ? '' : "$s{$dlang[date][7]}");
}
return '';
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -