📄 misc.inc.php
字号:
} elseif($cron['weekday'] >= 0 && $cron['weekday'] < 7) {
$cron['time'] = lang('v_perweek').lang('misc_cron_week_day_'.$cron['weekday']);
} elseif($cron['hour'] >= 0 && $cron['hour'] < 24) {
$cron['time'] = lang('misc_cron_perday');
} else {
$cron['time'] = lang('misc_cron_perhour');
}
$cron['time'] .= $cron['hour'] >= 0 && $cron['hour'] < 24 ? sprintf('%02d', $cron[hour]).lang('misc_cron_hour') : '';
if(!in_array($cron['minute'], array(-1, ''))) {
foreach($cron['minute'] = explode("\t", $cron['minute']) as $k => $v) {
$cron['minute'][$k] = sprintf('%02d', $v);
}
$cron['minute'] = implode(',', $cron['minute']);
$cron['time'] .= $cron['minute'].lang('misc_cron_minute');
} else {
$cron['time'] .= '00'.lang('misc_cron_minute');
}
$cron['lastrun'] = $cron['lastrun'] ? gmdate("$dateformat<\b\\r />$timeformat", $cron['lastrun'] + $_DCACHE['settings']['timeoffset'] * 3600) : '<b>N/A</b>';
$cron['nextcolor'] = $cron['nextrun'] && $cron['nextrun'] + $_DCACHE['settings']['timeoffset'] * 3600 < $timestamp ? 'style="color: #ff0000"' : '';
$cron['nextrun'] = $cron['nextrun'] ? gmdate("$dateformat<\b\\r />$timeformat", $cron['nextrun'] + $_DCACHE['settings']['timeoffset'] * 3600) : '<b>N/A</b>';
showtablerow('', array('class="td25"', 'class="crons"', 'class="td25"', 'class="td25"', 'class="td23"', 'class="td23"', 'class="td23"', 'class="td25"'), array(
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$cron[cronid]\" ".($cron['type'] == 'system' ? 'disabled' : '').">",
"<input type=\"text\" class=\"txt\" name=\"namenew[$cron[cronid]]\" size=\"20\" value=\"$cron[name]\"><br /><b>$cron[filename]</b>",
"<input class=\"checkbox\" type=\"checkbox\" name=\"availablenew[$cron[cronid]]\" value=\"1\" ".($cron['available'] ? 'checked' : '')." $disabled>",
lang($cron['type'] == 'system' ? 'inbuilt' : 'costom'),
$cron[time],
$cron[lastrun],
$cron[nextrun],
"<a href=\"$BASESCRIPT?action=misc&operation=cron&edit=$cron[cronid]\" class=\"act\">$lang[edit]</a><br />".
($cron['available'] ? " <a href=\"$BASESCRIPT?action=misc&operation=cron&run=$cron[cronid]\" class=\"act\">$lang[misc_cron_run]</a>" : " <a href=\"###\" class=\"act\" disabled>$lang[misc_cron_run]</a>")
));
}
showtablerow('', array('','colspan="10"'), array(
lang('add_new'),
'<input type="text" class="txt" name="newname" value="" size="20" />'
));
showsubmit('cronssubmit', 'submit', 'del');
showtablefooter();
showformfooter();
} else {
if($ids = implodeids($delete)) {
$db->query("DELETE FROM {$tablepre}crons WHERE cronid IN ($ids) AND type='user'");
}
if(is_array($namenew)) {
foreach($namenew as $id => $name) {
$db->query("UPDATE {$tablepre}crons SET name='".dhtmlspecialchars($namenew[$id])."', available='".$availablenew[$id]."' ".($availablenew[$id] ? '' : ', nextrun=\'0\'')." WHERE cronid='$id'");
}
}
if($newname = trim($newname)) {
$db->query("INSERT INTO {$tablepre}crons (name, type, available, weekday, day, hour, minute, nextrun)
VALUES ('".dhtmlspecialchars($newname)."', 'user', '0', '-1', '-1', '-1', '', '$timestamp')");
}
$query = $db->query("SELECT cronid, filename FROM {$tablepre}crons");
while($cron = $db->fetch_array($query)) {
if(!file_exists(DISCUZ_ROOT.'./include/crons/'.$cron['filename'])) {
$db->query("UPDATE {$tablepre}crons SET available='0', nextrun='0' WHERE cronid='$cron[cronid]'");
}
}
//updatecache('crons');
updatecache('settings');
cpmsg('crons_succeed', $BASESCRIPT.'?action=misc&operation=cron', 'succeed');
}
} else {
$cronid = empty($run) ? $edit : $run;
$cron = $db->fetch_first("SELECT * FROM {$tablepre}crons WHERE cronid='$cronid'");
if(!$cron) {
cpmsg('undefined_action', '', 'error');
}
$cron['filename'] = str_replace(array('..', '/', '\\'), array('', '', ''), $cron['filename']);
$cronminute = str_replace("\t", ',', $cron['minute']);
$cron['minute'] = explode("\t", $cron['minute']);
if(!empty($edit)) {
if(!submitcheck('editsubmit')) {
shownav('tools', 'misc_cron');
showsubmenu($lang['misc_cron_edit'].' - '.$cron['name']);
showtips('misc_cron_edit_tips');
$weekdayselect = $dayselect = $hourselect = '';
for($i = 0; $i <= 6; $i++) {
$weekdayselect .= "<option value=\"$i\" ".($cron['weekday'] == $i ? 'selected' : '').">".$lang['misc_cron_week_day_'.$i]."</option>";
}
for($i = 1; $i <= 31; $i++) {
$dayselect .= "<option value=\"$i\" ".($cron['day'] == $i ? 'selected' : '').">$i $lang[misc_cron_day]</option>";
}
for($i = 0; $i <= 23; $i++) {
$hourselect .= "<option value=\"$i\" ".($cron['hour'] == $i ? 'selected' : '').">$i $lang[misc_cron_hour]</option>";
}
shownav('tools', 'misc_cron');
showformheader("misc&operation=cron&edit=$cronid");
showtableheader();
showsetting('misc_cron_edit_weekday', '', '', "<select name=\"weekdaynew\"><option value=\"-1\">*</option>$weekdayselect</select>");
showsetting('misc_cron_edit_day', '', '', "<select name=\"daynew\"><option value=\"-1\">*</option>$dayselect</select>");
showsetting('misc_cron_edit_hour', '', '', "<select name=\"hournew\"><option value=\"-1\">*</option>$hourselect</select>");
showsetting('misc_cron_edit_minute', 'minutenew', $cronminute, 'text');
showsetting('misc_cron_edit_filename', 'filenamenew', $cron['filename'], 'text');
showsubmit('editsubmit');
showtablefooter();
showformfooter();
} else {
$daynew = $weekdaynew != -1 ? -1 : $daynew;
if(strpos($minutenew, ',') !== FALSE) {
$minutenew = explode(',', $minutenew);
foreach($minutenew as $key => $val) {
$minutenew[$key] = $val = intval($val);
if($val < 0 || $var > 59) {
unset($minutenew[$key]);
}
}
$minutenew = array_slice(array_unique($minutenew), 0, 12);
$minutenew = implode("\t", $minutenew);
} else {
$minutenew = intval($minutenew);
$minutenew = $minutenew >= 0 && $minutenew < 60 ? $minutenew : '';
}
if(preg_match("/[\\\\\/\:\*\?\"\<\>\|]+/", $filenamenew)) {
cpmsg('crons_filename_illegal', '', 'error');
} elseif(!is_readable(DISCUZ_ROOT.($cronfile = "./include/crons/$filenamenew"))) {
cpmsg('crons_filename_invalid', '', 'error');
} elseif($weekdaynew == -1 && $daynew == -1 && $hournew == -1 && $minutenew === '') {
cpmsg('crons_time_invalid', '', 'error');
}
$db->query("UPDATE {$tablepre}crons SET weekday='$weekdaynew', day='$daynew', hour='$hournew', minute='$minutenew', filename='".trim($filenamenew)."' WHERE cronid='$cronid'");
updatecache('crons');
require_once DISCUZ_ROOT.'./include/cron.func.php';
cronnextrun($cron);
cpmsg('crons_succeed', $BASESCRIPT.'?action=misc&operation=cron', 'succeed');
}
} else {
if(!@include_once DISCUZ_ROOT.($cronfile = "./include/crons/$cron[filename]")) {
cpmsg('crons_run_invalid', '', 'error');
} else {
require_once DISCUZ_ROOT.'./include/cron.func.php';
cronnextrun($cron);
cpmsg('crons_run_succeed', $BASESCRIPT.'?action=misc&operation=cron', 'succeed');
}
}
}
} elseif($operation == 'tag') {
if(!$tagstatus) {
cpmsg('tags_not_open', "$BASESCRIPT?action=settings&operation=functions#subtitle_tags");
}
if(submitcheck('tagsubmit') && !empty($tag)) {
$tagdelete = $tagclose = $tagopen = array();
foreach($tag as $key => $value) {
if($value == -1) {
$tagdelete[] = $key;
} elseif($value == 1) {
$tagclose[] = $key;
} elseif($value == 0) {
$tagopen[] = $key;
}
}
if($tagdelete) {
$db->query("DELETE FROM {$tablepre}tags WHERE tagname IN (".implodeids($tagdelete).")", 'UNBUFFERED');
$db->query("DELETE FROM {$tablepre}threadtags WHERE tagname IN (".implodeids($tagdelete).")", 'UNBUFFERED');
}
if($tagclose) {
$db->query("UPDATE {$tablepre}tags SET closed=1 WHERE tagname IN (".implodeids($tagclose).")", 'UNBUFFERED');
}
if($tagopen) {
$db->query("UPDATE {$tablepre}tags SET closed=0 WHERE tagname IN (".implodeids($tagopen).")", 'UNBUFFERED');
}
if($tagdelete || $tagclose || $tagopen) {
updatecache(array('tags_index', 'tags_viewthread'));
}
cpmsg('tags_updated', $BASESCRIPT.'?action=misc&operation=tag&tagsearchsubmit=yes&tagname='.rawurlencode($tagname).'&threadnumlower='.intval($threadnumlower).'&threadnumhigher='.intval($threadnumhigher).'&status='.intval($status), 'succeed');
}
shownav('topic', 'nav_posting_tag');
showsubmenu('nav_posting_tag');
if(!submitcheck('tagsearchsubmit', 1)) {
$tagcount[0] = $db->result_first("SELECT count(*) FROM {$tablepre}tags");
$tagcount[1] = $db->result_first("SELECT count(*) FROM {$tablepre}tags WHERE closed=1");
$tagcount[2] = $tagcount[0] - $tagcount[1];
showformheader('misc&operation=tag');
showtableheader('misc_tag_search');
showsetting('misc_tag', 'tagname', '', 'text');
showsetting('misc_tag_threadnum_between', array('threadnumhigher', 'threadnumlower'), array(), 'range');
showsetting('misc_tag_status', array( 'status', array(
array(-1, lang('all')."($tagcount[0])"),
array(1, lang('misc_tag_status_1')."($tagcount[1])"),
array(0, lang('misc_tag_status_0')."($tagcount[2])")
), TRUE), -1, 'mradio');
showsubmit('tagsearchsubmit', 'misc_tag_search');
showtablefooter();
showformfooter();
} else {
$tagpp = 100;
$page = max(1, intval($page));
$threadnumlower = !empty($threadnumlower) ? intval($threadnumlower) : '';
$threadnumhigher = !empty($threadnumhigher) ? intval($threadnumhigher) : '';
$sqladd = $tagname ? "tagname LIKE '%".str_replace(array('%', '*', '_'), array('\%', '%', '\_'), $tagname)."%'" : '1';
$sqladd .= $threadnumlower ? " AND total<'".intval($threadnumlower)."'" : '';
$sqladd .= $threadnumhigher ? " AND total>'".intval($threadnumhigher)."'" : '';
$sqladd .= $status != -1 ? " AND closed='".intval($status)."'" : '';
$pagetmp = $page;
$num = $db->result_first("SELECT count(*) FROM {$tablepre}tags WHERE $sqladd");
$multipage = multi($num, $tagpp, $page, $BASESCRIPT.'?action=misc&operation=tag&tagsearchsubmit=yes&tagname='.rawurlencode($tagname).'&threadnumlower='.intval($threadnumlower).'&threadnumhigher='.intval($threadnumhigher).'&status='.intval($status));
do {
$query = $db->query("SELECT * FROM {$tablepre}tags WHERE $sqladd ORDER BY total DESC LIMIT ".(($pagetmp - 1) * $tagpp).", $tagpp");
$pagetmp--;
} while(!$db->num_rows($query) && $pagetmp);
showformheader('misc&operation=tag&page='.$page);
showhiddenfields(array(
'tagname' => $tagname,
'threadnumlower' => $threadnumlower,
'threadnumhigher' => $threadnumhigher,
'tagname' => $tagname,
'status' => $status,
));
showtableheader('nav_posting_tag', 'fixpadding');
showtablerow('', array('class="td21"', 'class="td25"'), array(
lang('misc_tag'),
lang('misc_tag_threadnum'),
''
));
while($tag = $db->fetch_array($query)) {
showtablerow('', array('class="td21"', 'class="td25"'), array(
'<a href="tag.php?name='.rawurlencode($tag['tagname']).'" target="_blank">'.$tag['tagname'].'</a>',
$tag['total'],
'<input name="tag['.$tag['tagname'].']" type="radio" class="radio" value="-1"> '.$lang['delete'].' <input name="tag['.$tag['tagname'].']" type="radio" class="radio" value="1"'.($tag['closed'] ? ' checked' : '').'> '.$lang['misc_tag_status_1'].' <input name="tag['.$tag['tagname'].']" type="radio" class="radio" value="0"'.(!$tag['closed'] ? ' checked' : '').'> '.$lang['misc_tag_status_0']
));
}
showsubmit('tagsubmit', 'submit', '', '<a href="#" onclick="checkAll(\'option\', $(\'cpform\'), \'-1\')">'.lang('misc_tag_all_delete').'</a> <a href="#" onclick="checkAll(\'option\', $(\'cpform\'), \'1\')">'.lang('misc_tag_all_close').'</a> <a href="#" onclick="checkAll(\'option\', $(\'cpform\'), \'0\')">'.lang('misc_tag_all_open').'</a>', $multipage);
showtablefooter();
showformfooter();
}
} elseif($operation == 'custommenu') {
if(!$do) {
if(!submitcheck('optionsubmit')) {
$page = max(1, intval($page));
$mpp = 10;
$startlimit = ($page - 1) * $mpp;
$num = $db->result_first("SELECT count(*) FROM {$tablepre}admincustom WHERE uid='$discuz_uid' AND sort='1'");
$multipage = $inajax ? multi($num, $mpp, $page, $BASESCRIPT.'?action=misc&operation=custommenu', 0, 3, TRUE, TRUE) :
multi($num, $mpp, $page, $BASESCRIPT.'?action=misc&operation=custommenu');
$optionlist = $ajaxoptionlist = '';
$query = $db->query("SELECT id, title, displayorder, url FROM {$tablepre}admincustom WHERE uid='$discuz_uid' AND sort='1' ORDER BY displayorder, dateline DESC, clicks DESC LIMIT $startlimit, $mpp");
while($custom = $db->fetch_array($query)) {
$optionlist .= showtablerow('', array('class="td25"', 'class="td28"', '', 'class="td26"'), array(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -