$val) $string[$key] = new_addslashes($val);
return $string;
}
/**
* 返回经stripslashes处理过的字符串或数组
* @param $string 需要处理的字符串或数组
* @return mixed
*/
function new_stripslashes($string) {
if(!is_array($string)) return stripslashes($string);
foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
return $string;
}
/**
* 返回经htmlspecialchars处理过的字符串或数组
* @param $obj 需要处理的字符串或数组
* @return mixed
*/
function new_html_special_chars($string) {
if(!is_array($string)) return htmlspecialchars($string);
foreach($string as $key => $val) $string[$key] = new_html_special_chars($val);
return $string;
}
/**
* 安全过滤函数
*
* @param $string
* @return string
*/
function safe_replace($string) {
$string = str_replace('%20','',$string);
$string = str_replace('%27','',$string);
$string = str_replace('%2527','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','"',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace('<','<',$string);
$string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
$string = str_replace('\\','',$string);
return $string;
}
/**
* 过滤ASCII码从0-28的控制字符
* @return String
*/
function trim_unsafe_control_chars($str) {
$rule = '/[' . chr ( 1 ) . '-' . chr ( 8 ) . chr ( 11 ) . '-' . chr ( 12 ) . chr ( 14 ) . '-' . chr ( 31 ) . ']*/';
return str_replace ( chr ( 0 ), '', preg_replace ( $rule, '', $str ) );
}
/**
* 格式化文本域内容
*
* @param $string 文本域内容
* @return string
*/
function trim_textarea($string) {
$string = nl2br ( str_replace ( ' ', ' ', $string ) );
return $string;
}
/**
* 将文本格式成适合js输出的字符串
* @param string $string 需要处理的字符串
* @param intval $isjs 是否执行字符串格式化,默认为执行
* @return string 处理后的字符串
*/
function format_js($string, $isjs = 1) {
$string = addslashes(str_replace(array("\r", "\n", "\t"), array('', '', ''), $string));
return $isjs ? 'document.write("'.$string.'");' : $string;
}
/**
* 转义 javascript 代码标记
*
* @param $str
* @return mixed
*/
function trim_script($str) {
if(is_array($str)){
foreach ($str as $key => $val){
$str[$key] = trim_script($val);
}
}else{
$str = preg_replace ( '/\<([\/]?)script([^\>]*?)\>/si', '<\\1script\\2>', $str );
$str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '<\\1iframe\\2>', $str );
$str = preg_replace ( '/\<([\/]?)frame([^\>]*?)\>/si', '<\\1frame\\2>', $str );
$str = preg_replace ( '/]]\>/si', ']] >', $str );
}
return $str;
}
/**
* 获取当前页面完整URL地址
*/
function get_url() {
$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
$php_self = $_SERVER['PHP_SELF'] ? safe_replace($_SERVER['PHP_SELF']) : safe_replace($_SERVER['SCRIPT_NAME']);
$path_info = isset($_SERVER['PATH_INFO']) ? safe_replace($_SERVER['PATH_INFO']) : '';
$relate_url = isset($_SERVER['REQUEST_URI']) ? safe_replace($_SERVER['REQUEST_URI']) : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.safe_replace($_SERVER['QUERY_STRING']) : $path_info);
return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;
}
/**
* 字符截取 支持UTF8/GBK
* @param $string
* @param $length
* @param $dot
*/
function str_cut($string, $length, $dot = '...') {
$strlen = strlen($string);
if($strlen <= $length) return $string;
$string = str_replace(array(' ',' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array('∵',' ', '&', '"', "'", '"', '"', '—', '<', '>', '·', '…'), $string);
$strcut = '';
if(strtolower(CHARSET) == 'utf-8') {
$length = intval($length-strlen($dot)-$length/3);
$n = $tn = $noc = 0;
while($n < strlen($string)) {
$t = ord($string[$n]);
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1; $n++; $noc++;
} elseif(194 <= $t && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif(224 <= $t && $t <= 239) {
$tn = 3; $n += 3; $noc += 2;
} elseif(240 <= $t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif(248 <= $t && $t <= 251) {
$tn = 5; $n += 5; $noc += 2;
} elseif($t == 252 || $t == 253) {
$tn = 6; $n += 6; $noc += 2;
} else {
$n++;
}
if($noc >= $length) {
break;
}
}
if($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
$strcut = str_replace(array('∵', '&', '"', "'", '"', '"', '—', '<', '>', '·', '…'), array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), $strcut);
} else {
$dotlen = strlen($dot);
$maxi = $length - $dotlen - 1;
$current_str = '';
$search_arr = array('&',' ', '"', "'", '"', '"', '—', '<', '>', '·', '…','∵');
$replace_arr = array('&',' ', '"', ''', '“', '”', '—', '<', '>', '·', '…',' ');
$search_flip = array_flip($search_arr);
for ($i = 0; $i < $maxi; $i++) {
$current_str = ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
if (in_array($current_str, $search_arr)) {
$key = $search_flip[$current_str];
$current_str = str_replace($search_arr[$key], $replace_arr[$key], $current_str);
}
$strcut .= $current_str;
}
}
return $strcut.$dot;
}
/**
* 获取请求ip
*
* @return ip地址
*/
function ip() {
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$ip = $_SERVER['REMOTE_ADDR'];
}
return preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
}
function get_cost_time() {
$microtime = microtime ( TRUE );
return $microtime - SYS_START_TIME;
}
/**
* 程序执行时间
*
* @return int 单位ms
*/
function execute_time() {
$stime = explode ( ' ', SYS_START_TIME );
$etime = explode ( ' ', microtime () );
return number_format ( ($etime [1] + $etime [0] - $stime [1] - $stime [0]), 6 );
}
/**
* 产生随机字符串
*
* @param int $length 输出长度
* @param string $chars 可选的 ,默认为 0123456789
* @return string 字符串
*/
function random($length, $chars = '0123456789') {
$hash = '';
$max = strlen($chars) - 1;
for($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
/**
* 将字符串转换为数组
*
* @param string $data 字符串
* @return array 返回数组格式,如果,data为空,则返回空数组
*/
function string2array($data) {
if($data == '') return array();
@eval("\$array = $data;");
return $array;
}
/**
* 将数组转换为字符串
*
* @param array $data 数组
* @param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
* @return string 返回字符串,如果,data为空,则返回空
*/
function array2string($data, $isformdata = 1) {
if($data == '') return '';
if($isformdata) $data = new_stripslashes($data);
return addslashes(var_export($data, TRUE));
}
/**
* 转换字节数为其他单位
*
*
* @param string $filesize 字节大小
* @return string 返回大小
*/
function sizecount($filesize) {
if ($filesize >= 1073741824) {
$filesize = round($filesize / 1073741824 * 100) / 100 .' GB';
} elseif ($filesize >= 1048576) {
$filesize = round($filesize / 1048576 * 100) / 100 .' MB';
} elseif($filesize >= 1024) {
$filesize = round($filesize / 1024 * 100) / 100 . ' KB';
} else {
$filesize = $filesize.' Bytes';
}
return $filesize;
}
/**
* 字符串加密、解密函数
*
*
* @param string $txt 字符串
* @param string $operation ENCODE为加密,DECODE为解密,可选参数,默认为ENCODE,
* @param string $key 密钥:数字、字母、下划线
* @param string $expiry 过期时间
* @return string
*/
function sys_auth($string, $operation = 'ENCODE', $key = '', $expiry = 0) {
$key_length = 4;
$key = md5($key != '' ? $key : pc_base::load_config('system', 'auth_key'));
$fixedkey = md5($key);
$egiskeys = md5(substr($fixedkey, 16, 16));
$runtokey = $key_length ? ($operation == 'ENCODE' ? substr(md5(microtime(true)), -$key_length) : substr($string, 0, $key_length)) : '';
$keys = md5(substr($runtokey, 0, 16) . substr($fixedkey, 0, 16) . substr($runtokey, 16) . substr($fixedkey, 16));
$string = $operation == 'ENCODE' ? sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$egiskeys), 0, 16) . $string : base64_decode(substr($string, $key_length));
$i = 0; $result = '';
$string_length = strlen($string);
for ($i = 0; $i < $string_length; $i++){
$result .= chr(ord($string{$i}) ^ ord($keys{$i % 32}));
}
if($operation == 'ENCODE') {
return $runtokey . str_replace('=', '', base64_encode($result));
} else {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$egiskeys), 0, 16)) {
return substr($result, 26);
} else {
return '';
}
}
}
/**
* 语言文件处理
*
* @param string $language 标示符
* @param array $pars 转义的数组,二维数组 ,'key1'=>'value1','key2'=>'value2',
* @param string $modules 多个模块之间用半角逗号隔开,如:member,guestbook
* @return string 语言字符
*/
function L($language = 'no_language',$pars = array(), $modules = '') {
static $LANG = array();
static $LANG_MODULES = array();
static $lang = '';
if(defined('IN_ADMIN')) {
$lang = SYS_STYLE ? SYS_STYLE : 'zh-cn';
} else {
$lang = pc_base::load_config('system','lang');
}
if(!$LANG) {
require_once PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.'system.lang.php';
if(defined('IN_ADMIN')) require_once PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.'system_menu.lang.php';
if(file_exists(PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.ROUTE_M.'.lang.php')) require PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.ROUTE_M.'.lang.php';
}
if(!empty($modules)) {
$modules = explode(',',$modules);
foreach($modules AS $m) {
if(!isset($LANG_MODULES[$m])) require PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.$m.'.lang.php';
}
}
if(!array_key_exists($language,$LANG)) {
return $language;
} else {
$language = $LANG[$language];
if($pars) {
foreach($pars AS $_k=>$_v) {
$language = str_replace('{'.$_k.'}',$_v,$language);
}
}
return $language;
}
}
/**
* 模板调用
*
* @param $module
* @param $template
* @param $istag
* @return unknown_type
*/
function template($module = 'content', $template = 'index', $style = '') {
if(strpos($module, 'plugin/')!== false) {
$plugin = str_replace('plugin/', '', $module);
return p_template($plugin, $template,$style);
}
$module = str_replace('/', DIRECTORY_SEPARATOR, $module);
if(!empty($style) && preg_match('/([a-z0-9\-_]+)/is',$style)) {
} elseif (empty($style) && !defined('STYLE')) {
if(defined('SITEID')) {
$siteid = SITEID;
} else {
$siteid = param::get_cookie('siteid');
}
if (!$siteid) $siteid = 1;
$sitelist = getcache('sitelist','commons');
if(!empty($siteid)) {
$style = $sitelist[$siteid]['default_style'];
}
} elseif (empty($style) && defined('STYLE')) {
$style = STYLE;
} else {
$style = 'default';
}
if(!$style) $style = 'default';
$template_cache = pc_base::load_sys_class('template_cache');
$compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';
if(file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {
if(!file_exists($compiledtplfile) || (@filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > @filemtime($compiledtplfile))) {
$template_cache->template_compile($module, $template, $style);
}
} else {
$compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';
if(!file_exists($compiledtplfile) || (file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') && filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > filemtime($compiledtplfile))) {
$template_cache->template_compile($module, $template, 'default');
} elseif (!file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {
zzshowmessage('Template does not exist.'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html');
}
}
return $compiledtplfile;
}
/**
* 输出自定义错误
*
* @param $errno 错误号
* @param $errstr 错误描述
* @param $errfile 报错文件地址
* @param $errline 错误行号
* @return string 错误提示
*/
function my_error_handler($errno, $errstr, $errfile, $errline) {
if($errno==8) return '';
$errfile = str_replace(PHPCMS_PATH,'',$errfile);
if(pc_base::load_config('system','errorlog')) {
error_log(''.date('m-d H:i:s',SYS_TIME).' | '.$errno.' | '.str_pad($errstr,30).' | '.$errfile.' | '.$errline."\r\n", 3, CACHE_PATH.'error_log.php');
} else {
$str = '
errorno:' . $errno . ',str:' . $errstr . ',file:' . $errfile . ',line' . $errline .'
Need Help? ';
echo $str;
}
}
/**
* 提示信息页面跳转,跳转地址如果传入数组,页面会提示多个地址供用户选择,默认跳转地址为数组的第一个值,时间为5秒。
* zzshowmessage('登录成功', array('默认跳转地址'=>'http://www.phpcms.cn'));
* @param string $msg 提示信息
* @param mixed(string/array) $url_forward 跳转地址
* @param int $ms 跳转等待时间
*/
function showmessage($msg, $url_forward = 'goback', $ms = 1250, $dialog = '', $returnjs = '') {
if(defined('IN_ADMIN')) {
include(admin::admin_tpl('zzshowmessage', 'admin'));
} else {
include(template('content', 'message'));
}
exit;
}
/**
* 查询字符是否存在于某字符串
*
* @param $haystack 字符串
* @param $needle 要查找的字符
* @return bool
*/
function str_exists($haystack, $needle)
{
return !(strpos($haystack, $needle) === FALSE);
}
/**
* 取得文件扩展
*
* @param $filename 文件名
* @return 扩展名
*/
function fileext($filename) {
return strtolower(trim(substr(strrchr($filename, '.'), 1, 10)));
}
/**
* 加载模板标签缓存
* @param string $name 缓存名
* @param integer $times 缓存时间
*/
function tpl_cache($name,$times = 0) {
$filepath = 'tpl_data';
$info = getcacheinfo($name, $filepath);
if (SYS_TIME - $info['filemtime'] >= $times) {
return false;
} else {
return getcache($name,$filepath);
}
}
/**
* 写入缓存,默认为文件缓存,不加载缓存配置。
* @param $name 缓存名称
* @param $data 缓存数据
* @param $filepath 数据路径(模块名称) caches/cache_$filepath/
* @param $type 缓存类型[file,memcache,apc]
* @param $config 配置名称
* @param $timeout 过期时间
*/
function setcache($name, $data, $filepath='', $type='file', $config='', $timeout=0) {
pc_base::load_sys_class('cache_factory','',0);
if($config) {
$cacheconfig = pc_base::load_config('cache');
$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
} else {
$cache = cache_factory::get_instance()->get_cache($type);
}
return $cache->set($name, $data, $timeout, '', $filepath);
}
/**
* 读取缓存,默认为文件缓存,不加载缓存配置。
* @param string $name 缓存名称
* @param $filepath 数据路径(模块名称) caches/cache_$filepath/
* @param string $config 配置名称
*/
function getcache($name, $filepath='', $type='file', $config='') {
pc_base::load_sys_class('cache_factory','',0);
if($config) {
$cacheconfig = pc_base::load_config('cache');
$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
} else {
$cache = cache_factory::get_instance()->get_cache($type);
}
return $cache->get($name, '', '', $filepath);
}
/**
* 删除缓存,默认为文件缓存,不加载缓存配置。
* @param $name 缓存名称
* @param $filepath 数据路径(模块名称) caches/cache_$filepath/
* @param $type 缓存类型[file,memcache,apc]
* @param $config 配置名称
*/
function delcache($name, $filepath='', $type='file', $config='') {
pc_base::load_sys_class('cache_factory','',0);
if($config) {
$cacheconfig = pc_base::load_config('cache');
$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
} else {
$cache = cache_factory::get_instance()->get_cache($type);
}
return $cache->delete($name, '', '', $filepath);
}
/**
* 读取缓存,默认为文件缓存,不加载缓存配置。
* @param string $name 缓存名称
* @param $filepath 数据路径(模块名称) caches/cache_$filepath/
* @param string $config 配置名称
*/
function getcacheinfo($name, $filepath='', $type='file', $config='') {
pc_base::load_sys_class('cache_factory');
if($config) {
$cacheconfig = pc_base::load_config('cache');
$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
} else {
$cache = cache_factory::get_instance()->get_cache($type);
}
return $cache->cacheinfo($name, '', '', $filepath);
}
/**
* 生成sql语句,如果传入$in_cloumn 生成格式为 IN('a', 'b', 'c')
* @param $data 条件数组或者字符串
* @param $front 连接符
* @param $in_column 字段名称
* @return string
*/
function to_sqls($data, $front = ' AND ', $in_column = false) {
if($in_column && is_array($data)) {
$ids = '\''.implode('\',\'', $data).'\'';
$sql = "$in_column IN ($ids)";
return $sql;
} else {
if ($front == '') {
$front = ' AND ';
}
if(is_array($data) && count($data) > 0) {
$sql = '';
foreach ($data as $key => $val) {
$sql .= $sql ? " $front `$key` = '$val' " : " `$key` = '$val' ";
}
return $sql;
} else {
return $data;
}
}
}
/**
* 分页函数
*
* @param $num 信息总数
* @param $curr_page 当前分页
* @param $perpage 每页显示数
* @param $urlrule URL规则
* @param $array 需要传递的数组,用于增加额外的方法
* @return 分页
*/
function pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpages = 10) {
if(defined('URLRULE') && $urlrule == '') {
$urlrule = URLRULE;
$array = $GLOBALS['URL_ARRAY'];
} elseif($urlrule == '') {
$urlrule = url_par('page={$page}');
}
$multipage = '';
if($num > $perpage) {
$page = $setpages+1;
$offset = ceil($setpages/2-1);
$pages = ceil($num / $perpage);
if (defined('IN_ADMIN') && !defined('PAGES')) define('PAGES', $pages);
$from = $curr_page - $offset;
$to = $curr_page + $offset;
$more = 0;
if($page >= $pages) {
$from = 2;
$to = $pages-1;
} else {
if($from <= 1) {
$to = $page-1;
$from = 2;
} elseif($to >= $pages) {
$from = $pages-($page-2);
$to = $pages-1;
}
$more = 1;
}
$multipage .= ''.$num.L('page_item').'';
if($curr_page>0) {
$multipage .= ' '.L('previous').'';
if($curr_page==1) {
$multipage .= ' 1';
} elseif($curr_page>6 && $more) {
$multipage .= ' 1..';
} else {
$multipage .= ' 1';
}
}
for($i = $from; $i <= $to; $i++) {
if($i != $curr_page) {
$multipage .= ' '.$i.'';
} else {
$multipage .= ' '.$i.'';
}
}
if($curr_page<$pages) {
if($curr_page<$pages-5 && $more) {
$multipage .= ' ..'.$pages.' '.L('next').'';
} else {
$multipage .= ' '.$pages.' '.L('next').'';
}
} elseif($curr_page==$pages) {
$multipage .= ' '.$pages.' '.L('next').'';
} else {
$multipage .= ' '.$pages.' '.L('next').'';
}
}
return $multipage;
}
/**
* 返回分页路径
*
* @param $urlrule 分页规则
* @param $page 当前页
* @param $array 需要传递的数组,用于增加额外的方法
* @return 完整的URL路径
*/
function pageurl($urlrule, $page, $array = array()) {
if(strpos($urlrule, '~')) {
$urlrules = explode('~', $urlrule);
$urlrule = $page < 2 ? $urlrules[0] : $urlrules[1];
}
$findme = array('{$page}');
$replaceme = array($page);
if (is_array($array)) foreach ($array as $k=>$v) {
$findme[] = '{$'.$k.'}';
$replaceme[] = $v;
}
$url = str_replace($findme, $replaceme, $urlrule);
$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);
return $url;
}
/**
* URL路径解析,pages 函数的辅助函数
*
* @param $par 传入需要解析的变量 默认为,page={$page}
* @param $url URL地址
* @return URL
*/
function url_par($par, $url = '') {
if($url == '') $url = get_url();
$pos = strpos($url, '?');
if($pos === false) {
$url .= '?'.$par;
} else {
$querystring = substr(strstr($url, '?'), 1);
parse_str($querystring, $pars);
$query_array = array();
foreach($pars as $k=>$v) {
if($k != 'page') $query_array[$k] = $v;
}
$querystring = http_build_query($query_array).'&'.$par;
$url = substr($url, 0, $pos).'?'.$querystring;
}
return $url;
}
/**
* 判断email格式是否正确
* @param $email
*/
function is_email($email) {
return strlen($email) > 6 && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email);
}
/**
* iconv 编辑转换
*/
if (!function_exists('iconv')) {
function iconv($in_charset, $out_charset, $str) {
$in_charset = strtoupper($in_charset);
$out_charset = strtoupper($out_charset);
if (function_exists('mb_convert_encoding')) {
return mb_convert_encoding($str, $out_charset, $in_charset);
} else {
pc_base::load_sys_func('iconv');
$in_charset = strtoupper($in_charset);
$out_charset = strtoupper($out_charset);
if ($in_charset == 'UTF-8' && ($out_charset == 'GBK' || $out_charset == 'GB2312')) {
return utf8_to_gbk($str);
}
if (($in_charset == 'GBK' || $in_charset == 'GB2312') && $out_charset == 'UTF-8') {
return gbk_to_utf8($str);
}
return $str;
}
}
}
/**
* 代码广告展示函数
* @param intval $siteid 所属站点
* @param intval $id 广告ID
* @return 返回广告代码
*/
function show_ad($siteid, $id) {
$siteid = intval($siteid);
$id = intval($id);
if(!$id || !$siteid) return false;
$p = pc_base::load_model('poster_model');
$r = $p->get_one(array('spaceid'=>$id, 'siteid'=>$siteid), 'disabled, setting', '`id` ASC');
if ($r['disabled']) return '';
if ($r['setting']) {
$c = string2array($r['setting']);
} else {
$r['code'] = '';
}
return $c['code'];
}
/**
* 获取当前的站点ID
*/
function get_siteid() {
// static $siteid;
global $siteid; //zzcity modi ,替换global.func.php 为修改这里
if (!empty($siteid)) return $siteid;
if (!defined('IN_ADMIN')) {
if ($d = param::get_cookie('siteid')) {
$siteid = $d;
} else {
return '';
}
} else {
$data = getcache('sitelist', 'commons');
if(!is_array($data)) return '1';
$site_url = SITE_PROTOCOL.SITE_URL;
foreach ($data as $v) {
if ($v['url'] == $site_url.'/') $siteid = $v['siteid'];
}
}
if (empty($siteid)) $siteid = 1;
return $siteid;
}
/**
* 获取用户昵称
* 不传入userid取当前用户nickname,如果nickname为空取username
* 传入field,取用户$field字段信息
*/
function get_nickname($userid='', $field='') {
$return = '';
if(is_numeric($userid)) {
$member_db = pc_base::load_model('member_model');
$memberinfo = $member_db->get_one(array('userid'=>$userid));
if(!empty($field) && $field != 'nickname' && isset($memberinfo[$field]) &&!empty($memberinfo[$field])) {
$return = $memberinfo[$field];
} else {
$return = isset($memberinfo['nickname']) && !empty($memberinfo['nickname']) ? $memberinfo['nickname'].'('.$memberinfo['username'].')' : $memberinfo['username'];
}
} else {
if (param::get_cookie('_nickname')) {
$return .= '('.param::get_cookie('_nickname').')';
} else {
$return .= '('.param::get_cookie('_username').')';
}
}
return $return;
}
/**
* 获取用户信息
* 不传入$field返回用户所有信息,
* 传入field,取用户$field字段信息
*/
function get_memberinfo($userid, $field='') {
if(!is_numeric($userid)) {
return false;
} else {
static $memberinfo;
if (!isset($memberinfo[$userid])) {
$member_db = pc_base::load_model('member_model');
$memberinfo[$userid] = $member_db->get_one(array('userid'=>$userid));
}
if(!empty($field) && !empty($memberinfo[$userid][$field])) {
return $memberinfo[$userid][$field];
} else {
return $memberinfo[$userid];
}
}
}
/**
* 通过 username 值,获取用户所有信息
* 获取用户信息
* 不传入$field返回用户所有信息,
* 传入field,取用户$field字段信息
*/
function get_memberinfo_buyusername($username, $field='') {
if(empty($username)){return false;}
static $memberinfo;
if (!isset($memberinfo[$username])) {
$member_db = pc_base::load_model('member_model');
$memberinfo[$username] = $member_db->get_one(array('username'=>$username));
}
if(!empty($field) && !empty($memberinfo[$username][$field])) {
return $memberinfo[$username][$field];
} else {
return $memberinfo[$username];
}
}
/**
* 获取用户头像,建议传入phpssouid
* @param $uid 默认为phpssouid
* @param $is_userid $uid是否为v9 userid,如果为真,执行sql查询此用户的phpssouid
* @param $size 头像大小 有四种[30x30 45x45 90x90 180x180] 默认30
*/
function get_memberavatar($uid, $is_userid='', $size='30') {
if($is_userid) {
$db = pc_base::load_model('member_model');
$memberinfo = $db->get_one(array('userid'=>$uid));
if(isset($memberinfo['phpssouid'])) {
$uid = $memberinfo['phpssouid'];
} else {
return false;
}
}
pc_base::load_app_class('client', 'member', 0);
define('APPID', pc_base::load_config('system', 'phpsso_appid'));
$phpsso_api_url = pc_base::load_config('system', 'phpsso_api_url');
$phpsso_auth_key = pc_base::load_config('system', 'phpsso_auth_key');
$client = new client($phpsso_api_url, $phpsso_auth_key);
$avatar = $client->ps_getavatar($uid);
if(isset($avatar[$size])) {
return $avatar[$size];
} else {
return false;
}
}
/**
* 调用关联菜单
* @param $linkageid 联动菜单id
* @param $id 生成联动菜单的样式id
* @param $defaultvalue 默认值
*/
function menu_linkage($linkageid = 0, $id = 'linkid', $defaultvalue = 0) {
$linkageid = intval($linkageid);
$datas = array();
$datas = getcache($linkageid,'linkage');
$infos = $datas['data'];
if($datas['style']=='1') {
$title = $datas['title'];
$container = 'content'.random(3).date('is');
if(!defined('DIALOG_INIT_1')) {
define('DIALOG_INIT_1', 1);
$string .= '';
//TODO $string .= '';
}
if(!defined('LINKAGE_INIT_1')) {
define('LINKAGE_INIT_1', 1);
$string .= '';
}
$var_div = $defaultvalue && (ROUTE_A=='edit' || ROUTE_A=='account_manage_info' || ROUTE_A=='info_publish' || ROUTE_A=='orderinfo') ? menu_linkage_level($defaultvalue,$linkageid,$infos) : $datas['title'];
$var_input = $defaultvalue && (ROUTE_A=='edit' || ROUTE_A=='account_manage_info' || ROUTE_A=='info_publish') ? '' : '';
$string .= ''.$var_div.'
'.$var_input.' ';
$string .= '';
} elseif($datas['style']=='2') {
if(!defined('LINKAGE_INIT_1')) {
define('LINKAGE_INIT_1', 1);
$string .= '';
}
$default_txt = '';
if($defaultvalue) {
$default_txt = menu_linkage_level($defaultvalue,$linkageid,$infos);
$default_txt = '["'.str_replace(' > ','","',$default_txt).'"]';
}
$string .= $defaultvalue && (ROUTE_A=='edit' || ROUTE_A=='account_manage_info' || ROUTE_A=='info_publish') ? '' : '';
for($i=1;$i<=$datas['setting']['level'];$i++) {
$string .=' ';
}
$string .= '';
} else {
$title = $defaultvalue ? $infos[$defaultvalue]['name'] : $datas['title'];
$colObj = random(3).date('is');
$string = '';
if(!defined('LINKAGE_INIT')) {
define('LINKAGE_INIT', 1);
$string .= '';
if(defined('IN_ADMIN')) {
$string .= '';
} else {
$string .= '';
}
}
$string .= '';
$string .= '';
}
return $string;
}
/**
* 联动菜单层级
*/
function menu_linkage_level($linkageid,$keyid,$infos,$result=array()) {
if(array_key_exists($linkageid,$infos)) {
$result[]=$infos[$linkageid]['name'];
return menu_linkage_level($infos[$linkageid]['parentid'],$keyid,$infos,$result);
}
krsort($result);
return implode(' > ',$result);
}
/**
* 通过catid获取显示菜单完整结构
* @param $menuid 菜单ID
* @param $cache_file 菜单缓存文件名称
* @param $cache_path 缓存文件目录
* @param $key 取得缓存值的键值名称
* @param $parentkey 父级的ID
* @param $linkstring 链接字符
*/
function menu_level($menuid, $cache_file, $cache_path = 'commons', $key = 'catname', $parentkey = 'parentid', $linkstring = ' > ', $result=array()) {
$menu_arr = getcache($cache_file, $cache_path);
if (array_key_exists($menuid, $menu_arr)) {
$result[] = $menu_arr[$menuid][$key];
return menu_level($menu_arr[$menuid][$parentkey], $cache_file, $cache_path, $key, $parentkey, $linkstring, $result);
}
krsort($result);
return implode($linkstring, $result);
}
/**
* 通过id获取显示联动菜单
* @param $linkageid 联动菜单ID
* @param $keyid 菜单keyid
* @param $space 菜单间隔符
* @param $tyoe 1 返回间隔符链接,完整路径名称 3 返回完整路径数组,2返回当前联动菜单名称,4 直接返回ID
* @param $result 递归使用字段1
* @param $infos 递归使用字段2
*/
function get_linkage($linkageid, $keyid, $space = '>', $type = 1, $result = array(), $infos = array()) {
if($space=='' || !isset($space))$space = '>';
if(!$infos) {
$datas = getcache($keyid,'linkage');
$infos = $datas['data'];
}
if($type == 1 || $type == 3 || $type == 4) {
if(array_key_exists($linkageid,$infos)) {
$result[]= ($type == 1) ? $infos[$linkageid]['name'] : (($type == 4) ? $linkageid :$infos[$linkageid]);
return get_linkage($infos[$linkageid]['parentid'], $keyid, $space, $type, $result, $infos);
} else {
if(count($result)>0) {
krsort($result);
if($type == 1 || $type == 4) $result = implode($space,$result);
return $result;
} else {
return $result;
}
}
} else {
return $infos[$linkageid]['name'];
}
}
/**
* IE浏览器判断
*/
function is_ie() {
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
if((strpos($useragent, 'opera') !== false) || (strpos($useragent, 'konqueror') !== false)) return false;
if(strpos($useragent, 'msie ') !== false) return true;
return false;
}
/**
* 文件下载
* @param $filepath 文件路径
* @param $filename 文件名称
*/
function file_down($filepath, $filename = '') {
if(!$filename) $filename = basename($filepath);
if(is_ie()) $filename = rawurlencode($filename);
$filetype = fileext($filename);
$filesize = sprintf("%u", filesize($filepath));
if(ob_get_length() !== false) @ob_end_clean();
header('Pragma: public');
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Content-Transfer-Encoding: binary');
header('Content-Encoding: none');
header('Content-type: '.$filetype);
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-length: '.$filesize);
readfile($filepath);
exit;
}
/**
* 判断字符串是否为utf8编码,英文和半角字符返回ture
* @param $string
* @return bool
*/
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}
/**
* 组装生成ID号
* @param $modules 模块名
* @param $contentid 内容ID
* @param $siteid 站点ID
*/
function id_encode($modules,$contentid, $siteid) {
return urlencode($modules.'-'.$contentid.'-'.$siteid);
}
/**
* 解析ID
* @param $id 评论ID
*/
function id_decode($id) {
return explode('-', $id);
}
/**
* 对用户的密码进行加密
* @param $password
* @param $encrypt //传入加密串,在修改密码时做认证
* @return array/password
*/
function password($password, $encrypt='') {
$pwd = array();
$pwd['encrypt'] = $encrypt ? $encrypt : create_randomstr();
$pwd['password'] = md5(md5(trim($password)).$pwd['encrypt']);
return $encrypt ? $pwd['password'] : $pwd;
}
/**
* 生成随机字符串
* @param string $lenth 长度
* @return string 字符串
*/
function create_randomstr($lenth = 6) {
return random($lenth, '123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ');
}
/**
* 检查密码长度是否符合规定
*
* @param STRING $password
* @return TRUE or FALSE
*/
function is_password($password) {
$strlen = strlen($password);
if($strlen >= 6 && $strlen <= 20) return true;
return false;
}
/**
* 检测输入中是否含有错误字符
*
* @param char $string 要检查的字符串名称
* @return TRUE or FALSE
*/
function is_badword($string) {
$badwords = array("\\",'&',' ',"'",'"','/','*',',','<','>',"\r","\t","\n","#");
foreach($badwords as $value){
if(strpos($string, $value) !== FALSE) {
return TRUE;
}
}
return FALSE;
}
/**
* 检查用户名是否符合规定
*
* @param STRING $username 要检查的用户名
* @return TRUE or FALSE
*/
function is_username($username) {
$strlen = strlen($username);
if(is_badword($username) || !preg_match("/^[a-zA-Z0-9_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+$/", $username)){
return false;
} elseif ( 20 < $strlen || $strlen < 2 ) {
return false;
}
return true;
}
/**
* 检查id是否存在于数组中
*
* @param $id
* @param $ids
* @param $s
*/
function check_in($id, $ids = '', $s = ',') {
if(!$ids) return false;
$ids = explode($s, $ids);
return is_array($id) ? array_intersect($id, $ids) : in_array($id, $ids);
}
/**
* 对数据进行编码转换
* @param array/string $data 数组
* @param string $input 需要转换的编码
* @param string $output 转换后的编码
*/
function array_iconv($data, $input = 'gbk', $output = 'utf-8') {
if (!is_array($data)) {
return iconv($input, $output, $data);
} else {
foreach ($data as $key=>$val) {
if(is_array($val)) {
$data[$key] = array_iconv($val, $input, $output);
} else {
$data[$key] = iconv($input, $output, $val);
}
}
return $data;
}
}
/**
* 生成缩略图函数
* @param $imgurl 图片路径
* @param $width 缩略图宽度
* @param $height 缩略图高度
* @param $autocut 是否自动裁剪 默认裁剪,当高度或宽度有一个数值为0是,自动关闭
* @param $smallpic 无图片是默认图片路径
*/
function thumb($imgurl, $width = 100, $height = 100 ,$autocut = 1, $smallpic = 'nopic.gif') {
global $image;
$upload_url = pc_base::load_config('system','upload_url');
$upload_path = pc_base::load_config('system','upload_path');
if(empty($imgurl)) return IMG_PATH.$smallpic;
$imgurl_replace= str_replace($upload_url, '', $imgurl);
if(!extension_loaded('gd') || strpos($imgurl_replace, '://')) return $imgurl;
if(!file_exists($upload_path.$imgurl_replace)) return IMG_PATH.$smallpic;
list($width_t, $height_t, $type, $attr) = getimagesize($upload_path.$imgurl_replace);
if($width>=$width_t || $height>=$height_t) return $imgurl;
$newimgurl = dirname($imgurl_replace).'/thumb_'.$width.'_'.$height.'_'.basename($imgurl_replace);
if(file_exists($upload_path.$newimgurl)) return $upload_url.$newimgurl;
if(!is_object($image)) {
pc_base::load_sys_class('image','','0');
$image = new image(1,0);
}
return $image->thumb($upload_path.$imgurl_replace, $upload_path.$newimgurl, $width, $height, '', $autocut) ? $upload_url.$newimgurl : $imgurl;
}
/**
* 水印添加
* @param $source 原图片路径
* @param $target 生成水印图片途径,默认为空,覆盖原图
* @param $siteid 站点id,系统需根据站点id获取水印信息
*/
function watermark($source, $target = '',$siteid) {
global $image_w;
if(empty($source)) return $source;
if(!extension_loaded('gd') || strpos($source, '://')) return $source;
if(!$target) $target = $source;
if(!is_object($image_w)){
pc_base::load_sys_class('image','','0');
$image_w = new image(0,$siteid);
}
$image_w->watermark($source, $target);
return $target;
}
/**
* 当前路径
* 返回指定栏目路径层级
* @param $catid 栏目id
* @param $symbol 栏目间隔符
*/
function catpos($catid, $symbol=' > '){
$category_arr = array();
$siteids = getcache('category_content','commons');
$siteid = $siteids[$catid];
$category_arr = getcache('category_content_'.$siteid,'commons');
if(!isset($category_arr[$catid])) return '';
$pos = '';
$siteurl = siteurl($category_arr[$catid]['siteid']);
$arrparentid = array_filter(explode(',', $category_arr[$catid]['arrparentid'].','.$catid));
foreach($arrparentid as $catid) {
$url = $category_arr[$catid]['url'];
if(strpos($url, '://') === false) $url = $siteurl.$url;
$pos .= ''.$category_arr[$catid]['catname'].''.$symbol;
}
return $pos;
}
/**
* 根据catid获取子栏目数据的sql语句
* @param string $module 缓存文件名
* @param intval $catid 栏目ID
*/
function get_sql_catid($file = 'category_content_1', $catid = 0, $module = 'commons') {
$category = getcache($file,$module);
$catid = intval($catid);
if(!isset($category[$catid])) return false;
return $category[$catid]['child'] ? " `catid` IN(".$category[$catid]['arrchildid'].") " : " `catid`=$catid ";
}
/**
* 获取子栏目
* @param $parentid 父级id
* @param $type 栏目类型
* @param $self 是否包含本身 0为不包含
* @param $siteid 站点id
*/
function subcat($parentid = NULL, $type = NULL,$self = '0', $siteid = '') {
if (empty($siteid)) $siteid = get_siteid();
$category = getcache('category_content_'.$siteid,'commons');
foreach($category as $id=>$cat) {
if($cat['siteid'] == $siteid && ($parentid === NULL || $cat['parentid'] == $parentid) && ($type === NULL || $cat['type'] == $type)) $subcat[$id] = $cat;
if($self == 1 && $cat['catid'] == $parentid && !$cat['child']) $subcat[$id] = $cat;
}
return $subcat;
}
/**
* 获取内容地址
* @param $catid 栏目ID
* @param $id 文章ID
* @param $allurl 是否以绝对路径返回
*/
function go($catid,$id, $allurl = 0) {
static $category;
if(empty($category)) {
$siteids = getcache('category_content','commons');
$siteid = $siteids[$catid];
$category = getcache('category_content_'.$siteid,'commons');
}
$id = intval($id);
if(!$id || !isset($category[$catid])) return '';
$modelid = $category[$catid]['modelid'];
if(!$modelid) return '';
//$db = pc_base::load_model('content_model');
$db=new zzcontent_model; //zzcity modi
$db->set_model($modelid);
$r = $db->get_one(array('id'=>$id), '`url`');
if (!empty($allurl)) {
if (strpos($r['url'], '://')===false) {
if (strpos($category[$catid]['url'], '://') === FALSE) {
$site = siteinfo($category[$catid]['siteid']);
$r['url'] = substr($site['domain'], 0, -1).$r['url'];
} else {
$r['url'] = $category[$catid]['url'].$r['url'];
}
}
}
return $r['url'];
}
/**
* 将附件地址转换为绝对地址
* @param $path 附件地址
*/
function atturl($path) {
if(strpos($path, ':/')) {
return $path;
} else {
$sitelist = getcache('sitelist','commons');
$siteid = get_siteid();
$siteurl = $sitelist[$siteid]['domain'];
$domainlen = strlen($sitelist[$siteid]['domain'])-1;
$path = $siteurl.$path;
$path = substr_replace($path, '/', strpos($path, '//',$domainlen),2);
return $path;
}
}
/**
* 判断模块是否安装
* @param $m 模块名称
*/
function module_exists($m = '') {
if ($m=='admin') return true;
$modules = getcache('modules', 'commons');
$modules = array_keys($modules);
return in_array($m, $modules);
}
/**
* 生成SEO
* @param $siteid 站点ID
* @param $catid 栏目ID
* @param $title 标题
* @param $description 描述
* @param $keyword 关键词
*/
function seo($siteid, $catid = '', $title = '', $description = '', $keyword = '') {
if (!empty($title))$title = strip_tags($title);
if (!empty($description)) $description = strip_tags($description);
if (!empty($keyword)) $keyword = str_replace(' ', ',', strip_tags($keyword));
$sites = getcache('sitelist', 'commons');
$site = $sites[$siteid];
$cat = array();
if (!empty($catid)) {
$siteids = getcache('category_content','commons');
$siteid = $siteids[$catid];
$categorys = getcache('category_content_'.$siteid,'commons');
$cat = $categorys[$catid];
$cat['setting'] = string2array($cat['setting']);
}
$seo['site_title'] =isset($site['site_title']) && !empty($site['site_title']) ? $site['site_title'] : $site['name'];
$seo['keyword'] = !empty($keyword) ? $keyword : $site['keywords'];
$seo['description'] = isset($description) && !empty($description) ? $description : (isset($cat['setting']['meta_description']) && !empty($cat['setting']['meta_description']) ? $cat['setting']['meta_description'] : (isset($site['description']) && !empty($site['description']) ? $site['description'] : ''));
$seo['title'] = (isset($title) && !empty($title) ? $title.' - ' : '').(isset($cat['setting']['meta_title']) && !empty($cat['setting']['meta_title']) ? $cat['setting']['meta_title'].' - ' : (isset($cat['catname']) && !empty($cat['catname']) ? $cat['catname'].' - ' : ''));
foreach ($seo as $k=>$v) {
$seo[$k] = str_replace(array("\n","\r"), '', $v);
}
return $seo;
}
/**
* 获取站点的信息
* @param $siteid 站点ID
*/
function siteinfo($siteid) {
static $sitelist;
if (empty($sitelist)) $sitelist = getcache('sitelist','commons');
return isset($sitelist[$siteid]) ? $sitelist[$siteid] : '';
}
/**
* 生成CNZZ统计代码
*/
function tjcode() {
if(!module_exists('cnzz')) return false;
$config = getcache('cnzz', 'commons');
if (empty($config)) {
return false;
} else {
return '';
}
}
/**
* 生成标题样式
* @param $style 样式
* @param $html 是否显示完整的STYLE
*/
function title_style($style, $html = 1) {
$str = '';
if ($html) $str = ' style="';
$style_arr = explode(';',$style);
if (!empty($style_arr[0])) $str .= 'color:'.$style_arr[0].';';
if (!empty($style_arr[1])) $str .= 'font-weight:'.$style_arr[1].';';
if ($html) $str .= '" ';
return $str;
}
/**
* 获取站点域名
* @param $siteid 站点id
*/
function siteurl($siteid) {
static $sitelist;
if(!$siteid) return WEB_PATH;
if(empty($sitelist)) $sitelist = getcache('sitelist','commons');
return substr($sitelist[$siteid]['domain'],0,-1);
}
/**
* 生成上传附件验证
* @param $args 参数
* @param $operation 操作类型(加密解密)
*/
function upload_key($args) {
$pc_auth_key = md5(pc_base::load_config('system','auth_key').$_SERVER['HTTP_USER_AGENT']);
$authkey = md5($args.$pc_auth_key);
return $authkey;
}
/**
* 文本转换为图片
* @param string $txt 图形化文本内容
* @param int $fonttype 无外部字体时生成文字大小,取值范围1-5
* @param int $fontsize 引入外部字体时,字体大小
* @param string $font 字体名称 字体请放于phpcms\libs\data\font下
* @param string $fontcolor 字体颜色 十六进制形式 如FFFFFF,FF0000
*/
function string2img($txt, $fonttype = 5, $fontsize = 16, $font = '', $fontcolor = 'FF0000',$transparent = '1') {
if(empty($txt)) return false;
if(function_exists("imagepng")) {
$txt = urlencode(sys_auth($txt));
$txt = '';
}
return $txt;
}
/**
* 获取phpcms版本号
*/
function get_pc_version($type='') {
$version = pc_base::load_config('version');
if($type==1) {
return $version['pc_version'];
} elseif($type==2) {
return $version['pc_release'];
} else {
return $version['pc_version'].' '.$version['pc_release'];
}
}
/**
* 运行钩子(插件使用)
*/
function runhook($method) {
$time_start = getmicrotime();
$data = '';
$getpclass = FALSE;
$hook_appid = getcache('hook','plugins');
if(!empty($hook_appid)) {
foreach($hook_appid as $appid => $p) {
$pluginfilepath = PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$p.DIRECTORY_SEPARATOR.'hook.class.php';
$getpclass = TRUE;
include_once $pluginfilepath;
}
$hook_appid = array_flip($hook_appid);
if($getpclass) {
$pclass = new ReflectionClass('hook');
foreach($pclass->getMethods() as $r) {
$legalmethods[] = $r->getName();
}
}
if(in_array($method,$legalmethods)) {
foreach (get_declared_classes() as $class){
$refclass = new ReflectionClass($class);
if($refclass->isSubclassOf('hook')){
if ($_method = $refclass->getMethod($method)) {
$classname = $refclass->getName();
if ($_method->isPublic() && $_method->isFinal()) {
plugin_stat($hook_appid[$classname]);
$data .= $_method->invoke(null);
}
}
}
}
}
return $data;
}
}
function getmicrotime() {
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
/**
* 插件前台模板加载
* Enter description here ...
* @param unknown_type $module
* @param unknown_type $template
* @param unknown_type $style
*/
function p_template($plugin = 'content', $template = 'index',$style='default') {
if(!$style) $style = 'default';
$template_cache = pc_base::load_sys_class('template_cache');
$compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.$template.'.php';
if(!file_exists($compiledtplfile) || (file_exists(PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$template.'.html') && filemtime(PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$template.'.html') > filemtime($compiledtplfile))) {
$template_cache->template_compile('plugin/'.$plugin, $template, 'default');
} elseif (!file_exists(PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$template.'.html')) {
zzshowmessage('Template does not exist.'.DIRECTORY_SEPARATOR.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.$template.'.html');
}
return $compiledtplfile;
}
/**
* 读取缓存动态页面
*/
function cache_page_start() {
$relate_url = isset($_SERVER['REQUEST_URI']) ? safe_replace($_SERVER['REQUEST_URI']) : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.safe_replace($_SERVER['QUERY_STRING']) : $path_info);
define('CACHE_PAGE_ID', md5($relate_url));
$contents = getcache(CACHE_PAGE_ID, 'page_tmp/'.substr(CACHE_PAGE_ID, 0, 2));
if($contents && intval(substr($contents, 15, 10)) > SYS_TIME) {
echo substr($contents, 29);
exit;
}
if (!defined('HTML')) define('HTML',true);
return true;
}
/**
* 写入缓存动态页面
*/
function cache_page($ttl = 360, $isjs = 0) {
if($ttl == 0 || !defined('CACHE_PAGE_ID')) return false;
$contents = ob_get_contents();
if($isjs) $contents = format_js($contents);
$contents = "\n".$contents;
setcache(CACHE_PAGE_ID, $contents, 'page_tmp/'.substr(CACHE_PAGE_ID, 0, 2));
}
/**
*
* 获取远程内容
* @param $url 接口url地址
* @param $timeout 超时时间
*/
function pc_file_get_contents($url, $timeout=30) {
$stream = stream_context_create(array('http' => array('timeout' => $timeout)));
return @file_get_contents($url, 0, $stream);
}
//global.func.php结束
pc_base::load_sys_func('extention');
pc_base::auto_load_func();
pc_base::load_config('system','errorlog') ? set_error_handler('my_error_handler') : error_reporting(E_ERROR | E_WARNING | E_PARSE);
//设置本地时差
function_exists('date_default_timezone_set') && date_default_timezone_set(pc_base::load_config('system','timezone'));
define('CHARSET' ,pc_base::load_config('system','charset'));
//输出页面字符集
header('Content-type: text/html; charset='.CHARSET);
define('SYS_TIME', time());
//定义网站根路径
define('WEB_PATH',pc_base::load_config('system','web_path'));
//js 路径
define('JS_PATH',pc_base::load_config('system','js_path'));
//css 路径
define('CSS_PATH',pc_base::load_config('system','css_path'));
//img 路径
define('IMG_PATH',pc_base::load_config('system','img_path'));
//动态程序路径
define('APP_PATH',pc_base::load_config('system','app_path'));
//应用静态文件路径
define('PLUGIN_STATICS_PATH',WEB_PATH.'statics/plugin/');
if(pc_base::load_config('system','gzip') && function_exists('ob_gzhandler')) {
ob_start('ob_gzhandler');
} else {
ob_start();
}
class pc_base {
/**
* 初始化应用程序
*/
public static function creat_app() {
return self::load_sys_class('application');
}
/**
* 加载系统类方法
* @param string $classname 类名
* @param string $path 扩展地址
* @param intger $initialize 是否初始化
*/
public static function load_sys_class($classname, $path = '', $initialize = 1) {
return self::_load_class($classname, $path, $initialize);
}
/**
* 加载应用类方法
* @param string $classname 类名
* @param string $m 模块
* @param intger $initialize 是否初始化
*/
public static function load_app_class($classname, $m = '', $initialize = 1) {
$m = empty($m) && defined('ROUTE_M') ? ROUTE_M : $m;
if (empty($m)) return false;
return self::_load_class($classname, 'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.'classes', $initialize);
}
/**
* 加载数据模型
* @param string $classname 类名
*/
public static function load_model($classname) {
return self::_load_class($classname,'model');
}
/**
* 加载类文件函数
* @param string $classname 类名
* @param string $path 扩展地址
* @param intger $initialize 是否初始化
*/
private static function _load_class($classname, $path = '', $initialize = 1) {
static $classes = array();
if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'classes';
$key = md5($path.$classname);
if (isset($classes[$key])) {
if (!empty($classes[$key])) {
return $classes[$key];
} else {
return true;
}
}
if (file_exists(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
include PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php';
$name = $classname;
if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
include $my_path;
$name = 'MY_'.$classname;
}
if ($initialize) {
$classes[$key] = new $name;
} else {
$classes[$key] = true;
}
return $classes[$key];
} else {
return false;
}
}
/**
* 加载系统的函数库
* @param string $func 函数库名
*/
public static function load_sys_func($func) {
return self::_load_func($func);
}
/**
* 自动加载autoload目录下函数库
* @param string $func 函数库名
*/
public static function auto_load_func($path='') {
return self::_auto_load_func($path);
}
/**
* 加载应用函数库
* @param string $func 函数库名
* @param string $m 模型名
*/
public static function load_app_func($func, $m = '') {
$m = empty($m) && defined('ROUTE_M') ? ROUTE_M : $m;
if (empty($m)) return false;
return self::_load_func($func, 'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.'functions');
}
/**
* 加载插件类库
*/
public static function load_plugin_class($classname, $identification = '' ,$initialize = 1) {
$identification = empty($identification) && defined('PLUGIN_ID') ? PLUGIN_ID : $identification;
if (empty($identification)) return false;
return pc_base::load_sys_class($classname, 'plugin'.DIRECTORY_SEPARATOR.$identification.DIRECTORY_SEPARATOR.'classes', $initialize);
}
/**
* 加载插件函数库
* @param string $func 函数文件名称
* @param string $identification 插件标识
*/
public static function load_plugin_func($func,$identification) {
static $funcs = array();
$identification = empty($identification) && defined('PLUGIN_ID') ? PLUGIN_ID : $identification;
if (empty($identification)) return false;
$path = 'plugin'.DIRECTORY_SEPARATOR.$identification.DIRECTORY_SEPARATOR.'functions'.DIRECTORY_SEPARATOR.$func.'.func.php';
$key = md5($path);
if (isset($funcs[$key])) return true;
if (file_exists(PC_PATH.$path)) {
include PC_PATH.$path;
} else {
$funcs[$key] = false;
return false;
}
$funcs[$key] = true;
return true;
}
/**
* 加载插件数据模型
* @param string $classname 类名
*/
public static function load_plugin_model($classname,$identification) {
$identification = empty($identification) && defined('PLUGIN_ID') ? PLUGIN_ID : $identification;
$path = 'plugin'.DIRECTORY_SEPARATOR.$identification.DIRECTORY_SEPARATOR.'model';
return self::_load_class($classname,$path);
}
/**
* 加载函数库
* @param string $func 函数库名
* @param string $path 地址
*/
private static function _load_func($func, $path = '') {
static $funcs = array();
if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'functions';
$path .= DIRECTORY_SEPARATOR.$func.'.func.php';
$key = md5($path);
if (isset($funcs[$key])) return true;
if (file_exists(PC_PATH.$path)) {
include PC_PATH.$path;
} else {
$funcs[$key] = false;
return false;
}
$funcs[$key] = true;
return true;
}
/**
* 加载函数库
* @param string $func 函数库名
* @param string $path 地址
*/
private static function _auto_load_func($path = '') {
if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'functions'.DIRECTORY_SEPARATOR.'autoload';
$path .= DIRECTORY_SEPARATOR.'*.func.php';
$auto_funcs = glob(PC_PATH.DIRECTORY_SEPARATOR.$path);
if(!empty($auto_funcs) && is_array($auto_funcs)) {
foreach($auto_funcs as $func_path) {
include $func_path;
}
}
}
/**
* 是否有自己的扩展文件
* @param string $filepath 路径
*/
public static function my_path($filepath) {
$path = pathinfo($filepath);
if (file_exists($path['dirname'].DIRECTORY_SEPARATOR.'MY_'.$path['basename'])) {
return $path['dirname'].DIRECTORY_SEPARATOR.'MY_'.$path['basename'];
} else {
return false;
}
}
/**
* 加载配置文件
* @param string $file 配置文件
* @param string $key 要获取的配置荐
* @param string $default 默认配置。当获取配置项目失败时该值发生作用。
* @param boolean $reload 强制重新加载。
*/
public static function load_config($file, $key = '', $default = '', $reload = false) {
static $configs = array();
if (!$reload && isset($configs[$file])) {
if (empty($key)) {
return $configs[$file];
} elseif (isset($configs[$file][$key])) {
return $configs[$file][$key];
} else {
return $default;
}
}
$path = CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.$file.'.php';
if (file_exists($path)) {
$configs[$file] = include $path;
}
if (empty($key)) {
return $configs[$file];
} elseif (isset($configs[$file][$key])) {
return $configs[$file][$key];
} else {
return $default;
}
}
}
//替换base.php结束
//消息处理
function zzshowmessage($msg, $url_forward = 'goback', $ms = 1250, $dialog = '', $returnjs = '') {
echo('[err]'.$msg.'[err]');
exit;
}
//登陆处理
function zzlogin() {
global $siteid;
$admindb = pc_base::load_model('admin_model');
$username = isset($_POST['username']) ? trim($_POST['username']) : exit('[err]用户名不能为空[/err]');
//查询帐号
$r = $admindb->get_one(array('username'=>$username));
if(!$r) exit('[err]无此用户名[/err]');
$password = md5(md5(trim((!isset($_GET['card']) ? $_POST['password'] : $_SESSION['card_password']))).$r['encrypt']);
if($r['password'] != $password) {
exit('[err]密码错误[/err]');
}
$admindb->update(array('lastloginip'=>ip(),'lastlogintime'=>SYS_TIME),array('userid'=>$r['userid']));
$_SESSION['userid'] = $r['userid'];
$_SESSION['roleid'] = $r['roleid'];
$_GET['pc_hash']=$_SESSION['pc_hash'] = random(6,'abcdefghigklmnopqrstuvwxwyABCDEFGHIGKLMNOPQRSTUVWXWY0123456789');
$_SESSION['lock_screen'] = 0;
//$siteid=$_POST['default_siteid']=$default_siteid = admin::return_siteid();
$siteid=$_POST['default_siteid']=$default_siteid =$_POST['siteid']; //zzcity add
$cookie_time = SYS_TIME+86400*30;
if(!$r['lang']) $r['lang'] = 'zh-cn';
param::set_cookie('admin_username',$username,$cookie_time);
param::set_cookie('siteid', $default_siteid,$cookie_time);
param::set_cookie('userid', $r['userid'],$cookie_time);
param::set_cookie('admin_email', $r['email'],$cookie_time);
param::set_cookie('sys_lang', $r['lang'],$cookie_time);
//zzshowmessage(L('login_success'),'?m=admin&c=index');
}
//pc_base::creat_app();
//zzcity 替代 pc_base::creat_app();
$param = pc_base::load_sys_class('param');
//api关键词开始
define('API_URL_GET_KEYWORDS', 'http://tool.phpcms.cn/api/get_keywords.php');
//自动关键词 zzcity add
if($_POST['info']['keywords']=='') {
$_POST['info']['keywords']=get_keywords($_POST['info']['title'], 3);
}
function get_keywords($data, $number = 3) {
$data = trim(strip_tags($data));
if(empty($data)) return '';
$http = pc_base::load_sys_class('http');
if(CHARSET == 'utf-8') {
$data = iconv('utf-8', 'gbk', $data);
}
$http->post(API_URL_GET_KEYWORDS, array('siteurl'=>SITE_URL, 'charset'=>CHARSET, 'data'=>$data, 'number'=>$number));
if($http->is_ok()) {
if(CHARSET != 'utf-8') {
return $http->get_data();
} else {
return iconv('gbk', 'utf-8', $http->get_data());
}
}
return '';
}
//api关键词结束
define('ROUTE_M', $param->route_m());
define('ROUTE_C', $param->route_c());
define('ROUTE_A', $param->route_a());
//content_input.class.php类开始
class zzcontent_input {
var $modelid;
var $fields;
var $data;
function __construct($modelid) {
$this->db = pc_base::load_model('sitemodel_field_model');
$this->db_pre = $this->db->db_tablepre;
$this->modelid = $modelid;
$this->fields = getcache('model_field_'.$modelid,'model');
//初始化附件类
pc_base::load_sys_class('attachment','',0);
//$this->siteid = param::get_cookie('siteid');
//zzcity modi
$this->siteid=get_siteid();
$this->attachment = new attachment('content','0',$this->siteid);
$this->site_config = getcache('sitelist','commons');
$this->site_config = $this->site_config[$this->siteid];
}
function get($data,$isimport = 0) {
$this->data = $data = trim_script($data);
$info = array();
foreach($data as $field=>$value) {
//if(!isset($this->fields[$field]) || check_in($_roleid, $this->fields[$field]['unsetroleids']) || check_in($_groupid, $this->fields[$field]['unsetgroupids'])) continue;
$name = $this->fields[$field]['name'];
$minlength = $this->fields[$field]['minlength'];
$maxlength = $this->fields[$field]['maxlength'];
$pattern = $this->fields[$field]['pattern'];
$errortips = $this->fields[$field]['errortips'];
if(empty($errortips)) $errortips = $name.' '.L('not_meet_the_conditions');
$length = empty($value) ? 0 : (is_string($value) ? strlen($value) : count($value));
if($minlength && $length < $minlength) {
if($isimport) {
return false;
} else {
showmessage($name.' '.L('not_less_than').' '.$minlength.L('characters'));
}
}
if($maxlength && $length > $maxlength) {
if($isimport) {
$value = str_cut($value,$maxlength,'');
} else {
showmessage($name.' '.L('not_more_than').' '.$maxlength.L('characters'));
}
} elseif($maxlength) {
$value = str_cut($value,$maxlength,'');
}
if($pattern && $length && !preg_match($pattern, $value) && !$isimport) showmessage($errortips);
$MODEL = getcache('model', 'commons');
$this->db->table_name = $this->fields[$field]['issystem'] ? $this->db_pre.$MODEL[$this->modelid]['tablename'] : $this->db_pre.$MODEL[$this->modelid]['tablename'].'_data';
if($this->fields[$field]['isunique'] && $this->db->get_one(array($field=>$value),$field) && ROUTE_A != 'edit') showmessage($name.L('the_value_must_not_repeat'));
$func = $this->fields[$field]['formtype'];
if(method_exists($this, $func)) $value = $this->$func($field, $value);
if($this->fields[$field]['issystem']) {
$info['system'][$field] = $value;
} else {
$info['model'][$field] = $value;
}
//颜色选择为隐藏域 在这里进行取值
$info['system']['style'] = $_POST['style_color'] ? strip_tags($_POST['style_color']) : '';
if($_POST['style_font_weight']) $info['system']['style'] = $info['system']['style'].';'.strip_tags($_POST['style_font_weight']);
}
return $info;
}
function textarea($field, $value) {
if(!$this->fields[$field]['enablehtml']) $value = strip_tags($value);
return $value;
}
function editor($field, $value) {
$setting = string2array($this->fields[$field]['setting']);
$enablesaveimage = $setting['enablesaveimage'];
if(isset($_POST['spider_img'])) $enablesaveimage = 0;
if($enablesaveimage) {
$site_setting = string2array($this->site_config['setting']);
$watermark_enable = intval($site_setting['watermark_enable']);
$value = $this->attachment->download('content', $value,$watermark_enable);
}
return $value;
}
function box($field, $value) {
if($this->fields[$field]['boxtype'] == 'checkbox') {
if(!is_array($value) || empty($value)) return false;
array_shift($value);
$value = ','.implode(',', $value).',';
return $value;
} elseif($this->fields[$field]['boxtype'] == 'multiple') {
if(is_array($value) && count($value)>0) {
$value = ','.implode(',', $value).',';
return $value;
}
} else {
return $value;
}
}
function image($field, $value) {
return trim($value);
}
function images($field, $value) {
//取得图片列表
$pictures = $_POST[$field.'_url'];
//取得图片说明
$pictures_alt = isset($_POST[$field.'_alt']) ? $_POST[$field.'_alt'] : array();
$array = $temp = array();
if(!empty($pictures)) {
foreach($pictures as $key=>$pic) {
$temp['url'] = $pic;
$temp['alt'] = $pictures_alt[$key];
$array[$key] = $temp;
}
}
$array = array2string($array);
return $array;
}
function datetime($field, $value) {
$setting = string2array($this->fields[$field]['setting']);
if($setting['fieldtype']=='int') {
$value = strtotime($value);
}
return $value;
}
function posid($field, $value) {
$number = count($value);
$value = $number==1 ? 0 : 1;
return $value;
}
function copyfrom($field, $value) {
$field_data = $field.'_data';
if(isset($_POST[$field_data])) {
$value .= '|'.$_POST[$field_data];
}
return $value;
}
function groupid($field, $value) {
$datas = '';
if(!empty($_POST[$field]) && is_array($_POST[$field])) {
$datas = implode(',',$_POST[$field]);
}
return $datas;
}
function downfile($field, $value) {
//取得镜像站点列表
$result = '';
$server_list = count($_POST[$field.'_servers']) > 0 ? implode(',' ,$_POST[$field.'_servers']) : '';
$result = $value.'|'.$server_list;
return $result;
}
function downfiles($field, $value) {
$files = $_POST[$field.'_fileurl'];
$files_alt = $_POST[$field.'_filename'];
$array = $temp = array();
if(!empty($files)) {
foreach($files as $key=>$file) {
$temp['fileurl'] = $file;
$temp['filename'] = $files_alt[$key];
$array[$key] = $temp;
}
}
$array = array2string($array);
return $array;
}
function video($field, $value) {
$post_f = $field.'_video';
if (isset($_POST[$post_f]) && !empty($_POST[$post_f])) {
$value = 1;
$video_store_db = pc_base::load_model('video_store_model');
$setting = getcache('video', 'video');
pc_base::load_app_class('ku6api', 'video', 0);
$ku6api = new ku6api($setting['sn'], $setting['skey']);
pc_base::load_app_class('v', 'video', 0);
$v_class = new v($video_store_db);
$GLOBALS[$field] = '';
foreach ($_POST[$post_f] as $_k => $v) {
if (!$v['vid'] && !$v['videoid']) unset($_POST[$post_f][$_k]);
$info = array();
if ($v['vid']) {
if (!$v['title']) $v['title'] = safe_replace($this->data['title']);
$info = array('vid'=>$v['vid'], 'title'=>$v['title'], 'cid'=>intval($this->data['catid']));
if ($this->data['keywords']) $info['tag'] = addslashes($this->data['keywords']);
if ($this->data['description']) $info['description'] = addslashes($this->data['description']);
$get_data = $ku6api->vms_add($info);
if (!$get_data) {
continue;
}
$info['vid'] = $get_data['vid'];
$info['addtime'] = SYS_TIME;
$info['keywords'] = $info['tag'];
unset($info['cid'], $info['tag']);
$info['userupload'] = 1;
$videoid = $v_class->add($info);
$GLOBALS[$field][] = array('videoid' => $videoid, 'listorder' => $v['listorder']);
} else {
$GLOBALS[$field][] = array('videoid' => $v['videoid'], 'listorder' => $v['listorder']);
}
}
} else {
$value = 0;
}
return $value;
}
}
//content_input.class.php类结束
//content_model.class.php类开始
if(!defined('CACHE_MODEL_PATH')) define('CACHE_MODEL_PATH',CACHE_PATH.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);
/**
* 内容模型数据库操作类
*/
pc_base::load_sys_class('model', '', 0);
class zzcontent_model extends model {
public $table_name = '';
public $category = '';
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
parent::__construct();
$this->url = pc_base::load_app_class('url', 'content');
$this->siteid = get_siteid();
}
public function set_model($modelid) {
$this->model = getcache('model', 'commons');
$this->modelid = $modelid;
$this->table_name = $this->db_tablepre.$this->model[$modelid]['tablename'];
$this->model_tablename = $this->model[$modelid]['tablename'];
}
/**
* 添加内容
*
* @param $datas
* @param $isimport 是否为外部接口导入
*/
public function add_content($data,$isimport = 0) {
if($isimport) $data = new_addslashes($data);
$this->search_db = pc_base::load_model('search_model');
$modelid = $this->modelid;
//require_once CACHE_MODEL_PATH.'content_input.class.php'; //zzcity modi
require_once CACHE_MODEL_PATH.'content_update.class.php';
$content_input = new zzcontent_input($this->modelid);
$inputinfo = $content_input->get($data,$isimport);
$systeminfo = $inputinfo['system'];
$modelinfo = $inputinfo['model'];
if($data['inputtime'] && !is_numeric($data['inputtime'])) {
$systeminfo['inputtime'] = strtotime($data['inputtime']);
} elseif(!$data['inputtime']) {
$systeminfo['inputtime'] = SYS_TIME;
} else {
$systeminfo['inputtime'] = $data['inputtime'];
}
//读取模型字段配置中,关于日期配置格式,来组合日期数据
$this->fields = getcache('model_field_'.$modelid,'model');
$setting = string2array($this->fields['inputtime']['setting']);
extract($setting);
if($fieldtype=='date') {
$systeminfo['inputtime'] = date('Y-m-d');
}elseif($fieldtype=='datetime'){
$systeminfo['inputtime'] = date('Y-m-d H:i:s');
}
if($data['updatetime'] && !is_numeric($data['updatetime'])) {
$systeminfo['updatetime'] = strtotime($data['updatetime']);
} elseif(!$data['updatetime']) {
$systeminfo['updatetime'] = SYS_TIME;
} else {
$systeminfo['updatetime'] = $data['updatetime'];
}
$systeminfo['username'] = $data['username'] ? $data['username'] : param::get_cookie('admin_username');
$systeminfo['sysadd'] = defined('IN_ADMIN') ? 1 : 0;
//自动提取摘要
if(isset($_POST['add_introduce']) && $systeminfo['description'] == '' && isset($modelinfo['content'])) {
$content = stripslashes($modelinfo['content']);
$introcude_length = intval($_POST['introcude_length']);
$systeminfo['description'] = str_cut(str_replace(array("\r\n","\t",'[page]','[/page]','“','”',' '), '', strip_tags($content)),$introcude_length);
$inputinfo['system']['description'] = $systeminfo['description'] = addslashes($systeminfo['description']);
}
//自动提取缩略图
if(isset($_POST['auto_thumb']) && $systeminfo['thumb'] == '' && isset($modelinfo['content'])) {
$content = $content ? $content : stripslashes($modelinfo['content']);
$auto_thumb_no = intval($_POST['auto_thumb_no'])-1;
if(preg_match_all("/(src)=([\"|']?)([^ \"'>]+\.(gif|jpg|jpeg|bmp|png))\\2/i", $content, $matches)) {
$systeminfo['thumb'] = $matches[3][$auto_thumb_no];
}
}
//主表
$tablename = $this->table_name = $this->db_tablepre.$this->model_tablename;
$id = $modelinfo['id'] = $this->insert($systeminfo,true);
$this->update($systeminfo,array('id'=>$id));
//更新URL地址
if($data['islink']==1) {
$urls[0] = $_POST['linkurl'];
} else {
$urls = $this->url->show($id, 0, $systeminfo['catid'], $systeminfo['inputtime'], $data['prefix'],$inputinfo,'add');
}
$this->table_name = $tablename;
$this->update(array('url'=>$urls[0]),array('id'=>$id));
//附属表
$this->table_name = $this->table_name.'_data';
$this->insert($modelinfo);
//添加统计
$this->hits_db = pc_base::load_model('hits_model');
$hitsid = 'c-'.$modelid.'-'.$id;
$this->hits_db->insert(array('hitsid'=>$hitsid,'catid'=>$systeminfo['catid'],'updatetime'=>SYS_TIME));
//更新到全站搜索
$this->search_api($id,$inputinfo);
//更新栏目统计数据
$this->update_category_items($systeminfo['catid'],'add',1);
//调用 update
$content_update = new content_update($this->modelid,$id);
//合并后,调用update
$merge_data = array_merge($systeminfo,$modelinfo);
$merge_data['posids'] = $data['posids'];
$content_update->update($merge_data);
//发布到审核列表中
if(!defined('IN_ADMIN') || $data['status']!=99) {
$this->content_check_db = pc_base::load_model('content_check_model');
$check_data = array(
'checkid'=>'c-'.$id.'-'.$modelid,
'catid'=>$systeminfo['catid'],
'siteid'=>$this->siteid,
'title'=>$systeminfo['title'],
'username'=>$systeminfo['username'],
'inputtime'=>$systeminfo['inputtime'],
'status'=>$data['status'],
);
$this->content_check_db->insert($check_data);
}
//END发布到审核列表中
if(!$isimport) {
$html = pc_base::load_app_class('html', 'content');
$urls['data']['system']['id'] = $id;
if($urls['content_ishtml'] && $data['status']==99) $html->show($urls[1],$urls['data']);
$catid = $systeminfo['catid'];
}
//发布到其他栏目
if($id && isset($_POST['othor_catid']) && is_array($_POST['othor_catid'])) {
$linkurl = $urls[0];
$r = $this->get_one(array('id'=>$id));
foreach ($_POST['othor_catid'] as $cid=>$_v) {
$this->set_catid($cid);
$mid = $this->category[$cid]['modelid'];
if($modelid==$mid) {
//相同模型的栏目插入新的数据
$inputinfo['system']['catid'] = $systeminfo['catid'] = $cid;
$newid = $modelinfo['id'] = $this->insert($systeminfo,true);
$this->table_name = $tablename.'_data';
$this->insert($modelinfo);
if($data['islink']==1) {
$urls = $_POST['linkurl'];
} else {
$urls = $this->url->show($newid, 0, $cid, $systeminfo['inputtime'], $data['prefix'],$inputinfo,'add');
}
$this->table_name = $tablename;
$this->update(array('url'=>$urls[0]),array('id'=>$newid));
//发布到审核列表中
if($data['status']!=99) {
$check_data = array(
'checkid'=>'c-'.$newid.'-'.$mid,
'catid'=>$cid,
'siteid'=>$this->siteid,
'title'=>$systeminfo['title'],
'username'=>$systeminfo['username'],
'inputtime'=>$systeminfo['inputtime'],
'status'=>1,
);
$this->content_check_db->insert($check_data);
}
if($urls['content_ishtml'] && $data['status']==99) $html->show($urls[1],$urls['data']);
} else {
//不同模型插入转向链接地址
$newid = $this->insert(
array('title'=>$systeminfo['title'],
'style'=>$systeminfo['style'],
'thumb'=>$systeminfo['thumb'],
'keywords'=>$systeminfo['keywords'],
'description'=>$systeminfo['description'],
'status'=>$systeminfo['status'],
'catid'=>$cid,'url'=>$linkurl,
'sysadd'=>1,
'username'=>$systeminfo['username'],
'inputtime'=>$systeminfo['inputtime'],
'updatetime'=>$systeminfo['updatetime'],
'islink'=>1
),true);
$this->table_name = $this->table_name.'_data';
$this->insert(array('id'=>$newid));
//发布到审核列表中
if($data['status']!=99) {
$check_data = array(
'checkid'=>'c-'.$newid.'-'.$mid,
'catid'=>$systeminfo['catid'],
'siteid'=>$this->siteid,
'title'=>$systeminfo['title'],
'username'=>$systeminfo['username'],
'inputtime'=>$systeminfo['inputtime'],
'status'=>1,
);
$this->content_check_db->insert($check_data);
}
}
$hitsid = 'c-'.$mid.'-'.$newid;
$this->hits_db->insert(array('hitsid'=>$hitsid,'catid'=>$cid,'updatetime'=>SYS_TIME));
}
}
//END 发布到其他栏目
//更新附件状态
if(pc_base::load_config('system','attachment_stat')) {
$this->attachment_db = pc_base::load_model('attachment_model');
$this->attachment_db->api_update('','c-'.$systeminfo['catid'].'-'.$id,2);
}
//生成静态
if(!$isimport && $data['status']==99) {
//在添加和修改内容处定义了 INDEX_HTML
if(defined('INDEX_HTML')) $html->index();
if(defined('RELATION_HTML')) $html->create_relation_html($catid);
}
return $id;
}
/**
* 修改内容
*
* @param $datas
*/
public function edit_content($data,$id) {
$model_tablename = $this->model_tablename;
//前台权限判断
if(!defined('IN_ADMIN')) {
$_username = param::get_cookie('_username');
$us = $this->get_one(array('id'=>$id,'username'=>$_username));
if(!$us) return false;
}
$this->search_db = pc_base::load_model('search_model');
require_once CACHE_MODEL_PATH.'content_input.class.php';
require_once CACHE_MODEL_PATH.'content_update.class.php';
$content_input = new content_input($this->modelid);
$inputinfo = $content_input->get($data);
$systeminfo = $inputinfo['system'];
$modelinfo = $inputinfo['model'];
if($data['inputtime'] && !is_numeric($data['inputtime'])) {
$systeminfo['inputtime'] = strtotime($data['inputtime']);
} elseif(!$data['inputtime']) {
$systeminfo['inputtime'] = SYS_TIME;
} else {
$systeminfo['inputtime'] = $data['inputtime'];
}
if($data['updatetime'] && !is_numeric($data['updatetime'])) {
$systeminfo['updatetime'] = strtotime($data['updatetime']);
} elseif(!$data['updatetime']) {
$systeminfo['updatetime'] = SYS_TIME;
} else {
$systeminfo['updatetime'] = $data['updatetime'];
}
//自动提取摘要
if(isset($_POST['add_introduce']) && $systeminfo['description'] == '' && isset($modelinfo['content'])) {
$content = stripslashes($modelinfo['content']);
$introcude_length = intval($_POST['introcude_length']);
$systeminfo['description'] = str_cut(str_replace(array("\r\n","\t",'[page]','[/page]','“','”',' '), '', strip_tags($content)),$introcude_length);
$inputinfo['system']['description'] = $systeminfo['description'] = addslashes($systeminfo['description']);
}
//自动提取缩略图
if(isset($_POST['auto_thumb']) && $systeminfo['thumb'] == '' && isset($modelinfo['content'])) {
$content = $content ? $content : stripslashes($modelinfo['content']);
$auto_thumb_no = intval($_POST['auto_thumb_no'])-1;
if(preg_match_all("/(src)=([\"|']?)([^ \"'>]+\.(gif|jpg|jpeg|bmp|png))\\2/i", $content, $matches)) {
$systeminfo['thumb'] = $matches[3][$auto_thumb_no];
}
}
if($data['islink']==1) {
$systeminfo['url'] = $_POST['linkurl'];
} else {
//更新URL地址
$urls = $this->url->show($id, 0, $systeminfo['catid'], $systeminfo['inputtime'], $data['prefix'],$inputinfo,'edit');
$systeminfo['url'] = $urls[0];
}
//主表
$this->table_name = $this->db_tablepre.$model_tablename;
$this->update($systeminfo,array('id'=>$id));
//附属表
$this->table_name = $this->table_name.'_data';
$this->update($modelinfo,array('id'=>$id));
$this->search_api($id,$inputinfo);
//调用 update
$content_update = new content_update($this->modelid,$id);
$content_update->update($data);
//更新附件状态
if(pc_base::load_config('system','attachment_stat')) {
$this->attachment_db = pc_base::load_model('attachment_model');
$this->attachment_db->api_update('','c-'.$systeminfo['catid'].'-'.$id,2);
}
//更新审核列表
$this->content_check_db = pc_base::load_model('content_check_model');
$check_data = array(
'catid'=>$systeminfo['catid'],
'siteid'=>$this->siteid,
'title'=>$systeminfo['title'],
'status'=>$systeminfo['status'],
);
if(!isset($systeminfo['status'])) unset($check_data['status']);
$this->content_check_db->update($check_data,array('checkid'=>'c-'.$id.'-'.$this->modelid));
//生成静态
$html = pc_base::load_app_class('html', 'content');
if($urls['content_ishtml']) {
$html->show($urls[1],$urls['data']);
}
//在添加和修改内容处定义了 INDEX_HTML
if(defined('INDEX_HTML')) $html->index();
if(defined('RELATION_HTML')) $html->create_relation_html($systeminfo['catid']);
return true;
}
public function status($ids = array(), $status = 99) {
$this->content_check_db = pc_base::load_model('content_check_model');
$this->message_db = pc_base::load_model('message_model');
$this->set_model($this->modelid);
if(is_array($ids) && !empty($ids)) {
foreach($ids as $id) {
$this->update(array('status'=>$status),array('id'=>$id));
$del = false;
$r = $this->get_one(array('id'=>$id));
if($status==0) {
//退稿发送短消息、邮件
$message = L('reject_message_tips').$r['title']."
".L('click_edit')."
";
if(isset($_POST['reject_c']) && $_POST['reject_c'] != L('reject_msg')) {
$message .= $_POST['reject_c'];
} elseif(isset($_GET['reject_c']) && $_GET['reject_c'] != L('reject_msg')) {
$message .= $_GET['reject_c'];
}
$this->message_db->add_message($r['username'],'SYSTEM',L('reject_message'),$message);
} elseif($status==99 && $r['sysadd']) {
$this->content_check_db->delete(array('checkid'=>'c-'.$id.'-'.$this->modelid));
$del = true;
}
if(!$del) $this->content_check_db->update(array('status'=>$status),array('checkid'=>'c-'.$id.'-'.$this->modelid));
}
} else {
$this->update(array('status'=>$status),array('id'=>$ids));
$del = false;
$r = $this->get_one(array('id'=>$ids));
if($status==0) {
//退稿发送短消息、邮件
$message = L('reject_message_tips').$r['title']."
".L('click_edit')."
";
if(isset($_POST['reject_c']) && $_POST['reject_c'] != L('reject_msg')) {
$message .= $_POST['reject_c'];
} elseif(isset($_GET['reject_c']) && $_GET['reject_c'] != L('reject_msg')) {
$message .= $_GET['reject_c'];
}
$this->message_db->add_message($r['username'],'SYSTEM',L('reject_message'),$message);
} elseif($status==99 && $r['sysadd']) {
$this->content_check_db->delete(array('checkid'=>'c-'.$ids.'-'.$this->modelid));
$del = true;
}
if(!$del) $this->content_check_db->update(array('status'=>$status),array('checkid'=>'c-'.$ids.'-'.$this->modelid));
}
return true;
}
/**
* 删除内容
* @param $id 内容id
* @param $file 文件路径
* @param $catid 栏目id
*/
public function delete_content($id,$file,$catid = 0) {
//删除主表数据
$this->delete(array('id'=>$id));
//删除从表数据
$this->table_name = $this->table_name.'_data';
$this->delete(array('id'=>$id));
//重置默认表
$this->table_name = $this->db_tablepre.$this->model_tablename;
//更新栏目统计
$this->update_category_items($catid,'delete');
}
private function search_api($id = 0, $data = array(), $action = 'update') {
$type_arr = getcache('search_model_'.$this->siteid,'search');
$typeid = $type_arr[$this->modelid]['typeid'];
if($action == 'update') {
$fulltext_array = getcache('model_field_'.$this->modelid,'model');
foreach($fulltext_array AS $key=>$value){
if($value['isfulltext']) {
$fulltextcontent .= $data['system'][$key] ? $data['system'][$key] : $data['model'][$key];
}
}
$this->search_db->update_search($typeid ,$id, $fulltextcontent,addslashes($data['system']['title']).' '.addslashes($data['system']['keywords']),$data['system']['inputtime']);
} elseif($action == 'delete') {
$this->search_db->delete_search($typeid ,$id);
}
}
/**
* 获取单篇信息
*
* @param $catid
* @param $id
*/
public function get_content($catid,$id) {
$catid = intval($catid);
$id = intval($id);
if(!$catid || !$id) return false;
$siteids = getcache('category_content','commons');
$siteid = $siteids[$catid];
$this->category = getcache('category_content_'.$siteid,'commons');
if(isset($this->category[$catid]) && $this->category[$catid]['type'] == 0) {
$modelid = $this->category[$catid]['modelid'];
$this->set_model($modelid);
$r = $this->get_one(array('id'=>$id));
//附属表
$this->table_name = $this->table_name.'_data';
$r2 = $this->get_one(array('id'=>$id));
if($r2) {
return array_merge($r,$r2);
} else {
return $r;
}
}
return true;
}
/**
* 设置catid 所在的模型数据库
*
* @param $catid
*/
public function set_catid($catid) {
$catid = intval($catid);
if(!$catid) return false;
if(empty($this->category)) {
$siteids = getcache('category_content','commons');
$siteid = $siteids[$catid];
$this->category = getcache('category_content_'.$siteid,'commons');
}
if(isset($this->category[$catid]) && $this->category[$catid]['type'] == 0) {
$modelid = $this->category[$catid]['modelid'];
$this->set_model($modelid);
}
}
private function update_category_items($catid,$action = 'add',$cache = 0) {
$this->category_db = pc_base::load_model('category_model');
if($action=='add') {
$this->category_db->update(array('items'=>'+=1'),array('catid'=>$catid));
} else {
$this->category_db->update(array('items'=>'-=1'),array('catid'=>$catid));
}
if($cache) $this->cache_items();
}
public function cache_items() {
$datas = $this->category_db->select(array('modelid'=>$this->modelid),'catid,type,items',10000);
$array = array();
foreach ($datas as $r) {
if($r['type']==0) $array[$r['catid']] = $r['items'];
}
setcache('category_items_'.$this->modelid, $array,'commons');
}
}
//content_model.class.php类结束
//content.php类开始
defined('IN_PHPCMS') or exit('No permission resources.');
//模型缓存路径
define('CACHE_MODEL_PATH',CACHE_PATH.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);
//定义在单独操作内容的时候,同时更新相关栏目页面
define('RELATION_HTML',true);
pc_base::load_app_class('admin','admin',0);
pc_base::load_sys_class('form','',0);
pc_base::load_app_func('util');
pc_base::load_sys_class('format','',0);
class content extends admin {
private $db,$priv_db;
public $siteid,$categorys;
public function __construct() {
parent::__construct();
//$this->db = pc_base::load_model('content_model');
$this->db=new zzcontent_model; //zzcity modi
$this->siteid = $_POST['default_siteid']; //zzcity add
//$this->siteid = $this->get_siteid();
$this->categorys = getcache('category_content_'.$this->siteid,'commons');
//权限判断
if(isset($_GET['catid']) && $_SESSION['roleid'] != 1 && ROUTE_A !='pass' && strpos(ROUTE_A,'public_')===false) {
$catid = intval($_GET['catid']);
$this->priv_db = pc_base::load_model('category_priv_model');
$action = $this->categorys[$catid]['type']==0 ? ROUTE_A : 'init';
$priv_datas = $this->priv_db->get_one(array('catid'=>$catid,'is_admin'=>1,'action'=>$action));
if(!$priv_datas) zzshowmessage(L('permission_to_operate'),'blank');
}
}
public function init() {
$show_header = $show_dialog = $show_pc_hash = '';
if(isset($_GET['catid']) && $_GET['catid'] && $this->categorys[$_GET['catid']]['siteid']==$this->siteid) {
$catid = $_GET['catid'] = intval($_GET['catid']);
$category = $this->categorys[$catid];
$modelid = $category['modelid'];
$model_arr = getcache('model', 'commons');
$MODEL = $model_arr[$modelid];
unset($model_arr);
$admin_username = param::get_cookie('admin_username');
//查询当前的工作流
$setting = string2array($category['setting']);
$workflowid = $setting['workflowid'];
$workflows = getcache('workflow_'.$this->siteid,'commons');
$workflows = $workflows[$workflowid];
$workflows_setting = string2array($workflows['setting']);
//将有权限的级别放到新数组中
$admin_privs = array();
foreach($workflows_setting as $_k=>$_v) {
if(empty($_v)) continue;
foreach($_v as $_value) {
if($_value==$admin_username) $admin_privs[$_k] = $_k;
}
}
//工作流审核级别
$workflow_steps = $workflows['steps'];
$workflow_menu = '';
$steps = isset($_GET['steps']) ? intval($_GET['steps']) : 0;
//工作流权限判断
if($_SESSION['roleid']!=1 && $steps && !in_array($steps,$admin_privs)) zzshowmessage(L('permission_to_operate'));
$this->db->set_model($modelid);
if($this->db->table_name==$this->db->db_tablepre) zzshowmessage(L('model_table_not_exists'));;
$status = $steps ? $steps : 99;
if(isset($_GET['reject'])) $status = 0;
$where = 'catid='.$catid.' AND status='.$status;
//搜索
if(isset($_GET['start_time']) && $_GET['start_time']) {
$start_time = strtotime($_GET['start_time']);
$where .= " AND `inputtime` > '$start_time'";
}
if(isset($_GET['end_time']) && $_GET['end_time']) {
$end_time = strtotime($_GET['end_time']);
$where .= " AND `inputtime` < '$end_time'";
}
if($start_time>$end_time) zzshowmessage(L('starttime_than_endtime'));
if(isset($_GET['keyword']) && !empty($_GET['keyword'])) {
$type_array = array('title','description','username');
$searchtype = intval($_GET['searchtype']);
if($searchtype < 3) {
$searchtype = $type_array[$searchtype];
$keyword = strip_tags(trim($_GET['keyword']));
$where .= " AND `$searchtype` like '%$keyword%'";
} elseif($searchtype==3) {
$keyword = intval($_GET['keyword']);
$where .= " AND `id`='$keyword'";
}
}
if(isset($_GET['posids']) && !empty($_GET['posids'])) {
$posids = $_GET['posids']==1 ? intval($_GET['posids']) : 0;
$where .= " AND `posids` = '$posids'";
}
$datas = $this->db->listinfo($where,'id desc',$_GET['page']);
$pages = $this->db->pages;
$pc_hash = $_SESSION['pc_hash'];
for($i=1;$i<=$workflow_steps;$i++) {
if($_SESSION['roleid']!=1 && !in_array($i,$admin_privs)) continue;
$current = $steps==$i ? 'class=on' : '';
$r = $this->db->get_one(array('catid'=>$catid,'status'=>$i));
$newimg = $r ? '' : '';
$workflow_menu .= ''.L('workflow_'.$i).$newimg.'|';
}
if($workflow_menu) {
$current = isset($_GET['reject']) ? 'class=on' : '';
$workflow_menu .= ''.L('reject').'|';
}
$template = $MODEL['admin_list_template'] ? $MODEL['admin_list_template'] : 'content_list';
include $this->admin_tpl($template);
} else {
include $this->admin_tpl('content_quick');
}
}
public function add() {
// if(isset($_POST['dosubmit']) || isset($_POST['dosubmit_continue'])) {
define('INDEX_HTML',true);
$catid = $_POST['info']['catid'] = intval($_POST['info']['catid']);
if(trim($_POST['info']['title'])=='') zzshowmessage(L('title_is_empty'));
$category = $this->categorys[$catid];
if($category['type']==0) {
$modelid = $this->categorys[$catid]['modelid'];
$this->db->set_model($modelid);
//如果该栏目设置了工作流,那么必须走工作流设定
$setting = string2array($category['setting']);
$workflowid = $setting['workflowid'];
if($workflowid && $_POST['status']!=99) {
//如果用户是超级管理员,那么则根据自己的设置来发布
$_POST['info']['status'] = $_SESSION['roleid']==1 ? intval($_POST['status']) : 1;
} else {
$_POST['info']['status'] = 99;
}
$this->db->add_content($_POST['info']);
// if(isset($_POST['dosubmit'])) {
// zzshowmessage(L('add_success').L('2s_close'),'blank','','','function set_time() {$("#secondid").html(1);}setTimeout("set_time()", 500);setTimeout("window.close()", 1200);');
// } else {
// zzshowmessage(L('add_success'),HTTP_REFERER);
// }
} else {
//单网页
$this->page_db = pc_base::load_model('page_model');
$style_font_weight = $_POST['style_font_weight'] ? 'font-weight:'.strip_tags($_POST['style_font_weight']) : '';
$_POST['info']['style'] = strip_tags($_POST['style_color']).';'.$style_font_weight;
if($_POST['edit']) {
$this->page_db->update($_POST['info'],array('catid'=>$catid));
} else {
$catid = $this->page_db->insert($_POST['info'],1);
}
$this->page_db->create_html($catid,$_POST['info']);
$forward = HTTP_REFERER;
}
//zzshowmessage(L('add_success'),$forward);
echo('[ok]');
// } else {
// $show_header = $show_dialog = $show_validator = '';
// //设置cookie 在附件添加处调用
// param::set_cookie('module', 'content');
//
// if(isset($_GET['catid']) && $_GET['catid']) {
// $catid = $_GET['catid'] = intval($_GET['catid']);
//
// param::set_cookie('catid', $catid);
// $category = $this->categorys[$catid];
// if($category['type']==0) {
// $modelid = $category['modelid'];
// //取模型ID,依模型ID来生成对应的表单
// require CACHE_MODEL_PATH.'content_form.class.php';
// $content_form = new content_form($modelid,$catid,$this->categorys);
// $forminfos = $content_form->get();
// $formValidator = $content_form->formValidator;
// $setting = string2array($category['setting']);
// $workflowid = $setting['workflowid'];
// $workflows = getcache('workflow_'.$this->siteid,'commons');
// $workflows = $workflows[$workflowid];
// $workflows_setting = string2array($workflows['setting']);
// $nocheck_users = $workflows_setting['nocheck_users'];
// $admin_username = param::get_cookie('admin_username');
// if(!empty($nocheck_users) && in_array($admin_username, $nocheck_users)) {
// $priv_status = true;
// } else {
// $priv_status = false;
// }
// include $this->admin_tpl('content_add');
// } else {
// //单网页
// $this->page_db = pc_base::load_model('page_model');
//
// $r = $this->page_db->get_one(array('catid'=>$catid));
//
// if($r) {
// extract($r);
// $style_arr = explode(';',$style);
// $style_color = $style_arr[0];
// $style_font_weight = $style_arr[1] ? substr($style_arr[1],12) : '';
// }
// include $this->admin_tpl('content_page');
// }
// } else {
// include $this->admin_tpl('content_add');
// }
// header("Cache-control: private");
// }
}
public function edit() {
//设置cookie 在附件添加处调用
param::set_cookie('module', 'content');
if(isset($_POST['dosubmit']) || isset($_POST['dosubmit_continue'])) {
define('INDEX_HTML',true);
$id = $_POST['info']['id'] = intval($_POST['id']);
$catid = $_POST['info']['catid'] = intval($_POST['info']['catid']);
if(trim($_POST['info']['title'])=='') zzshowmessage(L('title_is_empty'));
$modelid = $this->categorys[$catid]['modelid'];
$this->db->set_model($modelid);
$this->db->edit_content($_POST['info'],$id);
if(isset($_POST['dosubmit'])) {
zzshowmessage(L('update_success').L('2s_close'),'blank','','','function set_time() {$("#secondid").html(1);}setTimeout("set_time()", 500);setTimeout("window.close()", 1200);');
} else {
zzshowmessage(L('update_success'),HTTP_REFERER);
}
} else {
$show_header = $show_dialog = $show_validator = '';
//从数据库获取内容
$id = intval($_GET['id']);
if(!isset($_GET['catid']) || !$_GET['catid']) zzshowmessage(L('missing_part_parameters'));
$catid = $_GET['catid'] = intval($_GET['catid']);
$this->model = getcache('model', 'commons');
param::set_cookie('catid', $catid);
$category = $this->categorys[$catid];
$modelid = $category['modelid'];
$this->db->table_name = $this->db->db_tablepre.$this->model[$modelid]['tablename'];
$r = $this->db->get_one(array('id'=>$id));
$this->db->table_name = $this->db->table_name.'_data';
$r2 = $this->db->get_one(array('id'=>$id));
if(!$r2) zzshowmessage(L('subsidiary_table_datalost'),'blank');
$data = array_merge($r,$r2);
require CACHE_MODEL_PATH.'content_form.class.php';
$content_form = new content_form($modelid,$catid,$this->categorys);
$forminfos = $content_form->get($data);
$formValidator = $content_form->formValidator;
include $this->admin_tpl('content_edit');
}
header("Cache-control: private");
}
/**
* 删除
*/
public function delete() {
if(isset($_GET['dosubmit'])) {
$catid = intval($_GET['catid']);
if(!$catid) zzshowmessage(L('missing_part_parameters'));
$modelid = $this->categorys[$catid]['modelid'];
$sethtml = $this->categorys[$catid]['sethtml'];
$siteid = $this->categorys[$catid]['siteid'];
$html_root = pc_base::load_config('system','html_root');
if($sethtml) $html_root = '';
$setting = string2array($this->categorys[$catid]['setting']);
$content_ishtml = $setting['content_ishtml'];
$this->db->set_model($modelid);
$this->hits_db = pc_base::load_model('hits_model');
$this->queue = pc_base::load_model('queue_model');
if(isset($_GET['ajax_preview'])) {
$ids = intval($_GET['id']);
$_POST['ids'] = array(0=>$ids);
}
if(empty($_POST['ids'])) zzshowmessage(L('you_do_not_check'));
//附件初始化
$attachment = pc_base::load_model('attachment_model');
$this->content_check_db = pc_base::load_model('content_check_model');
$this->position_data_db = pc_base::load_model('position_data_model');
$this->search_db = pc_base::load_model('search_model');
//判断视频模块是否安装
if (module_exists('video') && file_exists(PC_PATH.'model'.DIRECTORY_SEPARATOR.'video_content_model.class.php')) {
$video_content_db = pc_base::load_model('video_content_model');
$video_install = 1;
}
$this->comment = pc_base::load_app_class('comment', 'comment');
$search_model = getcache('search_model_'.$this->siteid,'search');
$typeid = $search_model[$modelid]['typeid'];
$this->url = pc_base::load_app_class('url', 'content');
foreach($_POST['ids'] as $id) {
$r = $this->db->get_one(array('id'=>$id));
if($content_ishtml && !$r['islink']) {
$urls = $this->url->show($id, 0, $r['catid'], $r['inputtime']);
$fileurl = $urls[1];
if($this->siteid != 1) {
$sitelist = getcache('sitelist','commons');
$fileurl = $html_root.'/'.$sitelist[$this->siteid]['dirname'].$fileurl;
}
//删除静态文件,排除htm/html/shtml外的文件
$lasttext = strrchr($fileurl,'.');
$len = -strlen($lasttext);
$path = substr($fileurl,0,$len);
$path = ltrim($path,'/');
$filelist = glob(PHPCMS_PATH.$path.'*');
foreach ($filelist as $delfile) {
$lasttext = strrchr($delfile,'.');
if(!in_array($lasttext, array('.htm','.html','.shtml'))) continue;
@unlink($delfile);
//删除发布点队列数据
$delfile = str_replace(PHPCMS_PATH, '/', $delfile);
$this->queue->add_queue('del',$delfile,$this->siteid);
}
} else {
$fileurl = 0;
}
//删除内容
$this->db->delete_content($id,$fileurl,$catid);
//删除统计表数据
$this->hits_db->delete(array('hitsid'=>'c-'.$modelid.'-'.$id));
//删除附件
$attachment->api_delete('c-'.$catid.'-'.$id);
//删除审核表数据
$this->content_check_db->delete(array('checkid'=>'c-'.$id.'-'.$modelid));
//删除推荐位数据
$this->position_data_db->delete(array('id'=>$id,'catid'=>$catid,'module'=>'content'));
//删除全站搜索中数据
$this->search_db->delete_search($typeid,$id);
//删除视频库与内容对应关系数据
if ($video_install ==1) {
$video_content_db->delete(array('contentid'=>$id, 'modelid'=>$modelid));
}
//删除相关的评论,删除前应该判断是否还存在此模块
if(module_exists('comment')){
$commentid = id_encode('content_'.$catid, $id, $siteid);
$this->comment->del($commentid, $siteid, $id, $catid);
}
}
//更新栏目统计
$this->db->cache_items();
zzshowmessage(L('operation_success'),HTTP_REFERER);
} else {
zzshowmessage(L('operation_failure'));
}
}
/**
* 过审内容
*/
public function pass() {
$admin_username = param::get_cookie('admin_username');
$catid = intval($_GET['catid']);
if(!$catid) zzshowmessage(L('missing_part_parameters'));
$category = $this->categorys[$catid];
$setting = string2array($category['setting']);
$workflowid = $setting['workflowid'];
//只有存在工作流才需要审核
if($workflowid) {
$steps = intval($_GET['steps']);
//检查当前用户有没有当前工作流的操作权限
$workflows = getcache('workflow_'.$this->siteid,'commons');
$workflows = $workflows[$workflowid];
$workflows_setting = string2array($workflows['setting']);
//将有权限的级别放到新数组中
$admin_privs = array();
foreach($workflows_setting as $_k=>$_v) {
if(empty($_v)) continue;
foreach($_v as $_value) {
if($_value==$admin_username) $admin_privs[$_k] = $_k;
}
}
if($_SESSION['roleid']!=1 && $steps && !in_array($steps,$admin_privs)) zzshowmessage(L('permission_to_operate'));
//更改内容状态
if(isset($_GET['reject'])) {
//退稿
$status = 0;
} else {
//工作流审核级别
$workflow_steps = $workflows['steps'];
if($workflow_steps>$steps) {
$status = $steps+1;
} else {
$status = 99;
}
}
$modelid = $this->categorys[$catid]['modelid'];
$this->db->set_model($modelid);
//审核通过,检查投稿奖励或扣除积分
if ($status==99) {
$html = pc_base::load_app_class('html', 'content');
$this->url = pc_base::load_app_class('url', 'content');
$member_db = pc_base::load_model('member_model');
if (isset($_POST['ids']) && !empty($_POST['ids'])) {
foreach ($_POST['ids'] as $id) {
$content_info = $this->db->get_content($catid,$id);
$memberinfo = $member_db->get_one(array('username'=>$content_info['username']), 'userid, username');
$flag = $catid.'_'.$id;
if($setting['presentpoint']>0) {
pc_base::load_app_class('receipts','pay',0);
receipts::point($setting['presentpoint'],$memberinfo['userid'], $memberinfo['username'], $flag,'selfincome',L('contribute_add_point'),$memberinfo['username']);
} else {
pc_base::load_app_class('spend','pay',0);
spend::point($setting['presentpoint'], L('contribute_del_point'), $memberinfo['userid'], $memberinfo['username'], '', '', $flag);
}
if($setting['content_ishtml'] == '1'){//栏目有静态配置
$urls = $this->url->show($id, 0, $content_info['catid'], $content_info['inputtime'], '',$content_info,'add');
$html->show($urls[1],$urls['data'],0);
}
}
} else if (isset($_GET['id']) && $_GET['id']) {
$id = intval($_GET['id']);
$content_info = $this->db->get_content($catid,$id);
$memberinfo = $member_db->get_one(array('username'=>$content_info['username']), 'userid, username');
$flag = $catid.'_'.$id;
if($setting['presentpoint']>0) {
pc_base::load_app_class('receipts','pay',0);
receipts::point($setting['presentpoint'],$memberinfo['userid'], $memberinfo['username'], $flag,'selfincome',L('contribute_add_point'),$memberinfo['username']);
} else {
pc_base::load_app_class('spend','pay',0);
spend::point($setting['presentpoint'], L('contribute_del_point'), $memberinfo['userid'], $memberinfo['username'], '', '', $flag);
}
//单篇审核,生成静态
if($setting['content_ishtml'] == '1'){//栏目有静态配置
$urls = $this->url->show($id, 0, $content_info['catid'], $content_info['inputtime'], '',$content_info,'add');
$html->show($urls[1],$urls['data'],0);
}
}
}
if(isset($_GET['ajax_preview'])) {
$_POST['ids'] = $_GET['id'];
}
$this->db->status($_POST['ids'],$status);
}
zzshowmessage(L('operation_success'),HTTP_REFERER);
}
/**
* 排序
*/
public function listorder() {
if(isset($_GET['dosubmit'])) {
$catid = intval($_GET['catid']);
if(!$catid) zzshowmessage(L('missing_part_parameters'));
$modelid = $this->categorys[$catid]['modelid'];
$this->db->set_model($modelid);
foreach($_POST['listorders'] as $id => $listorder) {
$this->db->update(array('listorder'=>$listorder),array('id'=>$id));
}
zzshowmessage(L('operation_success'));
} else {
zzshowmessage(L('operation_failure'));
}
}
/**
* 显示栏目菜单列表
*/
public function public_categorys() {
$show_header = '';
$cfg = getcache('common','commons');
$ajax_show = intval($cfg['category_ajax']);
$from = isset($_GET['from']) && in_array($_GET['from'],array('block')) ? $_GET['from'] : 'content';
$tree = pc_base::load_sys_class('tree');
if($from=='content' && $_SESSION['roleid'] != 1) {
$this->priv_db = pc_base::load_model('category_priv_model');
$priv_result = $this->priv_db->select(array('action'=>'init','roleid'=>$_SESSION['roleid'],'siteid'=>$this->siteid,'is_admin'=>1));
$priv_catids = array();
foreach($priv_result as $_v) {
$priv_catids[] = $_v['catid'];
}
if(empty($priv_catids)) return '';
}
$categorys = array();
if(!empty($this->categorys)) {
foreach($this->categorys as $r) {
if($r['siteid']!=$this->siteid || ($r['type']==2 && $r['child']==0)) continue;
if($from=='content' && $_SESSION['roleid'] != 1 && !in_array($r['catid'],$priv_catids)) {
$arrchildid = explode(',',$r['arrchildid']);
$array_intersect = array_intersect($priv_catids,$arrchildid);
if(empty($array_intersect)) continue;
}
if($r['type']==1 || $from=='block') {
if($r['type']==0) {
$r['vs_show'] = "[".L('content_page')."]";
} else {
$r['vs_show'] ='';
}
$r['icon_type'] = 'file';
$r['add_icon'] = '';
$r['type'] = 'add';
} else {
$r['icon_type'] = $r['vs_show'] = '';
$r['type'] = 'init';
$r['add_icon'] = " ";
}
$categorys[$r['catid']] = $r;
}
}
if(!empty($categorys)) {
$tree->init($categorys);
switch($from) {
case 'block':
$strs = "\$add_icon\$catname \$vs_show";
$strs2 = " \$catname";
break;
default:
$strs = "\$add_icon\$catname";
$strs2 = "\$catname";
break;
}
$categorys = $tree->get_treeview(0,'category_tree',$strs,$strs2,$ajax_show);
} else {
$categorys = L('please_add_category');
}
include $this->admin_tpl('category_tree');
exit;
}
/**
* 检查标题是否存在
*/
public function public_check_title() {
if($_GET['data']=='' || (!$_GET['catid'])) return '';
$catid = intval($_GET['catid']);
$modelid = $this->categorys[$catid]['modelid'];
$this->db->set_model($modelid);
$title = $_GET['data'];
if(CHARSET=='gbk') $title = iconv('utf-8','gbk',$title);
$r = $this->db->get_one(array('title'=>$title));
if($r) {
exit('1');
} else {
exit('0');
}
}
/**
* 图片裁切
*/
public function public_crop() {
if (isset($_GET['picurl']) && !empty($_GET['picurl'])) {
$picurl = $_GET['picurl'];
$catid = intval($_GET['catid']);
if (isset($_GET['module']) && !empty($_GET['module'])) {
$module = $_GET['module'];
}
$show_header = '';
include $this->admin_tpl('crop');
}
}
/**
* 相关文章选择
*/
public function public_relationlist() {
pc_base::load_sys_class('format','',0);
$show_header = '';
$model_cache = getcache('model','commons');
if(!isset($_GET['modelid'])) {
zzshowmessage(L('please_select_modelid'));
} else {
$page = intval($_GET['page']);
$modelid = intval($_GET['modelid']);
$this->db->set_model($modelid);
$where = '';
if($_GET['catid']) {
$catid = intval($_GET['catid']);
$where .= "catid='$catid'";
}
$where .= $where ? ' AND status=99' : 'status=99';
if(isset($_GET['keywords'])) {
$keywords = trim($_GET['keywords']);
$field = $_GET['field'];
if(in_array($field, array('id','title','keywords','description'))) {
if($field=='id') {
$where .= " AND `id` ='$keywords'";
} else {
$where .= " AND `$field` like '%$keywords%'";
}
}
}
$infos = $this->db->listinfo($where,'',$page,12);
$pages = $this->db->pages;
include $this->admin_tpl('relationlist');
}
}
public function public_getjson_ids() {
$modelid = intval($_GET['modelid']);
$id = intval($_GET['id']);
$this->db->set_model($modelid);
$tablename = $this->db->table_name;
$this->db->table_name = $tablename.'_data';
$r = $this->db->get_one(array('id'=>$id),'relation');
if($r['relation']) {
$relation = str_replace('|', ',', $r['relation']);
$relation = trim($relation,',');
$where = "id IN($relation)";
$infos = array();
$this->db->table_name = $tablename;
$datas = $this->db->select($where,'id,title');
foreach($datas as $_v) {
$_v['sid'] = 'v'.$_v['id'];
if(strtolower(CHARSET)=='gbk') $_v['title'] = iconv('gbk', 'utf-8', $_v['title']);
$infos[] = $_v;
}
echo json_encode($infos);
}
}
//文章预览
public function public_preview() {
$catid = intval($_GET['catid']);
$id = intval($_GET['id']);
if(!$catid || !$id) zzshowmessage(L('missing_part_parameters'),'blank');
$page = intval($_GET['page']);
$page = max($page,1);
$CATEGORYS = getcache('category_content_'.$this->get_siteid(),'commons');
if(!isset($CATEGORYS[$catid]) || $CATEGORYS[$catid]['type']!=0) zzshowmessage(L('missing_part_parameters'),'blank');
define('HTML', true);
$CAT = $CATEGORYS[$catid];
$siteid = $CAT['siteid'];
$MODEL = getcache('model','commons');
$modelid = $CAT['modelid'];
$this->db->table_name = $this->db->db_tablepre.$MODEL[$modelid]['tablename'];
$r = $this->db->get_one(array('id'=>$id));
if(!$r) zzshowmessage(L('information_does_not_exist'));
$this->db->table_name = $this->db->table_name.'_data';
$r2 = $this->db->get_one(array('id'=>$id));
$rs = $r2 ? array_merge($r,$r2) : $r;
//再次重新赋值,以数据库为准
$catid = $CATEGORYS[$r['catid']]['catid'];
$modelid = $CATEGORYS[$catid]['modelid'];
require_once CACHE_MODEL_PATH.'content_output.class.php';
$content_output = new content_output($modelid,$catid,$CATEGORYS);
$data = $content_output->get($rs);
extract($data);
$CAT['setting'] = string2array($CAT['setting']);
$template = $template ? $template : $CAT['setting']['show_template'];
$allow_visitor = 1;
//SEO
$SEO = seo($siteid, $catid, $title, $description);
define('STYLE',$CAT['setting']['template_list']);
if(isset($rs['paginationtype'])) {
$paginationtype = $rs['paginationtype'];
$maxcharperpage = $rs['maxcharperpage'];
}
$pages = $titles = '';
if($rs['paginationtype']==1) {
//自动分页
if($maxcharperpage < 10) $maxcharperpage = 500;
$contentpage = pc_base::load_app_class('contentpage');
$content = $contentpage->get_data($content,$maxcharperpage);
}
if($rs['paginationtype']!=0) {
//手动分页
$CONTENT_POS = strpos($content, '[page]');
if($CONTENT_POS !== false) {
$this->url = pc_base::load_app_class('url', 'content');
$contents = array_filter(explode('[page]', $content));
$pagenumber = count($contents);
for($i=1; $i<=$pagenumber; $i++) {
$pageurls[$i] = $this->url->show($id, $i, $catid, $rs['inputtime']);
}
$END_POS = strpos($content, '[/page]');
if($END_POS !== false) {
if(preg_match_all("|\[page\](.*)\[/page\]|U", $content, $m, PREG_PATTERN_ORDER)) {
foreach($m[1] as $k=>$v) {
$p = $k+1;
$titles[$p]['title'] = strip_tags($v);
$titles[$p]['url'] = $pageurls[$p][0];
}
}
} else {
//当不存在 [/page]时,则使用下面分页
$pages = content_pages($pagenumber,$page, $pageurls);
}
//判断[page]出现的位置是否在第一位
if($CONTENT_POS<7) {
$content = $contents[$page];
} else {
$content = $contents[$page-1];
}
if($titles) {
list($title, $content) = explode('[/page]', $content);
$content = trim($content);
if(strpos($content,'')===0) {
$content = ''.$content;
}
if(stripos($content,'
')===0) {
$content = $content.'
';
}
}
}
}
include template('content',$template);
$pc_hash = $_SESSION['pc_hash'];
$steps = intval($_GET['steps']);
echo "
";
}
/**
* 审核所有内容
*/
public function public_checkall() {
$page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;
$show_header = '';
$workflows = getcache('workflow_'.$this->siteid,'commons');
$datas = array();
$pagesize = 20;
$sql = '';
if (in_array($_SESSION['roleid'], array('1'))) {
$super_admin = 1;
$status = isset($_GET['status']) ? $_GET['status'] : -1;
} else {
$super_admin = 0;
$status = isset($_GET['status']) ? $_GET['status'] : 1;
if($status==-1) $status = 1;
}
if($status>4) $status = 4;
$this->priv_db = pc_base::load_model('category_priv_model');;
$admin_username = param::get_cookie('admin_username');
if($status==-1) {
$sql = "`status` NOT IN (99,0,-2) AND `siteid`=$this->siteid";
} else {
$sql = "`status` = '$status' AND `siteid`=$this->siteid";
}
if($status!=0 && !$super_admin) {
//以栏目进行循环
foreach ($this->categorys as $catid => $cat) {
if($cat['type']!=0) continue;
//查看管理员是否有这个栏目的查看权限。
if (!$this->priv_db->get_one(array('catid'=>$catid, 'siteid'=>$this->siteid, 'roleid'=>$_SESSION['roleid'], 'is_admin'=>'1'))) {
continue;
}
//如果栏目有设置工作流,进行权限检查。
$workflow = array();
$cat['setting'] = string2array($cat['setting']);
if (isset($cat['setting']['workflowid']) && !empty($cat['setting']['workflowid'])) {
$workflow = $workflows[$cat['setting']['workflowid']];
$workflow['setting'] = string2array($workflow['setting']);
$usernames = $workflow['setting'][$status];
if (empty($usernames) || !in_array($admin_username, $usernames)) {//判断当前管理,在工作流中可以审核几审
continue;
}
}
$priv_catid[] = $catid;
}
if(empty($priv_catid)) {
$sql .= " AND catid = -1";
} else {
$priv_catid = implode(',', $priv_catid);
$sql .= " AND catid IN ($priv_catid)";
}
}
$this->content_check_db = pc_base::load_model('content_check_model');
$datas = $this->content_check_db->listinfo($sql,'inputtime DESC',$page);
$pages = $this->content_check_db->pages;
include $this->admin_tpl('content_checkall');
}
/**
* 批量移动文章
*/
public function remove() {
if(isset($_POST['dosubmit'])) {
$this->content_check_db = pc_base::load_model('content_check_model');
if($_POST['fromtype']==0) {
if($_POST['ids']=='') zzshowmessage(L('please_input_move_source'));
if(!$_POST['tocatid']) zzshowmessage(L('please_select_target_category'));
$tocatid = intval($_POST['tocatid']);
$modelid = $this->categorys[$tocatid]['modelid'];
if(!$modelid) zzshowmessage(L('illegal_operation'));
$ids = array_filter(explode(',', $_POST['ids']),"intval");
foreach ($ids as $id) {
$checkid = 'c-'.$id.'-'.$this->siteid;
$this->content_check_db->update(array('catid'=>$tocatid), array('checkid'=>$checkid));
}
$ids = implode(',', $ids);
$this->db->set_model($modelid);
$this->db->update(array('catid'=>$tocatid),"id IN($ids)");
} else {
if(!$_POST['fromid']) zzshowmessage(L('please_input_move_source'));
if(!$_POST['tocatid']) zzshowmessage(L('please_select_target_category'));
$tocatid = intval($_POST['tocatid']);
$modelid = $this->categorys[$tocatid]['modelid'];
if(!$modelid) zzshowmessage(L('illegal_operation'));
$fromid = array_filter($_POST['fromid'],"intval");
$fromid = implode(',', $fromid);
$this->db->set_model($modelid);
$this->db->update(array('catid'=>$tocatid),"catid IN($fromid)");
}
zzshowmessage(L('operation_success'),HTTP_REFERER);
//ids
} else {
$show_header = '';
$catid = intval($_GET['catid']);
$modelid = $this->categorys[$catid]['modelid'];
$tree = pc_base::load_sys_class('tree');
$tree->icon = array(' │ ',' ├─ ',' └─ ');
$tree->nbsp = ' ';
$categorys = array();
foreach($this->categorys as $cid=>$r) {
if($this->siteid != $r['siteid'] || $r['type']) continue;
if($modelid && $modelid != $r['modelid']) continue;
$r['disabled'] = $r['child'] ? 'disabled' : '';
$r['selected'] = $cid == $catid ? 'selected' : '';
$categorys[$cid] = $r;
}
$str = "";
$tree->init($categorys);
$string .= $tree->get_tree(0, $str);
$str = "";
$source_string = '';
$tree->init($categorys);
$source_string .= $tree->get_tree(0, $str);
$ids = empty($_POST['ids']) ? '' : implode(',',$_POST['ids']);
include $this->admin_tpl('content_remove');
}
}
/**
* 同时发布到其他栏目
*/
public function add_othors() {
$show_header = '';
$sitelist = getcache('sitelist','commons');
$siteid = $_GET['siteid'];
include $this->admin_tpl('add_othors');
}
/**
* 同时发布到其他栏目 异步加载栏目
*/
public function public_getsite_categorys() {
$siteid = intval($_GET['siteid']);
$this->categorys = getcache('category_content_'.$siteid,'commons');
$models = getcache('model','commons');
$tree = pc_base::load_sys_class('tree');
$tree->icon = array(' │ ',' ├─ ',' └─ ');
$tree->nbsp = ' ';
$categorys = array();
if($_SESSION['roleid'] != 1) {
$this->priv_db = pc_base::load_model('category_priv_model');
$priv_result = $this->priv_db->select(array('action'=>'add','roleid'=>$_SESSION['roleid'],'siteid'=>$siteid,'is_admin'=>1));
$priv_catids = array();
foreach($priv_result as $_v) {
$priv_catids[] = $_v['catid'];
}
if(empty($priv_catids)) return '';
}
foreach($this->categorys as $r) {
if($r['siteid']!=$siteid || $r['type']!=0) continue;
if($_SESSION['roleid'] != 1 && !in_array($r['catid'],$priv_catids)) {
$arrchildid = explode(',',$r['arrchildid']);
$array_intersect = array_intersect($priv_catids,$arrchildid);
if(empty($array_intersect)) continue;
}
$r['modelname'] = $models[$r['modelid']]['name'];
$r['style'] = $r['child'] ? 'color:#8A8A8A;' : '';
$r['click'] = $r['child'] ? '' : "onclick=\"select_list(this,'".safe_replace($r['catname'])."',".$r['catid'].")\" class='cu' title='".L('click_to_select')."'";
$categorys[$r['catid']] = $r;
}
$str = "
\$id |
\$spacer\$catname |
\$modelname |
";
$tree->init($categorys);
$categorys = $tree->get_tree(0, $str);
echo $categorys;
}
public function public_sub_categorys() {
$cfg = getcache('common','commons');
$ajax_show = intval(abs($cfg['category_ajax']));
$catid = intval($_POST['root']);
$modelid = intval($_POST['modelid']);
$this->categorys = getcache('category_content_'.$this->siteid,'commons');
$tree = pc_base::load_sys_class('tree');
if(!empty($this->categorys)) {
foreach($this->categorys as $r) {
if($r['siteid']!=$this->siteid || ($r['type']==2 && $r['child']==0)) continue;
if($from=='content' && $_SESSION['roleid'] != 1 && !in_array($r['catid'],$priv_catids)) {
$arrchildid = explode(',',$r['arrchildid']);
$array_intersect = array_intersect($priv_catids,$arrchildid);
if(empty($array_intersect)) continue;
}
if($r['type']==1 || $from=='block') {
if($r['type']==0) {
$r['vs_show'] = "[".L('content_page')."]";
} else {
$r['vs_show'] ='';
}
$r['icon_type'] = 'file';
$r['add_icon'] = '';
$r['type'] = 'add';
} else {
$r['icon_type'] = $r['vs_show'] = '';
$r['type'] = 'init';
$r['add_icon'] = " ";
}
$categorys[$r['catid']] = $r;
}
}
if(!empty($categorys)) {
$tree->init($categorys);
switch($from) {
case 'block':
$strs = "\$add_icon\$catname \$vs_show";
break;
default:
$strs = "\$add_icon\$catname";
break;
}
$data = $tree->creat_sub_json($catid,$strs);
}
echo $data;
}
}
//contetn.php类结束
zzlogin(); //zzcity 登陆
$_SESSION['roleid']=1;
$myclassname=ROUTE_C;
//$filepath=PC_PATH.'modules'.DIRECTORY_SEPARATOR.ROUTE_M.DIRECTORY_SEPARATOR.$myclassname.'.php';
//include_once $filepath;
$controller=new $myclassname;
call_user_func(array($controller, ROUTE_A));
//zzcity 替代结束
?>