1587 lines
67 KiB
PHP
1587 lines
67 KiB
PHP
<?php
|
|
|
|
/**
|
|
* [Discuz!] (C)2001-2099 Comsenz Inc.
|
|
* This is NOT a freeware, use is subject to license terms
|
|
*
|
|
* $Id: admincp_misc.php 34303 2014-01-15 04:32:19Z hypowang $
|
|
*/
|
|
|
|
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
|
|
exit('Access Denied');
|
|
}
|
|
|
|
cpheader();
|
|
|
|
if($operation == 'onlinelist') {
|
|
|
|
if(!submitcheck('onlinesubmit')) {
|
|
|
|
shownav('style', 'misc_onlinelist');
|
|
showsubmenu('nav_misc_onlinelist');
|
|
showtips('misc_onlinelist_tips');
|
|
showformheader('misc&operation=onlinelist&');
|
|
showtableheader('', 'fixpadding');
|
|
showsubtitle(array('', 'display_order', 'usergroup', 'usergroups_title', 'misc_onlinelist_image'));
|
|
|
|
$listarray = array();
|
|
foreach(C::t('forum_onlinelist')->range() as $list) {
|
|
$list['title'] = dhtmlspecialchars($list['title']);
|
|
$listarray[$list['groupid']] = $list;
|
|
}
|
|
|
|
$onlinelist = '';
|
|
$query = array_merge(array(0 => array('groupid' => 0, 'grouptitle' => 'Member')), C::t('common_usergroup')->range());
|
|
foreach($query as $group) {
|
|
$id = $group['groupid'];
|
|
showtablerow('', array('class="td25"', 'class="td23 td28"', 'class="td24"', 'class="td24"', 'class="td21 td26"'), array(
|
|
$listarray[$id]['url'] ? " <img src=\"static/image/common/{$listarray[$id]['url']}\">" : '',
|
|
'<input type="text" class="txt" name="displayordernew['.$id.']" value="'.$listarray[$id]['displayorder'].'" size="3" />',
|
|
$group['groupid'] <= 8 ? cplang('usergroups_system_'.$id) : $group['grouptitle'],
|
|
'<input type="text" class="txt" name="titlenew['.$id.']" value="'.($listarray[$id]['title'] ? $listarray[$id]['title'] : $group['grouptitle']).'" size="15" />',
|
|
'<input type="text" class="txt" name="urlnew['.$id.']" value="'.$listarray[$id]['url'].'" size="20" />'
|
|
));
|
|
|
|
}
|
|
|
|
showsubmit('onlinesubmit', 'submit', 'td');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
if(is_array($_GET['urlnew'])) {
|
|
C::t('forum_onlinelist')->delete_all();
|
|
foreach($_GET['urlnew'] as $id => $url) {
|
|
$url = trim($url);
|
|
if($id == 0 || $url) {
|
|
$data = array(
|
|
'groupid' => $id,
|
|
'displayorder' => $_GET['displayordernew'][$id],
|
|
'title' => $_GET['titlenew'][$id],
|
|
'url' => $url,
|
|
);
|
|
C::t('forum_onlinelist')->insert($data);
|
|
}
|
|
}
|
|
}
|
|
|
|
updatecache(array('onlinelist', 'groupicon'));
|
|
cpmsg('onlinelist_succeed', 'action=misc&operation=onlinelist', 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($operation == 'link') {
|
|
|
|
if(!submitcheck('linksubmit')) {
|
|
|
|
?>
|
|
<script type="text/JavaScript">
|
|
var rowtypedata = [
|
|
[
|
|
[1,'', 'td25'],
|
|
[1,'<input type="text" class="txt" name="newdisplayorder[]" size="3">', 'td28'],
|
|
[1,'<input type="text" class="txt" name="newname[]" size="15">'],
|
|
[1,'<input type="text" class="txt" name="newurl[]" size="20">'],
|
|
[1,'<input type="text" class="txt" name="newdescription[]" size="30">', 'td26'],
|
|
[1,'<input type="text" class="txt" name="newlogo[]" size="20">'],
|
|
[1,'<input type="checkbox" name="newportal[{n}]" value="1" class="checkbox">'],
|
|
[1,'<input type="checkbox" name="newforum[{n}]" value="1" class="checkbox">'],
|
|
[1,'<input type="checkbox" name="newgroup[{n}]" value="1" class="checkbox">'],
|
|
[1,'<input type="checkbox" name="newhome[{n}]" value="1" class="checkbox">']
|
|
]
|
|
]
|
|
</script>
|
|
<?php
|
|
|
|
shownav('extended', 'misc_link');
|
|
showsubmenu('nav_misc_links');
|
|
showtips('misc_link_tips');
|
|
showformheader('misc&operation=link');
|
|
showtableheader();
|
|
showsubtitle(array('', 'display_order', 'misc_link_edit_name', 'misc_link_edit_url', 'misc_link_edit_description', 'misc_link_edit_logo', 'misc_link_group1', 'misc_link_group2', 'misc_link_group3','misc_link_group4'));
|
|
showsubtitle(array('', '', '', '', '', '', '<input class="checkbox" type="checkbox" name="portalall" onclick="checkAll(\'prefix\', this.form, \'portal\', \'portalall\')">',
|
|
'<input class="checkbox" type="checkbox" name="forumall" onclick="checkAll(\'prefix\', this.form, \'forum\', \'forumall\')">',
|
|
'<input class="checkbox" type="checkbox" name="groupall" onclick="checkAll(\'prefix\', this.form, \'group\', \'groupall\')">',
|
|
'<input class="checkbox" type="checkbox" name="homeall" onclick="checkAll(\'prefix\', this.form, \'home\', \'homeall\')">'));
|
|
|
|
$query = C::t('common_friendlink')->fetch_all_by_displayorder();
|
|
foreach ($query as $forumlink) {
|
|
$type = sprintf('%04b', $forumlink['type']);
|
|
showtablerow('', array('class="td25"', 'class="td28"', '', '', 'class="td26"'), array(
|
|
'<input type="checkbox" class="checkbox" name="delete[]" value="'.$forumlink['id'].'" />',
|
|
'<input type="text" class="txt" name="displayorder['.$forumlink[id].']" value="'.$forumlink['displayorder'].'" size="3" />',
|
|
'<input type="text" class="txt" name="name['.$forumlink[id].']" value="'.$forumlink['name'].'" size="15" />',
|
|
'<input type="text" class="txt" name="url['.$forumlink[id].']" value="'.$forumlink['url'].'" size="20" />',
|
|
'<input type="text" class="txt" name="description['.$forumlink[id].']" value="'.$forumlink['description'].'" size="30" />',
|
|
'<input type="text" class="txt" name="logo['.$forumlink[id].']" value="'.$forumlink['logo'].'" size="20" />',
|
|
'<input class="checkbox" type="checkbox" value="1" name="portal['.$forumlink[id].']" '.($type[0] ? "checked" : '').'>',
|
|
'<input class="checkbox" type="checkbox" value="1" name="forum['.$forumlink[id].']" '.($type[1] ? "checked" : '').'>',
|
|
'<input class="checkbox" type="checkbox" value="1" name="group['.$forumlink[id].']" '.($type[2] ? "checked" : '').'>',
|
|
'<input class="checkbox" type="checkbox" value="1" name="home['.$forumlink[id].']" '.($type[3] ? "checked" : '').'>',
|
|
));
|
|
}
|
|
|
|
echo '<tr><td></td><td colspan="3"><div><a href="###" onclick="addrow(this, 0)" class="addtr">'.$lang['misc_link_add'].'</a></div></td></tr>';
|
|
showsubmit('linksubmit', 'submit', 'del');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
if($_GET['delete']) {
|
|
C::t('common_friendlink')->delete($_GET['delete']);
|
|
}
|
|
|
|
if(is_array($_GET['name'])) {
|
|
foreach($_GET['name'] as $id => $val) {
|
|
$type_str = intval($_GET['portal'][$id]).intval($_GET['forum'][$id]).intval($_GET['group'][$id]).intval($_GET['home'][$id]);
|
|
$type_str = intval($type_str, '2');
|
|
$query = C::t('common_friendlink')->update($id, array(
|
|
'displayorder' => $_GET['displayorder'][$id],
|
|
'name' => $_GET['name'][$id],
|
|
'url' => $_GET['url'][$id],
|
|
'description' => $_GET['description'][$id],
|
|
'logo' => $_GET['logo'][$id],
|
|
'type' => $type_str,
|
|
));
|
|
}
|
|
}
|
|
|
|
if(is_array($_GET['newname'])) {
|
|
foreach($_GET['newname'] as $key => $value) {
|
|
if($value) {
|
|
$type_str = intval($_GET['newportal'][$key]).intval($_GET['newforum'][$key]).intval($_GET['newgroup'][$key]).intval($_GET['newhome'][$key]);
|
|
$type_str = intval($type_str, '2');
|
|
C::t('common_friendlink')->insert(array(
|
|
'displayorder' => $_GET['newdisplayorder'][$key],
|
|
'name' => $value,
|
|
'url' => $_GET['newurl'][$key],
|
|
'description' => $_GET['newdescription'][$key],
|
|
'logo' => $_GET['newlogo'][$key],
|
|
'type' => $type_str,
|
|
));
|
|
}
|
|
}
|
|
}
|
|
|
|
updatecache('forumlinks');
|
|
cpmsg('forumlinks_succeed', 'action=misc&operation=link', 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($operation == 'relatedlink') {
|
|
|
|
if(!submitcheck('linksubmit')) {
|
|
|
|
?>
|
|
<script type="text/JavaScript">
|
|
var rowtypedata = [
|
|
[
|
|
[1,'', 'td25'],
|
|
[1,'<input type="text" class="txt" name="newname[]" size="15">'],
|
|
[1,'<input type="text" name="newurl[]" size="50">'],
|
|
[1,'<input class="checkbox" type="checkbox" value="1" name="newarticle[{n}]">'],
|
|
[1,'<input class="checkbox" type="checkbox" value="1" name="newforum[{n}]">'],
|
|
[1,'<input class="checkbox" type="checkbox" value="1" name="newgroup[{n}]">'],
|
|
[1,'<input class="checkbox" type="checkbox" value="1" name="newblog[{n}]">']
|
|
]
|
|
]
|
|
</script>
|
|
<?php
|
|
|
|
shownav('extended', 'misc_relatedlink');
|
|
showsubmenu('nav_misc_relatedlink');
|
|
showtips('misc_relatedlink_tips');
|
|
$tdstyle = array('width="50"', 'width="120"', 'width="330"', 'width="50"', 'width="80"', 'width="80"', '');
|
|
showformheader('misc&operation=relatedlink');
|
|
showtableheader();
|
|
showsetting('misc_relatedlink_status', 'relatedlinkstatus', $_G['setting']['relatedlinkstatus'], 'radio');
|
|
showtablefooter();
|
|
showtableheader('', '', 'id="relatedlink_header"');
|
|
showsubtitle(array('', 'misc_relatedlink_edit_name', 'misc_relatedlink_edit_url', 'misc_relatedlink_extent_article', 'misc_relatedlink_extent_forum', 'misc_relatedlink_extent_group', 'misc_relatedlink_extent_blog'), 'header tbm', $tdstyle);
|
|
showtablefooter();
|
|
echo '<script type="text/javascript">floatbottom(\'relatedlink_header\');</script>';
|
|
showtableheader();
|
|
showsubtitle(array('', 'misc_relatedlink_edit_name', 'misc_relatedlink_edit_url', '<label><input class="checkbox" type="checkbox" name="articleall" onclick="checkAll(\'prefix\', this.form, \'article\', \'articleall\')">'.cplang('misc_relatedlink_extent_article').'</label>', '<label><input class="checkbox" type="checkbox" name="forumall" onclick="checkAll(\'prefix\', this.form, \'forum\', \'forumall\')">'.cplang('misc_relatedlink_extent_forum').'</label>', '<label><input class="checkbox" type="checkbox" name="groupall" onclick="checkAll(\'prefix\', this.form, \'group\', \'groupall\')">'.cplang('misc_relatedlink_extent_group').'</label>', '<label><input class="checkbox" type="checkbox" name="blogall" onclick="checkAll(\'prefix\', this.form, \'blog\', \'blogall\')">'.cplang('misc_relatedlink_extent_blog').'</label>'), 'header', $tdstyle);
|
|
|
|
$query = C::t('common_relatedlink')->range(0, 0, 'DESC');
|
|
foreach($query as $link) {
|
|
$extent = sprintf('%04b', $link['extent']);
|
|
showtablerow('', array('class="td25"', '', '', 'class="td26"', 'class="td26"', 'class="td26"', ''), array(
|
|
'<input type="checkbox" class="checkbox" name="delete[]" value="'.$link['id'].'" />',
|
|
'<input type="text" class="txt" name="name['.$link[id].']" value="'.$link['name'].'" size="15" />',
|
|
'<input type="text" name="url['.$link[id].']" value="'.$link['url'].'" size="50" />',
|
|
'<input class="checkbox" type="checkbox" value="1" name="article['.$link[id].']" '.($extent[0] ? "checked" : '').'>',
|
|
'<input class="checkbox" type="checkbox" value="1" name="forum['.$link[id].']" '.($extent[1] ? "checked" : '').'>',
|
|
'<input class="checkbox" type="checkbox" value="1" name="group['.$link[id].']" '.($extent[2] ? "checked" : '').'>',
|
|
'<input class="checkbox" type="checkbox" value="1" name="blog['.$link[id].']" '.($extent[3] ? "checked" : '').'>',
|
|
));
|
|
}
|
|
|
|
echo '<tr><td></td><td colspan="6"><div><a href="###" onclick="addrow(this, 0)" class="addtr">'.$lang['misc_relatedlink_add'].'</a></div></td></tr>';
|
|
showsubmit('linksubmit', 'submit', 'del');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
if($_GET['delete']) {
|
|
C::t('common_relatedlink')->delete($_GET['delete']);
|
|
}
|
|
|
|
if(is_array($_GET['name'])) {
|
|
foreach($_GET['name'] as $id => $val) {
|
|
$extent_str = intval($_GET['article'][$id]).intval($_GET['forum'][$id]).intval($_GET['group'][$id]).intval($_GET['blog'][$id]);
|
|
$extent_str = intval($extent_str, '2');
|
|
C::t('common_relatedlink')->update($id, array(
|
|
'name' => $_GET['name'][$id],
|
|
'url' => $_GET['url'][$id],
|
|
'extent' => $extent_str,
|
|
));
|
|
}
|
|
}
|
|
|
|
if(is_array($_GET['newname'])) {
|
|
foreach($_GET['newname'] as $key => $value) {
|
|
if($value) {
|
|
$extent_str = intval($_GET['newarticle'][$key]).intval($_GET['newforum'][$key]).intval($_GET['newgroup'][$key]).intval($_GET['newblog'][$key]);
|
|
$extent_str = intval($extent_str, '2');
|
|
C::t('common_relatedlink')->insert(array(
|
|
'name' => $value,
|
|
'url' => $_GET['newurl'][$key],
|
|
'extent' => $extent_str,
|
|
));
|
|
}
|
|
}
|
|
}
|
|
C::t('common_setting')->update('relatedlinkstatus', $_GET['relatedlinkstatus']);
|
|
updatecache(array('relatedlink','setting'));
|
|
cpmsg('relatedlink_succeed', 'action=misc&operation=relatedlink', 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($operation == 'bbcode') {
|
|
|
|
$edit = $_GET['edit'];
|
|
if(!submitcheck('bbcodessubmit') && !$edit) {
|
|
shownav('style', 'setting_editor');
|
|
|
|
showsubmenu('setting_editor', array(
|
|
array('setting_editor_global', 'setting&operation=editor', 0),
|
|
array('setting_editor_code', 'misc&operation=bbcode', 1),
|
|
));
|
|
|
|
showtips('misc_bbcode_edit_tips');
|
|
showformheader('misc&operation=bbcode');
|
|
showtableheader('', 'fixpadding');
|
|
showsubtitle(array('', 'misc_bbcode_tag', 'available', 'display', 'display_order', 'misc_bbcode_icon', 'misc_bbcode_icon_file', ''));
|
|
foreach(C::t('forum_bbcode')->fetch_all_by_available_icon() as $bbcode) {
|
|
showtablerow('', array('class="td25"', 'class="td21"', 'class="td25"', 'class="td25"', 'class="td28 td24"', 'class="td25"', 'class="td21"'), array(
|
|
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$bbcode[id]\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"15\" name=\"tagnew[$bbcode[id]]\" value=\"$bbcode[tag]\">",
|
|
"<input class=\"checkbox\" type=\"checkbox\" name=\"availablenew[$bbcode[id]]\" value=\"1\" ".($bbcode['available'] ? 'checked="checked"' : NULL).">",
|
|
"<input class=\"checkbox\" type=\"checkbox\" name=\"displaynew[$bbcode[id]]\" value=\"1\" ".($bbcode['available'] == '2' ? 'checked="checked"' : NULL).">",
|
|
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"displayordernew[$bbcode[id]]\" value=\"$bbcode[displayorder]\">",
|
|
$bbcode['icon'] ? "<em class=\"editor\"><a class=\"customedit\"><img src=\"static/image/common/$bbcode[icon]\" border=\"0\"></a></em>" : ' ',
|
|
"<input type=\"text\" class=\"txt\" size=\"25\" name=\"iconnew[$bbcode[id]]\" value=\"$bbcode[icon]\">",
|
|
"<a href=\"".ADMINSCRIPT."?action=misc&operation=bbcode&edit=$bbcode[id]\" class=\"act\">$lang[detail]</a>"
|
|
));
|
|
}
|
|
showtablerow('', array('class="td25"', 'class="td25"', 'class="td25"', 'class="td25"', 'class="td28 td24"', 'class="td25"', 'class="td21"'), array(
|
|
cplang('add_new'),
|
|
'<input type="text" class="txt" size="15" name="newtag">',
|
|
'',
|
|
'',
|
|
'<input type="text" class="txt" size="2" name="newdisplayorder">',
|
|
'',
|
|
'<input type="text" class="txt" size="25" name="newicon">',
|
|
''
|
|
));
|
|
showsubmit('bbcodessubmit', 'submit', 'del');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} elseif(submitcheck('bbcodessubmit')) {
|
|
|
|
$delete = $_GET['delete'];
|
|
if(is_array($delete)) {
|
|
C::t('forum_bbcode')->delete($delete);
|
|
}
|
|
|
|
$tagnew = $_GET['tagnew'];
|
|
$displaynew = $_GET['displaynew'];
|
|
$displayordernew = $_GET['displayordernew'];
|
|
$iconnew = $_GET['iconnew'];
|
|
if(is_array($tagnew)) {
|
|
$custom_ids = array();
|
|
foreach(C::t('forum_bbcode')->fetch_all_by_available_icon() as $bbcode) {
|
|
$custom_ids[] = $bbcode['id'];
|
|
}
|
|
$availablenew = $_GET['availablenew'];
|
|
foreach($tagnew as $id => $val) {
|
|
if(in_array($id, $custom_ids) && !preg_match("/^[0-9a-z]+$/i", $tagnew[$id]) && strlen($tagnew[$id]) < 20) {
|
|
cpmsg('dzcode_edit_tag_invalid', '', 'error');
|
|
}
|
|
$availablenew[$id] = in_array($id, $custom_ids) ? $availablenew[$id] : 1;
|
|
$availablenew[$id] = $availablenew[$id] && $displaynew[$id] ? 2 : $availablenew[$id];
|
|
$data = array(
|
|
'available' => $availablenew[$id],
|
|
'displayorder' => $displayordernew[$id]
|
|
);
|
|
if(in_array($id, $custom_ids)) {
|
|
$data['tag'] = $tagnew[$id];
|
|
$data['icon'] = $iconnew[$id];
|
|
}
|
|
C::t('forum_bbcode')->update($id, $data);
|
|
}
|
|
}
|
|
|
|
$newtag = $_GET['newtag'];
|
|
if($newtag != '') {
|
|
if(!preg_match("/^[0-9a-z]+$/i", $newtag && strlen($newtag) < 20)) {
|
|
cpmsg('dzcode_edit_tag_invalid', '', 'error');
|
|
}
|
|
$data = array(
|
|
'tag' => $newtag,
|
|
'icon' => $_GET['newicon'],
|
|
'available' => 0,
|
|
'displayorder' => $_GET['newdisplayorder'],
|
|
'params' => 1,
|
|
'nest' => 1,
|
|
);
|
|
C::t('forum_bbcode')->insert($data);
|
|
}
|
|
|
|
updatecache(array('bbcodes', 'bbcodes_display'));
|
|
cpmsg('dzcode_edit_succeed', 'action=misc&operation=bbcode', 'succeed');
|
|
|
|
} elseif($edit) {
|
|
|
|
$bbcode = C::t('forum_bbcode')->fetch($edit);
|
|
if(!$bbcode) {
|
|
cpmsg('bbcode_not_found', '', 'error');
|
|
}
|
|
|
|
if(!submitcheck('editsubmit')) {
|
|
|
|
$bbcode['perm'] = explode("\t", $bbcode['perm']);
|
|
$query = C::t('common_usergroup')->range_orderby_credit();
|
|
$groupselect = array();
|
|
foreach($query as $group) {
|
|
$group['type'] = $group['type'] == 'special' && $group['radminid'] ? 'specialadmin' : $group['type'];
|
|
$groupselect[$group['type']] .= '<option value="'.$group['groupid'].'"'.(@in_array($group['groupid'], $bbcode['perm']) ? ' selected' : '').'>'.$group['grouptitle'].'</option>';
|
|
}
|
|
$select = '<select name="permnew[]" size="10" multiple="multiple"><option value=""'.(@in_array('', $var['value']) ? ' selected' : '').'>'.cplang('plugins_empty').'</option>'.
|
|
'<optgroup label="'.$lang['usergroups_member'].'">'.$groupselect['member'].'</optgroup>'.
|
|
($groupselect['special'] ? '<optgroup label="'.$lang['usergroups_special'].'">'.$groupselect['special'].'</optgroup>' : '').
|
|
($groupselect['specialadmin'] ? '<optgroup label="'.$lang['usergroups_specialadmin'].'">'.$groupselect['specialadmin'].'</optgroup>' : '').
|
|
'<optgroup label="'.$lang['usergroups_system'].'">'.$groupselect['system'].'</optgroup></select>';
|
|
|
|
$bbcode['prompt'] = str_replace("\t", "\n", $bbcode['prompt']);
|
|
|
|
shownav('style', 'nav_posting_bbcode');
|
|
showsubmenu($lang['misc_bbcode_edit'].' - '.$bbcode['tag']);
|
|
showformheader("misc&operation=bbcode&edit=$edit");
|
|
showtableheader();
|
|
showsetting('misc_bbcode_edit_tag', 'tagnew', $bbcode['tag'], 'text');
|
|
showsetting('misc_bbcode_edit_replacement', 'replacementnew', $bbcode['replacement'], 'textarea');
|
|
showsetting('misc_bbcode_edit_example', 'examplenew', $bbcode['example'], 'text');
|
|
showsetting('misc_bbcode_edit_explanation', 'explanationnew', $bbcode['explanation'], 'text');
|
|
showsetting('misc_bbcode_edit_params', 'paramsnew', $bbcode['params'], 'text');
|
|
showsetting('misc_bbcode_edit_prompt', 'promptnew', $bbcode['prompt'], 'textarea');
|
|
showsetting('misc_bbcode_edit_nest', 'nestnew', $bbcode['nest'], 'text');
|
|
showsetting('misc_bbcode_edit_usergroup', '', '', $select);
|
|
showsubmit('editsubmit');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
$tagnew = trim($_GET['tagnew']);
|
|
$paramsnew = $_GET['paramsnew'];
|
|
$nestnew = $_GET['nestnew'];
|
|
$replacementnew = $_GET['replacementnew'];
|
|
$examplenew = $_GET['examplenew'];
|
|
$explanationnew = $_GET['explanationnew'];
|
|
$promptnew = $_GET['promptnew'];
|
|
$permnew = implode("\t", $_GET['permnew']);
|
|
|
|
if(!preg_match("/^[0-9a-z]+$/i", $tagnew)) {
|
|
cpmsg('dzcode_edit_tag_invalid', '', 'error');
|
|
} elseif($paramsnew < 1 || $paramsnew > 3 || $nestnew < 1 || $nestnew > 3) {
|
|
cpmsg('dzcode_edit_range_invalid', '', 'error');
|
|
}
|
|
$promptnew = trim(str_replace(array("\t", "\r", "\n"), array('', '', "\t"), $promptnew));
|
|
|
|
C::t('forum_bbcode')->update($edit, array('tag'=>$tagnew, 'replacement'=>$replacementnew, 'example'=>$examplenew, 'explanation'=>$explanationnew, 'params'=>$paramsnew, 'prompt'=>$promptnew, 'nest'=>$nestnew, 'perm'=>$permnew));
|
|
updatecache(array('bbcodes', 'bbcodes_display'));
|
|
cpmsg('dzcode_edit_succeed', 'action=misc&operation=bbcode', 'succeed');
|
|
|
|
}
|
|
}
|
|
|
|
} elseif($operation == 'censor') {
|
|
|
|
$ppp = 30;
|
|
|
|
$addcensors = isset($_GET['addcensors']) ? trim($_GET['addcensors']) : '';
|
|
|
|
if($do == 'export') {
|
|
|
|
ob_end_clean();
|
|
dheader('Cache-control: max-age=0');
|
|
dheader('Expires: '.gmdate('D, d M Y H:i:s', TIMESTAMP - 31536000).' GMT');
|
|
dheader('Content-Encoding: none');
|
|
dheader('Content-Disposition: attachment; filename=CensorWords.txt');
|
|
dheader('Content-Type: text/plain');
|
|
foreach(C::t('common_word_type')->fetch_all() as $result) {
|
|
$result['used'] = 0;
|
|
$word_type[$result['id']] = $result;
|
|
}
|
|
foreach(C::t('common_word')->fetch_all_order_type_find() as $censor) {
|
|
$censor['replacement'] = str_replace('*', '', $censor['replacement']) <> '' ? $censor['replacement'] : '';
|
|
if($word_type[$censor['type']]['used'] == 0 && $word_type[$censor['type']]) {
|
|
if($temp_type == 1) {
|
|
echo "[/type]\n";
|
|
}
|
|
echo "\n[type:".$word_type[$censor['type']]['typename']."]\n";
|
|
$temp_type = 1;
|
|
$word_type[$censor['type']]['used'] = 1;
|
|
}
|
|
echo $censor['find'].($censor['replacement'] != '' ? '='.$censor['replacement'] : '')."\n";
|
|
}
|
|
if($temp_type == 1) {
|
|
echo "[/type]\n";
|
|
unset($temp_type);
|
|
}
|
|
define('FOOTERDISABLED' , 1);
|
|
exit();
|
|
|
|
} elseif(submitcheck('addcensorsubmit') && $addcensors != '') {
|
|
$oldwords = array();
|
|
if($_G['adminid'] == 1 && $_GET['overwrite'] == 2) {
|
|
C::t('common_word')->truncate();
|
|
} else {
|
|
foreach(C::t('common_word')->fetch_all() as $censor) {
|
|
$oldwords[md5($censor['find'])] = $censor['admin'];
|
|
}
|
|
}
|
|
$typesearch = "\[type\:(.+?)\](.+?)\[\/type\]";
|
|
preg_match_all("/($typesearch)/is", $addcensors, $wordmatch);
|
|
$wordmatch[3][] = preg_replace("/($typesearch)/is", '', $addcensors);
|
|
$updatecount = $newcount = $ignorecount = 0;
|
|
foreach($wordmatch[3] AS $key => $val) {
|
|
$word_type = 0;
|
|
if($wordmatch[2][$key] && !$wordtype_used[$key]) {
|
|
$row = C::t('common_word_type')->fetch_by_typename($wordmatch[2][$key]);
|
|
if(empty($row)) {
|
|
$word_type = C::t('common_word_type')->insert(array('typename' => $wordmatch[2][$key]), true);
|
|
} else {
|
|
$word_type = $row['id'];
|
|
}
|
|
$wordtype_used[$key] = 1;
|
|
}
|
|
$word_type = $word_type ? $word_type : 0 ;
|
|
|
|
$censorarray = explode("\n", $val);
|
|
foreach($censorarray as $censor) {
|
|
list($newfind, $newreplace) = array_map('trim', explode('=', $censor));
|
|
$newreplace = $newreplace <> '' ? daddslashes(str_replace("\\\'", '\'', $newreplace), 1) : '**';
|
|
if(strlen($newfind) < 3) {
|
|
if($newfind != '') {
|
|
$ignorecount ++;
|
|
}
|
|
continue;
|
|
} elseif(isset($oldwords[md5($newfind)])) {
|
|
if($_GET['overwrite'] && ($_G['adminid'] == 1 || $oldwords[md5($newfind)] == $_G['member']['username'])) {
|
|
$updatecount ++;
|
|
C::t('common_word')->update_by_find($newfind, array(
|
|
'replacement' => $newreplace,
|
|
'type' => ($word_type ? $word_type : (intval($_GET['wordtype_select']) ? intval($_GET['wordtype_select']) : 0))
|
|
));
|
|
} else {
|
|
$ignorecount ++;
|
|
}
|
|
} else {
|
|
$newcount ++;
|
|
C::t('common_word')->insert(array(
|
|
'admin' => $_G['username'],
|
|
'find' => $newfind,
|
|
'replacement' => $newreplace,
|
|
'type' => ($word_type ? $word_type : (intval($_GET['wordtype_select']) ? intval($_GET['wordtype_select']) : 0))
|
|
));
|
|
$oldwords[md5($newfind)] = $_G['member']['username'];
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
updatecache('censor');
|
|
cpmsg('censor_batch_add_succeed', "action=misc&operation=censor&anchor=import", 'succeed', array('newcount' => $newcount, 'updatecount' => $updatecount, 'ignorecount' => $ignorecount));
|
|
|
|
} elseif(submitcheck('wordtypesubmit')) {
|
|
if(is_array($_GET['delete'])) {
|
|
$_GET['delete'] = array_map('intval', (array)$_GET['delete']);
|
|
C::t('common_word_type')->delete($_GET['delete']);
|
|
C::t('common_word')->update_by_type($_GET['delete'], array('type'=>0));
|
|
}
|
|
if(is_array($_GET['typename'])) {
|
|
foreach($_GET['typename'] AS $key => $val) {
|
|
if(!$_GET['delete'][$key] && !empty($val)) {
|
|
DB::update("common_word_type", array('typename' => $val), "`id` = '$key'");
|
|
}
|
|
}
|
|
}
|
|
if($_GET['newtypename']) {
|
|
foreach($_GET['newtypename'] AS $key => $val) {
|
|
$val = trim($val);
|
|
if(!empty($val)) {
|
|
C::t('common_word_type')->insert(array('typename' => $val));
|
|
}
|
|
}
|
|
}
|
|
cpmsg('censor_wordtype_edit', 'action=misc&operation=censor&anchor=wordtype', 'succeed');
|
|
} elseif(!submitcheck('censorsubmit')) {
|
|
$ftype = $ffind = null;
|
|
if(!empty($_GET['censor_search_type'])) {
|
|
$ftype = $_GET['censor_search_type'];
|
|
}
|
|
|
|
$ffind = !empty($_GET['censorkeyword']) ? $_GET['censorkeyword'] : null;
|
|
if($_POST['censorkeyword']) {
|
|
$page = 1;
|
|
}
|
|
|
|
$ppp = 50;
|
|
$startlimit = ($page - 1) * $ppp;
|
|
|
|
foreach(C::t('common_word_type')->fetch_all() as $result) {
|
|
$result['typename'] = dhtmlspecialchars($result['typename']);
|
|
$word_type[$result['id']] = $result;
|
|
$word_type_option .= "<option value=\"{$result['id']}\">{$result['typename']}</option>";
|
|
if(!empty($_GET['censor_search_type'])) {
|
|
$word_type_option_search .= "<option value=\"{$result['id']}\"".($_GET['censor_search_type'] == $result['id'] ? 'selected' : '' ).">{$result['typename']}</option>";
|
|
}
|
|
}
|
|
|
|
shownav('topic', 'nav_posting_censor');
|
|
$anchor = in_array($_GET['anchor'], array('list', 'import', 'wordtype', 'showanchor')) ? $_GET['anchor'] : 'list';
|
|
showsubmenuanchors('nav_posting_censor', array(
|
|
array('admin', 'list', $anchor == 'list'),
|
|
array('misc_censor_batch_add', 'import', $anchor == 'import'),
|
|
array('misc_censor_wordtype_edit', 'wordtype', $anchor == 'wordtype'),
|
|
));
|
|
showtips('misc_censor_tips', 'list_tips', $anchor == 'list');
|
|
showtips('misc_censor_batch_add_tips', 'import_tips', $anchor == 'import');
|
|
showtips('misc_censor_wordtype_tips', 'wordtype_tips', $anchor == 'wordtype');
|
|
|
|
showtagheader('div', 'list', $anchor == 'list');
|
|
showformheader("misc&operation=censor&page=$page", '', 'keywordsearch');
|
|
showtableheader();
|
|
echo '<br /><br /><form method="post">'. $lang['keywords'].': <input type="text" name="censorkeyword" value="'.$_GET['censorkeyword'].'" /> <select name="censor_search_type"><option value = "">'.cplang("misc_censor_wordtype_search").'</option><option value="0">'.cplang('misc_censor_word_default_typename').'</option>'.($word_type_option_search ? $word_type_option_search : $word_type_option).'</select> <input type="submit" name="censor_search" value="'.$lang[search].'" class="btn" /> </form>';
|
|
showtablefooter();
|
|
|
|
showformheader("misc&operation=censor&page=$page", '', 'listform');
|
|
showtableheader('', 'fixpadding');
|
|
showsubtitle(array('', 'misc_censor_word', 'misc_censor_replacement', 'misc_censor_type', 'operator'));
|
|
|
|
$multipage = '';
|
|
$totalcount = C::t('common_word')->count_by_type_find($ftype, $ffind);
|
|
if($totalcount) {
|
|
$multipage = multi($totalcount, $ppp, $page, ADMINSCRIPT."?action=misc&operation=censor".($ffind ? "&censorkeyword=".$ffind : '' ).($_GET['censor_search_type'] ? "&censor_search_type=".$_GET['censor_search_type'] : '' ));
|
|
foreach(C::t('common_word')->fetch_all_by_type_find($ftype, $ffind, $startlimit, $ppp) as $censor) {
|
|
$censor['replacement'] = $censor['replacement'];
|
|
$censor['replacement'] = dhtmlspecialchars($censor['replacement']);
|
|
$censor['find'] = dhtmlspecialchars($censor['find']);
|
|
$disabled = $_G['adminid'] != 1 && $censor['admin'] != $_G['member']['username'] ? 'disabled' : NULL;
|
|
if(in_array($censor['replacement'], array('{BANNED}', '{MOD}'))) {
|
|
$replacedisplay = 'style="display:none"';
|
|
$optionselected = array();
|
|
foreach(array('{BANNED}', '{MOD}') as $option) {
|
|
$optionselected[$option] = $censor['replacement'] == $option ? 'selected' : '';
|
|
}
|
|
} else {
|
|
$optionselected['{REPLACE}'] = 'selected';
|
|
$replacedisplay = '';
|
|
}
|
|
$word_type_tmp = "<select name='wordtype_select[{$censor['id']}]' id='wordtype_select'><option value='0'>".cplang('misc_censor_word_default_typename')."</option>";
|
|
foreach($word_type AS $key => $val) {
|
|
if($censor['type'] == $val['id']) {
|
|
$word_type_tmp .= "<option value='{$val['id']}' selected>{$val['typename']}</option>";
|
|
} else {
|
|
$word_type_tmp .= "<option value='{$val['id']}'>{$val['typename']}</option>";
|
|
}
|
|
}
|
|
$word_type_tmp .= "</select>";
|
|
showtablerow('', array('class="td25"', '', '', 'class="td26"'), array(
|
|
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$censor[id]\" $disabled>",
|
|
"<input type=\"text\" class=\"txt\" size=\"30\" name=\"find[$censor[id]]\" value=\"$censor[find]\" $disabled>",
|
|
'<select name="replace['.$censor['id'].']" onchange="if(this.options[this.options.selectedIndex].value==\'{REPLACE}\'){$(\'divbanned'.$censor['id'].'\').style.display=\'\';$(\'divbanned'.$censor['id'].'\').value=\'\';}else{$(\'divbanned'.$censor['id'].'\').style.display=\'none\';}" '.$disabled.'>
|
|
<option value="{BANNED}" '.$optionselected['{BANNED}'].'>'.cplang('misc_censor_word_banned').'</option><option value="{MOD}" '.$optionselected['{MOD}'].'>'.cplang('misc_censor_word_moderated').'</option><option value="{REPLACE}" '.$optionselected['{REPLACE}'].'>'.cplang('misc_censor_word_replaced').'</option></select>
|
|
<input class="txt" type="text" size="10" name="replacecontent['.$censor['id'].']" value="'.$censor['replacement'].'" id="divbanned'.$censor['id'].'" '.$replacedisplay.' '.$disabled.'>',
|
|
$word_type_tmp,
|
|
$censor['admin']
|
|
));
|
|
}
|
|
}
|
|
$misc_censor_word_banned = cplang('misc_censor_word_banned');
|
|
$misc_censor_word_moderated = cplang('misc_censor_word_moderated');
|
|
$misc_censor_word_replaced = cplang('misc_censor_word_replaced');
|
|
$misc_censor_word_newtypename = cplang('misc_censor_word_newtypename');
|
|
$misc_censor_word_default_typename = cplang('misc_censor_word_default_typename');
|
|
echo <<<EOT
|
|
<script type="text/JavaScript">
|
|
var rowtypedata = [
|
|
[
|
|
[1,''],
|
|
[1,'<input type="text" class="txt" size="30" name="newfind[]">'], [1, ' <select onchange="if(this.options[this.options.selectedIndex].value==\'{REPLACE}\'){this.nextSibling.style.display=\'\';}else{this.nextSibling.style.display=\'none\';}" name="newreplace[]" $disabled><option value="{BANNED}">$misc_censor_word_banned</option><option value="{MOD}">$misc_censor_word_moderated</option><option value="{REPLACE}">$misc_censor_word_replaced</option></select><input class="txt" type="text" size="15" name="newreplacecontent[]" style="display:none;">']
|
|
EOT;
|
|
if($word_type_option) {
|
|
echo ", [1,' <select onchange=\"if(this.options[this.options.selectedIndex].value==\'0\'){this.nextSibling.style.display=\'\';}else{this.nextSibling.style.display=\'none\';}\" name=\"newwordtype[]\" id=\"newwordtype[]\"><option value=\"0\" selected>{$misc_censor_word_default_typename}</option>{$word_type_option}</select><input class=\"txt\" type=\"text\" size=\"10\" name=\"newtypename[]\" >']";
|
|
}
|
|
echo <<<EOT
|
|
, [1,'']
|
|
],
|
|
[
|
|
[1,''],
|
|
[1,'<input type="text" class="txt" size="30" name="newtypename[]">']
|
|
]
|
|
];
|
|
</script>
|
|
EOT;
|
|
echo '<tr><td></td><td colspan="4"><div><a href="###" onclick="addrow(this, 0)" class="addtr">'.$lang['add_new'].'</a></div></td></tr>';
|
|
|
|
showsubmit('censorsubmit', 'submit', 'del', '', $multipage, false);
|
|
showtablefooter();
|
|
showformfooter();
|
|
showtagfooter('div');
|
|
|
|
showtagheader('div', 'import', $anchor == 'import');
|
|
showformheader("misc&operation=censor&page=$page", 'fixpadding');
|
|
showtableheader('', 'fixpadding', 'importform');
|
|
showtablerow('', 'class="vtop rowform"', "<select name=\"wordtype_select\"><option value='0'>".cplang('misc_censor_word_default_typename')."</option>$word_type_option</select>");
|
|
showtablerow('', 'class="vtop rowform"', '<br /><textarea name="addcensors" class="tarea" rows="10" cols="80" onkeyup="textareasize(this)" onkeydown="textareakey(this, event)"></textarea><br /><br />'.mradio('overwrite', array(
|
|
0 => cplang('misc_censor_batch_add_no_overwrite'),
|
|
1 => cplang('misc_censor_batch_add_overwrite'),
|
|
2 => cplang('misc_censor_batch_add_clear')
|
|
), '', FALSE));
|
|
|
|
showsubmit('addcensorsubmit');
|
|
showtablefooter();
|
|
showformfooter();
|
|
showtagfooter('div');
|
|
|
|
|
|
showtagheader('div', 'wordtype', $anchor == 'wordtype');
|
|
showformheader("misc&operation=censor", 'fixpadding');
|
|
showtableheader('', 'fixpadding', 'wordtypeform');
|
|
showsubtitle(array('', 'misc_censor_wordtype_name'));
|
|
if($wordtypecount = C::t('common_word_type')->count()) {
|
|
foreach(C::t('common_word_type')->fetch_all() as $result) {
|
|
showtablerow('', array('class="td25"', ''), array("<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"{$result['id']}\" $disabled>", "<input type=\"text\" class=\"txt\" size=\"10\" name=\"typename[{$result['id']}]\" value=\"{$result['typename']}\">"));
|
|
}
|
|
}
|
|
|
|
echo '<tr><td></td><td colspan="2"><div><a href="###" onclick="addrow(this, 1)" class="addtr">'.$lang['add_new'].'</a></div></td></tr>';
|
|
showsubmit('wordtypesubmit', 'submit', 'del', '', '', false);
|
|
showtablefooter();
|
|
showformfooter();
|
|
showtagfooter('div');
|
|
|
|
} else {
|
|
|
|
if($ids = dimplode($_GET['delete'])) {
|
|
DB::delete('common_word', "id IN ($ids) AND ('{$_G['adminid']}'='1' OR admin='{$_G['username']}')");
|
|
}
|
|
|
|
if(is_array($_GET['find'])) {
|
|
foreach($_GET['find'] as $id => $val) {
|
|
$_GET['find'][$id] = $val = trim(str_replace('=', '', $_GET['find'][$id]));
|
|
if(strlen($val) < 3) {
|
|
cpmsg('censor_keywords_tooshort', '', 'error');
|
|
}
|
|
$_GET['replace'][$id] = $_GET['replace'][$id] == '{REPLACE}' ? $_GET['replacecontent'][$id] : $_GET['replace'][$id];
|
|
$_GET['replace'][$id] = daddslashes(str_replace("\\\'", '\'', $_GET['replace'][$id]), 1);
|
|
DB::update('common_word', array(
|
|
'find' => $_GET['find'][$id],
|
|
'replacement' => $_GET['replace'][$id],
|
|
'type' => $_GET['wordtype_select'][$id],
|
|
), "id='$id' AND ('{$_G['adminid']}'='1' OR admin='{$_G['username']}')");
|
|
}
|
|
}
|
|
|
|
$newfind_array = !empty($_GET['newfind']) ? $_GET['newfind'] : array();
|
|
$newreplace_array = !empty($_GET['newreplace']) ? $_GET['newreplace'] : array();
|
|
$newreplacecontent_array = !empty($_GET['newreplacecontent']) ? $_GET['newreplacecontent'] : array();
|
|
$newwordtype = !empty($_GET['newwordtype']) ? $_GET['newwordtype'] : array();
|
|
$newtypename = !empty($_GET['newtypename']) ? $_GET['newtypename'] : array();
|
|
|
|
foreach($newfind_array as $key => $value) {
|
|
$newfind = trim(str_replace('=', '', $newfind_array[$key]));
|
|
$newreplace = trim($newreplace_array[$key]);
|
|
|
|
if($newfind != '') {
|
|
if(strlen($newfind) < 3) {
|
|
cpmsg('censor_keywords_tooshort', '', 'error');
|
|
}
|
|
if($newreplace == '{REPLACE}') {
|
|
$newreplace = daddslashes(str_replace("\\\'", '\'', $newreplacecontent_array[$key]), 1);
|
|
}
|
|
|
|
if($newtypename) {
|
|
$newtypename = daddslashes($newtypename);
|
|
}
|
|
|
|
if($newwordtype) {
|
|
$newwordtype[$key] = intval($newwordtype[$key]);
|
|
}
|
|
|
|
if($newwordtype[$key] == 0) {
|
|
if(!empty($newtypename[$key])) {
|
|
$newwordtype[$key] = C::t('common_word_type')->insert(array('typename' => $newtypename[$key]), true);
|
|
}
|
|
}
|
|
if($oldcenser = C::t('common_word')->fetch_by_find($newfind)) {
|
|
cpmsg('censor_keywords_existence', '', 'error');
|
|
} else {
|
|
C::t('common_word')->insert(array(
|
|
'admin' => $_G['username'],
|
|
'find' => $newfind,
|
|
'replacement' => $newreplace,
|
|
'type' => $newwordtype[$key],
|
|
));
|
|
}
|
|
}
|
|
}
|
|
|
|
updatecache('censor');
|
|
cpmsg('censor_succeed', "action=misc&operation=censor&page=$page", 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($operation == 'stamp') {
|
|
|
|
if(!submitcheck('stampsubmit')) {
|
|
|
|
$anchor = in_array($_GET['anchor'], array('list', 'llist', 'add')) ? $_GET['anchor'] : 'list';
|
|
shownav('style', 'nav_thread_stamp');
|
|
showsubmenuanchors('nav_thread_stamp', array(
|
|
array('misc_stamp_thread', 'list', $anchor == 'list'),
|
|
array('misc_stamp_list', 'llist', $anchor == 'llist'),
|
|
array('add', 'add', $anchor == 'add')
|
|
));
|
|
|
|
showtagheader('div', 'list', $anchor == 'list');
|
|
showtips('misc_stamp_listtips');
|
|
showformheader('misc&operation=stamp');
|
|
showhiddenfields(array('anchor' => 'list'));
|
|
showtableheader();
|
|
showsubtitle(array('', 'misc_stamp_id', 'misc_stamp_name', 'smilies_edit_image', 'smilies_edit_filename', 'misc_stamp_icon', 'misc_stamp_option'));
|
|
|
|
$imgfilter = $stamplist = $stamplistfiles = $stampicons = array();
|
|
foreach(C::t('common_smiley')->fetch_all_by_type('stamplist') as $smiley) {
|
|
$stamplistfiles[$smiley['url']] = $smiley['id'];
|
|
$stampicons[$smiley['url']] = $smiley['typeid'];
|
|
$stamplist[] = $smiley;
|
|
}
|
|
$tselect = '<select><option value="0">'.cplang('none').'</option><option value="1">'.cplang('misc_stamp_option_stick').'</option><option value="2">'.cplang('misc_stamp_option_digest').'</option><option value="3">'.cplang('misc_stamp_option_recommend').'</option><option value="4">'.cplang('misc_stamp_option_recommendto').'</option></select>';
|
|
foreach(C::t('common_smiley')->fetch_all_by_type('stamp') as $smiley) {
|
|
$s = $r = array();
|
|
$s[] = '<select>';
|
|
$r[] = '<select name="typeidnew['.$smiley['id'].']">';
|
|
if($smiley['typeid']) {
|
|
$s[] = '<option value="'.$smiley['typeid'].'">';
|
|
$r[] = '<option value="'.$smiley['typeid'].'" selected="selected">';
|
|
$s[] = '<option value="0">';
|
|
$r[] = '<option value="-1">';
|
|
}
|
|
$tselectrow = str_replace($s, $r, $tselect);
|
|
$dot = strrpos($smiley['url'], '.');
|
|
$fn = substr($smiley['url'], 0, $dot);
|
|
$ext = substr($smiley['url'], $dot + 1);
|
|
$stampicon = $fn.'.small.'.$ext;
|
|
$small = array_key_exists($stampicon, $stamplistfiles);
|
|
showtablerow('', array('class="td25"', 'class="td25"', 'class="td23"'), array(
|
|
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$smiley[id]\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"displayorder[$smiley[id]]\" value=\"$smiley[displayorder]\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"code[$smiley[id]]\" value=\"$smiley[code]\">",
|
|
"<img src=\"static/image/stamp/$smiley[url]\">",
|
|
$smiley['url'],
|
|
($small ? '<input class="checkbox" type="checkbox" name="stampicon['.$smiley['id'].']"'.($smiley['id'] == $stampicons[$stampicon] ? ' checked="checked"' : '').' value="'.$stamplistfiles[$stampicon].'" /><img class="vmiddle" src="static/image/stamp/'.$stampicon.'">': ''),
|
|
$tselectrow,
|
|
));
|
|
$imgfilter[] = $smiley['url'];
|
|
}
|
|
|
|
showsubmit('stampsubmit', 'submit', 'del');
|
|
showtablefooter();
|
|
showformfooter();
|
|
showtagfooter('div');
|
|
|
|
showtagheader('div', 'llist', $anchor == 'llist');
|
|
showtips('misc_stamp_listtips');
|
|
showformheader('misc&operation=stamp&type=list');
|
|
showhiddenfields(array('anchor' => 'llist'));
|
|
showtableheader();
|
|
showsubtitle(array('', 'misc_stamp_id', 'misc_stamp_listname', 'smilies_edit_image', 'smilies_edit_filename'));
|
|
|
|
foreach($stamplist as $smiley) {
|
|
showtablerow('', array('class="td25"', 'class="td25"', 'class="td23"'), array(
|
|
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$smiley[id]\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"displayorder[$smiley[id]]\" value=\"$smiley[displayorder]\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"code[$smiley[id]]\" value=\"$smiley[code]\">",
|
|
"<img src=\"static/image/stamp/$smiley[url]\">",
|
|
$smiley['url']
|
|
));
|
|
$imgfilter[] = $smiley['url'];
|
|
}
|
|
|
|
showsubmit('stampsubmit', 'submit', 'del');
|
|
showtablefooter();
|
|
showformfooter();
|
|
showtagfooter('div');
|
|
|
|
showtagheader('div', 'add', $anchor == 'add');
|
|
showformheader('misc&operation=stamp');
|
|
showtips('misc_stamp_addtips');
|
|
showtableheader();
|
|
showsubtitle(array('add', 'misc_stamp_type', 'misc_stamp_id', 'misc_stamp_imagename', 'smilies_edit_image', 'smilies_edit_filename'));
|
|
|
|
$newid = 0;
|
|
$imgextarray = array('png', 'gif');
|
|
$stampsdir = dir(DISCUZ_ROOT.'./static/image/stamp');
|
|
while($entry = $stampsdir->read()) {
|
|
if(in_array(strtolower(fileext($entry)), $imgextarray) && !in_array($entry, $imgfilter) && is_file(DISCUZ_ROOT.'./static/image/stamp/'.$entry)) {
|
|
showtablerow('', array('class="td25"', 'class="td28 td24 rowform"', 'class="td23"'), array(
|
|
"<input type=\"checkbox\" name=\"addcheck[$newid]\" id=\"addcheck_$newid\" class=\"checkbox\">",
|
|
"<ul onmouseover=\"altStyle(this);\">".
|
|
"<li class=\"checked\"><input type=\"radio\" name=\"addtype[$newid]\" value=\"0\" checked=\"checked\" class=\"radio\">".cplang('misc_stamp_thread')."</li>".
|
|
"<li><input type=\"radio\" name=\"addtype[$newid]\" value=\"1\" class=\"radio\" onclick=\"$('addcheck_$newid').checked='true'\">".cplang('misc_stamp_list')."</li>".
|
|
"</ul>",
|
|
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"adddisplayorder[$newid]\" value=\"0\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"addcode[$newid]\" value=\"\">",
|
|
"<img src=\"static/image/stamp/$entry\" />",
|
|
"<input type=\"hidden\" class=\"txt\" size=\"35\" name=\"addurl[$newid]\" value=\"$entry\">$entry"
|
|
));
|
|
$newid ++;
|
|
}
|
|
}
|
|
$stampsdir->close();
|
|
if(!$newid) {
|
|
showtablerow('', array('class="td25"', 'colspan="3"'), array('', cplang('misc_stamp_tips')));
|
|
} else {
|
|
showsubmit('stampsubmit', 'submit', '<input type="checkbox" class="checkbox" name="chkall2" id="chkall2" onclick="checkAll(\'prefix\', this.form, \'addcheck\', \'chkall2\')"><label for="chkall2">'.cplang('select_all').'</label>');
|
|
}
|
|
|
|
showtablefooter();
|
|
showformfooter();
|
|
showtagfooter('div');
|
|
|
|
} else {
|
|
|
|
if($_GET['delete']) {
|
|
C::t('common_smiley')->delete($_GET['delete']);
|
|
}
|
|
|
|
if(is_array($_GET['displayorder'])) {
|
|
$typeidset = array();
|
|
foreach($_GET['displayorder'] as $id => $val) {
|
|
$_GET['displayorder'][$id] = intval($_GET['displayorder'][$id]);
|
|
if($_GET['displayorder'][$id] >= 0 && $_GET['displayorder'][$id] < 100) {
|
|
$typeidadd = '';
|
|
if($_GET['typeidnew'][$id]) {
|
|
if(!isset($typeidset[$_GET['typeidnew'][$id]])) {
|
|
$_GET['typeidnew'][$id] = $_GET['typeidnew'][$id] > 0 ? $_GET['typeidnew'][$id] : 0;
|
|
$typeidadd = ",typeid='{$_GET['typeidnew'][$id]}'";
|
|
$typeidset[$_GET['typeidnew'][$id]] = TRUE;
|
|
} else {
|
|
$_GET['typeidnew'][$id] = 0;
|
|
}
|
|
}
|
|
C::t('common_smiley')->update($id, array(
|
|
'displayorder' => $_GET['displayorder'][$id],
|
|
'code' => $_GET['code'][$id],
|
|
'typeid' => $_GET['typeidnew'][$id],
|
|
));
|
|
}
|
|
}
|
|
}
|
|
|
|
if(is_array($_GET['addurl'])) {
|
|
$count = C::t('common_smiley')->count_by_type(array('stamp','stamplist'));
|
|
if($count < 100) {
|
|
foreach($_GET['addurl'] as $k => $v) {
|
|
if($_GET['addcheck'][$k] && $_GET['addcode'][$k]) {
|
|
$count++;
|
|
|
|
C::t('common_smiley')->insert(array(
|
|
'displayorder' => '0',
|
|
'type' => (!$_GET['addtype'][$k] ? 'stamp' : 'stamplist'),
|
|
'url' => $_GET['addurl'][$k],
|
|
'code' => $_GET['addcode'][$k],
|
|
));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
C::t('common_smiley')->update_by_type('stamplist', array('typeid' => 0));
|
|
if(is_array($_GET['stampicon'])) {
|
|
foreach($_GET['stampicon'] as $k => $v) {
|
|
if($_GET['typeidnew'][$k]) {
|
|
$k = 0;
|
|
}
|
|
C::t('common_smiley')->update_by_id_type($v, 'stamplist', array('typeid' => $k));
|
|
}
|
|
}
|
|
|
|
updatecache('stamps');
|
|
updatecache('stamptypeid');
|
|
|
|
cpmsg('thread_stamp_succeed', "action=misc&operation=stamp&anchor=$_GET[anchor]", 'succeed');
|
|
}
|
|
|
|
} elseif($operation == 'attachtype') {
|
|
|
|
if(!submitcheck('typesubmit')) {
|
|
|
|
$attachtypes = '';
|
|
$query = DB::query("SELECT * FROM ".DB::table('forum_attachtype')." WHERE fid='0'");
|
|
while($type = DB::fetch($query)) {
|
|
$type['maxsize'] = round($type['maxsize'] / 1024);
|
|
$attachtypes .= showtablerow('', array('class="td25"', 'class="td24"'), array(
|
|
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$type[id]\" />",
|
|
"<input type=\"text\" class=\"txt\" size=\"10\" name=\"extension[$type[id]]\" value=\"$type[extension]\" />",
|
|
"<input type=\"text\" class=\"txt\" size=\"15\" name=\"maxsize[$type[id]]\" value=\"$type[maxsize]\" />"
|
|
), TRUE);
|
|
}
|
|
|
|
?>
|
|
<script type="text/JavaScript">
|
|
var rowtypedata = [
|
|
[
|
|
[1,'', 'td25'],
|
|
[1,'<input name="newextension[]" type="text" class="txt" size="10">', 'td24'],
|
|
[1,'<input name="newmaxsize[]" type="text" class="txt" size="15">']
|
|
]
|
|
];
|
|
</script>
|
|
<?php
|
|
|
|
shownav('global', 'nav_posting_attachtype');
|
|
showsubmenu('nav_posting_attachtype');
|
|
showtips('misc_attachtype_tips');
|
|
showformheader('misc&operation=attachtype');
|
|
showtableheader();
|
|
showtablerow('class="partition"', array('class="td25"', 'class="td24"'), array('', cplang('misc_attachtype_ext'), cplang('misc_attachtype_maxsize')));
|
|
echo $attachtypes;
|
|
echo '<tr><td></td><td colspan="2"><div><a href="###" onclick="addrow(this, 0)" class="addtr">'.$lang['misc_attachtype_add'].'</a></div></tr>';
|
|
showsubmit('typesubmit', 'submit', 'del');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
if($ids = dimplode($_GET['delete'])) {
|
|
DB::delete('forum_attachtype', "id IN ($ids) AND fid='0'");
|
|
}
|
|
|
|
if(is_array($_GET['extension'])) {
|
|
foreach($_GET['extension'] as $id => $val) {
|
|
DB::update('forum_attachtype', array(
|
|
'extension' => $_GET['extension'][$id],
|
|
'maxsize' => $_GET['maxsize'][$id] * 1024,
|
|
), "id='$id'");
|
|
}
|
|
}
|
|
|
|
if(is_array($_GET['newextension'])) {
|
|
foreach($_GET['newextension'] as $key => $value) {
|
|
if($newextension1 = trim($value)) {
|
|
if(C::t('forum_attachtype')->count_by_extension_fid($newextension1, 0)) {
|
|
cpmsg('attachtypes_duplicate', '', 'error');
|
|
}
|
|
C::t('forum_attachtype')->insert(array(
|
|
'extension' => $newextension1,
|
|
'maxsize' => $_GET['newmaxsize'][$key] * 1024,
|
|
'fid' => 0
|
|
));
|
|
}
|
|
}
|
|
}
|
|
|
|
updatecache('attachtype');
|
|
cpmsg('attachtypes_succeed', 'action=misc&operation=attachtype', 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($operation == 'cron') {
|
|
|
|
if(empty($_GET['edit']) && empty($_GET['run'])) {
|
|
|
|
if(!submitcheck('cronssubmit')) {
|
|
|
|
shownav('tools', 'misc_cron');
|
|
showsubmenu('nav_misc_cron');
|
|
showtips('misc_cron_tips');
|
|
showformheader('misc&operation=cron');
|
|
showtableheader('', 'fixpadding');
|
|
showsubtitle(array('', 'name', 'available', 'type', 'time', 'misc_cron_last_run', 'misc_cron_next_run', ''));
|
|
|
|
$query = DB::query("SELECT * FROM ".DB::table('common_cron')." ORDER BY type DESC");
|
|
while($cron = DB::fetch($query)) {
|
|
$disabled = $cron['weekday'] == -1 && $cron['day'] == -1 && $cron['hour'] == -1 && $cron['minute'] == '' ? 'disabled' : '';
|
|
|
|
if($cron['day'] > 0 && $cron['day'] < 32) {
|
|
$cron['time'] = cplang('misc_cron_permonth').$cron['day'].cplang('misc_cron_day');
|
|
} elseif($cron['weekday'] >= 0 && $cron['weekday'] < 7) {
|
|
$cron['time'] = cplang('misc_cron_perweek').cplang('misc_cron_week_day_'.$cron['weekday']);
|
|
} elseif($cron['hour'] >= 0 && $cron['hour'] < 24) {
|
|
$cron['time'] = cplang('misc_cron_perday');
|
|
} else {
|
|
$cron['time'] = cplang('misc_cron_perhour');
|
|
}
|
|
|
|
$cron['time'] .= $cron['hour'] >= 0 && $cron['hour'] < 24 ? sprintf('%02d', $cron[hour]).cplang('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'].cplang('misc_cron_minute');
|
|
} else {
|
|
$cron['time'] .= '00'.cplang('misc_cron_minute');
|
|
}
|
|
|
|
$cron['lastrun'] = $cron['lastrun'] ? dgmdate($cron['lastrun'], $_G['setting']['dateformat']."<\b\\r />".$_G['setting']['timeformat']) : '<b>N/A</b>';
|
|
$cron['nextcolor'] = $cron['nextrun'] && $cron['nextrun'] + $_G['setting']['timeoffset'] * 3600 < TIMESTAMP ? 'style="color: #ff0000"' : '';
|
|
$cron['nextrun'] = $cron['nextrun'] ? dgmdate($cron['nextrun'], $_G['setting']['dateformat']."<\b\\r />".$_G['setting']['timeformat']) : '<b>N/A</b>';
|
|
$cron['run'] = $cron['available'];
|
|
$efile = explode(':', $cron['filename']);
|
|
if(count($efile) > 1 && !in_array($efile[0], $_G['setting']['plugins']['available'])) {
|
|
$cron['run'] = 0;
|
|
}
|
|
|
|
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>",
|
|
cplang($cron['type'] == 'system' ? 'inbuilt' : ($cron['type'] == 'plugin' ? 'plugin' : 'custom')),
|
|
$cron[time],
|
|
$cron[lastrun],
|
|
$cron[nextrun],
|
|
"<a href=\"".ADMINSCRIPT."?action=misc&operation=cron&edit=$cron[cronid]\" class=\"act\">$lang[edit]</a><br />".
|
|
($cron['run'] ? " <a href=\"".ADMINSCRIPT."?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(
|
|
cplang('add_new'),
|
|
'<input type="text" class="txt" name="newname" value="" size="20" />'
|
|
));
|
|
showsubmit('cronssubmit', 'submit', 'del');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
if($ids = dimplode($_GET['delete'])) {
|
|
DB::delete('common_cron', "cronid IN ($ids) AND type='user'");
|
|
}
|
|
|
|
if(is_array($_GET['namenew'])) {
|
|
foreach($_GET['namenew'] as $id => $name) {
|
|
$newcron = array(
|
|
'name' => dhtmlspecialchars($_GET['namenew'][$id]),
|
|
'available' => $_GET['availablenew'][$id]
|
|
);
|
|
if(empty($_GET['availablenew'][$id])) {
|
|
$newcron['nextrun'] = '0';
|
|
}
|
|
DB::update('common_cron', $newcron, "cronid='$id'");
|
|
}
|
|
}
|
|
|
|
if($newname = trim($_GET['newname'])) {
|
|
DB::insert('common_cron', array(
|
|
'name' => dhtmlspecialchars($newname),
|
|
'type' => 'user',
|
|
'available' => '0',
|
|
'weekday' => '-1',
|
|
'day' => '-1',
|
|
'hour' => '-1',
|
|
'minute' => '',
|
|
'nextrun' => $_G['timestamp'],
|
|
));
|
|
}
|
|
|
|
$query = DB::query("SELECT cronid, filename FROM ".DB::table('common_cron'));
|
|
while($cron = DB::fetch($query)) {
|
|
$efile = explode(':', $cron['filename']);
|
|
$pluginid = '';
|
|
if(count($efile) > 1 && ispluginkey($efile[0])) {
|
|
$pluginid = $efile[0];
|
|
$cron['filename'] = $efile[1];
|
|
}
|
|
if(!$pluginid) {
|
|
if(!file_exists(DISCUZ_ROOT.'./source/include/cron/'.$cron['filename'])) {
|
|
DB::update('common_cron', array(
|
|
'available' => '0',
|
|
'nextrun' => '0',
|
|
), "cronid='$cron[cronid]'");
|
|
}
|
|
} else {
|
|
if(!file_exists(DISCUZ_ROOT.'./source/plugin/'.$pluginid.'/cron/'.$cron['filename'])) {
|
|
DB::delete('common_cron', "cronid='$cron[cronid]'");
|
|
}
|
|
}
|
|
}
|
|
|
|
updatecache('setting');
|
|
cpmsg('crons_succeed', 'action=misc&operation=cron', 'succeed');
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$cronid = empty($_GET['run']) ? $_GET['edit'] : $_GET['run'];
|
|
$cron = DB::fetch_first("SELECT * FROM ".DB::table('common_cron')." WHERE cronid='$cronid'");
|
|
if(!$cron) {
|
|
cpmsg('cron_not_found', '', 'error');
|
|
}
|
|
$cron['filename'] = str_replace(array('..', '/', '\\'), array('', '', ''), $cron['filename']);
|
|
$cronminute = str_replace("\t", ',', $cron['minute']);
|
|
$cron['minute'] = explode("\t", $cron['minute']);
|
|
|
|
if(!empty($_GET['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 = $_GET['weekdaynew'] != -1 ? -1 : $_GET['daynew'];
|
|
if(strpos($_GET['minutenew'], ',') !== FALSE) {
|
|
$minutenew = explode(',', $_GET['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($_GET['minutenew']);
|
|
$minutenew = $minutenew >= 0 && $minutenew < 60 ? $minutenew : '';
|
|
}
|
|
|
|
$efile = explode(':', $_GET['filenamenew']);
|
|
if(substr($_GET['filenamenew'], -4) !== '.php') {
|
|
cpmsg('crons_filename_illegal', '', 'error');
|
|
}
|
|
|
|
$pluginid = '';
|
|
if(count($efile) > 1 && ispluginkey($efile[0])) {
|
|
$pluginid = $efile[0];
|
|
$_GET['filenamenew'] = $efile[1];
|
|
}
|
|
|
|
if(!$pluginid) {
|
|
if(preg_match("/[\\\\\/\:\*\?\"\<\>\|]+/", $_GET['filenamenew'])) {
|
|
cpmsg('crons_filename_illegal', '', 'error');
|
|
} elseif(!is_readable(DISCUZ_ROOT.($cronfile = "./source/include/cron/{$_GET['filenamenew']}"))) {
|
|
cpmsg('crons_filename_invalid', '', 'error', array('cronfile' => $cronfile));
|
|
} elseif($_GET['weekdaynew'] == -1 && $daynew == -1 && $_GET['hournew'] == -1 && $minutenew === '') {
|
|
cpmsg('crons_time_invalid', '', 'error');
|
|
}
|
|
} else {
|
|
if(preg_match("/[\\\\\/\:\*\?\"\<\>\|]+/", $_GET['filenamenew'])) {
|
|
cpmsg('crons_filename_illegal', '', 'error');
|
|
} elseif(!is_readable(DISCUZ_ROOT.($cronfile = "./source/plugin/$pluginid/cron/{$_GET['filenamenew']}"))) {
|
|
cpmsg('crons_filename_invalid', '', 'error', array('cronfile' => $cronfile));
|
|
} elseif($_GET['weekdaynew'] == -1 && $daynew == -1 && $_GET['hournew'] == -1 && $minutenew === '') {
|
|
cpmsg('crons_time_invalid', '', 'error');
|
|
}
|
|
$_GET['filenamenew'] = $pluginid.':'.$_GET['filenamenew'];
|
|
}
|
|
|
|
DB::update('common_cron', array(
|
|
'weekday' => $_GET['weekdaynew'],
|
|
'day' => $daynew,
|
|
'hour' => $_GET['hournew'],
|
|
'minute' => $minutenew,
|
|
'filename' => trim($_GET['filenamenew']),
|
|
), "cronid='$cronid'");
|
|
|
|
discuz_cron::run($cronid);
|
|
|
|
cpmsg('crons_succeed', 'action=misc&operation=cron', 'succeed');
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$efile = explode(':', $cron['filename']);
|
|
if(count($efile) > 1 && ispluginkey($efile[0])) {
|
|
$cronfile = DISCUZ_ROOT.'./source/plugin/'.$efile[0].'/cron/'.$efile[1];
|
|
} else {
|
|
$cronfile = DISCUZ_ROOT."./source/include/cron/$cron[filename]";
|
|
}
|
|
|
|
if(substr($cronfile, -4) !== '.php' || !file_exists($cronfile)) {
|
|
cpmsg('crons_run_invalid', '', 'error', array('cronfile' => $cronfile));
|
|
} else {
|
|
discuz_cron::run($cron['cronid']);
|
|
cpmsg('crons_run_succeed', 'action=misc&operation=cron', 'succeed');
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} elseif($operation == 'focus') {
|
|
|
|
require_once libfile('function/post');
|
|
|
|
$focus = C::t('common_setting')->fetch('focus', true);
|
|
$focus_position_array = array(
|
|
array('portal', cplang('misc_focus_position_portal')),
|
|
array('home', cplang('misc_focus_position_home')),
|
|
array('member', cplang('misc_focus_position_member')),
|
|
array('forum', cplang('misc_focus_position_forum')),
|
|
array('group', cplang('misc_focus_position_group')),
|
|
array('search', cplang('misc_focus_position_search')),
|
|
array('userapp', cplang('misc_focus_position_userapp')),
|
|
);
|
|
|
|
if(!$do) {
|
|
|
|
if(!submitcheck('focussubmit')) {
|
|
|
|
shownav('extended', 'misc_focus');
|
|
showsubmenu('misc_focus', array(
|
|
array('config', 'misc&operation=focus&do=config', 0),
|
|
array('admin', 'misc&operation=focus', 1),
|
|
array('add', 'misc&operation=focus&do=add')
|
|
));
|
|
showtips('misc_focus_tips');
|
|
showformheader('misc&operation=focus');
|
|
showtableheader('admin', 'fixpadding');
|
|
showsubtitle(array('', 'subject', 'available', ''));
|
|
if(is_array($focus['data'])) {
|
|
foreach($focus['data'] as $k => $v) {
|
|
showtablerow('', array('class="td25"','', 'class="td25"', 'class="td25"'), array(
|
|
"<input type=\"checkbox\" class=\"checkbox\" name=\"delete[]\" value=\"$k\">",
|
|
'<a href="'.$v['url'].'" target="_blank">'.$v[subject].'</a>',
|
|
"<input type=\"checkbox\" class=\"checkbox\" name=\"available[$k]\" value=\"1\" ".($v['available'] ? 'checked' : '').">",
|
|
"<a href=\"".ADMINSCRIPT."?action=misc&operation=focus&do=edit&id=$k\" class=\"act\">$lang[edit]</a>",
|
|
));
|
|
}
|
|
}
|
|
|
|
showsubmit('focussubmit', 'submit', 'del');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
$newfocus = array();
|
|
$newfocus['title'] = $focus['title'];
|
|
$newfocus['data'] = array();
|
|
if(isset($focus['data']) && is_array($focus['data'])) foreach($focus['data'] as $k => $v) {
|
|
if(is_array($_GET['delete']) && in_array($k, $_GET['delete'])) {
|
|
unset($focus['data'][$k]);
|
|
} else {
|
|
$v['available'] = $_GET['available'][$k] ? 1 : 0;
|
|
$newfocus['data'][$k] = $v;
|
|
}
|
|
}
|
|
$newfocus['cookie'] = $focus['cookie'];
|
|
C::t('common_setting')->update('focus', $newfocus);
|
|
updatecache(array('setting', 'focus'));
|
|
|
|
cpmsg('focus_update_succeed', 'action=misc&operation=focus', 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($do == 'add') {
|
|
|
|
if(count($focus['data']) >= 10) {
|
|
cpmsg('focus_add_num_limit', 'action=misc&operation=focus', 'error');
|
|
}
|
|
|
|
if(!submitcheck('addsubmit')) {
|
|
|
|
shownav('extended', 'misc_focus');
|
|
showsubmenu('misc_focus', array(
|
|
array('config', 'misc&operation=focus&do=config', 0),
|
|
array('admin', 'misc&operation=focus', 0),
|
|
array('add', 'misc&operation=focus&do=add', 1)
|
|
));
|
|
showformheader('misc&operation=focus&do=add');
|
|
showtableheader('misc_focus_handadd', 'fixpadding');
|
|
showsetting('misc_focus_handurl', 'focus_url', '', 'text');
|
|
showsetting('misc_focus_handsubject' , 'focus_subject', '', 'text');
|
|
showsetting('misc_focus_handsummary', 'focus_summary', '', 'textarea');
|
|
showsetting('misc_focus_handimg', 'focus_image', '', 'text');
|
|
|
|
showsetting('misc_focus_position', array('focus_position', $focus_position_array), '', 'mcheckbox');
|
|
showsubmit('addsubmit', 'submit', '', '');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
if($_GET['focus_url'] && $_GET['focus_subject'] && $_GET['focus_summary']) {
|
|
|
|
if(is_array($focus['data'])) {
|
|
foreach($focus['data'] as $item) {
|
|
if($item['url'] == $_GET['focus_url']) {
|
|
cpmsg('focus_topic_exists', 'action=misc&operation=focus', 'error');
|
|
}
|
|
}
|
|
}
|
|
$focus['data'][] = array(
|
|
'url' => $_GET['focus_url'],
|
|
'available' => '1',
|
|
'subject' => cutstr($_GET['focus_subject'], 80),
|
|
'summary' => $_GET['focus_summary'],
|
|
'image' => $_GET['focus_image'],
|
|
'aid' => 0,
|
|
'filename' => basename($_GET['focus_image']),
|
|
'position' => $_GET['focus_position'],
|
|
);
|
|
C::t('common_setting')->update('focus', $focus);
|
|
updatecache(array('setting', 'focus'));
|
|
} else {
|
|
cpmsg('focus_topic_addrequired', '', 'error');
|
|
}
|
|
|
|
cpmsg('focus_add_succeed', 'action=misc&operation=focus', 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($do == 'edit') {
|
|
$id = intval($_GET['id']);
|
|
if(!$item = $focus['data'][$id]) {
|
|
cpmsg('focus_topic_noexists', 'action=misc&operation=focus', 'error');
|
|
}
|
|
if(!submitcheck('editsubmit')) {
|
|
|
|
shownav('extended', 'misc_focus');
|
|
showsubmenu('misc_focus', array(
|
|
array('config', 'misc&operation=focus&do=config', 0),
|
|
array('admin', 'misc&operation=focus', 0),
|
|
array('add', 'misc&operation=focus&do=add', 0)
|
|
));
|
|
|
|
showformheader('misc&operation=focus&do=edit&id='.$id);
|
|
showtableheader('misc_focus_edit', 'fixpadding');
|
|
showsetting('misc_focus_handurl', 'focus_url', $item['url'], 'text');
|
|
showsetting('misc_focus_handsubject' , 'focus_subject', $item['subject'], 'text');
|
|
showsetting('misc_focus_handsummary', 'focus_summary', $item['summary'], 'textarea');
|
|
showsetting('misc_focus_handimg', 'focus_image', $item['image'], 'text');
|
|
showsetting('misc_focus_position', array('focus_position', $focus_position_array), $item['position'], 'mcheckbox');
|
|
|
|
showsubmit('editsubmit', 'submit');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
if($_GET['focus_url'] && $_GET['focus_subject'] && $_GET['focus_summary']) {
|
|
if($item['type'] == 'thread') {
|
|
$_GET['focus_url'] = $item['url'];
|
|
} else {
|
|
$focus_filename = basename($_GET['focus_image']);
|
|
}
|
|
$item = array(
|
|
'url' => $_GET['focus_url'],
|
|
'tid' => $item['tid'],
|
|
'available' => '1',
|
|
'subject' => cutstr($_GET['focus_subject'], 80),
|
|
'summary' => $_GET['focus_summary'],
|
|
'image' => $_GET['focus_image'],
|
|
'aid' => 0,
|
|
'filename' => $focus_filename,
|
|
'position' => $_GET['focus_position'],
|
|
);
|
|
$focus['data'][$id] = $item;
|
|
C::t('common_setting')->update('focus', $focus);
|
|
updatecache(array('setting', 'focus'));
|
|
}
|
|
|
|
cpmsg('focus_edit_succeed', 'action=misc&operation=focus', 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($do == 'config') {
|
|
|
|
if(!submitcheck('confsubmit')) {
|
|
|
|
shownav('extended', 'misc_focus');
|
|
showsubmenu('misc_focus', array(
|
|
array('config', 'misc&operation=focus&do=config', 1),
|
|
array('admin', 'misc&operation=focus', 0),
|
|
array('add', 'misc&operation=focus&do=add', 0)
|
|
));
|
|
showformheader('misc&operation=focus&do=config');
|
|
showtableheader('config', 'fixpadding');
|
|
showsetting('misc_focus_area_title', 'focus_title', empty($focus['title']) ? cplang('misc_focus') : $focus['title'], 'text');
|
|
showsetting('misc_focus_area_cookie', 'focus_cookie', empty($focus['cookie']) ? 0 : $focus['cookie'], 'text');
|
|
showsubmit('confsubmit', 'submit');
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
$focus['title'] = trim($_GET['focus_title']);
|
|
$focus['title'] = empty($focus['title']) ? cplang('misc_focus') : $focus['title'];
|
|
$focus['cookie'] = trim(intval($_GET['focus_cookie']));
|
|
$focus['cookie'] = empty($focus['cookie']) ? 0 : $focus['cookie'];
|
|
C::t('common_setting')->update('focus', $focus);
|
|
updatecache(array('setting', 'focus'));
|
|
|
|
cpmsg('focus_conf_succeed', 'action=misc&operation=focus&do=config', 'succeed');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} elseif($operation == 'checkstat') {
|
|
if($statid && $statkey) {
|
|
$q = "statid=$statid&statkey=$statkey";
|
|
$q=rawurlencode(base64_encode($q));
|
|
$url = 'http://stat.discuz.com/stat_ins.php?action=checkstat&q='.$q;
|
|
$key = dfsockopen($url);
|
|
$newstatdisable = $key == $statkey ? 0 : 1;
|
|
if($newstatdisable != $statdisable) {
|
|
C::t('common_setting')->update('statdisable', $newstatdisable);
|
|
require_once libfile('function/cache');
|
|
updatecache('setting');
|
|
}
|
|
}
|
|
} elseif($operation == 'custommenu') {
|
|
|
|
if(!$do) {
|
|
|
|
if(!submitcheck('optionsubmit')) {
|
|
$mpp = 10;
|
|
$startlimit = ($page - 1) * $mpp;
|
|
$num = C::t('common_admincp_cmenu')->count_by_uid($_G['uid']);
|
|
$multipage = multi($num, $mpp, $page, ADMINSCRIPT.'?action=misc&operation=custommenu');
|
|
$optionlist = $ajaxoptionlist = '';
|
|
foreach(C::t('common_admincp_cmenu')->fetch_all_by_uid($_G['uid'], $startlimit, $mpp) as $custom) {
|
|
$custom['url'] = rawurldecode($custom['url']);
|
|
$optionlist .= showtablerow('', array('class="td25"', 'class="td28"', '', 'class="td26"'), array(
|
|
"<input type=\"checkbox\" class=\"checkbox\" name=\"delete[]\" value=\"$custom[id]\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"3\" name=\"displayordernew[$custom[id]]\" value=\"$custom[displayorder]\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"25\" name=\"titlenew[$custom[id]]\" value=\"".cplang($custom['title'])."\"><input type=\"hidden\" name=\"langnew[$custom[id]]\" value=\"$custom[title]\">",
|
|
"<input type=\"text\" class=\"txt\" size=\"40\" name=\"urlnew[$custom[id]]\" value=\"$custom[url]\">"
|
|
), TRUE);
|
|
$ajaxoptionlist .= '<li><a href="'.$custom['url'].'" target="'.(substr(rawurldecode($custom['url']), 0, 17) == ADMINSCRIPT.'?action=' ? 'main' : '_blank').'">'.cplang($custom['title']).'</a></li>';
|
|
}
|
|
|
|
echo <<<EOT
|
|
<script type="text/JavaScript">
|
|
var rowtypedata = [
|
|
[
|
|
[1,'', 'td25'],
|
|
[1,'<input type="text" class="txt" name="newdisplayorder[]" size="3">', 'td28'],
|
|
[1,'<input type="text" class="txt" name="newtitle[]" size="25">'],
|
|
[1,'<input type="text" class="txt" name="newurl[]" size="40">', 'td26']
|
|
]
|
|
];
|
|
</script>
|
|
EOT;
|
|
shownav('tools', 'nav_custommenu');
|
|
showsubmenu('nav_custommenu');
|
|
showformheader('misc&operation=custommenu');
|
|
showtableheader();
|
|
showsubtitle(array('', 'display_order', 'name', 'URL'));
|
|
echo $optionlist;
|
|
echo '<tr><td></td><td colspan="3"><div><a href="###" onclick="addrow(this, 0)" class="addtr">'.$lang['custommenu_add'].'</a></div></td></tr>';
|
|
showsubmit('optionsubmit', 'submit', 'del', '', $multipage);
|
|
showtablefooter();
|
|
showformfooter();
|
|
|
|
} else {
|
|
|
|
if($ids = dimplode($_GET['delete'])) {
|
|
C::t('common_admincp_cmenu')->delete($_GET['delete'], $_G['uid']);
|
|
}
|
|
|
|
if(is_array($_GET['titlenew'])) {
|
|
foreach($_GET['titlenew'] as $id => $title) {
|
|
$_GET['urlnew'][$id] = rawurlencode($_GET['urlnew'][$id]);
|
|
$title = dhtmlspecialchars($_GET['langnew'][$id] && cplang($_GET['langnew'][$id], false) ? $_GET['langnew'][$id] : $title);
|
|
$ordernew = intval($_GET['displayordernew'][$id]);
|
|
C::t('common_admincp_cmenu')->update($id, array('title' => $title, 'displayorder' => $ordernew, 'url' => dhtmlspecialchars($_GET['urlnew'][$id])));
|
|
}
|
|
}
|
|
|
|
if(is_array($_GET['newtitle'])) {
|
|
foreach($_GET['newtitle'] as $k => $v) {
|
|
$_GET['urlnew'][$k] = rawurlencode($_GET['urlnew'][$k]);
|
|
C::t('common_admincp_cmenu')->insert(array(
|
|
'title' => dhtmlspecialchars($v),
|
|
'displayorder' => intval($_GET['newdisplayorder'][$k]),
|
|
'url' => dhtmlspecialchars($_GET['newurl'][$k]),
|
|
'sort' => 1,
|
|
'uid' => $_G['uid'],
|
|
));
|
|
}
|
|
}
|
|
|
|
updatemenu('index');
|
|
cpmsg('custommenu_edit_succeed', 'action=misc&operation=custommenu', 'succeed');
|
|
|
|
}
|
|
|
|
} elseif($do == 'add') {
|
|
|
|
if($_GET['title'] && $_GET['url']) {
|
|
admincustom($_GET['title'], dhtmlspecialchars($_GET['url']), 1);
|
|
updatemenu('index');
|
|
cpmsg('custommenu_add_succeed', rawurldecode($_GET['url']), 'succeed', array('title' => cplang($_GET['title'])));
|
|
} else {
|
|
cpmsg('parameters_error', '', 'error');
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
?>
|