$b['filemtime']) ? 1 : -1;
}
function checkpermission($action, $break = 1) {
global $_G;
if(!isset($_G['config']['admincp'])) {
cpmsg('action_access_noexists', '', 'error');
} elseif($break && !$_G['config']['admincp'][$action]) {
cpmsg('action_noaccess_config', '', 'error');
} else {
return $_G['config']['admincp'][$action];
}
}
function upgradeinformation($status = 0) {
global $_G, $upgrade_step;
if(empty($upgrade_step)) {
return '';
}
$update = array();
$siteuniqueid = C::t('common_setting')->fetch('siteuniqueid');
$update['uniqueid'] = $siteuniqueid;
$update['curversion'] = $upgrade_step['curversion'];
$update['currelease'] = $upgrade_step['currelease'];
$update['upgradeversion'] = $upgrade_step['version'];
$update['upgraderelease'] = $upgrade_step['release'];
$update['step'] = $upgrade_step['step'] == 'dbupdate' ? 4 : $upgrade_step['step'];
$update['status'] = $status;
$data = '';
foreach($update as $key => $value) {
$data .= $key.'='.rawurlencode($value).'&';
}
$upgradeurl = 'ht'.'tp:/'.'/cus'.'tome'.'r.disc'.'uz.n'.'et/upg'.'rade'.'.p'.'hp?'.'os=dx&update='.rawurlencode(base64_encode($data)).'×tamp='.TIMESTAMP;
return '';
}
function isfounder($user = '') {
$user = empty($user) ? getglobal('member') : $user;
return $GLOBALS['admincp']->checkfounder($user);
}
function cplang($name, $replace = array(), $output = false) {
global $_G;
$ret = '';
if(!isset($_G['lang']['admincp'])) {
lang('admincp');
}
if(!isset($_G['lang']['admincp_menu'])) {
lang('admincp_menu');
}
if(!isset($_G['lang']['admincp_msg'])) {
lang('admincp_msg');
}
if(isset($_G['lang']['admincp'][$name])) {
$ret = $_G['lang']['admincp'][$name];
} elseif(isset($_G['lang']['admincp_menu'][$name])) {
$ret = $_G['lang']['admincp_menu'][$name];
} elseif(isset($_G['lang']['admincp_msg'][$name])) {
$ret = $_G['lang']['admincp_msg'][$name];
}
$ret = $ret ? $ret : ($replace === false ? '' : $name);
if($replace && is_array($replace)) {
$s = $r = array();
foreach($replace as $k => $v) {
$s[] = '{'.$k.'}';
$r[] = $v;
}
$ret = str_replace($s, $r, $ret);
}
$output && print($ret);
return $ret;
}
function admincustom($title, $url, $sort = 0) {
global $_G;
$url = ADMINSCRIPT.'?'.$url;
$id = C::t('common_admincp_cmenu')->fetch_id_by_uid_sort_url($_G['uid'], $sort, $url);
if($id) {
C::t('common_admincp_cmenu')->update($id, array('title' => $title, 'dateline' => $_G['timestamp']));
C::t('common_admincp_cmenu')->increase_clicks($id);
} else {
$id = C::t('common_admincp_cmenu')->insert(array(
'title' => $title,
'url' => $url,
'sort' => $sort,
'uid' => $_G['uid'],
'dateline' => $_G['timestamp'],
), true);
}
return $id;
}
function cpurl($type = 'parameter', $filters = array('sid', 'frames')) {
parse_str($_SERVER['QUERY_STRING'], $getarray);
$extra = $and = '';
foreach($getarray as $key => $value) {
if(!in_array($key, $filters)) {
@$extra .= $and.$key.($type == 'parameter' ? '%3D' : '=').rawurlencode($value);
$and = $type == 'parameter' ? '%26' : '&';
}
}
return $extra;
}
function showheader($key, $url) {
list($action, $operation, $do) = explode('_', $url.'___');
$url = $action.($operation ? '&operation='.$operation.($do ? '&do='.$do : '') : '');
$menuname = cplang('header_'.$key) != 'header_'.$key ? cplang('header_'.$key) : $key;
echo '
';
}
function shownav($header = '', $menu = '', $nav = '') {
global $action, $operation;
$title = 'cplog_'.$action.($operation ? '_'.$operation : '');
if(in_array($action, array('home', 'custommenu'))) {
$customtitle = '';
} elseif(cplang($title, false)) {
$customtitle = $title;
} elseif(cplang('nav_'.($header ? $header : 'index'), false)) {
$customtitle = 'nav_'.$header;
} else {
$customtitle = rawurlencode($nav ? $nav : ($menu ? $menu : ''));
}
$title = cplang('header_'.($header ? $header : 'index')).($menu ? ' » '.cplang($menu) : '').($nav ? ' » '.cplang($nav) : '');
$ctitle = cplang('header_'.($header ? $header : 'index'));
if($menu) {
$ctitle = cplang($menu);
}
if($nav) {
$ctitle = cplang($nav);
}
$addtomenu = " [+]";
$dtitle = str_replace("'", "\'", cplang('admincp_title').' - '.str_replace(' » ', ' - ', $title));
echo '';
}
function showmenu($key, $menus, $return = 0) {
global $_G;
$body = '';
if(is_array($menus)) {
foreach($menus as $menu) {
if($menu[0] && $menu[1]) {
list($action, $operation, $do) = explode('_', $menu[1]);
$menu[1] = $action.($operation ? '&operation='.$operation.($do ? '&do='.$do : '') : '');
$body .= ''.cplang($menu[0]).'';
} elseif($menu[0] && $menu[2]) {
if($menu[2] == 1) {
$id = 'M'.substr(md5($menu[0]), 0, 8);
$hide = false;
if(!empty($_G['cookie']['cpmenu_'.$id])) {
$hide = true;
}
$body .= ''.$menu[0].'
';
}
if($menu[2] == 2) {
$body .= '
';
}
}
}
}
if(!$return) {
echo '';
} else {
return $body;
}
}
function updatemenu($key) {
@include DISCUZ_ROOT.'./source/admincp/admincp_menu.php';
$s = showmenu($key, $menu[$key], 1);
echo '';
}
function cpmsg_error($message, $url = '', $extra = '', $halt = TRUE) {
return cpmsg($message, $url, 'error', array(), $extra, $halt);
}
function cpmsg($message, $url = '', $type = '', $values = array(), $extra = '', $halt = TRUE, $cancelurl = '') {
global $_G;
$vars = explode(':', $message);
$values['ADMINSCRIPT'] = ADMINSCRIPT;
if(count($vars) == 2) {
$message = lang('plugin/'.$vars[0], $vars[1], $values);
} else {
$message = cplang($message, $values);
}
switch($type) {
case 'download':
case 'succeed': $classname = 'infotitle2';break;
case 'error': $classname = 'infotitle3';break;
case 'loadingform': case 'loading': $classname = 'infotitle1';break;
default: $classname = 'marginbot normal';break;
}
if($url) {
$url = substr($url, 0, 5) == 'http:' ? $url : ADMINSCRIPT.'?'.$url;
}
$message = "$message
";
$url .= $url && !empty($_GET['scrolltop']) ? '&scrolltop='.intval($_GET['scrolltop']) : '';
if($type == 'form') {
$message = "
";
} elseif($type == 'loadingform') {
$message = "
';
} else {
$message .= $extra.($type == 'loading' ? '' : '');
if($url) {
if($type == 'button') {
$message = "
$message
";
} else {
$message .= '
'.cplang($type == 'download' ? 'message_download' : 'message_redirect').'
';
$timeout = $type != 'loading' ? 3000 : 1000;
$message .= "";
}
} elseif($type != 'succeed') {
$message .= ''.
"".
'
';
}
}
if($halt) {
echo ''.cplang('discuz_message').'
'.$message.'
';
exit();
} else {
echo ''.$message.'
';
}
}
function cpheader() {
global $_G;
if(!defined('DISCUZ_CP_HEADER_OUTPUT')) {
define('DISCUZ_CP_HEADER_OUTPUT', true);
} else {
return true;
}
$IMGDIR = $_G['style']['imgdir'];
$STYLEID = $_G['setting']['styleid'];
$VERHASH = $_G['style']['verhash'];
$frame = getgpc('frame') != 'no' ? 1 : 0;
$charset = CHARSET;
$basescript = ADMINSCRIPT;
echo <<
EOT;
if(empty($_G['inajax'])) {
register_shutdown_function('cpfooter');
}
}
function showsubmenu($title, $menus = array(), $right = '', $replace = array()) {
if(empty($menus)) {
$s = '
'.$right.'
'.cplang($title, $replace).'
';
} elseif(is_array($menus)) {
$s = '
'.$right.'
'.cplang($title, $replace).'
';
foreach($menus as $k => $menu) {
if(is_array($menu[0])) {
$s .= '';
} else {
$s .= '- '.cplang($menu[0]).'
';
}
}
$s .= '
';
}
echo !empty($menus) ? '
'.$s.'
' : $s;
}
function showsubmenusteps($title, $menus = array(), $mleft = array(), $mright = array()) {
$s = '
'.($title ? '
'.cplang($title).'
' : '');
if(is_array($mleft)) {
$s .= '
';
}
if(is_array($menus)) {
$s .= '
';
$i = 0;
foreach($menus as $menu) {
$i++;
$s .= '- '.$i.'.'.cplang($menu[0]).'
';
}
$s .= '
';
}
if(is_array($mright)) {
$s .= '
';
}
$s .= '
';
echo $s;
}
function showsubmenuanchors($title, $menus = array(), $right = '') {
if(!$title || !$menus || !is_array($menus)) {
return;
}
echo <<
var currentAnchor = '$GLOBALS[anchor]';
EOT;
$s = ''.$right.'
'.cplang($title).'
';
$s .= '';
$s .= '';
echo !empty($menus) ? ''.$s.'
' : $s;
}
function showtips($tips, $id = 'tips', $display = TRUE, $title = '') {
$tips = cplang($tips);
$tips = preg_replace('#\s*#i', '', $tips);
$tmp = explode('', substr($tips, 4, -5));
if(count($tmp) > 4) {
$tips = ''.$tmp[0].''.$tmp[1].''.cplang('tips_all').'...';
foreach($tmp AS $k => $v) {
if($k > 1) {
$tips .= ''.$v.'';
}
}
}
unset($tmp);
$title = $title ? $title : 'tips';
showtableheader($title, '', 'id="'.$id.'"'.(!$display ? ' style="display: none;"' : ''), 0);
showtablerow('', 'class="tipsblock" s="1"', '');
showtablefooter();
}
function showformheader($action, $extra = '', $name = 'cpform', $method = 'post') {
global $_G;
$anchor = isset($_GET['anchor']) ? dhtmlspecialchars($_GET['anchor']) : '';
echo ''."\n";
if($scrolltop = intval(getgpc('scrolltop'))) {
echo '';
}
}
function cpfooter() {
global $_G, $admincp;
if(defined('FOOTERDISABLED')) {
exit;
}
require_once DISCUZ_ROOT.'./source/discuz_version.php';
$version = DISCUZ_VERSION;
$charset = CHARSET;
echo "\n ";
if(!empty($_GET['highlight'])) {
$kws = explode(' ', $_GET['highlight']);
echo '';
}
if(defined('DISCUZ_DEBUG') && DISCUZ_DEBUG && @include(libfile('function/debug'))) {
function_exists('debugmessage') && debugmessage();
}
echo "\n\n";
}
if(!function_exists('ajaxshowheader')) {
function ajaxshowheader() {
global $_G;
ob_end_clean();
@header("Expires: -1");
@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
@header("Pragma: no-cache");
header("Content-type: application/xml");
echo "\n';
exit();
}
}
function showimportdata() {
showsetting('import_type', array('importtype', array(
array('file', cplang('import_type_file'), array('importfile' => '', 'importtxt' => 'none')),
array('txt', cplang('import_type_txt'), array('importfile' => 'none', 'importtxt' => ''))
)), 'file', 'mradio');
showtagheader('tbody', 'importfile', TRUE);
showsetting('import_file', 'importfile', '', 'file');
showtagfooter('tbody');
showtagheader('tbody', 'importtxt');
showsetting('import_txt', 'importtxt', '', 'textarea');
showtagfooter('tbody');
}
function getimportdata($name = '', $addslashes = 0, $ignoreerror = 0) {
global $_G;
if($_GET['importtype'] == 'file') {
$data = @implode('', file($_FILES['importfile']['tmp_name']));
@unlink($_FILES['importfile']['tmp_name']);
} else {
if(!empty($_GET['importtxt'])) {
$data = $_GET['importtxt'];
} else {
$data = $GLOBALS['importtxt'];
}
}
require_once libfile('class/xml');
$xmldata = xml2array($data);
if(!is_array($xmldata) || !$xmldata) {
if(!$ignoreerror) {
cpmsg(cplang('import_data_invalid').cplang($data), '', 'error');
} else {
return array();
}
} else {
if($name && $name != $xmldata['Title']) {
if(!$ignoreerror) {
cpmsg(cplang('import_data_typeinvalid').cplang($data), '', 'error');
} else {
return array();
}
}
$data = exportarray($xmldata['Data'], 0);
}
if($addslashes) {
$data = daddslashes($data, 1);
}
return $data;
}
function exportdata($name, $filename, $data) {
global $_G;
require_once libfile('class/xml');
$root = array(
'Title' => $name,
'Version' => $_G['setting']['version'],
'Time' => dgmdate(TIMESTAMP, 'Y-m-d H:i'),
'From' => $_G['setting']['bbname'].' ('.$_G['siteurl'].')',
'Data' => exportarray($data, 1)
);
$filename = strtolower(str_replace(array('!', ' '), array('', '_'), $name)).'_'.$filename.'.xml';
$plugin_export = array2xml($root, 1);
ob_end_clean();
dheader('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
dheader('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
dheader('Cache-Control: no-cache, must-revalidate');
dheader('Pragma: no-cache');
dheader('Content-Encoding: none');
dheader('Content-Length: '.strlen($plugin_export));
dheader('Content-Disposition: attachment; filename='.$filename);
dheader('Content-Type: text/xml');
echo $plugin_export;
define('FOOTERDISABLED' , 1);
exit();
}
function exportarray($array, $method) {
$tmp = $array;
if($method) {
foreach($array as $k => $v) {
if(is_array($v)) {
$tmp[$k] = exportarray($v, 1);
} else {
$uv = unserialize($v);
if($uv && is_array($uv)) {
$tmp['__'.$k] = exportarray($uv, 1);
unset($tmp[$k]);
} else {
$tmp[$k] = $v;
}
}
}
} else {
foreach($array as $k => $v) {
if(is_array($v)) {
if(substr($k, 0, 2) == '__') {
$tmp[substr($k, 2)] = serialize(exportarray($v, 0));
unset($tmp[$k]);
} else {
$tmp[$k] = exportarray($v, 0);
}
} else {
$tmp[$k] = $v;
}
}
}
return $tmp;
}
function getwheres($intkeys, $strkeys, $randkeys, $likekeys, $pre='') {
$wherearr = array();
$urls = array();
foreach ($intkeys as $var) {
$value = isset($_GET[$var])?$_GET[$var]:'';
if(strlen($value)) {
$urls[] = "$var=$value";
$var = addslashes($var);
$wherearr[] = "{$pre}{$var}='".intval($value)."'";
}
}
foreach ($strkeys as $var) {
$value = isset($_GET[$var])?trim($_GET[$var]):'';
if(strlen($value)) {
$urls[] = "$var=".rawurlencode($value);
$var = addslashes($var);
$value = addslashes($value);
$wherearr[] = "{$pre}{$var}='$value'";
}
}
foreach ($randkeys as $vars) {
$value1 = isset($_GET[$vars[1].'1'])?$vars[0]($_GET[$vars[1].'1']):'';
$value2 = isset($_GET[$vars[1].'2'])?$vars[0]($_GET[$vars[1].'2']):'';
if($value1) {
$urls[] = "{$vars[1]}1=".rawurlencode($_GET[$vars[1].'1']);
$vars[1] = addslashes($vars[1]);
$value1 = addslashes($value1);
$wherearr[] = "{$pre}{$vars[1]}>='$value1'";
}
if($value2) {
$wherearr[] = "{$pre}{$vars[1]}<='$value2'";
$vars[2] = addslashes($vars[2]);
$value2 = addslashes($value2);
$urls[] = "{$vars[1]}2=".rawurlencode($_GET[$vars[1].'2']);
}
}
foreach ($likekeys as $var) {
$value = isset($_GET[$var])?stripsearchkey($_GET[$var]):'';
if(strlen($value)>1) {
$urls[] = "$var=".rawurlencode($_GET[$var]);
$var = addslashes($var);
$value = addslashes($value);
$wherearr[] = "{$pre}{$var} LIKE BINARY '%$value%'";
}
}
return array('wherearr'=>$wherearr, 'urls'=>$urls);
}
function getorders($alloworders, $default, $pre='') {
$orders = array('sql'=>'', 'urls'=>array());
if(empty($_GET['orderby']) || !in_array($_GET['orderby'], $alloworders)) {
$_GET['orderby'] = $default;
if(empty($_GET['ordersc'])) $_GET['ordersc'] = 'desc';
}
$orders['sql'] = " ORDER BY {$pre}$_GET[orderby] ";
$orders['urls'][] = "orderby=$_GET[orderby]";
if(!empty($_GET['ordersc']) && $_GET['ordersc'] == 'desc') {
$orders['urls'][] = 'ordersc=desc';
$orders['sql'] .= ' DESC ';
} else {
$orders['urls'][] = 'ordersc=asc';
}
return $orders;
}
function blog_replynum_stat($start, $perpage) {
global $_G;
$next = false;
$updates = array();
$query = C::t('home_blog')->range($start, $perpage);
foreach($query as $value) {
$next = true;
$count = C::t('home_comment')->count_by_id_idtype($value['blogid'], 'blogid');
if($count != $value['replynum']) {
$updates[$value['blogid']] = $count;
}
}
if(empty($updates)) return $next;
$nums = renum($updates);
foreach ($nums[0] as $count) {
C::t('home_blog')->update($nums[1][$count], array('replynum' => $count));
}
return $next;
}
function space_friendnum_stat($start, $perpage) {
global $_G;
$next = false;
$updates = array();
foreach(C::t('common_member_count')->range($start,$perpage) as $uid => $value) {
$next = true;
$count = C::t('home_friend')->count_by_uid($value['uid']);
if($count != $value['friends']) {
$updates[$value['uid']] = $count;
}
}
if(empty($updates)) return $next;
$nums = renum($updates);
foreach ($nums[0] as $count) {
C::t('common_member_count')->update($nums[1][$count], array('friends' => $count));
}
return $next;
}
function album_picnum_stat($start, $perpage) {
global $_G;
$next = false;
$updates = array();
$query = C::t('home_album')->range($start, $perpage);
foreach($query as $value) {
$next = true;
$count = C::t('home_pic')->check_albumpic($value['albumid']);
if($count != $value['picnum']) {
$updates[$value['albumid']] = $count;
}
}
if(empty($updates)) return $next;
$nums = renum($updates);
foreach ($nums[0] as $count) {
C::t('home_album')->update($nums[1][$count], array('picnum' => $count));
}
return $next;
}
function get_custommenu() {
global $_G;
$custommenu = array();
foreach(C::t('common_admincp_cmenu')->fetch_all_by_uid($_G['uid']) as $custom) {
$custom['url'] = substr(rawurldecode($custom['url']), strlen(ADMINSCRIPT) + 8);
$custommenu[] = array($custom['title'], $custom['url']);
}
return $custommenu;
}
function get_pluginsetting($type) {
$pluginsetting = $pluginvalue = array();
@include_once DISCUZ_ROOT.'./data/sysdata/cache_pluginsetting.php';
$pluginsetting = isset($pluginsetting[$type]) ? $pluginsetting[$type] : array();
$varids = array();
foreach($pluginsetting as $v) {
foreach($v['setting'] as $varid => $var) {
$varids[] = $varid;
}
}
if($varids) {
foreach(C::t('common_pluginvar')->fetch_all($varids) as $plugin) {
$values = (array)dunserialize($plugin['value']);
foreach($values as $id => $value) {
$pluginvalue[$id][$plugin['pluginvarid']] = $value;
}
}
}
return array($pluginsetting, $pluginvalue);
}
function set_pluginsetting($pluginvars) {
foreach($pluginvars as $varid => $value) {
$pluginvar = C::t('common_pluginvar')->fetch($varid);
$valuenew = dunserialize($pluginvar['value']);
$valuenew = is_array($valuenew) ? $valuenew : array();
foreach($value as $k => $v) {
$valuenew[$k] = $v;
}
C::t('common_pluginvar')->update($varid, array('value' => serialize($valuenew)));
}
updatecache('plugin');
}
function checkformulaperm($formula) {
$formula = preg_replace('/(\{([\d\.\-]+?)\})/', "'\\1'", $formula);
return checkformulasyntax(
$formula,
array('+', '-', '*', '/', '(', ')', '<', '=', '>', '!', 'and', 'or', ' ', '{', '}', "'"),
array('regdate', 'regday', 'regip', 'lastip', 'buyercredit', 'sellercredit', 'digestposts', 'posts', 'threads', 'oltime', 'extcredits[1-8]', 'field[\d]+')
);
}
function getposttableselect() {
global $_G;
loadcache('posttable_info');
if(!empty($_G['cache']['posttable_info']) && is_array($_G['cache']['posttable_info'])) {
$posttableselect = '';
} else {
$posttableselect = '';
}
return $posttableselect;
}
function rewritedata($alldata = 1) {
global $_G;
$data = array();
if(!$alldata) {
if(in_array('portal_topic', $_G['setting']['rewritestatus'])) {
$data['search']['portal_topic'] = "/".$_G['domain']['pregxprw']['portal']."\?mod\=topic&(amp;)?topic\=([^#]+?)?\"([^\>]*)\>/";
$data['replace']['portal_topic'] = 'rewriteoutput(\'portal_topic\', 0, $matches[1], $matches[3], $matches[4])';
}
if(in_array('portal_article', $_G['setting']['rewritestatus'])) {
$data['search']['portal_article'] = "/".$_G['domain']['pregxprw']['portal']."\?mod\=view&(amp;)?aid\=(\d+)(&page\=(\d+))?\"([^\>]*)\>/";
$data['replace']['portal_article'] = 'rewriteoutput(\'portal_article\', 0, $matches[1], $matches[3], $matches[5], $matches[6])';
}
if(in_array('forum_forumdisplay', $_G['setting']['rewritestatus'])) {
$data['search']['forum_forumdisplay'] = "/".$_G['domain']['pregxprw']['forum']."\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&page\=(\d+))?\"([^\>]*)\>/";
$data['replace']['forum_forumdisplay'] = 'rewriteoutput(\'forum_forumdisplay\', 0, $matches[1], $matches[3], $matches[5], $matches[6])';
}
if(in_array('forum_viewthread', $_G['setting']['rewritestatus'])) {
$data['search']['forum_viewthread'] = "/".$_G['domain']['pregxprw']['forum']."\?mod\=viewthread&(amp;)?tid\=(\d+)(&extra\=(page\%3D(\d+))?)?(&page\=(\d+))?\"([^\>]*)\>/";
$data['replace']['forum_viewthread'] = 'rewriteoutput(\'forum_viewthread\', 0, $matches[1], $matches[3], $matches[8], $matches[6], $matches[9])';
}
if(in_array('group_group', $_G['setting']['rewritestatus'])) {
$data['search']['group_group'] = "/".$_G['domain']['pregxprw']['forum']."\?mod\=group&(amp;)?fid\=(\d+)(&page\=(\d+))?\"([^\>]*)\>/";
$data['replace']['group_group'] = 'rewriteoutput(\'group_group\', 0, $matches[1], $matches[3], $matches[5], $matches[6])';
}
if(in_array('home_space', $_G['setting']['rewritestatus'])) {
$data['search']['home_space'] = "/".$_G['domain']['pregxprw']['home']."\?mod=space&(amp;)?(uid\=(\d+)|username\=([^&]+?))\"([^\>]*)\>/";
$data['replace']['home_space'] = 'rewriteoutput(\'home_space\', 0, $matches[1], $matches[4], $matches[5], $matches[6])';
}
if(in_array('home_blog', $_G['setting']['rewritestatus'])) {
$data['search']['home_blog'] = "/".$_G['domain']['pregxprw']['home']."\?mod=space&(amp;)?uid\=(\d+)&(amp;)?do=blog&(amp;)?id=(\d+)\"([^\>]*)\>/";
$data['replace']['home_blog'] = 'rewriteoutput(\'home_blog\', 0, $matches[1], $matches[3], $matches[6], $matches[7])';
}
if(in_array('forum_archiver', $_G['setting']['rewritestatus'])) {
$data['search']['forum_archiver'] = "/]*)\>/";
$data['replace']['forum_archiver'] = 'rewriteoutput(\'forum_archiver\', 0, $matches[1], $matches[2], $matches[4], $matches[5])';
}
if(in_array('plugin', $_G['setting']['rewritestatus'])) {
$data['search']['plugin'] = "/]*)\>/";
$data['replace']['plugin'] = 'rewriteoutput(\'plugin\', 0, $matches[1], $matches[2], $matches[3], $matches[4], $matches[5])';
}
} else {
$data['rulesearch']['portal_topic'] = 'topic-{name}.html';
$data['rulereplace']['portal_topic'] = 'portal.php?mod=topic&topic={name}';
$data['rulevars']['portal_topic']['{name}'] = '(.+)';
$data['rulesearch']['portal_article'] = 'article-{id}-{page}.html';
$data['rulereplace']['portal_article'] = 'portal.php?mod=view&aid={id}&page={page}';
$data['rulevars']['portal_article']['{id}'] = '([0-9]+)';
$data['rulevars']['portal_article']['{page}'] = '([0-9]+)';
$data['rulesearch']['forum_forumdisplay'] = 'forum-{fid}-{page}.html';
$data['rulereplace']['forum_forumdisplay'] = 'forum.php?mod=forumdisplay&fid={fid}&page={page}';
$data['rulevars']['forum_forumdisplay']['{fid}'] = '(\w+)';
$data['rulevars']['forum_forumdisplay']['{page}'] = '([0-9]+)';
$data['rulesearch']['forum_viewthread'] = 'thread-{tid}-{page}-{prevpage}.html';
$data['rulereplace']['forum_viewthread'] = 'forum.php?mod=viewthread&tid={tid}&extra=page\%3D{prevpage}&page={page}';
$data['rulevars']['forum_viewthread']['{tid}'] = '([0-9]+)';
$data['rulevars']['forum_viewthread']['{page}'] = '([0-9]+)';
$data['rulevars']['forum_viewthread']['{prevpage}'] = '([0-9]+)';
$data['rulesearch']['group_group'] = 'group-{fid}-{page}.html';
$data['rulereplace']['group_group'] = 'forum.php?mod=group&fid={fid}&page={page}';
$data['rulevars']['group_group']['{fid}'] = '([0-9]+)';
$data['rulevars']['group_group']['{page}'] = '([0-9]+)';
$data['rulesearch']['home_space'] = 'space-{user}-{value}.html';
$data['rulereplace']['home_space'] = 'home.php?mod=space&{user}={value}';
$data['rulevars']['home_space']['{user}'] = '(username|uid)';
$data['rulevars']['home_space']['{value}'] = '(.+)';
$data['rulesearch']['home_blog'] = 'blog-{uid}-{blogid}.html';
$data['rulereplace']['home_blog'] = 'home.php?mod=space&uid={uid}&do=blog&id={blogid}';
$data['rulevars']['home_blog']['{uid}'] = '([0-9]+)';
$data['rulevars']['home_blog']['{blogid}'] = '([0-9]+)';
$data['rulesearch']['forum_archiver'] = '{action}-{value}.html';
$data['rulereplace']['forum_archiver'] = 'index.php?action={action}&value={value}';
$data['rulevars']['forum_archiver']['{action}'] = '(fid|tid)';
$data['rulevars']['forum_archiver']['{value}'] = '([0-9]+)';
$data['rulesearch']['plugin'] = '{pluginid}-{module}.html';
$data['rulereplace']['plugin'] = 'plugin.php?id={pluginid}:{module}';
$data['rulevars']['plugin']['{pluginid}'] = '([a-z]+[a-z0-9_]*)';
$data['rulevars']['plugin']['{module}'] = '([a-z0-9_\-]+)';
}
return $data;
}
function siteftp_form($action) {
showformheader($action);
showtableheader('cloudaddons_ftp_setting');
showsetting('setting_attach_remote_enabled_ssl', 'siteftp[ssl]', '', 'radio');
showsetting('setting_attach_remote_ftp_host', 'siteftp[host]', '', 'text');
showsetting('setting_attach_remote_ftp_port', 'siteftp[port]', '21', 'text');
showsetting('setting_attach_remote_ftp_user', 'siteftp[username]', '', 'text');
showsetting('setting_attach_remote_ftp_pass', 'siteftp[password]', '', 'text');
showsetting('setting_attach_remote_ftp_pasv', 'siteftp[pasv]', 0, 'radio');
showsetting('setting_attach_ftp_dir', 'siteftp[attachdir]', '', 'text');
showsubmit('settingsubmit');
showtablefooter();
showformfooter();
}
function siteftp_check($siteftp, $dir) {
global $_G;
$siteftp['on'] = 1;
$siteftp['password'] = authcode($siteftp['password'], 'ENCODE', md5($_G['config']['security']['authkey']));
$ftp = & discuz_ftp::instance($siteftp);
$ftp->connect();
$ftp->upload(DISCUZ_ROOT.'./source/discuz_version.php', $dir.'/discuz_version.php');
if($ftp->error()) {
cpmsg('setting_ftp_remote_'.$ftp->error(), '', 'error');
}
if(!file_exists(DISCUZ_ROOT.'./'.$dir.'/discuz_version.php')) {
cpmsg('cloudaddons_ftp_path_error', '', 'error');
}
$ftp->ftp_delete($typedir.'/discuz_version.php');
$_G['siteftp'] = $ftp;
}
function siteftp_upload($readfile, $writefile) {
global $_G;
if(!isset($_G['siteftp'])) {
return;
}
$_G['siteftp']->upload($readfile, $writefile);
if($_G['siteftp']->error()) {
cpmsg('setting_ftp_remote_'.$_G['siteftp']->error(), '', 'error');
}
}
?>