$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 '
  • '.$menuname.'
  • '; } 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 = "
    ". "
    $message$extra
    ". "

      \n". ($cancelurl ? "" : ""). "


    "; } elseif($type == 'loadingform') { $message = "

    $message$extra
    ". '

    '.cplang('message_redirect').'


    '; } 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).'

    '; } 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"', '
      '.$tips.'
    '); showtablefooter(); } function showformheader($action, $extra = '', $name = 'cpform', $method = 'post') { global $_G; $anchor = isset($_GET['anchor']) ? dhtmlspecialchars($_GET['anchor']) : ''; echo '
    '. ''. ''. ''; } function showhiddenfields($hiddenfields = array()) { if(is_array($hiddenfields)) { foreach($hiddenfields as $key => $val) { $val = is_string($val) ? dhtmlspecialchars($val) : $val; echo "\n"; } } } function showtableheader($title = '', $classname = '', $extra = '', $titlespan = 15) { global $_G; $classname = str_replace(array('nobottom', 'notop'), array('nobdb', 'nobdt'), $classname); if(isset($_G['showsetting_multi'])) { if($_G['showsetting_multi'] == 0) { $extra .= ' style="width:'.($_G['showsetting_multicount'] * 270 + 20).'px"'; } else { return; } } echo "\n".''; if($title) { $span = $titlespan ? 'colspan="'.$titlespan.'"' : ''; echo "\n".''; showmultititle(1); } } function showmultititle($nofloat = 0) { global $_G; if(isset($_G['showtableheader_multi']) && $_G['showsetting_multi'] == 0) { $i = 0; $rows = ''; foreach($_G['showtableheader_multi'] as $row) { $i++; $rows .= '
    '.$row.'
    '; } if($nofloat) { echo ''; } else { echo ''; echo ''; } } } function showtagheader($tagname, $id, $display = FALSE, $classname = '') { global $_G; if(!empty($_G['showsetting_multi'])) { return; } echo '<'.$tagname.(!isset($_G['showsetting_multi']) && $classname ? " class=\"$classname\"" : '').' id="'.$id.'"'.($display ? '' : ' style="display: none"').'>'; } function showtitle($title, $extra = '', $multi = 1) { global $_G; if(!empty($_G['showsetting_multi'])) { return; } echo "\n".''; if($multi) { showmultititle(1); } } function showsubtitle($title = array(), $rowclass='header', $tdstyle=array()) { if(is_array($title)) { $subtitle = "\n"; foreach($title as $k => $v) { if($v !== NULL) { $subtitle .= ''.cplang($v).''; } } $subtitle .= ''; echo $subtitle; } } function showtablerow($trstyle = '', $tdstyle = array(), $tdtext = array(), $return = FALSE) { $rowswapclass = ''; if(!preg_match('/class\s*=\s*[\'"]([^\'"<>]+)[\'"]/i', $trstyle, $matches)) { $rowswapclass = is_array($tdtext) && count($tdtext) > 2 ? ' class="hover"' : ''; } else { if(is_array($tdtext) && count($tdtext) > 2) { $rowswapclass = " class=\"{$matches[1]} hover\""; $trstyle = preg_replace('/class\s*=\s*[\'"]([^\'"<>]+)[\'"]/i', '', $trstyle); } } $cells = "\n".''; if(isset($tdtext)) { if(is_array($tdtext)) { foreach($tdtext as $key => $td) { $cells .= ''.$td.''; } } else { $cells .= ''.$tdtext.''; } } $cells .= ''; if($return) { return $cells; } echo $cells; } function showsetting($setname, $varname, $value, $type = 'radio', $disabled = '', $hidden = 0, $comment = '', $extra = '', $setid = '', $nofaq = false) { global $_G; $s = "\n"; $check = array(); $noborder = false; if(substr($disabled, 0, 8) == 'noborder') { $disabled = trim(substr($disabled, 8)); $noborder = 'class="noborder" '; } $check['disabled'] = $disabled ? ($disabled == 'readonly' ? ' readonly' : ' disabled') : ''; $check['disabledaltstyle'] = $disabled ? ', 1' : ''; $nocomment = false; if(isset($_G['showsetting_multi'])) { $hidden = 0; if(is_array($varname)) { $varnameid = '_'.str_replace(array('[', ']'), '_', $varname[0]).'|'.$_G['showsetting_multi']; $varname[0] = preg_replace('/\w+new/', 'multinew['.$_G['showsetting_multi'].'][\\0]', $varname[0]); } else { $varnameid = '_'.str_replace(array('[', ']'), '_', $varname).'|'.$_G['showsetting_multi']; $varname = preg_replace('/\w+new/', 'multinew['.$_G['showsetting_multi'].'][\\0]', $varname); } } else { $varnameid = ''; } if($type == 'radio') { $value ? $check['true'] = "checked" : $check['false'] = "checked"; $value ? $check['false'] = '' : $check['true'] = ''; $check['hidden1'] = $hidden ? ' onclick="$(\'hidden_'.$setname.'\').style.display = \'\';"' : ''; $check['hidden0'] = $hidden ? ' onclick="$(\'hidden_'.$setname.'\').style.display = \'none\';"' : ''; $onclick = $disabled && $disabled == 'readonly' ? ' onclick="return false"' : ($extra ? $extra : ''); $s .= '
      '. ' '.cplang('yes').''. ' '.cplang('no').''. '
    '; } elseif($type == 'text' || $type == 'password' || $type == 'number') { $s .= ''; } elseif($type == 'htmltext') { $id .= 'html'.random(2); $s .= '
    '.$value.'
    '; } elseif($type == 'file') { $s .= ''; } elseif($type == 'filetext') { $defaulttype = $value ? 1 : 0; $id = 'file'.random(2); $s .= ''. '
    '. ''.cplang('switch_upload').' '. ''.cplang('switch_url').''; } elseif($type == 'textarea') { $readonly = $disabled ? 'readonly' : ''; $s .= ""; } elseif($type == 'select') { $s .= ''; } elseif($type == 'mradio' || $type == 'mradio2') { $nocomment = $type == 'mradio2' && !isset($_G['showsetting_multi']) ? true : false; $addstyle = $nocomment ? ' style="float: left; width: 18%"' : ''; $ulstyle = $nocomment ? ' style="width: 790px"' : ''; if(is_array($varname)) { $radiocheck = array($value => ' checked'); $s .= ''; foreach($varname[1] as $varary) { if(is_array($varary) && !empty($varary)) { if(!array_key_exists(0, $varary)) { $varary = array_values($varary); } $onclick = ''; if(!isset($_G['showsetting_multi']) && !empty($varary[2])) { foreach($varary[2] as $ctrlid => $display) { $onclick .= '$(\''.$ctrlid.'\').style.display = \''.$display.'\';'; } } $onclick && $onclick = ' onclick="'.$onclick.'"'; $s .= ' '.$varary[1].''; } } $s .= ''; } } elseif($type == 'mcheckbox' || $type == 'mcheckbox2') { $nocomment = $type != 'mcheckbox2' && count($varname[1]) > 3 && !isset($_G['showsetting_multi']) ? true : false; $addstyle = $nocomment ? ' style="float: left;'.(empty($_G['showsetting_multirow']) ? ' width: 18%;overflow: hidden;' : '').'"' : ''; $ulstyle = $nocomment && empty($_G['showsetting_multirow']) ? ' style="width: 790px"' : ''; $s .= '
      '; foreach($varname[1] as $varary) { if(is_array($varary) && !empty($varary)) { if(!array_key_exists(0, $varary)) { $varary = array_values($varary); } $onclick = !isset($_G['showsetting_multi']) && !empty($varary[2]) ? ' onclick="$(\''.$varary[2].'\').style.display = $(\''.$varary[2].'\').style.display == \'none\' ? \'\' : \'none\';"' : ''; $checked = is_array($value) && in_array($varary[0], $value) ? ' checked' : ''; $s .= ' '.$varary[1].''; } } $s .= '
    '; } elseif($type == 'binmcheckbox') { $checkboxs = count($varname[1]); $value = sprintf('%0'.$checkboxs.'b', $value);$i = 1; $s .= '
      '; foreach($varname[1] as $key => $var) { if($var !== false) { $s .= ' '.$var.''; } $i++; } $s .= '
    '; } elseif($type == 'omcheckbox') { $nocomment = count($varname[1]) > 3 ? true : false; $addstyle = $nocomment ? 'style="float: left; width: 18%"' : ''; $ulstyle = $nocomment ? 'style="width: 790px"' : ''; $s .= '
      '; foreach($varname[1] as $varary) { if(is_array($varary) && !empty($varary)) { $checked = is_array($value) && $value[$varary[0]] ? ' checked' : ''; $s .= ' '.$varary[1].''; } } $s .= '
    '; } elseif($type == 'mselect') { $s .= ''; } elseif($type == 'color') { global $stylestuff; $preview_varname = str_replace('[', '_', str_replace(']', '', $varname)); $code = explode(' ', $value); $css = ''; for($i = 0; $i <= 1; $i++) { if($code[$i] != '') { if($code[$i]{0} == '#') { $css .= strtoupper($code[$i]).' '; } elseif(preg_match('/^(https?:)?\/\//i', $code[$i])) { $css .= 'url(\''.$code[$i].'\') '; } else { $css .= 'url(\''.$stylestuff['imgdir']['subst'].'/'.$code[$i].'\') '; } } } $background = trim($css); $colorid = ++$GLOBALS['coloridcount']; $s .= "\n". "\n$extra"; } elseif($type == 'calendar') { $s .= "\n"; } elseif(in_array($type, array('multiply', 'range', 'daterange'))) { $onclick = $type == 'daterange' ? ' onclick="showcalendar(event, this)"' : ''; if(isset($_G['showsetting_multi'])) { $varname[1] = preg_replace('/\w+new/', 'multinew['.$_G['showsetting_multi'].'][\\0]', $varname[1]); } $s .= "".($type == 'multiply' ? ' X ' : ' -- ').""; } else { $s .= $type; } $name = cplang($setname); $name .= $name && substr($name, -1) != ':' ? ':' : ''; $name = $disabled ? ''.$name.'' : $name; $setid = !$setid ? substr(md5($setname), 0, 4) : $setid; $setid = isset($_G['showsetting_multi']) ? 'S'.$setid : $setid; if(!empty($_G['showsetting_multirow'])) { if(empty($_G['showsetting_multirow_n'])) { echo '
    '; } echo ''; $_G['showsetting_multirow_n']++; if($_G['showsetting_multirow_n'] == 2) { if(empty($_G['showsetting_multirow_n'])) { echo ''; } $_G['showsetting_multirow_n'] = 0; } return; } if(!isset($_G['showsetting_multi'])) { if(!$nofaq) { $faqurl = 'http://faq.comsenz.com?type=admin&ver='.$_G['setting']['version'].'&action='.rawurlencode($_GET['action']).'&operation='.rawurlencode($_GET['operation']).'&key='.rawurlencode($setname); showtablerow($noborder.'onmouseover="setfaq(this, \'faq'.$setid.'\')"', 'colspan="2" class="td27" s="1"', $name.''); } else { showtablerow('', 'colspan="2" class="td27" s="1"', $name); } } else { if(empty($_G['showsetting_multijs'])) { $_G['setting_JS'] .= 'var ss = new Array();'; $_G['showsetting_multijs'] = 1; } if($_G['showsetting_multi'] == 0) { showtablerow('', array('class="td27"'), array('
    ')); $_G['setting_JS'] .= 'ss[\'D'.$setid.'\'] = new Array();'; } $name = preg_replace("/\r\n|\n|\r/", '\n', addcslashes($name, "'\\")); $_G['setting_JS'] .= 'ss[\'D'.$setid.'\'] += \'
    '.$name.'
    \';'; } if(!$nocomment && ($type != 'omcheckbox' || $varname[2] != 'isfloat')) { if(!isset($_G['showsetting_multi'])) { showtablerow('class="noborder" onmouseover="setfaq(this, \'faq'.$setid.'\')"', array('class="vtop rowform"', 'class="vtop tips2" s="1"'), array( $s, ($comment ? $comment : cplang($setname.'_comment', false)).($type == 'textarea' ? '
    '.cplang('tips_textarea') : ''). ($disabled ? '
    '.cplang($setname.'_disabled', false).'' : NULL) )); } else { if($_G['showsetting_multi'] == 0) { showtablerow('class="noborder"', array('class="vtop rowform" style="width:auto"'), array( '
    ' )); $_G['setting_JS'] .= 'ss[\''.$setid.'\'] = new Array();'; } $s = preg_replace("/\r\n|\n|\r/", '\n', addcslashes($s, "'\\")); $_G['setting_JS'] .= 'ss[\''.$setid.'\'] += \'
    '.$s.'
    \';'; } } else { showtablerow('class="noborder" onmouseover="setfaq(this, \'faq'.$setid.'\')"', array('colspan="2" class="vtop rowform"'), array($s)); } if($hidden) { showtagheader('tbody', 'hidden_'.$setname, $value, 'sub'); } } function showmulti() { global $_G; $_G['setting_JS'] .= <<'; if(is_array($items)) { foreach($items as $value => $item) { $list .= ' '.$item.''; } } $list .= ''; return $list; } function mcheckbox($name, $items = array(), $checked = array()) { $list = '
      '; if(is_array($items)) { foreach($items as $value => $item) { $list .= ' '.$item.''; } } $list .= '
    '; return $list; } function showsubmit($name = '', $value = 'submit', $before = '', $after = '', $floatright = '', $entersubmit = true) { global $_G; if(!empty($_G['showsetting_multi'])) { return; } $str = '
    '; $str .= $name && in_array($before, array('del', 'select_all', 'td')) ? '' : ''; $str .= ''; $str .= ''; echo $str.($name && $entersubmit ? '' : ''); } function showtagfooter($tagname) { global $_G; if(!empty($_G['showsetting_multi'])) { return; } echo ''; } function showtablefooter() { global $_G; if(!empty($_G['showsetting_multi'])) { return; } echo '
    '.cplang($title).'
    '.$rows.'
    '.cplang($title).'

    '.$name.'

    '.$s.'
    '.($before != 'td' ? ''; $str .= $floatright ? '
    '.$floatright.'
    ' : ''; $str .= '
    '; $str .= $before && !in_array($before, array('del', 'select_all', 'td')) ? $before.'  ' : ''; $str .= $name ? '' : ''; $after = $after == 'more_options' ? '' : $after; $str = $after ? $str.(($before && $before != 'del') || $name ? '  ' : '').$after : $str; $str .= '
    '."\n"; } function showformfooter() { global $_G; if(!empty($_G['setting_JS'])) { echo ''; } updatesession(); 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'); } } ?>