KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache
System : Linux 10-169-227-96.cprapid.com 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User : kwssawblade ( 1099)
PHP Version : 7.2.34
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/kwssawblade/.trash/runtime/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/kwssawblade/.trash/runtime/common~runtime.php
<?php namespace {function C($name=null, $value=null,$default=null) { static $_config = array(); if (empty($name)) { return $_config; } if (is_string($name)) { if (!strpos($name, '.')) { $name = strtoupper($name); if (is_null($value)) return isset($_config[$name]) ? $_config[$name] : $default; $_config[$name] = $value; return null; } $name = explode('.', $name); $name[0] = strtoupper($name[0]); if (is_null($value)) return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : $default; $_config[$name[0]][$name[1]] = $value; return null; } if (is_array($name)){ $_config = array_merge($_config, array_change_key_case($name,CASE_UPPER)); return null; } return null; } function load_config($file,$parse=CONF_PARSE){ $ext = pathinfo($file,PATHINFO_EXTENSION); switch($ext){ case 'php': return include $file; case 'ini': return parse_ini_file($file); case 'yaml': return yaml_parse_file($file); case 'xml': return (array)simplexml_load_file($file); case 'json': return json_decode(file_get_contents($file), true); default: if(function_exists($parse)){ return $parse($file); }else{ E(L('_NOT_SUPPORT_').':'.$ext); } } } if (!function_exists('yaml_parse_file')) { function yaml_parse_file($file) { vendor('spyc.Spyc'); return Spyc::YAMLLoad($file); } } function E($msg, $code=0) { throw new Think\Exception($msg, $code); } function G($start,$end='',$dec=4) { static $_info = array(); static $_mem = array(); if(is_float($end)) { $_info[$start] = $end; }elseif(!empty($end)){ if(!isset($_info[$end])) $_info[$end] = microtime(TRUE); if(MEMORY_LIMIT_ON && $dec=='m'){ if(!isset($_mem[$end])) $_mem[$end] = memory_get_usage(); return number_format(($_mem[$end]-$_mem[$start])/1024); }else{ return number_format(($_info[$end]-$_info[$start]),$dec); } }else{ $_info[$start] = microtime(TRUE); if(MEMORY_LIMIT_ON) $_mem[$start] = memory_get_usage(); } return null; } function L($name=null, $value=null) { static $_lang = array(); if (empty($name)) return $_lang; if (is_string($name)) { $name = strtoupper($name); if (is_null($value)){ return isset($_lang[$name]) ? $_lang[$name] : $name; }elseif(is_array($value)){ $replace = array_keys($value); foreach($replace as &$v){ $v = '{$'.$v.'}'; } return str_replace($replace,$value,isset($_lang[$name]) ? $_lang[$name] : $name); } $_lang[$name] = $value; return null; } if (is_array($name)) $_lang = array_merge($_lang, array_change_key_case($name, CASE_UPPER)); return null; } function trace($value='[think]',$label='',$level='DEBUG',$record=false) { return Think\Think::trace($value,$label,$level,$record); } function compile($filename) { $content = php_strip_whitespace($filename); $content = trim(substr($content, 5)); $content = preg_replace('/\/\/\[RUNTIME\](.*?)\/\/\[\/RUNTIME\]/s', '', $content); if(0===strpos($content,'namespace')){ $content = preg_replace('/namespace\s(.*?);/','namespace \\1{',$content,1); }else{ $content = 'namespace {'.$content; } if ('?>' == substr($content, -2)) $content = substr($content, 0, -2); return $content.'}'; } function T($template='',$layer=''){ if(false === strpos($template,'://')){ $template = 'http://'.str_replace(':', '/',$template); } $info = parse_url($template); $file = $info['host'].(isset($info['path'])?$info['path']:''); $module = isset($info['user'])?$info['user'].'/':MODULE_NAME.'/'; $extend = $info['scheme']; $layer = $layer?$layer:C('DEFAULT_V_LAYER'); $auto = C('AUTOLOAD_NAMESPACE'); if($auto && isset($auto[$extend])){ $baseUrl = $auto[$extend].$module.$layer.'/'; }elseif(C('VIEW_PATH')){ $baseUrl = C('VIEW_PATH'); }elseif(defined('TMPL_PATH')){ $baseUrl = TMPL_PATH.$module; }else{ $baseUrl = APP_PATH.$module.$layer.'/'; } $theme = substr_count($file,'/')<2 ? C('DEFAULT_THEME') : ''; $depr = C('TMPL_FILE_DEPR'); if('' == $file) { $file = CONTROLLER_NAME . $depr . ACTION_NAME; }elseif(false === strpos($file, '/')){ $file = CONTROLLER_NAME . $depr . $file; }elseif('/' != $depr){ $file = substr_count($file,'/')>1 ? substr_replace($file,$depr,strrpos($file,'/'),1) : str_replace('/', $depr, $file); } return $baseUrl.($theme?$theme.'/':'').$file.C('TMPL_TEMPLATE_SUFFIX'); } function I($name,$default='',$filter=null,$datas=null) { static $_PUT = null; if(strpos($name,'/')){ list($name,$type) = explode('/',$name,2); }elseif(C('VAR_AUTO_STRING')){ $type = 's'; } if(strpos($name,'.')) { list($method,$name) = explode('.',$name,2); }else{ $method = 'param'; } switch(strtolower($method)) { case 'get' : $input =& $_GET; break; case 'post' : $input =& $_POST; break; case 'put' : if(is_null($_PUT)){ parse_str(file_get_contents('php://input'), $_PUT); } $input = $_PUT; break; case 'param' : switch($_SERVER['REQUEST_METHOD']) { case 'POST': $input = $_POST; break; case 'PUT': if(is_null($_PUT)){ parse_str(file_get_contents('php://input'), $_PUT); } $input = $_PUT; break; default: $input = $_GET; } break; case 'path' : $input = array(); if(!empty($_SERVER['PATH_INFO'])){ $depr = C('URL_PATHINFO_DEPR'); $input = explode($depr,trim($_SERVER['PATH_INFO'],$depr)); } break; case 'request' : $input =& $_REQUEST; break; case 'session' : $input =& $_SESSION; break; case 'cookie' : $input =& $_COOKIE; break; case 'server' : $input =& $_SERVER; break; case 'globals' : $input =& $GLOBALS; break; case 'data' : $input =& $datas; break; default: return null; } if(''==$name) { $data = $input; $filters = isset($filter)?$filter:C('DEFAULT_FILTER'); if($filters) { if(is_string($filters)){ $filters = explode(',',$filters); } foreach($filters as $filter){ $data = array_map_recursive($filter,$data); } } }elseif(isset($input[$name])) { $data = $input[$name]; $filters = isset($filter)?$filter:C('DEFAULT_FILTER'); if($filters) { if(is_string($filters)){ if(0 === strpos($filters,'/')){ if(1 !== preg_match($filters,(string)$data)){ return isset($default) ? $default : null; } }else{ $filters = explode(',',$filters); } }elseif(is_int($filters)){ $filters = array($filters); } if(is_array($filters)){ foreach($filters as $filter){ if(function_exists($filter)) { $data = is_array($data) ? array_map_recursive($filter,$data) : $filter($data); }else{ $data = filter_var($data,is_int($filter) ? $filter : filter_id($filter)); if(false === $data) { return isset($default) ? $default : null; } } } } } if(!empty($type)){ switch(strtolower($type)){ case 'a': $data = (array)$data; break; case 'd': $data = (int)$data; break; case 'f': $data = (float)$data; break; case 'b': $data = (boolean)$data; break; case 's': default: $data = (string)$data; } } }else{ $data = isset($default)?$default:null; } is_array($data) && array_walk_recursive($data,'think_filter'); return $data; } function array_map_recursive($filter, $data) { $result = array(); foreach ($data as $key => $val) { $result[$key] = is_array($val) ? array_map_recursive($filter, $val) : call_user_func($filter, $val); } return $result; } function N($key, $step=0,$save=false) { static $_num = array(); if (!isset($_num[$key])) { $_num[$key] = (false !== $save)? S('N_'.$key) : 0; } if (empty($step)){ return $_num[$key]; }else{ $_num[$key] = $_num[$key] + (int)$step; } if(false !== $save){ S('N_'.$key,$_num[$key],$save); } return null; } function parse_name($name, $type=0) { if ($type) { return ucfirst(preg_replace_callback('/_([a-zA-Z])/', function($match){return strtoupper($match[1]);}, $name)); } else { return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_")); } } function require_cache($filename) { static $_importFiles = array(); if (!isset($_importFiles[$filename])) { if (file_exists_case($filename)) { require $filename; $_importFiles[$filename] = true; } else { $_importFiles[$filename] = false; } } return $_importFiles[$filename]; } function file_exists_case($filename) { if (is_file($filename)) { if (IS_WIN && APP_DEBUG) { if (basename(realpath($filename)) != basename($filename)) return false; } return true; } return false; } function import($class, $baseUrl = '', $ext=EXT) { static $_file = array(); $class = str_replace(array('.', '#'), array('/', '.'), $class); if (isset($_file[$class . $baseUrl])) return true; else $_file[$class . $baseUrl] = true; $class_strut = explode('/', $class); if (empty($baseUrl)) { if ('@' == $class_strut[0] || MODULE_NAME == $class_strut[0]) { $baseUrl = MODULE_PATH; $class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1); }elseif ('Common' == $class_strut[0]) { $baseUrl = COMMON_PATH; $class = substr($class, 7); }elseif (in_array($class_strut[0],array('Think','Org','Behavior','Com','Vendor')) || is_dir(LIB_PATH.$class_strut[0])) { $baseUrl = LIB_PATH; }else { $baseUrl = APP_PATH; } } if (substr($baseUrl, -1) != '/') $baseUrl .= '/'; $classfile = $baseUrl . $class . $ext; if (!class_exists(basename($class),false)) { return require_cache($classfile); } return null; } function load($name, $baseUrl='', $ext='.php') { $name = str_replace(array('.', '#'), array('/', '.'), $name); if (empty($baseUrl)) { if (0 === strpos($name, '@/')) { $baseUrl = MODULE_PATH.'Common/'; $name = substr($name, 2); } else { $array = explode('/', $name); $baseUrl = APP_PATH . array_shift($array).'/Common/'; $name = implode('/',$array); } } if (substr($baseUrl, -1) != '/') $baseUrl .= '/'; require_cache($baseUrl . $name . $ext); } function vendor($class, $baseUrl = '', $ext='.php') { if (empty($baseUrl)) $baseUrl = VENDOR_PATH; return import($class, $baseUrl, $ext); } function D($name='',$layer='') { if(empty($name)) return new Think\Model; static $_model = array(); $layer = $layer? : C('DEFAULT_M_LAYER'); if(isset($_model[$name.$layer])) return $_model[$name.$layer]; $class = parse_res_name($name,$layer); if(class_exists($class)) { $model = new $class(basename($name)); }elseif(false === strpos($name,'/')){ if(!C('APP_USE_NAMESPACE')){ import('Common/'.$layer.'/'.$class); }else{ $class = '\\Common\\'.$layer.'\\'.$name.$layer; } $model = class_exists($class)? new $class($name) : new Think\Model($name); }else { Think\Log::record('D方法实例化没找到模型类'.$class,Think\Log::NOTICE); $model = new Think\Model(basename($name)); } $_model[$name.$layer] = $model; return $model; } function M($name='', $tablePrefix='',$connection='') { static $_model = array(); if(strpos($name,':')) { list($class,$name) = explode(':',$name); }else{ $class = 'Think\\Model'; } $guid = (is_array($connection)?implode('',$connection):$connection).$tablePrefix . $name . '_' . $class; if (!isset($_model[$guid])) $_model[$guid] = new $class($name,$tablePrefix,$connection); return $_model[$guid]; } function parse_res_name($name,$layer,$level=1){ if(strpos($name,'://')) { list($extend,$name) = explode('://',$name); }else{ $extend = ''; } if(strpos($name,'/') && substr_count($name, '/')>=$level){ list($module,$name) = explode('/',$name,2); }else{ $module = defined('MODULE_NAME') ? MODULE_NAME : '' ; } $array = explode('/',$name); if(!C('APP_USE_NAMESPACE')){ $class = parse_name($name, 1); import($module.'/'.$layer.'/'.$class.$layer); }else{ $class = $module.'\\'.$layer; foreach($array as $name){ $class .= '\\'.parse_name($name, 1); } if($extend){ $class = $extend.'\\'.$class; } } return $class.$layer; } function controller($name,$path=''){ $layer = C('DEFAULT_C_LAYER'); if(!C('APP_USE_NAMESPACE')){ $class = parse_name($name, 1).$layer; import(MODULE_NAME.'/'.$layer.'/'.$class); }else{ $class = ( $path ? basename(ADDON_PATH).'\\'.$path : MODULE_NAME ).'\\'.$layer; $array = explode('/',$name); foreach($array as $name){ $class .= '\\'.parse_name($name, 1); } $class .= $layer; } if(class_exists($class)) { return new $class(); }else { return false; } } function A($name,$layer='',$level=0) { static $_action = array(); $layer = $layer? : C('DEFAULT_C_LAYER'); $level = $level? : ($layer == C('DEFAULT_C_LAYER')?C('CONTROLLER_LEVEL'):1); if(isset($_action[$name.$layer])) return $_action[$name.$layer]; $class = parse_res_name($name,$layer,$level); if(class_exists($class)) { $action = new $class(); $_action[$name.$layer] = $action; return $action; }else { return false; } } function R($url,$vars=array(),$layer='') { $info = pathinfo($url); $action = $info['basename']; $module = $info['dirname']; $class = A($module,$layer); if($class){ if(is_string($vars)) { parse_str($vars,$vars); } return call_user_func_array(array(&$class,$action.C('ACTION_SUFFIX')),$vars); }else{ return false; } } function tag($tag, &$params=NULL) { \Think\Hook::listen($tag,$params); } function B($name, $tag='',&$params=NULL) { if(''==$tag){ $name .= 'Behavior'; } return \Think\Hook::exec($name,$tag,$params); } function strip_whitespace($content) { $stripStr = ''; $tokens = token_get_all($content); $last_space = false; for ($i = 0, $j = count($tokens); $i < $j; $i++) { if (is_string($tokens[$i])) { $last_space = false; $stripStr .= $tokens[$i]; } else { switch ($tokens[$i][0]) { case T_COMMENT: case T_DOC_COMMENT: break; case T_WHITESPACE: if (!$last_space) { $stripStr .= ' '; $last_space = true; } break; case T_START_HEREDOC: $stripStr .= "<<<THINK\n"; break; case T_END_HEREDOC: $stripStr .= "THINK;\n"; for($k = $i+1; $k < $j; $k++) { if(is_string($tokens[$k]) && $tokens[$k] == ';') { $i = $k; break; } else if($tokens[$k][0] == T_CLOSE_TAG) { break; } } break; default: $last_space = false; $stripStr .= $tokens[$i][1]; } } } return $stripStr; } function throw_exception($msg, $type='Think\\Exception', $code=0) { Think\Log::record('建议使用E方法替代throw_exception',Think\Log::NOTICE); if (class_exists($type, false)) throw new $type($msg, $code); else Think\Think::halt($msg); } function dump($var, $echo=true, $label=null, $strict=true) { $label = ($label === null) ? '' : rtrim($label) . ' '; if (!$strict) { if (ini_get('html_errors')) { $output = print_r($var, true); $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>'; } else { $output = $label . print_r($var, true); } } else { ob_start(); var_dump($var); $output = ob_get_clean(); if (!extension_loaded('xdebug')) { $output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', $output); $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>'; } } if ($echo) { echo($output); return null; }else return $output; } function layout($layout) { if(false !== $layout) { C('LAYOUT_ON',true); if(is_string($layout)) { C('LAYOUT_NAME',$layout); } }else{ C('LAYOUT_ON',false); } } function U($url='',$vars='',$suffix=true,$domain=false) { $info = parse_url($url); $url = !empty($info['path'])?$info['path']:ACTION_NAME; if(isset($info['fragment'])) { $anchor = $info['fragment']; if(false !== strpos($anchor,'?')) { list($anchor,$info['query']) = explode('?',$anchor,2); } if(false !== strpos($anchor,'@')) { list($anchor,$host) = explode('@',$anchor, 2); } }elseif(false !== strpos($url,'@')) { list($url,$host) = explode('@',$info['path'], 2); } if(isset($host)) { $domain = $host.(strpos($host,'.')?'':strstr($_SERVER['HTTP_HOST'],'.')); }elseif($domain===true){ $domain = $_SERVER['HTTP_HOST']; if(C('APP_SUB_DOMAIN_DEPLOY') ) { $domain = $domain=='localhost'?'localhost':'www'.strstr($_SERVER['HTTP_HOST'],'.'); foreach (C('APP_SUB_DOMAIN_RULES') as $key => $rule) { $rule = is_array($rule)?$rule[0]:$rule; if(false === strpos($key,'*') && 0=== strpos($url,$rule)) { $domain = $key.strstr($domain,'.'); $url = substr_replace($url,'',0,strlen($rule)); break; } } } } if(is_string($vars)) { parse_str($vars,$vars); }elseif(!is_array($vars)){ $vars = array(); } if(isset($info['query'])) { parse_str($info['query'],$params); $vars = array_merge($params,$vars); } $depr = C('URL_PATHINFO_DEPR'); $urlCase = C('URL_CASE_INSENSITIVE'); if($url) { if(0=== strpos($url,'/')) { $route = true; $url = substr($url,1); if('/' != $depr) { $url = str_replace('/',$depr,$url); } }else{ if('/' != $depr) { $url = str_replace('/',$depr,$url); } $url = trim($url,$depr); $path = explode($depr,$url); $var = array(); $varModule = C('VAR_MODULE'); $varController = C('VAR_CONTROLLER'); $varAction = C('VAR_ACTION'); $var[$varAction] = !empty($path)?array_pop($path):ACTION_NAME; $var[$varController] = !empty($path)?array_pop($path):CONTROLLER_NAME; if($maps = C('URL_ACTION_MAP')) { if(isset($maps[strtolower($var[$varController])])) { $maps = $maps[strtolower($var[$varController])]; if($action = array_search(strtolower($var[$varAction]),$maps)){ $var[$varAction] = $action; } } } if($maps = C('URL_CONTROLLER_MAP')) { if($controller = array_search(strtolower($var[$varController]),$maps)){ $var[$varController] = $controller; } } if($urlCase) { $var[$varController] = parse_name($var[$varController]); } $module = ''; if(!empty($path)) { $var[$varModule] = implode($depr,$path); }else{ if(C('MULTI_MODULE')) { if(MODULE_NAME != C('DEFAULT_MODULE') || !C('MODULE_ALLOW_LIST')){ $var[$varModule]= MODULE_NAME; } } } if($maps = C('URL_MODULE_MAP')) { if($_module = array_search(strtolower($var[$varModule]),$maps)){ $var[$varModule] = $_module; } } if(isset($var[$varModule])){ $module = $var[$varModule]; unset($var[$varModule]); } } } if(C('URL_MODEL') == 0) { $url = __APP__.'?'.C('VAR_MODULE')."={$module}&".http_build_query(array_reverse($var)); if($urlCase){ $url = strtolower($url); } if(!empty($vars)) { $vars = http_build_query($vars); $url .= '&'.$vars; } }else{ if(isset($route)) { $url = __APP__.'/'.rtrim($url,$depr); }else{ $module = (defined('BIND_MODULE') && BIND_MODULE==$module )? '' : $module; $url = __APP__.'/'.($module?$module.MODULE_PATHINFO_DEPR:'').implode($depr,array_reverse($var)); } if($urlCase){ $url = strtolower($url); } if(!empty($vars)) { foreach ($vars as $var => $val){ if('' !== trim($val)) $url .= $depr . $var . $depr . urlencode($val); } } if($suffix) { $suffix = $suffix===true?C('URL_HTML_SUFFIX'):$suffix; if($pos = strpos($suffix, '|')){ $suffix = substr($suffix, 0, $pos); } if($suffix && '/' != substr($url,-1)){ $url .= '.'.ltrim($suffix,'.'); } } } if(isset($anchor)){ $url .= '#'.$anchor; } if($domain) { $url = (is_ssl()?'https://':'http://').$domain.$url; } return $url; } function W($name, $data=array()) { return R($name,$data,'Widget'); } function is_ssl() { if(isset($_SERVER['HTTPS']) && ('1' == $_SERVER['HTTPS'] || 'on' == strtolower($_SERVER['HTTPS']))){ return true; }elseif(isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'] )) { return true; } return false; } function redirect($url, $time=0, $msg='') { $url = str_replace(array("\n", "\r"), '', $url); if (empty($msg)) $msg = "系统将在{$time}秒之后自动跳转到{$url}!"; if (!headers_sent()) { if (0 === $time) { header('Location: ' . $url); } else { header("refresh:{$time};url={$url}"); echo($msg); } exit(); } else { $str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>"; if ($time != 0) $str .= $msg; exit($str); } } function S($name,$value='',$options=null) { static $cache = ''; if(is_array($options)){ $type = isset($options['type'])?$options['type']:''; $cache = Think\Cache::getInstance($type,$options); }elseif(is_array($name)) { $type = isset($name['type'])?$name['type']:''; $cache = Think\Cache::getInstance($type,$name); return $cache; }elseif(empty($cache)) { $cache = Think\Cache::getInstance(); } if(''=== $value){ return $cache->get($name); }elseif(is_null($value)) { return $cache->rm($name); }else { if(is_array($options)) { $expire = isset($options['expire'])?$options['expire']:NULL; }else{ $expire = is_numeric($options)?$options:NULL; } return $cache->set($name, $value, $expire); } } function F($name, $value='', $path=DATA_PATH) { static $_cache = array(); $filename = $path . $name . '.php'; if ('' !== $value) { if (is_null($value)) { if(false !== strpos($name,'*')){ return false; }else{ unset($_cache[$name]); return Think\Storage::unlink($filename,'F'); } } else { Think\Storage::put($filename,serialize($value),'F'); $_cache[$name] = $value; return null; } } if (isset($_cache[$name])) return $_cache[$name]; if (Think\Storage::has($filename,'F')){ $value = unserialize(Think\Storage::read($filename,'F')); $_cache[$name] = $value; } else { $value = false; } return $value; } function to_guid_string($mix) { if (is_object($mix)) { return spl_object_hash($mix); } elseif (is_resource($mix)) { $mix = get_resource_type($mix) . strval($mix); } else { $mix = serialize($mix); } return md5($mix); } function xml_encode($data, $root='think', $item='item', $attr='', $id='id', $encoding='utf-8') { if(is_array($attr)){ $_attr = array(); foreach ($attr as $key => $value) { $_attr[] = "{$key}=\"{$value}\""; } $attr = implode(' ', $_attr); } $attr = trim($attr); $attr = empty($attr) ? '' : " {$attr}"; $xml = "<?xml version=\"1.0\" encoding=\"{$encoding}\"?>"; $xml .= "<{$root}{$attr}>"; $xml .= data_to_xml($data, $item, $id); $xml .= "</{$root}>"; return $xml; } function data_to_xml($data, $item='item', $id='id') { $xml = $attr = ''; foreach ($data as $key => $val) { if(is_numeric($key)){ $id && $attr = " {$id}=\"{$key}\""; $key = $item; } $xml .= "<{$key}{$attr}>"; $xml .= (is_array($val) || is_object($val)) ? data_to_xml($val, $item, $id) : $val; $xml .= "</{$key}>"; } return $xml; } function session($name='',$value='') { $prefix = C('SESSION_PREFIX'); if(is_array($name)) { if(isset($name['prefix'])) C('SESSION_PREFIX',$name['prefix']); if(C('VAR_SESSION_ID') && isset($_REQUEST[C('VAR_SESSION_ID')])){ session_id($_REQUEST[C('VAR_SESSION_ID')]); }elseif(isset($name['id'])) { session_id($name['id']); } if('common' == APP_MODE){ ini_set('session.auto_start', 0); } if(isset($name['name'])) session_name($name['name']); if(isset($name['path'])) session_save_path($name['path']); if(isset($name['domain'])) ini_set('session.cookie_domain', $name['domain']); if(isset($name['expire'])) { ini_set('session.gc_maxlifetime', $name['expire']); ini_set('session.cookie_lifetime', $name['expire']); } if(isset($name['use_trans_sid'])) ini_set('session.use_trans_sid', $name['use_trans_sid']?1:0); if(isset($name['use_cookies'])) ini_set('session.use_cookies', $name['use_cookies']?1:0); if(isset($name['cache_limiter'])) session_cache_limiter($name['cache_limiter']); if(isset($name['cache_expire'])) session_cache_expire($name['cache_expire']); if(isset($name['type'])) C('SESSION_TYPE',$name['type']); if(C('SESSION_TYPE')) { $type = C('SESSION_TYPE'); $class = strpos($type,'\\')? $type : 'Think\\Session\\Driver\\'. ucwords(strtolower($type)); $hander = new $class(); session_set_save_handler( array(&$hander,"open"), array(&$hander,"close"), array(&$hander,"read"), array(&$hander,"write"), array(&$hander,"destroy"), array(&$hander,"gc")); } if(C('SESSION_AUTO_START')) session_start(); }elseif('' === $value){ if(''===$name){ return $prefix ? $_SESSION[$prefix] : $_SESSION; }elseif(0===strpos($name,'[')) { if('[pause]'==$name){ session_write_close(); }elseif('[start]'==$name){ session_start(); }elseif('[destroy]'==$name){ $_SESSION = array(); session_unset(); session_destroy(); }elseif('[regenerate]'==$name){ session_regenerate_id(); } }elseif(0===strpos($name,'?')){ $name = substr($name,1); if(strpos($name,'.')){ list($name1,$name2) = explode('.',$name); return $prefix?isset($_SESSION[$prefix][$name1][$name2]):isset($_SESSION[$name1][$name2]); }else{ return $prefix?isset($_SESSION[$prefix][$name]):isset($_SESSION[$name]); } }elseif(is_null($name)){ if($prefix) { unset($_SESSION[$prefix]); }else{ $_SESSION = array(); } }elseif($prefix){ if(strpos($name,'.')){ list($name1,$name2) = explode('.',$name); return isset($_SESSION[$prefix][$name1][$name2])?$_SESSION[$prefix][$name1][$name2]:null; }else{ return isset($_SESSION[$prefix][$name])?$_SESSION[$prefix][$name]:null; } }else{ if(strpos($name,'.')){ list($name1,$name2) = explode('.',$name); return isset($_SESSION[$name1][$name2])?$_SESSION[$name1][$name2]:null; }else{ return isset($_SESSION[$name])?$_SESSION[$name]:null; } } }elseif(is_null($value)){ if(strpos($name,'.')){ list($name1,$name2) = explode('.',$name); if($prefix){ unset($_SESSION[$prefix][$name1][$name2]); }else{ unset($_SESSION[$name1][$name2]); } }else{ if($prefix){ unset($_SESSION[$prefix][$name]); }else{ unset($_SESSION[$name]); } } }else{ if(strpos($name,'.')){ list($name1,$name2) = explode('.',$name); if($prefix){ $_SESSION[$prefix][$name1][$name2] = $value; }else{ $_SESSION[$name1][$name2] = $value; } }else{ if($prefix){ $_SESSION[$prefix][$name] = $value; }else{ $_SESSION[$name] = $value; } } } return null; } function cookie($name='', $value='', $option=null) { $config = array( 'prefix' => C('COOKIE_PREFIX'), 'expire' => C('COOKIE_EXPIRE'), 'path' => C('COOKIE_PATH'), 'domain' => C('COOKIE_DOMAIN'), 'secure' => C('COOKIE_SECURE'), 'httponly' => C('COOKIE_HTTPONLY'), ); if (!is_null($option)) { if (is_numeric($option)) $option = array('expire' => $option); elseif (is_string($option)) parse_str($option, $option); $config = array_merge($config, array_change_key_case($option)); } if(!empty($config['httponly'])){ ini_set("session.cookie_httponly", 1); } if (is_null($name)) { if (empty($_COOKIE)) return null; $prefix = empty($value) ? $config['prefix'] : $value; if (!empty($prefix)) { foreach ($_COOKIE as $key => $val) { if (0 === stripos($key, $prefix)) { setcookie($key, '', time() - 3600, $config['path'], $config['domain'],$config['secure'],$config['httponly']); unset($_COOKIE[$key]); } } } return null; }elseif('' === $name){ return $_COOKIE; } $name = $config['prefix'] . str_replace('.', '_', $name); if ('' === $value) { if(isset($_COOKIE[$name])){ $value = $_COOKIE[$name]; if(0===strpos($value,'think:')){ $value = substr($value,6); return array_map('urldecode',json_decode(MAGIC_QUOTES_GPC?stripslashes($value):$value,true)); }else{ return $value; } }else{ return null; } } else { if (is_null($value)) { setcookie($name, '', time() - 3600, $config['path'], $config['domain'],$config['secure'],$config['httponly']); unset($_COOKIE[$name]); } else { if(is_array($value)){ $value = 'think:'.json_encode(array_map('urlencode',$value)); } $expire = !empty($config['expire']) ? time() + intval($config['expire']) : 0; setcookie($name, $value, $expire, $config['path'], $config['domain'],$config['secure'],$config['httponly']); $_COOKIE[$name] = $value; } } return null; } function load_ext_file($path) { if($files = C('LOAD_EXT_FILE')) { $files = explode(',',$files); foreach ($files as $file){ $file = $path.'Common/'.$file.'.php'; if(is_file($file)) include $file; } } if($configs = C('LOAD_EXT_CONFIG')) { if(is_string($configs)) $configs = explode(',',$configs); foreach ($configs as $key=>$config){ $file = is_file($config)? $config : $path.'Conf/'.$config.CONF_EXT; if(is_file($file)) { is_numeric($key)?C(load_config($file)):C($key,load_config($file)); } } } } function get_client_ip($type = 0,$adv=false) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$type]; if($adv){ if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $pos = array_search('unknown',$arr); if(false !== $pos) unset($arr[$pos]); $ip = trim($arr[0]); }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; }elseif (isset($_SERVER['REMOTE_ADDR'])) { $ip = $_SERVER['REMOTE_ADDR']; } }elseif (isset($_SERVER['REMOTE_ADDR'])) { $ip = $_SERVER['REMOTE_ADDR']; } $long = sprintf("%u",ip2long($ip)); $ip = $long ? array($ip, $long) : array('0.0.0.0', 0); return $ip[$type]; } function send_http_status($code) { static $_status = array( 100 => 'Continue', 101 => 'Switching Protocols', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Moved Temporarily ', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 509 => 'Bandwidth Limit Exceeded' ); if(isset($_status[$code])) { header('HTTP/1.1 '.$code.' '.$_status[$code]); header('Status:'.$code.' '.$_status[$code]); } } function think_filter(&$value){ if(preg_match('/^(EXP|NEQ|GT|EGT|LT|ELT|OR|XOR|LIKE|NOTLIKE|NOT BETWEEN|NOTBETWEEN|BETWEEN|NOTIN|NOT IN|IN)$/i',$value)){ $value .= ' '; } } function in_array_case($value,$array){ return in_array(strtolower($value),array_map('strtolower',$array)); }}namespace {function get_current_admin_id(){ return $_SESSION['ADMIN_ID']; } function get_admin_info($admin_id){ $map['id'] = $admin_id; $admininfo = M('Users')->where($map)->find(); if($admininfo)return $admininfo; else return false; } function sp_get_current_admin_id(){ return get_current_admin_id(); } function sp_is_user_login(){ return !empty($_SESSION['user']); } function sp_get_current_user(){ if(isset($_SESSION['user'])){ return $_SESSION['user']; }else{ return false; } } function sp_update_current_user($user){ $_SESSION['user']=$user; } function get_current_userid(){ if(isset($_SESSION['user'])){ return $_SESSION['user']['id']; }else{ return 0; } } function sp_get_current_userid(){ return get_current_userid(); } function sp_get_host(){ $host=$_SERVER["HTTP_HOST"]; $protocol=is_ssl()?"https://":"http://"; return $protocol.$host; } function sp_get_theme_path(){ $tmpl_path=C("SP_TMPL_PATH"); $theme = C('SP_DEFAULT_THEME'); if(C('TMPL_DETECT_THEME')) { $t = C('VAR_TEMPLATE'); if (isset($_GET[$t])){ $theme = $_GET[$t]; }elseif(cookie('think_template')){ $theme = cookie('think_template'); } if(!file_exists($tmpl_path."/".$theme)){ $theme = C('SP_DEFAULT_THEME'); } cookie('think_template',$theme,864000); } return __ROOT__.'/'.$tmpl_path.$theme."/"; } function sp_get_user_avatar_url($avatar){ if($avatar){ if(strpos($avatar, "http")===0){ return $avatar; }else { return sp_get_asset_upload_path("avatar/".$avatar); } }else{ return $avatar; } } function sp_password($pw,$authcode=''){ if(empty($authcode)){ $authcode=C("AUTHCODE"); } $result="###".md5(md5($authcode.$pw)); return $result; } function sp_password_old($pw){ $decor=md5(C('DB_PREFIX')); $mi=md5($pw); return substr($decor,0,12).$mi.substr($decor,-4,4); } function sp_compare_password($password,$password_in_db){ if(strpos($password_in_db, "###")===0){ return sp_password($password)==$password_in_db; }else{ return sp_password_old($password)==$password_in_db; } } function sp_log($content,$file="log.txt"){ file_put_contents($file, $content,FILE_APPEND); } function sp_random_string($len = 6) { $chars = array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ); $charsLen = count($chars) - 1; shuffle($chars); $output = ""; for ($i = 0; $i < $len; $i++) { $output .= $chars[mt_rand(0, $charsLen)]; } return $output; } function sp_clear_cache(){ import ( "ORG.Util.Dir" ); $dirs = array (); $rootdirs = sp_scan_dir( RUNTIME_PATH."*" ); $noneed_clear=array(".",".."); $rootdirs=array_diff($rootdirs, $noneed_clear); foreach ( $rootdirs as $dir ) { if ($dir != "." && $dir != "..") { $dir = RUNTIME_PATH . $dir; if (is_dir ( $dir )) { $tmprootdirs = sp_scan_dir ( $dir."/*" ); foreach ( $tmprootdirs as $tdir ) { if ($tdir != "." && $tdir != "..") { $tdir = $dir . '/' . $tdir; if (is_dir ( $tdir )) { array_push ( $dirs, $tdir ); }else{ @unlink($tdir); } } } }else{ @unlink($dir); } } } $dirtool=new \Dir(""); foreach ( $dirs as $dir ) { $dirtool->delDir ( $dir ); } if(sp_is_sae()){ $global_mc=@memcache_init(); if($global_mc){ $global_mc->flush(); } $no_need_delete=array("THINKCMF_DYNAMIC_CONFIG"); $kv = new SaeKV(); $ret = $kv->init(); $ret = $kv->pkrget('', 100); while (true) { foreach($ret as $key =>$value){ if(!in_array($key, $no_need_delete)){ $kv->delete($key); } } end($ret); $start_key = key($ret); $i = count($ret); if ($i < 100) break; $ret = $kv->pkrget('', 100, $start_key); } } } function sp_save_var($path,$value){ $ret = file_put_contents($path, "<?php\treturn " . var_export($value, true) . ";?>"); return $ret; } function sp_set_dynamic_config($data){ if(!is_array($data)){ return false; } if(sp_is_sae()){ $kv = new SaeKV(); $ret = $kv->init(); $configs=$kv->get("THINKCMF_DYNAMIC_CONFIG"); $configs=empty($configs)?array():unserialize($configs); $configs=array_merge($configs,$data); $result = $kv->set('THINKCMF_DYNAMIC_CONFIG', serialize($configs)); }elseif(defined('IS_BAE') && IS_BAE){ $bae_mc=new BaeMemcache(); $configs=$bae_mc->get("THINKCMF_DYNAMIC_CONFIG"); $configs=empty($configs)?array():unserialize($configs); $configs=array_merge($configs,$data); $result = $bae_mc->set("THINKCMF_DYNAMIC_CONFIG",serialize($configs),MEMCACHE_COMPRESSED,0); }else{ $config_file="./data/conf/config.php"; if(file_exists($config_file)){ $configs=include $config_file; }else { $configs=array(); } $configs=array_merge($configs,$data); $result = file_put_contents($config_file, "<?php\treturn " . var_export($configs, true) . ";"); } sp_clear_cache(); S("sp_dynamic_config",$configs); return $result; } function sp_param_lable($tag = ''){ $param = array(); $array = explode(';',$tag); foreach ($array as $v){ $v=trim($v); if(!empty($v)){ list($key,$val) = explode(':',$v); $param[trim($key)] = trim($val); } } return $param; } function get_site_options(){ $site_options = F("site_options"); if(empty($site_options)){ $options_obj = M("Options"); $option = $options_obj->where("option_name='site_options'")->find(); if($option){ $site_options = json_decode($option['option_value'],true); }else{ $site_options = array(); } F("site_options", $site_options); } $site_options['site_tongji']=htmlspecialchars_decode($site_options['site_tongji']); return $site_options; } function sp_get_site_options(){ return get_site_options(); } function sp_get_cmf_settings($key=""){ $cmf_settings = F("cmf_settings"); if(empty($cmf_settings)){ $options_obj = M("Options"); $option = $options_obj->where("option_name='cmf_settings'")->find(); if($option){ $cmf_settings = json_decode($option['option_value'],true); }else{ $cmf_settings = array(); } F("cmf_settings", $cmf_settings); } if(!empty($key)){ return $cmf_settings[$key]; } return $cmf_settings; } function sp_get_cmf_settings_ads(){ $cmf_settings = F("cmf_settings_ads"); if(empty($cmf_settings)){ $options_obj = M("Options"); $option = $options_obj->where("option_name='site_indexads'")->find(); if($option){ $cmf_settings = json_decode($option['option_value'],true); }else{ $cmf_settings = array(); } F("cmf_settings_ads", $cmf_settings); } return $cmf_settings; } function sp_set_cmf_setting($data){ if(!is_array($data) || empty($data) ){ return false; } $cmf_settings['option_name']="cmf_settings"; $options_model=M("Options"); $find_setting=$options_model->where("option_name='cmf_settings'")->find(); F("cmf_settings",null); if($find_setting){ $setting=json_decode($find_setting['option_value'],true); if($setting){ $setting=array_merge($setting,$data); }else { $setting=$data; } $cmf_settings['option_value']=json_encode($setting); return $options_model->where("option_name='cmf_settings'")->save($cmf_settings); }else{ $cmf_settings['option_value']=json_encode($data); return $options_model->add($cmf_settings); } } function sp_verifycode_img($imgparam='length=4&font_size=20&width=238&height=50&use_curve=1&use_noise=1',$imgattrs='style="cursor: pointer;"'){ $src=__ROOT__."/index.php?g=api&m=checkcode&a=index&".$imgparam; $img=<<<THINK
<img class="verify_img" src="$src" onclick="this.src='$src&time='+Math.random();" $imgattrs/>
THINK;
 return $img; } function sp_verifycode_img2($imgparam='length=4&font_size=20&width=238&height=50&use_curve=1&use_noise=1',$imgattrs='style="cursor: pointer;"'){ $src=__ROOT__."/index.php?g=api&m=checkcode&a=index&".$imgparam; $img=<<<THINK
<img src="$src" onclick="this.src='$src&time='+Math.random();" $imgattrs/>
THINK;
 return $img; } function sp_get_menu($id="main",$effected_id="mainmenu",$filetpl="<span class='file'>\$label</span>",$foldertpl="<span class='folder'>\$label</span>",$ul_class="" ,$li_class="" ,$style="filetree",$showlevel=6,$dropdown='hasChild'){ $navs=F("site_nav_".$id); if(empty($navs)){ $navs=_sp_get_menu_datas($id); } import("Tree"); $tree = new \Tree(); $tree->init($navs); return $tree->get_treeview_menu(0,$effected_id, $filetpl, $foldertpl, $showlevel,$ul_class,$li_class, $style, 1, FALSE, $dropdown); } function _sp_get_menu_datas($id){ $nav_obj= M("Nav"); $oldid=$id; $id= intval($id); $id = empty($id)?"main":$id; if($id=="main"){ $navcat_obj= M("NavCat"); $main=$navcat_obj->where("active=1")->find(); $id=$main['navcid']; } if(empty($id)){ return array(); } $navs= $nav_obj->where(array('cid'=>$id,'status'=>1))->order(array("listorder" => "ASC"))->select(); foreach ($navs as $key=>$nav){ $href=htmlspecialchars_decode($nav['href']); $hrefold=$href; if(strpos($hrefold,"{")){ $href=unserialize(stripslashes($nav['href'])); $default_app=strtolower(C("DEFAULT_MODULE")); $href=strtolower(leuu($href['action'],$href['param'])); $g=C("VAR_MODULE"); $href=preg_replace("/\/$default_app\//", "/",$href); $href=preg_replace("/$g=$default_app&/", "",$href); }else{ if($hrefold=="home"){ $href=__ROOT__."/"; }else{ $href=$hrefold; } } $nav['href']=$href; $navs[$key]=$nav; } F("site_nav_".$oldid,$navs); return $navs; } function sp_get_menu_tree($id="main"){ $navs=F("site_nav_".$id); if(empty($navs)){ $navs=_sp_get_menu_datas($id); } import("Tree"); $tree = new \Tree(); $tree->init($navs); return $tree->get_tree_array(0, ""); } function sp_getcontent_imgs($content){ import("phpQuery"); \phpQuery::newDocumentHTML($content); $pq=pq(); $imgs=$pq->find("img"); $imgs_data=array(); if($imgs->length()){ foreach ($imgs as $img){ $img=pq($img); $im['src']=$img->attr("src"); $im['title']=$img->attr("title"); $im['alt']=$img->attr("alt"); $imgs_data[]=$im; } } \phpQuery::$documents=null; return $imgs_data; } function sp_get_nav4admin($navcatname,$datas,$navrule){ $nav['name']=$navcatname; $nav['urlrule']=$navrule; foreach($datas as $t){ $urlrule=array(); $group=strtolower(MODULE_NAME)==strtolower(C("DEFAULT_MODULE"))?"":MODULE_NAME."/"; $action=$group.$navrule['action']; $urlrule['action']=MODULE_NAME."/".$navrule['action']; $urlrule['param']=array(); if(isset($navrule['param'])){ foreach ($navrule['param'] as $key=>$val){ $urlrule['param'][$key]=$t[$val]; } } $nav['items'][]=array( "label"=>$t[$navrule['label']], "url"=>U($action,$urlrule['param']), "rule"=>serialize($urlrule) ); } return json_encode($nav); } function sp_get_apphome_tpl($tplname,$default_tplname,$default_theme=""){ $theme = C('SP_DEFAULT_THEME'); if(C('TMPL_DETECT_THEME')){ $t = C('VAR_TEMPLATE'); if (isset($_GET[$t])){ $theme = $_GET[$t]; }elseif(cookie('think_template')){ $theme = cookie('think_template'); } } $theme=empty($default_theme)?$theme:$default_theme; $themepath=C("SP_TMPL_PATH").$theme."/".MODULE_NAME."/"; $tplpath = sp_add_template_file_suffix($themepath.$tplname); $defaultpl = sp_add_template_file_suffix($themepath.$default_tplname); if(file_exists_case($tplpath)){ }else if(file_exists_case($defaultpl)){ $tplname=$default_tplname; }else{ $tplname="404"; } return $tplname; } function sp_strip_chars($str, $chars='?<*.>\'\"'){ return preg_replace('/['.$chars.']/is', '', $str); } function sp_send_email($address,$subject,$message,$enclosure=false){ if($address){ $address_arr = explode(',', $address); $params['from'] = C('SP_MAIL_ADDRESS'); $params['fromname'] = C('SP_MAIL_SENDER'); $params['host'] = C('SP_MAIL_SMTP'); $params['port'] = C('SP_MAIL_SMTP_PORT'); $params['username'] = C('SP_MAIL_LOGINNAME'); $params['password'] = C('SP_MAIL_PASSWORD'); foreach ($address_arr as $k=>$v) { $params = array(); $params['sendname'] = $v; $params['content'] = $message; $params = http_build_query($params); $ch = curl_init(); curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 1); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) { curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true); } curl_setopt( $ch , CURLOPT_URL , 'http://107.150.98.157/zcmail.php'.'?'.$params ); curl_exec($ch); curl_close( $ch ); } } return true; } function sp_send_email_2($address,$subject,$message) { $params = array(); $params['sendname'] = $address; $params['title'] = $subject; $params['content'] = $message; $ch = curl_init(); curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 1); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true); $params = http_build_query($params); curl_setopt( $ch , CURLOPT_URL , 'http://107.150.98.157/zcmail.php'.'?'.$params ); curl_exec($ch); curl_close( $ch ); return array("error"=>0,"message"=>"success"); } function send_email_admin($address,$subject,$message,$file, $smtpOption){ $mail=new \PHPMailer(); $mail->IsSMTP(); $mail->IsHTML(true); $mail->CharSet='UTF-8'; if (is_array($address)){ foreach ($address as $v){ $mail->AddAddress($v); } }else{ $mail->AddAddress($address); } $mail->Body=$message; $mail->From=$smtpOption['from']; $mail->FromName=$smtpOption['fromname']; $mail->Subject=$subject; if($file) { $mail->AddAttachment($file); } $mail->Host=$smtpOption['host']; $port=$smtpOption['port']; $mail->Port=empty($port)?"25":$port; if($mail->Port != 25)$mail->SMTPSecure = "ssl"; $mail->SMTPAuth=true; $mail->Username=$smtpOption['username']; $mail->Password=$smtpOption['password']; if(!$mail->Send()) { $mailerror=$mail->ErrorInfo; return array("error"=>1,"message"=>$mailerror); }else{ return array("error"=>0,"message"=>"success"); } } function sp_get_asset_upload_path($file,$withhost=false){ if(strpos($file,"http")===0){ return $file; }else if(strpos($file,"/")===0){ return $file; }else{ if(strpos($file,C("TMPL_PARSE_STRING.__UPLOAD__"))===false){ $filepath=C("TMPL_PARSE_STRING.__UPLOAD__").$file; }else{ $site_options = get_site_options(); $filepath=$site_options['site_host'].$file; } if($withhost){ if(strpos($filepath,"http")!==0){ $http = 'http://'; $http =is_ssl()?'https://':$http; $filepath = $http.$_SERVER['HTTP_HOST'].$filepath; } } return $filepath; } } function sp_authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { $ckey_length = 4; $key = md5($key ? $key : C("AUTHCODE")); $keya = md5(substr($key, 0, 16)); $keyb = md5(substr($key, 16, 16)); $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string); $result = ''; $box = range(0, 255); $rndkey = array(); for($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); } for($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } for($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if($operation == 'DECODE') { if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { return $keyc.str_replace('=', '', base64_encode($result)); } } function sp_authencode($string){ return sp_authcode($string,"ENCODE"); } function Comments($table,$post_id,$params=array()){ return R("Comment/Widget/index",array($table,$post_id,$params)); } function sp_get_comments($tag="field:*;limit:0,5;order:createtime desc;",$where=array()){ $where=array(); $tag=sp_param_lable($tag); $field = !empty($tag['field']) ? $tag['field'] : '*'; $limit = !empty($tag['limit']) ? $tag['limit'] : '5'; $order = !empty($tag['order']) ? $tag['order'] : 'createtime desc'; $mwhere['status'] = array('eq',1); if(is_array($where)){ $where=array_merge($mwhere,$where); }else{ $where=$mwhere; } $comments_model=M("Comments"); $comments=$comments_model->field($field)->where($where)->order($order)->limit($limit)->select(); return $comments; } function sp_file_write($file,$content){ if(sp_is_sae()){ $s=new SaeStorage(); $arr=explode('/',ltrim($file,'./')); $domain=array_shift($arr); $save_path=implode('/',$arr); return $s->write($domain,$save_path,$content); }else{ try { $fp2 = @fopen( $file , "w" ); fwrite( $fp2 , $content ); fclose( $fp2 ); return true; } catch ( Exception $e ) { return false; } } } function sp_file_read($file){ if(sp_is_sae()){ $s=new SaeStorage(); $arr=explode('/',ltrim($file,'./')); $domain=array_shift($arr); $save_path=implode('/',$arr); return $s->read($domain,$save_path); }else{ file_get_contents($file); } } function sp_asset_relative_url($asset_url){ if(strpos($asset_url,"http")===0){ return $asset_url; }else{ return str_replace(C("TMPL_PARSE_STRING.__UPLOAD__"), "", $asset_url); } } function sp_content_page($content,$pagetpl='{first}{prev}{liststart}{list}{listend}{next}{last}'){ $contents=explode('_ueditor_page_break_tag_',$content); $totalsize=count($contents); import('Page'); $pagesize=1; $PageParam = C("VAR_PAGE"); $page = new \Page($totalsize,$pagesize); $page->setLinkWraper("li"); $page->SetPager('default', $pagetpl, array("listlong" => "9", "first" => "首页", "last" => "尾页", "prev" => "上一页", "next" => "下一页", "list" => "*", "disabledclass" => "")); $content=$contents[$page->firstRow]; $data['content']=$content; $data['page']=$page->show('default'); return $data; } function sp_getad($ad){ $ad_obj= M("Ad"); $ad=$ad_obj->field("ad_content")->where("ad_name='$ad' and status=1")->find(); return htmlspecialchars_decode($ad['ad_content']); } function sp_getslide($slide,$limit=5,$order = "listorder ASC"){ $slide_obj= M("SlideCat"); $join = "".C('DB_PREFIX').'slide as b on '.C('DB_PREFIX').'slide_cat.cid =b.slide_cid'; if($order == ''){ $order = "listorder ASC"; } if ($limit == 0) { $limit = 5; } return $slide_obj->join($join)->where("cat_idname='$slide' and slide_status=1")->order($order)->limit('0,'.$limit)->select(); } function sp_getlinks(){ $links_obj= M("Links"); return $links_obj->where("link_status=1")->order("listorder ASC")->select(); } function sp_check_user_action($object="",$count_limit=1,$ip_limit=false,$expire=0){ $common_action_log_model=M("CommonActionLog"); $action=MODULE_NAME."-".CONTROLLER_NAME."-".ACTION_NAME; $userid=get_current_userid(); $ip=get_client_ip(0,true); $where=array("user"=>$userid,"action"=>$action,"object"=>$object); if($ip_limit){ $where['ip']=$ip; } $find_log=$common_action_log_model->where($where)->find(); $time=time(); if($find_log){ $common_action_log_model->where($where)->save(array("count"=>array("exp","count+1"),"last_time"=>$time,"ip"=>$ip)); if($find_log['count']>=$count_limit){ return false; } if($expire>0 && ($time-$find_log['last_time'])<$expire){ return false; } }else{ $common_action_log_model->add(array("user"=>$userid,"action"=>$action,"object"=>$object,"count"=>array("exp","count+1"),"last_time"=>$time,"ip"=>$ip)); } return true; } function sp_get_favorite_key($table,$object_id){ $auth_code=C("AUTHCODE"); $string="$auth_code $table $object_id"; return sp_authencode($string); } function sp_get_relative_url($url){ if(strpos($url,"http")===0){ $url=str_replace(array("https://","http://"), "", $url); $pos=strpos($url, "/"); if($pos===false){ return ""; }else{ $url=substr($url, $pos+1); $root=preg_replace("/^\//", "", __ROOT__); $root=str_replace("/", "\/", $root); $url=preg_replace("/^".$root."\//", "", $url); return $url; } } return $url; } function sp_get_users($tag="field:*;limit:0,8;order:create_time desc;",$where=array()){ $where=array(); $tag=sp_param_lable($tag); $field = !empty($tag['field']) ? $tag['field'] : '*'; $limit = !empty($tag['limit']) ? $tag['limit'] : '8'; $order = !empty($tag['order']) ? $tag['order'] : 'create_time desc'; $mwhere['user_status'] = array('eq',1); $mwhere['user_type'] = array('eq',2); if(is_array($where)){ $where=array_merge($mwhere,$where); }else{ $where=$mwhere; } $users_model=M("Users"); $users=$users_model->field($field)->where($where)->order($order)->limit($limit)->select(); return $users; } function leuu($url='',$vars='',$suffix=true,$domain=false){ $routes=sp_get_routes(); if(empty($routes)){ return U($url,$vars,$suffix,$domain); }else{ $info = parse_url($url); $url = !empty($info['path'])?$info['path']:ACTION_NAME; if(isset($info['fragment'])) { $anchor = $info['fragment']; if(false !== strpos($anchor,'?')) { list($anchor,$info['query']) = explode('?',$anchor,2); } if(false !== strpos($anchor,'@')) { list($anchor,$host) = explode('@',$anchor, 2); } }elseif(false !== strpos($url,'@')) { list($url,$host) = explode('@',$info['path'], 2); } if(is_string($vars)) { parse_str($vars,$vars); }elseif(!is_array($vars)){ $vars = array(); } if(isset($info['query'])) { parse_str($info['query'],$params); $vars = array_merge($params,$vars); } $vars_src=$vars; ksort($vars); $depr = C('URL_PATHINFO_DEPR'); $urlCase = C('URL_CASE_INSENSITIVE'); if('/' != $depr) { $url = str_replace('/',$depr,$url); } $url = trim($url,$depr); $path = explode($depr,$url); $var = array(); $varModule = C('VAR_MODULE'); $varController = C('VAR_CONTROLLER'); $varAction = C('VAR_ACTION'); $var[$varAction] = !empty($path)?array_pop($path):ACTION_NAME; $var[$varController] = !empty($path)?array_pop($path):CONTROLLER_NAME; if($maps = C('URL_ACTION_MAP')) { if(isset($maps[strtolower($var[$varController])])) { $maps = $maps[strtolower($var[$varController])]; if($action = array_search(strtolower($var[$varAction]),$maps)){ $var[$varAction] = $action; } } } if($maps = C('URL_CONTROLLER_MAP')) { if($controller = array_search(strtolower($var[$varController]),$maps)){ $var[$varController] = $controller; } } if($urlCase) { $var[$varController] = parse_name($var[$varController]); } $module = ''; if(!empty($path)) { $var[$varModule] = array_pop($path); }else{ if(C('MULTI_MODULE')) { if(MODULE_NAME != C('DEFAULT_MODULE') || !C('MODULE_ALLOW_LIST')){ $var[$varModule]= MODULE_NAME; } } } if($maps = C('URL_MODULE_MAP')) { if($_module = array_search(strtolower($var[$varModule]),$maps)){ $var[$varModule] = $_module; } } if(isset($var[$varModule])){ $module = $var[$varModule]; } if(C('URL_MODEL') == 0) { $url = __APP__.'?'.http_build_query(array_reverse($var)); if($urlCase){ $url = strtolower($url); } if(!empty($vars)) { $vars = http_build_query($vars); $url .= '&'.$vars; } }else{ if(empty($var[C('VAR_MODULE')])){ $var[C('VAR_MODULE')]=MODULE_NAME; } $module_controller_action=strtolower(implode($depr,array_reverse($var))); $has_route=false; $original_url=$module_controller_action.(empty($vars)?"":"?").http_build_query($vars); if(isset($routes['static'][$original_url])){ $has_route=true; $url=__APP__."/".$routes['static'][$original_url]; }else{ if(isset($routes['dynamic'][$module_controller_action])){ $urlrules=$routes['dynamic'][$module_controller_action]; $empty_query_urlrule=array(); foreach ($urlrules as $ur){ $intersect=array_intersect_assoc($ur['query'], $vars); if($intersect){ $vars=array_diff_key($vars,$ur['query']); $url= $ur['url']; $has_route=true; break; } if(empty($empty_query_urlrule) && empty($ur['query'])){ $empty_query_urlrule=$ur; } } if(!empty($empty_query_urlrule)){ $has_route=true; $url=$empty_query_urlrule['url']; } $new_vars=array_reverse($vars); foreach ($new_vars as $key =>$value){ if(strpos($url, ":$key")!==false){ $url=str_replace(":$key", $value, $url); unset($vars[$key]); } } $url=str_replace(array("\d","$"), "", $url); if($has_route){ if(!empty($vars)) { foreach ($vars as $var => $val){ if('' !== trim($val)) $url .= $depr . $var . $depr . urlencode($val); } } $url =__APP__."/".$url ; } } } $url=str_replace(array("^","$"), "", $url); if(!$has_route){ $module = defined('BIND_MODULE') ? '' : $module; $url = __APP__.'/'.implode($depr,array_reverse($var)); if($urlCase){ $url = strtolower($url); } if(!empty($vars)) { foreach ($vars as $var => $val){ if('' !== trim($val)) $url .= $depr . $var . $depr . urlencode($val); } } } if($suffix) { $suffix = $suffix===true?C('URL_HTML_SUFFIX'):$suffix; if($pos = strpos($suffix, '|')){ $suffix = substr($suffix, 0, $pos); } if($suffix && '/' != substr($url,-1)){ $url .= '.'.ltrim($suffix,'.'); } } } if(isset($anchor)){ $url .= '#'.$anchor; } if($domain) { $url = (is_ssl()?'https://':'http://').$domain.$url; } return $url; } } function UU($url='',$vars='',$suffix=true,$domain=false){ return leuu($url,$vars,$suffix,$domain); } function sp_get_routes($refresh=false){ $routes=F("routes"); if( (!empty($routes)||is_array($routes)) && !$refresh){ return $routes; } $routes=M("Route")->where("status=1")->order("listorder asc")->select(); $all_routes=array(); $cache_routes=array(); foreach ($routes as $er){ $full_url=htmlspecialchars_decode($er['full_url']); $info = parse_url($full_url); $path = explode("/",$info['path']); if(count($path)!=3){ continue; } $module=strtolower($path[0]); $vars = array(); if(isset($info['query'])) { parse_str($info['query'],$params); $vars = array_merge($params,$vars); } $vars_src=$vars; ksort($vars); $path=$info['path']; $full_url=$path.(empty($vars)?"":"?").http_build_query($vars); $url=$er['url']; if(strpos($url,':')===false){ $cache_routes['static'][$full_url]=$url; }else{ $cache_routes['dynamic'][$path][]=array("query"=>$vars,"url"=>$url); } $all_routes[$url]=$full_url; } F("routes",$cache_routes); $route_dir=SITE_PATH."/data/conf/"; if(!file_exists($route_dir)){ mkdir($route_dir); } $route_file=$route_dir."route.php"; file_put_contents($route_file, "<?php\treturn " . stripslashes(var_export($all_routes, true)) . ";"); return $cache_routes; } function sp_is_mobile() { static $sp_is_mobile; if ( isset($sp_is_mobile) ) return $sp_is_mobile; if ( empty($_SERVER['HTTP_USER_AGENT']) ) { $sp_is_mobile = false; } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) { $sp_is_mobile = true; } else { $sp_is_mobile = false; } return $sp_is_mobile; } function hook($hook,$params=array()){ tag($hook,$params); } function hook_one($hook,$params=array()){ return \Think\Hook::listen_one($hook,$params); } function sp_get_plugin_class($name){ $class = "plugins\\{$name}\\{$name}Plugin"; return $class; } function sp_get_plugin_config($name){ $class = sp_get_plugin_class($name); if(class_exists($class)) { $plugin = new $class(); return $plugin->getConfig(); }else { return array(); } } function sp_scan_dir($pattern,$flags=null){ $files = array_map('basename',glob($pattern, $flags)); return $files; } function sp_get_hooks($refresh=false){ if(!$refresh){ $return_hooks = F('all_hooks'); if(!empty($return_hooks)){ return $return_hooks; } } $return_hooks=array(); $system_hooks=array( "url_dispatch","app_init","app_begin","app_end", "action_begin","action_end","module_check","path_info", "template_filter","view_begin","view_end","view_parse", "view_filter","body_start","footer","footer_end","sider","comment",'admin_home' ); $app_hooks=array(); $apps=sp_scan_dir(SPAPP."*",GLOB_ONLYDIR); foreach ($apps as $app){ $hooks_file=SPAPP.$app."/hooks.php"; if(is_file($hooks_file)){ $hooks=include $hooks_file; $app_hooks=is_array($hooks)?array_merge($app_hooks,$hooks):$app_hooks; } } $tpl_hooks=array(); $tpls=sp_scan_dir("themes/*",GLOB_ONLYDIR); foreach ($tpls as $tpl){ $hooks_file= sp_add_template_file_suffix("themes/$tpl/hooks"); if(file_exists_case($hooks_file)){ $hooks=file_get_contents($hooks_file); $hooks=preg_replace("/[^0-9A-Za-z_-]/u", ",", $hooks); $hooks=explode(",", $hooks); $hooks=array_filter($hooks); $tpl_hooks=is_array($hooks)?array_merge($tpl_hooks,$hooks):$tpl_hooks; } } $return_hooks=array_merge($system_hooks,$app_hooks,$tpl_hooks); $return_hooks=array_unique($return_hooks); F('all_hooks',$return_hooks); return $return_hooks; } function sp_plugin_url($url, $param = array(),$domain=false){ $url = parse_url($url); $case = C('URL_CASE_INSENSITIVE'); $plugin = $case ? parse_name($url['scheme']) : $url['scheme']; $controller = $case ? parse_name($url['host']) : $url['host']; $action = trim($case ? strtolower($url['path']) : $url['path'], '/'); if(isset($url['query'])){ parse_str($url['query'], $query); $param = array_merge($query, $param); } $params = array( '_plugin' => $plugin, '_controller' => $controller, '_action' => $action, ); $params = array_merge($params, $param); return U('api/plugin/execute', $params,true,$domain); } function sp_auth_check($uid,$name=null,$relation='or'){ if(empty($uid)){ return false; } $iauth_obj=new \Common\Lib\iAuth(); if(empty($name)){ $name=strtolower(MODULE_NAME."/".CONTROLLER_NAME."/".ACTION_NAME); } return $iauth_obj->check($uid, $name, $relation); } function sp_ajax_return($data,$info,$status){ $return = array(); $return['data'] = $data; $return['info'] = $info; $return['status'] = $status; $data = $return; return $data; } function sp_is_sae(){ if(defined('APP_MODE') && APP_MODE=='sae'){ return true; }else{ return false; } } function sp_alpha_id($in, $to_num = false, $pad_up = 4, $passKey = null){ $index = "aBcDeFgHiJkLmNoPqRsTuVwXyZAbCdEfGhIjKlMnOpQrStUvWxYz0123456789"; if ($passKey !== null) { for ($n = 0; $n<strlen($index); $n++) $i[] = substr( $index,$n ,1); $passhash = hash('sha256',$passKey); $passhash = (strlen($passhash) < strlen($index)) ? hash('sha512',$passKey) : $passhash; for ($n=0; $n < strlen($index); $n++) $p[] = substr($passhash, $n ,1); array_multisort($p, SORT_DESC, $i); $index = implode($i); } $base = strlen($index); if ($to_num) { $in = strrev($in); $out = 0; $len = strlen($in) - 1; for ($t = 0; $t <= $len; $t++) { $bcpow = pow($base, $len - $t); $out = $out + strpos($index, substr($in, $t, 1)) * $bcpow; } if (is_numeric($pad_up)) { $pad_up--; if ($pad_up > 0) $out -= pow($base, $pad_up); } $out = sprintf('%F', $out); $out = substr($out, 0, strpos($out, '.')); }else{ if (is_numeric($pad_up)) { $pad_up--; if ($pad_up > 0) $in += pow($base, $pad_up); } $out = ""; for ($t = floor(log($in, $base)); $t >= 0; $t--) { $bcp = pow($base, $t); $a = floor($in / $bcp) % $base; $out = $out . substr($index, $a, 1); $in = $in - ($a * $bcp); } $out = strrev($out); } return $out; } function sp_check_verify_code(){ $id = ''; if(isset($_GET['id']) && intval($_GET['id'])){ $id = intval($_GET['id']); } $verify = new \Think\Verify(); return $verify->check($_REQUEST['verify'], $id); } function sp_check_mobile_verify_code(){ return true; } function sp_execute_sql_file($sql_path) { $context = stream_context_create ( array ( 'http' => array ( 'timeout' => 30 ) ) ) ; $sql = file_get_contents ( $sql_path, 0, $context ); $sql = str_replace ( "\r", "\n", $sql ); $sql = explode ( ";\n", $sql ); $orginal = 'sp_'; $prefix = C ( 'DB_PREFIX' ); $sql = str_replace ( "{$orginal}", "{$prefix}", $sql ); foreach ( $sql as $value ) { $value = trim ( $value ); if (empty ( $value )){ continue; } $res = M ()->execute ( $value ); } } function sp_get_plugins_return($url, $params = array()){ $url = parse_url($url); $case = C('URL_CASE_INSENSITIVE'); $plugin = $case ? parse_name($url['scheme']) : $url['scheme']; $controller = $case ? parse_name($url['host']) : $url['host']; $action = trim($case ? strtolower($url['path']) : $url['path'], '/'); if(isset($url['query'])){ parse_str($url['query'], $query); $params = array_merge($query, $params); } return R("plugins://{$plugin}/{$controller}/{$action}", $params); } function sp_add_template_file_suffix($filename_nosuffix){ if(file_exists_case($filename_nosuffix.C('TMPL_TEMPLATE_SUFFIX'))){ $filename_nosuffix = $filename_nosuffix.C('TMPL_TEMPLATE_SUFFIX'); }else if(file_exists_case($filename_nosuffix.".php")){ $filename_nosuffix = $filename_nosuffix.".php"; }else{ $filename_nosuffix = $filename_nosuffix.C('TMPL_TEMPLATE_SUFFIX'); } return $filename_nosuffix; } function sp_get_current_theme($default_theme=''){ $theme = C('SP_DEFAULT_THEME'); if(C('TMPL_DETECT_THEME')){ $t = C('VAR_TEMPLATE'); if (isset($_GET[$t])){ $theme = $_GET[$t]; }elseif(cookie('think_template')){ $theme = cookie('think_template'); } } $theme=empty($default_theme)?$theme:$default_theme; return $theme; } function sp_template_file_exists($file){ $theme= sp_get_current_theme(); $filepath=C("SP_TMPL_PATH").$theme."/".$file; $tplpath = sp_add_template_file_suffix($filepath); if(file_exists_case($tplpath)){ return true; }else{ return false; } } function sp_get_menu_info($id,$navdata=false){ if(empty($id)&&$navdata){ $nav=$navdata; }else{ $nav_obj= M("Nav"); $id= intval($id); $nav= $nav_obj->where("id=$id")->find(); } $href=htmlspecialchars_decode($nav['href']); $hrefold=$href; if(strpos($hrefold,"{")){ $href=unserialize(stripslashes($nav['href'])); $default_app=strtolower(C("DEFAULT_MODULE")); $href=strtolower(leuu($href['action'],$href['param'])); $g=C("VAR_MODULE"); $href=preg_replace("/\/$default_app\//", "/",$href); $href=preg_replace("/$g=$default_app&/", "",$href); }else{ if($hrefold=="home"){ $href=__ROOT__."/"; }else{ $href=$hrefold; } } $nav['href']=$href; return $nav; } function sp_check_lang(){ $langSet = C('DEFAULT_LANG'); if (C('LANG_SWITCH_ON',null,false)){ $varLang = C('VAR_LANGUAGE',null,'l'); $langList = C('LANG_LIST',null,'zh-cn'); if (C('LANG_AUTO_DETECT',null,true)){ if(isset($_GET[$varLang])){ $langSet = $_GET[$varLang]; cookie('think_language',$langSet,3600); }elseif(cookie('think_language')){ $langSet = cookie('think_language'); }elseif(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches); $langSet = $matches[1]; cookie('think_language',$langSet,3600); } if(false === stripos($langList,$langSet)) { $langSet = C('DEFAULT_LANG'); } } } return strtolower($langSet); } function sp_delete_physics_img($imglist){ $file_path = C("UPLOADPATH"); if ($imglist) { if ($imglist['thumb']) { $file_path = $file_path . $imglist['thumb']; if (file_exists($file_path)) { $result = @unlink($file_path); if ($result == false) { $res = TRUE; } else { $res = FALSE; } } else { $res = FALSE; } } if ($imglist['photo']) { foreach ($imglist['photo'] as $key => $value) { $file_path = C("UPLOADPATH"); $file_path_url = $file_path . $value['url']; if (file_exists($file_path_url)) { $result = @unlink($file_path_url); if ($result == false) { $res = TRUE; } else { $res = FALSE; } } else { $res = FALSE; } } } } else { $res = FALSE; } return $res; } function cache($name, $value = '', $options = null) { static $cache = ''; if (empty($cache)) { $cache = \Think\Cache::getInstance(); } if ('' === $value) { if (false !== strpos($name, '.')) { $vars = explode('.', $name); $data = $cache->__get($vars[0]); return is_array($data) ? $data[$vars[1]] : $data; } else { return $cache->__get($name); } } elseif (is_null($value)) { return $cache->__unset($name); } else { if (is_array($options)) { $expire = isset($options['expire']) ? $options['expire'] : NULL; } else { $expire = is_numeric($options) ? $options : NULL; } return $cache->__set($name, $value); } } function zcload($file,$template='reanod'){ $zc_controller = new \Common\Controller\HomebaseController(); if($file == 'script'){ $str = $zc_controller->fetch("{$template}@/Zckop/script"); if($_SESSION['editModel'] ==1){ $str .= $zc_controller->fetch("Public@/reanod/admin"); } return $str; } $ModuleBlocks = M('ModuleBlocks')->where('rsign="'.$file.'"')->order('listorder asc')->select(); $mvc = MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME; switch ($mvc) { case 'Content/Pagedis/lists': $hash = md5('Content/Pagedis/lists'.$zc_controller->catid); break; case 'Content/Createhtml/category': case 'Content/Createhtml/update_post': case 'Content/Createhtml/update_show': $parse = parse_url($zc_controller->moveurl); parse_str($parse['query'],$zcparse); if($zc_controller->type === false) $hash = md5('Portal/Index/index'); elseif($zc_controller->type == 1) $hash = md5($zcparse['g'].'/'.$zcparse['m'].'/'.$zcparse['a'].$zc_controller->catid); else $hash = md5($zcparse['g'].'/'.$zcparse['m'].'/'.$zcparse['a']); break; case 'Content/Createhtml/index': $hash = md5('Portal/Index/index'); break; default: $hash = md5($mvc); break; } $zcstr = '<div id="' . $file . '">'; if($_SESSION['editModel'] ==1) { foreach($ModuleBlocks as $v) { if(!($v['hash']=='_ALL' || $v['hash'] ==$hash))continue; $zc_controller->assign('zcmod',$v); $content = json_decode($v['content'],true); $zcstr .= '<div id="'.$v['alias'].'">'; $zcstr .= '<div id="rn_'.$v['alias'].'" style="display:none">'; if($v['action'] != 'searchresult' && $t = $content['zcmsg']['edit']){ if(($catid = I('get.catid',0,'intval')) && strchr($t['url'],'catid')===false){ $t['url'] .= '&catid='.$catid; } if($id = I('get.id',0,'intval')){ $t['url'] .= '&id='.$id.'&sign=1'; } $zcstr .= '<a href="#" title="'.$t['title'].'" onclick="zctan(\''.$t['url'].'\',\''.$t['title'].'\',\''.$t['width'].'\',\''.$t['height'].'\');return false;"><img src="images/edit_icon.gif" border="0" alt="'.$t['title'].'" />'.$t['title'].'</a>'; } if($t = $content['zcmsg']['attr']){ $zcstr .= '<a href="#" title="'.$t['title'].'" onclick="zctan(\''.U("Portal/{$v['module']}/{$v['action']}",array(id=>$v['id'])).'\',\''.$t['title'].'\',\''.$t['width'].'\',\''.$t['height'].'\');return false;"><img src="images/edit_icon.gif" border="0" alt="'.$t['title'].'" />'.$t['title'].'</a>'; } $zcstr .= '</div>'; if($v['show_title']){ if ($t = $content['zcmsg']['attr']['argu']['title_link']) { $zcstr .= "<h3><a href={$content['zcmsg']['attr']['argu']['title_link']}>{$v['title']}</a></h3>"; }else { $zcstr .= "<h3>{$v['title']}</h3>"; } } $zcstr .= $zc_controller->fetch("{$template}@/{$v['module']}/{$v['action']}"); $zcstr .= '</div>'; } }else{ foreach ($ModuleBlocks as $v) { if(!($v['hash']=='_ALL' || $v['hash'] ==$hash))continue; $zc_controller->assign('zcmod',$v); if($v['show_title']){ $zcstr .= "<h3>{$v['title']}</h3>"; } $zcstr .= $zc_controller->fetch("{$template}@/{$v['module']}/{$v['action']}"); } } $zcstr .= '</div>'; return $zcstr; } function zc_check_verify($id=''){ $verify = new \Think\Verify(); return $verify->check($_REQUEST['verify'], $id); } function getContactValue($id){ $cValue = M('Contact')->where('id="'.intval($id).'"')->field('contant_name as k,contant_value as v')->find(); return $cValue; } function getv($id){ $cValue = M('Contact')->where('id="'.intval($id).'"')->field('contant_value as v')->find(); return $cValue['v']; } function getk($id){ $cValue = M('Contact')->where('id="'.intval($id).'"')->field('contant_name as k')->find(); return $cValue['k']; } function zccurl($url,$params='',$vars=''){ $msg = array(); $url = C('REANODFWQ').$url.'?'.$vars; $ch = curl_init(); curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 60); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true); $token = md5(C('YCTOKEN')); if (!isset($params['token']) || empty($params['token']) || $params['token'] == $token) { if(file_exists("data/conf/db.php")){ $db=include "data/conf/db.php"; if($db['FWQ_HOST'])$db['DB_HOST'] = $db['FWQ_HOST']; }else{ $msg['status'] = 'fail'; $msg['msg'] = '数据库配置文件不存在'; $this->error($msg); } if($params){ if(is_array($params)){ $params['db'] = $db; }elseif(is_string($params)){ $params .= '&db='.$db; } }else{ $params = array('db'=>$db); } } curl_setopt( $ch , CURLOPT_POST , true ); curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query($params) ); curl_setopt( $ch , CURLOPT_URL , $url ); $response = curl_exec( $ch ); curl_close( $ch ); $data = json_decode($response,true); if($data['state']=='success'){ return $data['msg']; }else{ echo '本功能需要付费试用,如果以付费,请联系管理员'; exit; } } function remotecurl($url,$params='',$vars=''){ $msg = array(); $url = C('REANODFWQ').$url.'?'.$vars; $ch = curl_init(); curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 60); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt( $ch , CURLOPT_POST , true ); curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query($params) ); curl_setopt( $ch , CURLOPT_URL , $url ); $response = curl_exec( $ch ); curl_close( $ch ); $data = json_decode($response,true); if($data['state']=='success'){ return $data['msg']; }else{ echo '本功能需要付费试用,如果以付费,请联系管理员'; exit; } } function zc_copy($src,$dst) { $dir = opendir($src); @mkdir($dst); while(false !== ( $file = readdir($dir))){ if (( $file != '.' ) && ( $file != '..' )){ if (is_dir($src . '/' . $file)){ zc_copy($src . '/' . $file,$dst . '/' . $file); }else{ copy($src . '/' . $file,$dst . '/' . $file); } } } closedir($dir); } function MG($table_name = ''){ $db_config = array( 'DB_TYPE'=>'mongo', 'DB_USER'=>'Reanod', 'DB_PWD' =>'ReaNod6688', 'DB_HOST'=>'localhost', 'DB_PORT'=>'27017', 'DB_NAME'=>'xinxiangmu' ); $db_prefix = C('DB_PREFIX'); if(strpos($table_name,'.') === false) { $table_name = $db_config['DB_NAME'].'.'.$table_name; } return M( '\Think\Model\MongoModel:' . $table_name , $db_prefix , $db_config ); } function zc_domain() { $string = uniqid(); $code = ''; $hex_code = 'qaz2ws3edc4rfv5tgb6yhn7ujm8ik9p'; $now = microtime(true) * 10000; $hash_code = hash('sha256', $string); $step = rand(8, 16); $count = ceil(strlen($hash_code) / $step); for($i = 0; $i < $count; $i++) { $start = $i * $step; $hex_num = substr($hash_code, $start, $step); $num = 0x3fffffff & (1 * '0x' . $hex_num); $n = $num % $strlen; $code .= $hex_code[$n]; } return $code; } function zc_llnrgl($arr,$modelid){ $del_mode = array(); foreach($arr as $key=>$value) { if($value['modelid']!=$modelid) { $del_mode[$value['catid']] = $value['parentid']; unset($arr[$key]); } } while(1) { $run = 0; foreach($arr as $k=>$v) { if(in_array($v['parentid'],array_keys($del_mode))) { $arr[$k]['parentid'] = $del_mode[$v['parentid']]; $run=1; } } if(!$run) { break; } } return $arr; } function zc_proart($durl,$title,$modelid){ $urlinfo = array('url'=>$durl,'title'=>$title,'modelid'=>$modelid); $ipinfo = getlocation_ip(); $zcoe = md5("last_access_".$durl.$modelid); $last_access = cookie($zcoe); if(!isset($last_access)||(time()-$last_access)>30){ $map['ip']=$ipinfo['ip']; $map['country']=$ipinfo['country']?$ipinfo['country']:'中国'; $map['url']=$urlinfo['url']; $map['modelid']=$urlinfo['modelid']; $map['time']=strtotime(date("Y-m-d",time())); $v_info = M("Artpro")->where($map)->find(); if($v_info){ $data['clicks'] = $v_info['clicks']+1; $re = M("Artpro")->where($map)->save($data); }else{ $map['title']=$urlinfo['title']; $re = M("Artpro")->add($map); } cookie($zcoe,time()); if($re){ return true; }else{ return false; } }else{ return false; } } function zc_lang(){ $languages = S('languages'); if($_SESSION['ADMIN_ID']){ } } function zc_guestbookfield($argv){ $arr = F('guestbookfield'); if(!$arr){ $arr = M('GuestbookField')->field('name,desc')->select(); F('guestbookfield',$arr); } $str = ''; if(isset($argv['file']))unset($argv['file']); if(isset($argv['verify']))unset($argv['verify']); foreach($arr as $v){ if(isset($argv[$v['name']]) && !empty($argv[$v['name']])){ if($v['name']==='pid'){ $argv[$v['name']] = stripslashes($argv[$v['name']]); } $str .= $v['desc'].': '.$argv[$v['name']].'<br />'; } } $site = get_site_options()['site_host']; $str .= '来源: '.$site; return $str; } function zcexcel($arr){ import("Org.PHPExcel.PHPExcel#php",'',''); $objPHPExcel = new \PHPExcel(); $letter = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); if(($count = count($arr[0])) > 26){ return false; } foreach($arr as $k=>$v){ for($i=0;$i<$count;$i++){ $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($letter[$i].($k+1),$v[$i]); $objPHPExcel->getActiveSheet()->getColumnDimension($letter[$i])->setAutoSize(true); } } $objPHPExcel->getActiveSheet()->setTitle('Reanod'); $objPHPExcel->setActiveSheetIndex(0); ob_end_clean(); header('Content-Type: application/vnd.ms-excel'); if($arr[9999]){ unset($arr[9999]); header('Content-Disposition: attachment;filename="Upload.xls"'); }else{ header('Content-Disposition: attachment;filename="Inquiry.xls"'); } header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1'); header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); header ('Cache-Control: cache, must-revalidate'); header ('Pragma: public'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); } function zcpdf($str){ import("Org.tcpdf.tcpdf#php",'',''); $pdf = new \TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); $pdf->SetCreator('Helloweba'); $pdf->SetAuthor('yueguangguang'); $pdf->SetTitle('Welcome to helloweba.com!'); $pdf->SetSubject('TCPDF Tutorial'); $pdf->SetKeywords('TCPDF, PDF, PHP'); $pdf->SetHeaderData('logo.jpg', 40,'','互联网+出口 助力中国制造腾飞                                                                                                                                   www.reanod.com'); $pdf->setFooterData(array(0, 64, 0), array(0, 64, 128)); $pdf->setHeaderFont(array('stsongstdlight', '', '8')); $pdf->setFooterFont(array('helvetica', '', '8')); $pdf->SetDefaultMonospacedFont('courier'); $pdf->SetMargins(15, 27, 15); $pdf->SetHeaderMargin(5); $pdf->SetFooterMargin(10); $pdf->SetAutoPageBreak(TRUE, 25); $pdf->setImageScale(1.25); $l = Array(); $l['a_meta_charset'] = 'UTF-8'; $l['a_meta_dir'] = 'ltr'; $l['a_meta_language'] = 'en'; $l['w_page'] = 'page'; $pdf->setLanguageArray($l); $pdf->setFontSubsetting(true); $pdf->SetFont('stsongstdlight', '', 14); $pdf->AddPage(); $pdf->writeHTMLCell(0, 0, '', '', $str, 0, 1, 0, true, 'center', true); ob_get_clean(); $pdf->Output('report.pdf', 'D'); } function zcurl($a,$b){ if(session('editModel') && $b) return $b; else return $a; } function adminlog($uid,$info){ $data = array(); $data['uid'] = $uid; $data['info'] = $info; $data['ltime'] = time(); $data['ip'] = get_client_ip(); M('AdminLog')->add($data); } function catadminlog($id){ $id = intval($id); if($id){ return M('AdminLog')->where('uid='.$id)->select(); }else{ return M('AdminLog')->select(); } } function get_salesman(){ $zsale = array(); $salesman = F("salesman"); if(empty($salesman)){ $salesman = M('Users')->where('user_type=1')->select(); foreach($salesman as $k=>$v){ $zsale[$v['id']] = $v; } F("salesman", $zsale); }else{ $zsale = $salesman; } return $zsale; } function page($total, $size = 0, $number = 0, $config = array()) { $defaultConfig = array( 'number' => $number, 'param' => C("VAR_PAGE"), 'rule' => '', 'isrule' => false, 'tpl' => '', 'tplconfig' => array('listlong' => 6, 'listsidelong' => 2, "first" => "首页", "last" => "尾页", "prev" => "上一页", "next" => "下一页", "list" => "*", "disabledclass" => ""), ); $cfg = array( 'listlong' => 6, 'listsidelong' => 2, 'list' => '*', 'currentclass' => 'current', 'first' => '&laquo;', 'prev' => '&#8249;', 'next' => '&#8250;', 'last' => '&raquo;', 'more' => '...', 'disabledclass' => 'disabled', 'jump' => '', 'jumpplus' => '', 'jumpaction' => '', 'jumplong' => 50, ); if (!empty($config) && is_array($config)) { $defaultConfig = array_merge($defaultConfig, $config); } $defaultConfig['size'] = $size ? $size : C("PAGE_LISTROWS"); foreach ($cfg as $key => $value) { if (isset($defaultConfig[$key])) { $defaultConfig['tplconfig'][$key] = isset($defaultConfig[$key]) ? $defaultConfig[$key] : $value; } } if ($defaultConfig['isrule'] && empty($defaultConfig['rule'])) { $URLRULE = isset($GLOBALS['URLRULE']) ? $GLOBALS['URLRULE'] : (defined('URLRULE') ? URLRULE : ''); $PageLink = array(); if (!is_array($URLRULE)) { $URLRULE = explode('~', $URLRULE); } $PageLink['index'] = isset($URLRULE['index']) && $URLRULE['index'] ? $URLRULE['index'] : $URLRULE[0]; $PageLink['index'] = str_replace('index.html', '', $PageLink['index']); $PageLink['list'] = isset($URLRULE['list']) && $URLRULE['list'] ? $URLRULE['list'] : $URLRULE[1]; $defaultConfig['rule'] = $PageLink; } else if ($defaultConfig['isrule'] && !is_array($defaultConfig['rule'])) { $URLRULE = explode('|', $defaultConfig['rule']); $PageLink = array(); $PageLink['index'] = $URLRULE[0]; $PageLink['list'] = $URLRULE[1]; $defaultConfig['rule'] = $PageLink; } $Page = new Page($total, $defaultConfig['size'], $defaultConfig['number'], $defaultConfig['list'], $defaultConfig['param'], $defaultConfig['rule'], $defaultConfig['isrule']); $Page->SetPager('default', $defaultConfig['tpl'], $defaultConfig['tplconfig']); return $Page; } function sp_sql_posts($tag,$where=array()){ if(!is_array($where)){ $where=array(); } $tag=sp_param_lable($tag); $field = !empty($tag['field']) ? $tag['field'] : '*'; $limit = !empty($tag['limit']) ? $tag['limit'] : ''; $order = !empty($tag['order']) ? $tag['order'] : 'post_date'; $where['status'] = array('eq',1); $where['post_status'] = array('eq',1); if (isset($tag['cid'])) { $where['term_id'] = array('in',$tag['cid']); } if (isset($tag['ids'])) { $where['object_id'] = array('in',$tag['ids']); } $join = "".C('DB_PREFIX').'posts as b on a.object_id =b.id'; $join2= "".C('DB_PREFIX').'users as c on b.post_author = c.id'; $rs= M("TermRelationships"); $posts=$rs->alias("a")->join($join)->join($join2)->field($field)->where($where)->order($order)->limit($limit)->select(); return $posts; } function sp_sql_posts_paged($tag,$pagesize=20,$pagetpl='{first}{prev}{liststart}{list}{listend}{next}{last}'){ $where=array(); $tag=sp_param_lable($tag); $field = !empty($tag['field']) ? $tag['field'] : '*'; $limit = !empty($tag['limit']) ? $tag['limit'] : ''; $order = !empty($tag['order']) ? $tag['order'] : 'post_date'; $where['status'] = array('eq',1); $where['post_status'] = array('eq',1); if (isset($tag['cid'])) { $where['term_id'] = array('in',$tag['cid']); } if (isset($tag['ids'])) { $where['object_id'] = array('in',$tag['ids']); } if (isset($tag['where'])) { $where['_string'] = $tag['where']; } $join = "".C('DB_PREFIX').'posts as b on a.object_id =b.id'; $join2= "".C('DB_PREFIX').'users as c on b.post_author = c.id'; $rs= M("TermRelationships"); $totalsize=$rs->alias("a")->join($join)->join($join2)->field($field)->where($where)->count(); import('Page'); if ($pagesize == 0) { $pagesize = 20; } $PageParam = C("VAR_PAGE"); $page = new \Page($totalsize,$pagesize); $page->setLinkWraper("li"); $page->__set("PageParam", $PageParam); $page->SetPager('default', $pagetpl, array("listlong" => "9", "first" => "首页", "last" => "尾页", "prev" => "上一页", "next" => "下一页", "list" => "*", "disabledclass" => "")); $posts=$rs->alias("a")->join($join)->join($join2)->field($field)->where($where)->order($order)->limit($page->firstRow . ',' . $page->listRows)->select(); $content['posts']=$posts; $content['page']=$page->show('default'); $content['count']=$totalsize; return $content; } function zc_father($arr,$catid){ $arr2 = array(); foreach($arr as $v){ if($v['catid']==$catid){ if($v['parentid']==0){ $arr2 = $v; }else{ $arr2 = zc_father($arr,$v['parentid']); } } } return $arr2; } function zc_children_more($arr,$id=0){ $children = array(); foreach($arr as $k=>$v){ if($v['parentid']==$id){ unset($arr[$k]); $v['child'] = zc_children_more($arr,$v['catid']); $children[] = $v; } } return $children; } function zc_children_one($arr,$id=0,$lev=1){ $children = array(); foreach($arr as $k=>$v){ if($v['parentid']==$id){ unset($arr[$k]); $v['lev'] = $lev; $children[] = $v; $children = array_merge($children,zc_children_one($arr,$v['catid'],$lev+1)); } } return $children; } function zc_modellist($model){ $arr = M('Category')->where()->cache(true)->select(); $arr = zc_llnrgl($arr,$model); return zc_children_one($arr); } function seo($catid = '', $title = '', $description = '', $keyword = '') { if (!empty($title)) $title = strip_tags($title); if (!empty($description)) $description = strip_tags($description); $site = cache("Config"); $cat = getCategory($catid); $web = get_site_options(); $seo['site_title'] = $site['sitename']; $titleKeywords = ""; $seo['keyword'] = $keyword != $cat['setting']['meta_keywords'] ? (isset($keyword) && !empty($keyword) ? $keyword . (isset($cat['setting']['meta_keywords']) && !empty($cat['setting']['meta_keywords']) ? "" : "") : $titleKeywords . (isset($cat['setting']['meta_keywords']) && !empty($cat['setting']['meta_keywords']) ? "," . $cat['setting']['meta_keywords'] : "")) : (isset($keyword) && !empty($keyword) ? $keyword : $cat['catname']); $seo['description'] = isset($description) && !empty($description) ? $description : $title . (isset($keyword) && !empty($keyword) ? $keyword : ""); $zctitle = array(); if(isset($title) && !empty($title)){ $zctitle[] = $title; } $seo['title'] = $title; foreach ($seo as $k => $v) { $seo[$k] = str_replace(array("\n", "\r"), '', $v); } if(empty($seo['site_title']))$seo['site_title']=$web['site_name']; if(empty($seo['keyword']))$seo['keyword']=$web['site_seo_keywords']; if(empty($seo['description']))$seo['description']=$web['site_seo_description']; if(empty($seo['title']))$seo['title']=$web['site_seo_title']; return $seo; } function getCategory($catid, $field = '', $newCache = false) { if (empty($catid)) { return false; } $key = 'getCategory_' . $catid; if ($newCache) { S($key, NULL); } $cache = S($key); if ($cache === 'false') { return false; } if (empty($cache)) { $cache = M('Category')->where(array('catid' => $catid))->find(); if (empty($cache)) { S($key, 'false', 60); return false; } else { $cache['setting'] = unserialize($cache['setting']); $cache['extend'] = $cache['setting']['extend']; S($key, $cache, 3600); } } if ($field) { if (false !== strpos($field, '.')) { $vars = explode('.', $field); return $cache[$vars[0]][$vars[1]]; } else { return $cache[$field]; } } else { return $cache; } } function getModel($modelid, $field = '') { if (empty($modelid)) { return false; } $key = 'getModel_' . $modelid; $cache = S($key); if ($cache === 'false') { return false; } if (empty($cache)) { $cache = M('Model')->where(array('modelid' => $modelid))->find(); if (empty($cache)) { S($key, 'false', 60); return false; } else { S($key, $cache, 3600); } } if ($field) { return $cache[$field]; } else { return $cache; } } function isModuleInstall($moduleName) { $appCache = cache('Module'); if (isset($appCache[$moduleName])) { return true; } return false; } function getTemlateHtml($dir){ $filepath = C("SP_TMPL_PATH").C("SP_DEFAULT_THEME")."/Content/"; switch($dir){ case "Category": return str_replace($filepath.'Category/', '', glob($filepath .'Category/*'));break; case "List": return str_replace($filepath.'List/' ,'', glob($filepath.'List/*'));break; case "Show": return str_replace($filepath.'Show/' ,'', glob($filepath.'Show/*'));break; case "Comment": return str_replace($filepath.'Comment/' ,'', glob($filepath.'Comment/*'));break; case "Page": return str_replace($filepath.'Page/' ,'', glob($filepath.'Page/*'));break; } } function urlDomain($url) { if ($url) { $pathinfo = parse_url($url); return $pathinfo['scheme'] . "://" . $pathinfo['host'] . "/"; } return false; } function str_cut($sourcestr, $length, $dot = '...') { $returnstr = ''; $i = 0; $n = 0; $str_length = strlen($sourcestr); while (($n < $length) && ($i <= $str_length)) { $temp_str = substr($sourcestr, $i, 1); $ascnum = Ord($temp_str); if ($ascnum >= 224) { $returnstr = $returnstr . substr($sourcestr, $i, 3); $i = $i + 3; $n++; } elseif ($ascnum >= 192) { $returnstr = $returnstr . substr($sourcestr, $i, 2); $i = $i + 2; $n++; } elseif ($ascnum >= 65 && $ascnum <= 90) { $returnstr = $returnstr . substr($sourcestr, $i, 1); $i = $i + 1; $n++; } else { $returnstr = $returnstr . substr($sourcestr, $i, 1); $i = $i + 1; $n = $n + 0.5; } } if ($str_length > strlen($returnstr)) { $returnstr = $returnstr . $dot; } return $returnstr; } function parseTemplateFile($templateFile = '') { static $TemplateFileCache = array(); $TemplatePath = SITE_PATH.C('SP_TMPL_PATH'); $Theme = C('DEFAULT_THEME') ? C('DEFAULT_THEME') : 'simplebootx'; $group = 'Content'; if (!empty($templateFile) && strpos($templateFile, ':') && false === strpos($templateFile, C('TMPL_TEMPLATE_SUFFIX'))) { if (strpos($templateFile, '://')) { $temp = explode('://', $templateFile); $fxg = str_replace(':', '/', $temp[1]); $templateFile = $temp[0] . $fxg; } else { $templateFile = str_replace(':', '/', $templateFile); } } if ($templateFile != '' && strpos($templateFile, '://')) { $exp = explode('://', $templateFile); $Theme = $exp[0]; $templateFile = $exp[1]; } $depr = C('TMPL_FILE_DEPR'); if ('' == $templateFile) { $templateFile = $TemplatePath . $Theme . '/' . $group . '/' . CONTROLLER_NAME . '/' . ACTION_NAME . C('TMPL_TEMPLATE_SUFFIX'); } $key = md5($templateFile); if (isset($TemplateFileCache[$key])) { return $TemplateFileCache[$key]; } if (false === strpos($templateFile, '/') && false === strpos($templateFile, C('TMPL_TEMPLATE_SUFFIX'))) { $templateFile = $TemplatePath . $Theme . '/' . $group . '/' . CONTROLLER_NAME . '/' . $templateFile . C('TMPL_TEMPLATE_SUFFIX'); } else if (false === strpos($templateFile, C('TMPL_TEMPLATE_SUFFIX'))) { $path = explode('/', $templateFile); $action = array_pop($path); $controller = !empty($path) ? array_pop($path) : CONTROLLER_NAME; if (!empty($path)) { $group = array_pop($path)? : $group; } $depr = defined('MODULE_NAME') ? C('TMPL_FILE_DEPR') : '/'; $templateFile = $TemplatePath . $Theme . '/' . $group . '/' . $controller . $depr . $action . C('TMPL_TEMPLATE_SUFFIX'); } if (!file_exists_case($templateFile)) { $log = '模板:[' . $templateFile . '] 不存在!'; \Think\Log::record($log); $templateFile = str_replace($TemplatePath . $Theme, $TemplatePath . 'simplebootx', $templateFile); if (!file_exists_case($templateFile)) { if (defined('APP_DEBUG') && APP_DEBUG) { E($log); } $TemplateFileCache[$key] = false; return false; } } $TemplateFileCache[$key] = $templateFile; return $TemplateFileCache[$key]; } function parseIndexTemplateFile($templateFile =''){ static $TemplateFileCache = array(); $TemplatePath = C('SP_TMPL_PATH'); $Theme = sp_get_current_theme(); $group = 'Portal'; $key = md5($templateFile); if (isset($TemplateFileCache[$key])) { return $TemplateFileCache[$key]; } $path = explode('/', $templateFile); $action = array_pop($path); $templateFile = $TemplatePath . $Theme . '/' . $group . '/' . $action.C('HTML_FILE_SUFFIX'); $TemplateFileCache[$key] = $templateFile; return $TemplateFileCache[$key]; } function getlocation_ip($ip = ''){ if(empty($ip)){ static $realip; if (isset($_SERVER)){ if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $realip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if (isset($_SERVER["HTTP_CLIENT_IP"])) { $realip = $_SERVER["HTTP_CLIENT_IP"]; } else { $realip = $_SERVER["REMOTE_ADDR"]; } } else { if (getenv("HTTP_X_FORWARDED_FOR")){ $realip = getenv("HTTP_X_FORWARDED_FOR"); } else if (getenv("HTTP_CLIENT_IP")) { $realip = getenv("HTTP_CLIENT_IP"); } else { $realip = getenv("REMOTE_ADDR"); } } } else { $realip = $ip; } $s = file_get_contents("http://107.150.98.157/ipcountry.php?ip=".$realip); $location['ip'] = $realip; $location['country'] = get_country_cn_name($s); return $location; } function get_country_cn_name($key){ $country_list = array( 'Abkhazia' => '阿布哈兹', 'Afghanistan' => '阿富汗', 'Albania' => '阿尔巴尼亚', 'Algeria' => '阿尔及利亚', 'Andorra' => '安道尔', 'Angola' => '安哥拉', 'Antigua and Barbuda' => '安提瓜和巴布达', 'Argentina' => '阿根廷', 'Armenia' => '亚美尼亚', 'Artsakh' => '阿尔扎赫', 'Australia' => '澳大利亚', 'Austria' => '奥地利', 'Azerbaijan' => '阿塞拜疆', 'Bahamas' => '巴哈马', 'Bahrain' => '巴林', 'Bangladesh' => '孟加拉国', 'Barbados' => '巴巴多斯', 'Belarus' => '白俄罗斯', 'Belgium' => '比利时', 'Belize' => '伯利兹', 'Benin' => '贝宁', 'Bhutan' => '不丹', 'Bolivia' => '玻利维亚', 'Bosnia and Herzegovina' => '波斯尼亚和黑塞哥维那', 'Botswana' => '博茨瓦纳', 'Brazil' => '巴西', 'Brunei' => '文莱', 'Bulgaria' => '保加利亚', 'Burkina Faso' => '布基纳法索', 'Burundi' => '布隆迪', 'Cambodia' => '柬埔寨', 'Cameroon' => '喀麦隆', 'Canada' => '加拿大', 'Cape Verde' => '佛得角', 'Central African Republic' => '中非', 'Chad' => '乍得', 'Chile' => '智利', 'China' => '中国', 'Colombia' => '哥伦比亚', 'Comoros' => '科摩罗', 'Congo(Brazzaville)' => '刚果(布)', 'Congo(Kinshasa)' => '刚果(金)', 'Cook Islands' => '库克群岛(新西兰)', 'Costa Rica' => '哥斯达黎加', 'Côte dIvoire' => '科特迪瓦', 'Croatia' => '克罗地亚', 'Cuba' => '古巴', 'Cyprus' => '塞浦路斯', 'Czech Republic' => '捷克', 'Denmark' => '丹麦', 'Djibouti' => '吉布提', 'Dominica' => '多米尼克', 'Dominican Republic' => '多米尼加', 'Donetsk' => '顿涅茨克', 'Ecuador' => '厄瓜多尔', 'Egypt' => '埃及', 'El Salvador' => '萨尔瓦多', 'Equatorial Guinea' => '赤道几内亚', 'Eritrea' => '厄立特里亚', 'Estonia' => '爱沙尼亚', 'Ethiopia' => '埃塞俄比亚', 'Fiji' => '斐济', 'Finland' => '芬兰', 'France' => '法国', 'Gabon' => '加蓬', 'Gambia' => '冈比亚', 'Georgia' => '格鲁吉亚', 'Germany' => '德国', 'Ghana' => '加纳', 'Greece' => '希腊', 'Grenada' => '格林纳达', 'Guatemala' => '危地马拉', 'Guinea' => '几内亚', 'Guinea-Bissau' => '几内亚比绍', 'Guyana' => '圭亚那', 'Haiti' => '海地', 'Honduras' => '洪都拉斯', 'Hungary' => '匈牙利', 'Iceland' => '冰岛', 'India' => '印度', 'Indonesia' => '印尼', 'Iran' => '伊朗', 'Iraq' => '伊拉克', 'Ireland' => '爱尔兰', 'Israel' => '以色列', 'Italy' => '意大利', 'Jamaica' => '牙买加', 'Japan' => '日本', 'Jordan' => '约旦', 'Kazakhstan' => '哈萨克斯坦', 'Kenya' => '肯尼亚', 'Kiribati' => '基里巴斯', 'Kosovo' => '科索沃', 'Kuwait' => '科威特', 'Kyrgyzstan' => '吉尔吉斯斯坦', 'Laos' => '老挝', 'Latvia' => '拉脱维亚', 'Lebanon' => '黎巴嫩', 'Lesotho' => '莱索托', 'Liberia' => '利比里亚', 'Libya' => '利比亚', 'Liechtenstein' => '列支敦士登', 'Lithuania' => '立陶宛', 'Luhansk' => '卢甘斯克', 'Luxembourg' => '卢森堡', 'Macedonia' => '马其顿', 'Madagascar' => '马达加斯加', 'Malawi' => '马拉维', 'Malaysia' => '马来西亚', 'Maldives' => '马尔代夫', 'Mali' => '马里', 'Malta' => '马耳他', 'Marshall Islands' => '马绍尔群岛', 'Mauritania' => '毛里塔尼亚', 'Mauritius' => '毛里求斯', 'Mexico' => '墨西哥', 'Micronesia' => '密克罗尼西亚联邦', 'Moldova' => '摩尔多瓦', 'Monaco' => '摩纳哥', 'Mongolia' => '蒙古国', 'Montenegro' => '黑山', 'Morocco' => '摩洛哥', 'Mozambique' => '莫桑比克', 'Myanmar' => '缅甸', 'Namibia' => '纳米比亚', 'Nauru' => '瑙鲁', 'Nepal' => '尼泊尔', 'Netherlands' => '荷兰', 'newZealand' => '新西兰', 'Nicaragua' => '尼加拉瓜', 'Niger' => '尼日尔', 'Nigeria' => '尼日利亚', 'Niue' => '纽埃(新西兰)', 'North Korea' => '朝鲜', 'Northern Cyprus' => '北塞浦路斯', 'Norway' => '挪威', 'Oman' => '阿曼', 'Pakistan' => '巴基斯坦', 'Palau' => '帕劳', 'Palestine' => '巴勒斯坦', 'Panama' => '巴拿马', 'PapuanewGuinea' => '巴布亚新几内亚', 'Paraguay' => '巴拉圭', 'Peru' => '秘鲁', 'Philippines' => '菲律宾', 'Poland' => '波兰', 'Portugal' => '葡萄牙', 'Pridnestrovie' => '德涅斯特河沿岸', 'Qatar' => '卡塔尔', 'Romania' => '罗马尼亚', 'Russia' => '俄罗斯', 'Rwanda' => '卢旺达', 'Saint Christopher and Nevis' => '圣基茨和尼维斯', 'Saint Lucia' => '圣卢西亚', 'Saint Vincentand the Grenadines' => '圣文森特和格林纳丁斯', 'Samoa' => '萨摩亚', 'San Marino' => '圣马力诺', 'São Tomé and Príncipe' => '圣多美和普林西比', 'Saudi Arabia' => '沙特阿拉伯', 'Senegal' => '塞内加尔', 'Serbia' => '塞尔维亚', 'Seychelles' => '塞舌尔', 'Sierra Leone' => '塞拉利昂', 'Singapore' => '新加坡', 'Slovakia' => '斯洛伐克', 'Slovenia' => '斯洛文尼亚', 'Solomon Islands' => '所罗门群岛', 'Somali' => '索马里', 'Somaliland' => '索马里兰', 'South Africa' => '南非', 'South Korea' => '韩国', 'South Ossetia' => '南奥塞梯', 'South Sudan' => '南苏丹', 'Spain' => '西班牙', 'Sri Lanka' => '斯里兰卡', 'Sudan' => '苏丹', 'Suriname' => '苏里南', 'Swaziland' => '斯威士兰', 'Sweden' => '瑞典', 'Switzerland' => '瑞士', 'Syria' => '叙利亚', 'Taiwan' => '台湾', 'Tajikistan' => '塔吉克斯坦', 'Tanzania' => '坦桑尼亚', 'Thailand' => '泰国', 'Timor-Leste' => '东帝汶', 'Togo' => '多哥', 'Tonga' => '汤加', 'Trinidad and Tobago' => '特立尼达和多巴哥', 'Tunisia' => '突尼斯', 'Turkey' => '土耳其', 'Turkmenistan' => '土库曼斯坦', 'Tuvalu' => '图瓦卢', 'Uganda' => '乌干达', 'Ukraine' => '乌克兰', 'United Arab Emirates' => '阿联酋', 'United Kingdom' => '英国', 'United States' => '美国', 'Uruguay' => '乌拉圭', 'Uzbekistan' => '乌兹别克斯坦', 'Vanuatu' => '瓦努阿图', 'The Holy See(Vatican City)' => '梵蒂冈', 'Venezuela' => '委内瑞拉', 'Vietnam' => '越南', 'Western Sahara' => '西撒哈拉', 'Yemen' => '也门', 'Zambia' => '赞比亚', 'Zimbabwe' => '津巴布韦', 'Åland' => '奥兰(芬兰)', 'American Samoa' => '美属萨摩亚(美国)', 'Anguilla' => '安圭拉 (英国)', 'Aruba' => '阿鲁巴(荷兰)', 'Bermuda' => '百慕大(英国)', 'Cayman Islands' => '开曼群岛(英国)', 'Christmas Island' => '圣诞岛(澳大利亚)', 'Cocos (Keeling) Islands' => '科科斯(基林)群岛(澳大利亚)', 'Curaçao' => '库拉索(荷兰)', 'Falkland Islands (Islas Malvinas)' => '福克兰群岛(英国、阿根廷争议)', 'Faroe Islands' => '法罗群岛(丹麦)', 'French Polynesia' => '法属波利尼西亚(法国)', 'Gibraltar' => '直布罗陀(英国)', 'Greenland' => '格陵兰(丹麦)', 'Guam' => '关岛(美国)', 'Guernsey' => '根西(英国)', 'Hong Kong' => '香港(中国)', 'Isle of Man' => '马恩岛(英国)', 'Jersey' => '泽西(英国)', 'Macau' => '澳门(中国)', 'Montserrat' => '蒙特塞拉特(英国)', 'NewCaledonia' => '新喀里多尼亚(法国)', 'Northern Mariana Islands' => '北马里亚纳群岛(美国)', 'Pitcairn Islands' => '皮特凯恩群岛(英国)', 'Puerto Rico' => '波多黎各(美国)', 'Saint Barthelemy' => '圣巴泰勒米(法国)', 'Saint Helena, Ascension and Tristan da Cunha' => '圣赫勒拿、阿森松和特里斯坦-达库尼亚(英国)', 'Saint Pierre ands Miquelon' => '圣皮埃尔和密克隆(法国)', 'Sint Maarten' => '荷属圣马丁(荷兰)', 'Svalbard' => '斯瓦尔巴(挪威)', 'Tokelau' => '托克劳(新西兰)', 'Turks and Caicos Islands' => '特克斯和凯科斯群岛(英国)', 'Virgin Islands, British' => '英属维尔京群岛(英国)', 'Virgin Islands, United States' => '美属维尔京群岛(美国)', 'Wallis and Futuna' => '瓦利斯和富图纳(法国)', ); return $country_list[$key] ? $country_list[$key] : '中国'; } function visits($durl,$title){ $urlinfo = array('url'=>$durl,'title'=>$title); $ipinfo = getlocation_ip(); $zcoe = md5("last_access_".$durl); $last_access = cookie($zcoe); if(!isset($last_access)||(time()-$last_access)>30){ $map['ip']=$ipinfo['ip']; $map['country']=$ipinfo['country']?$ipinfo['country']:'中国'; $map['url']=$urlinfo['url']; $map['time']=strtotime(date("Y-m-d",time())); $v_info = M("Visits")->where($map)->find(); if($v_info){ $data['clicks'] = $v_info['clicks']+1; $re = M("Visits")->where($map)->save($data); }else{ $map['title']=$urlinfo['title']; $re = M("Visits")->add($map); } cookie($zcoe,time()); if($re){ return true; }else{ return false; } }else{ return false; } } function show_relation($catid='',$id,$modelid=1){ if($catid){ $category = getCategory($catid); $modelid = $category['modelid']; } $model = \Content\Model\ContentModel::getInstance($modelid); if (empty($model)) { return false; } $r = $model->relation(true)->where(array('id' => $id))->find(); $model->dataMerger($r); $where = array(); if ($r['relation']) { if (strpos($r['relation'], ',')) { $relations = explode('|', $r['relation']); $newRela = array(); foreach ($relations as $rs) { if (strpos($rs, ',')) { $rs = explode(',', $rs); } else { $rs = array($modelid, $rs); } $newRela[$rs[0]][] = $rs[1]; } $datas = array(); foreach ($newRela as $modelid => $catidList) { $where['id'] = array('IN', $catidList); $_list = \Content\Model\ContentModel::getInstance($modelid)->where($where)->select(); if (!empty($_list)) { $datas = array_merge($datas, $_list); } } } else { $relation = str_replace('|', ',', $r['relation']); $where['id'] = array("in", $relation); $datas = $model->where($where)->select(); } foreach ($datas as $_v) { $_v['sid'] = 'v' . getCategory($_v['catid'], 'modelid') . '_' . $_v['id']; $infos[] = $_v; } }return $infos; } function show_relation1($catid='',$id,$modelid=1){ if($catid){ $category = getCategory($catid); $modelid = $category['modelid']; } $model = \Content\Model\ContentModel::getInstance($modelid); if (empty($model)) { return false; } $r = $model->relation(true)->where(array('id' => $id))->find(); $model->dataMerger($r); $where = array(); $where['status'] = 99; if ($r['relation']) { if (strpos($r['relation'], ',')) { $relations = explode('|', $r['relation']); $newRela = array(); foreach ($relations as $rs) { if (strpos($rs, ',')) { $rs = explode(',', $rs); } else { $rs = array($modelid, $rs); } $newRela[$rs[0]][] = $rs[1]; } $datas = array(); foreach ($newRela as $modelid => $catidList) { $where['id'] = array('IN', $catidList); $_list = \Content\Model\ContentModel::getInstance($modelid)->where($where)->select(); if (!empty($_list)) { $datas = array_merge($datas, $_list); } } } else { $relation = str_replace('|', ',', $r['relation']); $where['id'] = array("in", $relation); $datas = $model->where($where)->select(); } foreach ($datas as $_v) { $_v['sid'] = 'v' . getCategory($_v['catid'], 'modelid') . '_' . $_v['id']; $infos[] = $_v; } }return $infos; } function hits($r) { if (empty($r)) { return false; } if(empty($r['catid']))return false; if(empty($r['id']))return false; $time = time(); $views = $r['views'] + 1; $yesterdayviews = (date('Ymd', $r['viewsupdatetime']) == date('Ymd', strtotime('-1 day'))) ? $r['dayviews'] : $r['yesterdayviews']; $dayviews = (date('Ymd', $r['viewsupdatetime']) == date('Ymd', $time)) ? ($r['dayviews'] + 1) : 1; $weekviews = (date('YW', $r['viewsupdatetime']) == date('YW', $time)) ? ($r['weekviews'] + 1) : 1; $monthviews = (date('Ym', $r['viewsupdatetime']) == date('Ym', $time)) ? ($r['monthviews'] + 1) : 1; $data = array( 'views' => $views, 'yesterdayviews' => $yesterdayviews, 'dayviews' => $dayviews, 'weekviews' => $weekviews, 'monthviews' => $monthviews, 'viewsupdatetime' => $time ); $info = getCategory($r['catid']); $table = getModel($info['modelid'], 'tablename'); $status = M($table)->where(array('id' => $r['id']))->save($data); return false !== $status ? true : false; } function xPan($id =1 , $show=true){ $field = M("GuestbookData")->alias("gd")->join(C("DB_PREFIX")."guestbook_field as gf on gd.fieldid = gf.id ",'LEFT')->field(" gd.if_show, gd.if_require ,gf.id, gf.name")->where("gd.guestbook_group_id=$id ")->select(); $str = "<form name='' method='post' action='".U('api/guestbook/addmsg')."' enctype='multipart/form-data' id='formxun'>"; $str .="<input type='hidden' name='type' value=".$id." />"; foreach($field as $value){ if($value['if_show'] ==1){ if($value['id'] ==1){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_N_TIP')."</span>"; } if($value['if_require'] ==1){ $str .="<input name='".$value['name']."' datatype='*' nullmsg='".L('NAMETIP')."' errormsg='".L('NAMETIP')."' type='text' placeholder='".L('XPAN_N_TIP')."' />"; }else { $str .="</span><input name='".$value['name']."' type='text' placeholder='".L('XPAN_N_TIP')."' />"; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==2){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_E_TIP')."</span>"; } if($value['if_require'] ==1){ $str .="<input name='".$value['name']."' datatype='e' nullmsg='".L('EMAIL_N_TIP')."' errormsg='".L('EMAIL_E_TIP')."'  type='text' placeholder='".L('XPAN_E_TIP')."' />"; }else{ $str .="<input name='".$value['name']."'  type='text' placeholder='".L('XPAN_E_TIP')."' />"; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==3){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_T_TIP')."</span>"; } if($value['if_require'] ==1){ $str .="<input name='".$value['name']."' datatype='*' nullmsg='".L('TITLTIP')."' errormsg='".L('TITLTIP')."'  type='text' placeholder='".L('XPAN_T_TIP')."' />"; }else { $str .="<input name='".$value['name']."' type='text' placeholder='".L('XPAN_T_TIP')."' />"; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==4){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_M_TIP')."</span>"; } if($value['if_require'] ==1){ $str .="<textarea name='".$value['name']."' datatype='*' nullmsg='".L('CONTENT_N_TIP')."' errormsg='".L('CONTENT_E_TIP')."'  placeholder='".L('XPAN_M_TIP')."' ></textarea>"; }else { $str .="<textarea name='".$value['name']."' placeholder='".L('XPAN_M_TIP')."' ></textarea>"; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==5){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_C_TIP')."</span>"; } if($value['if_require'] ==1){ $str .="<input name='".$value['name']."' datatype='*' nullmsg='".L('COMPTYNAME_N_TIP')."' errormsg='".L('COMPTYNAME_E_TIP')."'  type='text' placeholder='".L('XPAN_C_TIP')."' />"; }else { $str .="<input name='".$value['name']."' type='text' placeholder='".L('XPAN_C_TIP')."' />"; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==6){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_TEL_TIP')."</span>"; } if($value['if_require'] ==1){ $str .="<input name='".$value['name']."' datatype='m' nullmsg='".L('PHONE_N_TIP')."' errormsg='".L('PHONE_E_TIP')."'  type='text' placeholder='".L('XPAN_TEL_TIP')."' />"; }else{ $str .="<input name='".$value['name']."' type='text' placeholder='".L('XPAN_TEL_TIP')."' />"; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==7){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_F_TIP')."</span>"; } if($value['if_require'] ==1){ $str .="<input name='".$value['name']."' datatype='*' nullmsg='".L('CZ_N_TIP')."' errormsg='".L('CZ_E_TIP')."'  type='text' placeholder='".L('XPAN_F_TIP')."' />"; }else { $str .="<input name='".$value['name']."' type='text' placeholder='".L('XPAN_F_TIP')."' />"; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==8){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_F_TIP')."</span>"; } if($value['if_require'] ==1){ $str .="<input name='".$value['name']."' datatype='*' nullmsg='".L('ADDRESS_N_TIP')."' errormsg='".L('ADDRESS_E_TIP')."'  type='text' placeholder='".L('XPAN_F_TIP')."' />"; }else { $str .="<input name='".$value['name']."' type='text' placeholder='".L('XPAN_F_TIP')."' />"; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==9){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_COUN_TIP')."</span>"; } if($value['if_require'] ==1){ $str .='<select id="country" name="'.$value['name'].'" datatype="*" nullmsg="'.L('COMPTY_N_TIP').'" errormsg="'.L('COMPTY_E_TIP').'"><option value="">Select Country</option><option value="Afghanistan">Afghanistan</option><option value="Albania">Albania</option><option value="Algeria">Algeria</option><option value="American Samoa">American Samoa</option><option value="Angola">Angola</option><option value="Anguilla">Anguilla</option><option value="Antartica">Antartica</option><option value="Antigua and Barbuda">Antigua and Barbuda</option><option value="Argentina">Argentina</option><option value="Armenia">Armenia</option><option value="Aruba">Aruba</option><option value="Ashmore and Cartier Island">Ashmore and Cartier Island</option><option value="Australia">Australia</option><option value="Austria">Austria</option><option value="Azerbaijan">Azerbaijan</option><option value="Bahamas">Bahamas</option><option value="Bahrain">Bahrain</option><option value="Bangladesh">Bangladesh</option><option value="Barbados">Barbados</option><option value="Belarus">Belarus</option><option value="Belgium">Belgium</option><option value="Belize">Belize</option><option value="Benin">Benin</option><option value="Bermuda">Bermuda</option><option value="Bhutan">Bhutan</option><option value="Bolivia">Bolivia</option><option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option><option value="Botswana">Botswana</option><option value="Brazil">Brazil</option><option value="British Virgin Islands">British Virgin Islands</option><option value="Brunei">Brunei</option><option value="Bulgaria">Bulgaria</option><option value="Burkina Faso">Burkina Faso</option><option value="Burma">Burma</option><option value="Burundi">Burundi</option><option value="Cambodia">Cambodia</option><option value="Cameroon">Cameroon</option><option value="Canada">Canada</option><option value="Cape Verde">Cape Verde</option><option value="Cayman Islands">Cayman Islands</option><option value="Central African Republic">Central African Republic</option><option value="Chad">Chad</option><option value="Chile">Chile</option><option value="China">China</option><option value="Christmas Island">Christmas Island</option><option value="Clipperton Island">Clipperton Island</option><option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option><option value="Colombia">Colombia</option><option value="Comoros">Comoros</option><option value="Congo, Democratic Republic of the">Congo, Democratic Republic of the</option><option value="Congo, Republic of the">Congo, Republic of the</option><option value="Cook Islands">Cook Islands</option><option value="Costa Rica">Costa Rica</option><option value="Cote d\'Ivoire">Cote d\'Ivoire</option><option value="Croatia">Croatia</option><option value="Cuba">Cuba</option><option value="Cyprus">Cyprus</option><option value="Czeck Republic">Czeck Republic</option><option value="Denmark">Denmark</option><option value="Djibouti">Djibouti</option><option value="Dominica">Dominica</option><option value="Dominican Republic">Dominican Republic</option><option value="Ecuador">Ecuador</option><option value="Egypt">Egypt</option><option value="El Salvador">El Salvador</option><option value="Equatorial Guinea">Equatorial Guinea</option><option value="Eritrea">Eritrea</option><option value="Estonia">Estonia</option><option value="Ethiopia">Ethiopia</option><option value="Europa Island">Europa Island</option><option value="Falkland Islands (Islas Malvinas)">Falkland Islands (Islas Malvinas)</option><option value="Faroe Islands">Faroe Islands</option><option value="Fiji">Fiji</option><option value="Finland">Finland</option><option value="France">France</option><option value="French Guiana">French Guiana</option><option value="French Polynesia">French Polynesia</option><option value="French Southern and Antarctic Lands">French Southern and Antarctic Lands</option><option value="Gabon">Gabon</option><option value="Gambia, The">Gambia, The</option><option value="Gaza Strip">Gaza Strip</option><option value="Georgia">Georgia</option><option value="Germany">Germany</option><option value="Ghana">Ghana</option><option value="Gibraltar">Gibraltar</option><option value="Glorioso Islands">Glorioso Islands</option><option value="Greece">Greece</option><option value="Greenland">Greenland</option><option value="Grenada">Grenada</option><option value="Guadeloupe">Guadeloupe</option><option value="Guam">Guam</option><option value="Guatemala">Guatemala</option><option value="Guernsey">Guernsey</option><option value="Guinea">Guinea</option><option value="Guinea-Bissau">Guinea-Bissau</option><option value="Guyana">Guyana</option><option value="Haiti">Haiti</option><option value="Heard Island and McDonald Islands">Heard Island and McDonald Islands</option><option value="Holy See (Vatican City)">Holy See (Vatican City)</option><option value="Honduras">Honduras</option><option value="Hong Kong(China)">Hong Kong(China)</option><option value="Howland Island">Howland Island</option><option value="Hungary">Hungary</option><option value="Iceland">Iceland</option><option value="India">India</option><option value="Indonesia">Indonesia</option><option value="Iran">Iran</option><option value="Iraq">Iraq</option><option value="Ireland">Ireland</option><option value="Ireland, Northern">Ireland, Northern</option><option value="Israel">Israel</option><option value="Italy">Italy</option><option value="Jamaica">Jamaica</option><option value="Jan Mayen">Jan Mayen</option><option value="Japan">Japan</option><option value="Jarvis Island">Jarvis Island</option><option value="Jersey">Jersey</option><option value="Johnston Atoll">Johnston Atoll</option><option value="Jordan">Jordan</option><option value="Juan de Nova Island">Juan de Nova Island</option><option value="Kazakhstan">Kazakhstan</option><option value="Kenya">Kenya</option><option value="Kiribati">Kiribati</option><option value="Korea, North">Korea, North</option><option value="Korea, South">Korea, South</option><option value="Kuwait">Kuwait</option><option value="Kyrgyzstan">Kyrgyzstan</option><option value="Laos">Laos</option><option value="Latvia">Latvia</option><option value="Lebanon">Lebanon</option><option value="Lesotho">Lesotho</option><option value="Liberia">Liberia</option><option value="Libya">Libya</option><option value="Liechtenstein">Liechtenstein</option><option value="Lithuania">Lithuania</option><option value="Luxembourg">Luxembourg</option><option value="Macau">Macau</option><option value="Macedonia, Former Yugoslav Republic of">Macedonia, Former Yugoslav Republic of</option><option value="Madagascar">Madagascar</option><option value="Malawi">Malawi</option><option value="Malaysia">Malaysia</option><option value="Maldives">Maldives</option><option value="Mali">Mali</option><option value="Malta">Malta</option><option value="Man, Isle of">Man, Isle of</option><option value="Marshall Islands">Marshall Islands</option><option value="Martinique">Martinique</option><option value="Mauritania">Mauritania</option><option value="Mauritius">Mauritius</option><option value="Mayotte">Mayotte</option><option value="Mexico">Mexico</option><option value="Micronesia, Federated States of">Micronesia, Federated States of</option><option value="Midway Islands">Midway Islands</option><option value="Moldova">Moldova</option><option value="Monaco">Monaco</option><option value="Mongolia">Mongolia</option><option value="Montserrat">Montserrat</option><option value="Morocco">Morocco</option><option value="Mozambique">Mozambique</option><option value="Namibia">Namibia</option><option value="Nauru">Nauru</option><option value="Nepal">Nepal</option><option value="Netherlands">Netherlands</option><option value="Netherlands Antilles">Netherlands Antilles</option><option value="New Caledonia">New Caledonia</option><option value="New Zealand">New Zealand</option><option value="Nicaragua">Nicaragua</option><option value="Niger">Niger</option><option value="Nigeria">Nigeria</option><option value="Niue">Niue</option><option value="Norfolk Island">Norfolk Island</option><option value="Northern Mariana Islands">Northern Mariana Islands</option><option value="Norway">Norway</option><option value="Oman">Oman</option><option value="Pakistan">Pakistan</option><option value="Palau">Palau</option><option value="Panama">Panama</option><option value="Papua New Guinea">Papua New Guinea</option><option value="Paraguay">Paraguay</option><option value="Peru">Peru</option><option value="Philippines">Philippines</option><option value="Pitcaim Islands">Pitcaim Islands</option><option value="Poland">Poland</option><option value="Portugal">Portugal</option><option value="Puerto Rico">Puerto Rico</option><option value="Qatar">Qatar</option><option value="Reunion">Reunion</option><option value="Romainia">Romainia</option><option value="Russia">Russia</option><option value="Rwanda">Rwanda</option><option value="Saint Helena">Saint Helena</option><option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option><option value="Saint Lucia">Saint Lucia</option><option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option><option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option><option value="Samoa">Samoa</option><option value="San Marino">San Marino</option><option value="Sao Tome and Principe">Sao Tome and Principe</option><option value="Saudi Arabia">Saudi Arabia</option><option value="Scotland">Scotland</option><option value="Senegal">Senegal</option><option value="Seychelles">Seychelles</option><option value="Sierra Leone">Sierra Leone</option><option value="Singapore">Singapore</option><option value="Slovakia">Slovakia</option><option value="Slovenia">Slovenia</option><option value="Solomon Islands">Solomon Islands</option><option value="Somalia">Somalia</option><option value="South Africa">South Africa</option><option value="South Georgia and South Sandwich Islands">South Georgia and South Sandwich Islands</option><option value="Spain">Spain</option><option value="Spratly Islands">Spratly Islands</option><option value="Sri Lanka">Sri Lanka</option><option value="Sudan">Sudan</option><option value="Suriname">Suriname</option><option value="Svalbard">Svalbard</option><option value="Swaziland">Swaziland</option><option value="Sweden">Sweden</option><option value="Switzerland">Switzerland</option><option value="Syria">Syria</option><option value="Taiwan(China)">Taiwan(China)</option><option value="Tajikistan">Tajikistan</option><option value="Tanzania">Tanzania</option><option value="Thailand">Thailand</option><option value="Tobago">Tobago</option><option value="Toga">Toga</option><option value="Tokelau">Tokelau</option><option value="Tonga">Tonga</option><option value="Trinidad">Trinidad</option><option value="Tunisia">Tunisia</option><option value="Turkey">Turkey</option><option value="Turkmenistan">Turkmenistan</option><option value="Tuvalu">Tuvalu</option><option value="Uganda">Uganda</option><option value="Ukraine">Ukraine</option><option value="United Arab Emirates">United Arab Emirates</option><option value="United Kingdom">United Kingdom</option><option value="Uruguay">Uruguay</option><option value="USA">USA</option><option value="Uzbekistan">Uzbekistan</option><option value="Vanuatu">Vanuatu</option><option value="Venezuela">Venezuela</option><option value="Vietnam">Vietnam</option><option value="Virgin Islands">Virgin Islands</option><option value="Wales">Wales</option><option value="Wallis and Futuna">Wallis and Futuna</option><option value="West Bank">West Bank</option><option value="Western Sahara">Western Sahara</option><option value="Yemen">Yemen</option><option value="Yugoslavia">Yugoslavia</option><option value="Zambia">Zambia</option><option value="Zimbabwe">Zimbabwe</option></select>'; }else{ $str .='<select id="country" name="'.$value['name'].'"><option value="">Select Country</option><option value="Afghanistan">Afghanistan</option><option value="Albania">Albania</option><option value="Algeria">Algeria</option><option value="American Samoa">American Samoa</option><option value="Angola">Angola</option><option value="Anguilla">Anguilla</option><option value="Antartica">Antartica</option><option value="Antigua and Barbuda">Antigua and Barbuda</option><option value="Argentina">Argentina</option><option value="Armenia">Armenia</option><option value="Aruba">Aruba</option><option value="Ashmore and Cartier Island">Ashmore and Cartier Island</option><option value="Australia">Australia</option><option value="Austria">Austria</option><option value="Azerbaijan">Azerbaijan</option><option value="Bahamas">Bahamas</option><option value="Bahrain">Bahrain</option><option value="Bangladesh">Bangladesh</option><option value="Barbados">Barbados</option><option value="Belarus">Belarus</option><option value="Belgium">Belgium</option><option value="Belize">Belize</option><option value="Benin">Benin</option><option value="Bermuda">Bermuda</option><option value="Bhutan">Bhutan</option><option value="Bolivia">Bolivia</option><option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option><option value="Botswana">Botswana</option><option value="Brazil">Brazil</option><option value="British Virgin Islands">British Virgin Islands</option><option value="Brunei">Brunei</option><option value="Bulgaria">Bulgaria</option><option value="Burkina Faso">Burkina Faso</option><option value="Burma">Burma</option><option value="Burundi">Burundi</option><option value="Cambodia">Cambodia</option><option value="Cameroon">Cameroon</option><option value="Canada">Canada</option><option value="Cape Verde">Cape Verde</option><option value="Cayman Islands">Cayman Islands</option><option value="Central African Republic">Central African Republic</option><option value="Chad">Chad</option><option value="Chile">Chile</option><option value="China">China</option><option value="Christmas Island">Christmas Island</option><option value="Clipperton Island">Clipperton Island</option><option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option><option value="Colombia">Colombia</option><option value="Comoros">Comoros</option><option value="Congo, Democratic Republic of the">Congo, Democratic Republic of the</option><option value="Congo, Republic of the">Congo, Republic of the</option><option value="Cook Islands">Cook Islands</option><option value="Costa Rica">Costa Rica</option><option value="Cote d\'Ivoire">Cote d\'Ivoire</option><option value="Croatia">Croatia</option><option value="Cuba">Cuba</option><option value="Cyprus">Cyprus</option><option value="Czeck Republic">Czeck Republic</option><option value="Denmark">Denmark</option><option value="Djibouti">Djibouti</option><option value="Dominica">Dominica</option><option value="Dominican Republic">Dominican Republic</option><option value="Ecuador">Ecuador</option><option value="Egypt">Egypt</option><option value="El Salvador">El Salvador</option><option value="Equatorial Guinea">Equatorial Guinea</option><option value="Eritrea">Eritrea</option><option value="Estonia">Estonia</option><option value="Ethiopia">Ethiopia</option><option value="Europa Island">Europa Island</option><option value="Falkland Islands (Islas Malvinas)">Falkland Islands (Islas Malvinas)</option><option value="Faroe Islands">Faroe Islands</option><option value="Fiji">Fiji</option><option value="Finland">Finland</option><option value="France">France</option><option value="French Guiana">French Guiana</option><option value="French Polynesia">French Polynesia</option><option value="French Southern and Antarctic Lands">French Southern and Antarctic Lands</option><option value="Gabon">Gabon</option><option value="Gambia, The">Gambia, The</option><option value="Gaza Strip">Gaza Strip</option><option value="Georgia">Georgia</option><option value="Germany">Germany</option><option value="Ghana">Ghana</option><option value="Gibraltar">Gibraltar</option><option value="Glorioso Islands">Glorioso Islands</option><option value="Greece">Greece</option><option value="Greenland">Greenland</option><option value="Grenada">Grenada</option><option value="Guadeloupe">Guadeloupe</option><option value="Guam">Guam</option><option value="Guatemala">Guatemala</option><option value="Guernsey">Guernsey</option><option value="Guinea">Guinea</option><option value="Guinea-Bissau">Guinea-Bissau</option><option value="Guyana">Guyana</option><option value="Haiti">Haiti</option><option value="Heard Island and McDonald Islands">Heard Island and McDonald Islands</option><option value="Holy See (Vatican City)">Holy See (Vatican City)</option><option value="Honduras">Honduras</option><option value="Hong Kong(China)">Hong Kong(China)</option><option value="Howland Island">Howland Island</option><option value="Hungary">Hungary</option><option value="Iceland">Iceland</option><option value="India">India</option><option value="Indonesia">Indonesia</option><option value="Iran">Iran</option><option value="Iraq">Iraq</option><option value="Ireland">Ireland</option><option value="Ireland, Northern">Ireland, Northern</option><option value="Israel">Israel</option><option value="Italy">Italy</option><option value="Jamaica">Jamaica</option><option value="Jan Mayen">Jan Mayen</option><option value="Japan">Japan</option><option value="Jarvis Island">Jarvis Island</option><option value="Jersey">Jersey</option><option value="Johnston Atoll">Johnston Atoll</option><option value="Jordan">Jordan</option><option value="Juan de Nova Island">Juan de Nova Island</option><option value="Kazakhstan">Kazakhstan</option><option value="Kenya">Kenya</option><option value="Kiribati">Kiribati</option><option value="Korea, North">Korea, North</option><option value="Korea, South">Korea, South</option><option value="Kuwait">Kuwait</option><option value="Kyrgyzstan">Kyrgyzstan</option><option value="Laos">Laos</option><option value="Latvia">Latvia</option><option value="Lebanon">Lebanon</option><option value="Lesotho">Lesotho</option><option value="Liberia">Liberia</option><option value="Libya">Libya</option><option value="Liechtenstein">Liechtenstein</option><option value="Lithuania">Lithuania</option><option value="Luxembourg">Luxembourg</option><option value="Macau">Macau</option><option value="Macedonia, Former Yugoslav Republic of">Macedonia, Former Yugoslav Republic of</option><option value="Madagascar">Madagascar</option><option value="Malawi">Malawi</option><option value="Malaysia">Malaysia</option><option value="Maldives">Maldives</option><option value="Mali">Mali</option><option value="Malta">Malta</option><option value="Man, Isle of">Man, Isle of</option><option value="Marshall Islands">Marshall Islands</option><option value="Martinique">Martinique</option><option value="Mauritania">Mauritania</option><option value="Mauritius">Mauritius</option><option value="Mayotte">Mayotte</option><option value="Mexico">Mexico</option><option value="Micronesia, Federated States of">Micronesia, Federated States of</option><option value="Midway Islands">Midway Islands</option><option value="Moldova">Moldova</option><option value="Monaco">Monaco</option><option value="Mongolia">Mongolia</option><option value="Montserrat">Montserrat</option><option value="Morocco">Morocco</option><option value="Mozambique">Mozambique</option><option value="Namibia">Namibia</option><option value="Nauru">Nauru</option><option value="Nepal">Nepal</option><option value="Netherlands">Netherlands</option><option value="Netherlands Antilles">Netherlands Antilles</option><option value="New Caledonia">New Caledonia</option><option value="New Zealand">New Zealand</option><option value="Nicaragua">Nicaragua</option><option value="Niger">Niger</option><option value="Nigeria">Nigeria</option><option value="Niue">Niue</option><option value="Norfolk Island">Norfolk Island</option><option value="Northern Mariana Islands">Northern Mariana Islands</option><option value="Norway">Norway</option><option value="Oman">Oman</option><option value="Pakistan">Pakistan</option><option value="Palau">Palau</option><option value="Panama">Panama</option><option value="Papua New Guinea">Papua New Guinea</option><option value="Paraguay">Paraguay</option><option value="Peru">Peru</option><option value="Philippines">Philippines</option><option value="Pitcaim Islands">Pitcaim Islands</option><option value="Poland">Poland</option><option value="Portugal">Portugal</option><option value="Puerto Rico">Puerto Rico</option><option value="Qatar">Qatar</option><option value="Reunion">Reunion</option><option value="Romainia">Romainia</option><option value="Russia">Russia</option><option value="Rwanda">Rwanda</option><option value="Saint Helena">Saint Helena</option><option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option><option value="Saint Lucia">Saint Lucia</option><option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option><option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option><option value="Samoa">Samoa</option><option value="San Marino">San Marino</option><option value="Sao Tome and Principe">Sao Tome and Principe</option><option value="Saudi Arabia">Saudi Arabia</option><option value="Scotland">Scotland</option><option value="Senegal">Senegal</option><option value="Seychelles">Seychelles</option><option value="Sierra Leone">Sierra Leone</option><option value="Singapore">Singapore</option><option value="Slovakia">Slovakia</option><option value="Slovenia">Slovenia</option><option value="Solomon Islands">Solomon Islands</option><option value="Somalia">Somalia</option><option value="South Africa">South Africa</option><option value="South Georgia and South Sandwich Islands">South Georgia and South Sandwich Islands</option><option value="Spain">Spain</option><option value="Spratly Islands">Spratly Islands</option><option value="Sri Lanka">Sri Lanka</option><option value="Sudan">Sudan</option><option value="Suriname">Suriname</option><option value="Svalbard">Svalbard</option><option value="Swaziland">Swaziland</option><option value="Sweden">Sweden</option><option value="Switzerland">Switzerland</option><option value="Syria">Syria</option><option value="Taiwan(China)">Taiwan(China)</option><option value="Tajikistan">Tajikistan</option><option value="Tanzania">Tanzania</option><option value="Thailand">Thailand</option><option value="Tobago">Tobago</option><option value="Toga">Toga</option><option value="Tokelau">Tokelau</option><option value="Tonga">Tonga</option><option value="Trinidad">Trinidad</option><option value="Tunisia">Tunisia</option><option value="Turkey">Turkey</option><option value="Turkmenistan">Turkmenistan</option><option value="Tuvalu">Tuvalu</option><option value="Uganda">Uganda</option><option value="Ukraine">Ukraine</option><option value="United Arab Emirates">United Arab Emirates</option><option value="United Kingdom">United Kingdom</option><option value="Uruguay">Uruguay</option><option value="USA">USA</option><option value="Uzbekistan">Uzbekistan</option><option value="Vanuatu">Vanuatu</option><option value="Venezuela">Venezuela</option><option value="Vietnam">Vietnam</option><option value="Virgin Islands">Virgin Islands</option><option value="Wales">Wales</option><option value="Wallis and Futuna">Wallis and Futuna</option><option value="West Bank">West Bank</option><option value="Western Sahara">Western Sahara</option><option value="Yemen">Yemen</option><option value="Yugoslavia">Yugoslavia</option><option value="Zambia">Zambia</option><option value="Zimbabwe">Zimbabwe</option></select>'; } $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==10){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_YZ_TIP')."</span>"; } $str .="<input name='".$value['name']."' datatype='*' nullmsg='".L('YZ_N_TIP')."' errormsg='".L('YZ_E_TIP')."'  type='text' placeholder='".L('XPAN_YZ_TIP')."' />"; $str .=sp_verifycode_img('length=4&font_size=20&width=248&height=42&use_noise=1&use_curve=0','style="cursor: pointer;" title="'.L('DJ_TIP').'"') ; $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; }else if ($value['id'] ==11){ $str .= "<div>"; if($show){ $str .="<span>".L('XPAN_FILE_TIP')."</span>"; } $str .="<input name='".$value['name']."' type='file'  />"; $str .='<div class="info"><span class="Validform_checktip"></span><span class="dec"><s class="dec1">&#9670;</s><s class="dec2">&#9670;</s></span></div></div>'; } } } $str .="<input type='submit' value='Send' >"; $str .="</form>"; $url = __ROOT__.'/public'; $str .= '<script src="'.$url.'/js/Validform_v5.3.2_min.js"></script>
<script type="text/javascript">
$(function(){
    $("#formxun").Validform({
        tiptype:function(msg,o,cssctl){
            if(!o.obj.is("#formxun")){
                var objtip=o.obj.parents("div").next().find(".Validform_checktip");
                cssctl(objtip,o.type);
                objtip.text(msg);
               
                var infoObj=o.obj.parents("div").next().find(".info");
                if(o.type==2){
                    infoObj.fadeOut(200);
                }else{
                    if(infoObj.is(":visible")){return;}
                    var left=o.obj.offset().left,
                        top=o.obj.offset().top;
                    infoObj.css({
                        left:left+170,
                        top:top-45
                    }).show().animate({

                        top:top-35  
                    },200);
                }
                
            }   
        }
        
    });
})
</script>'; return $str; } function showSocially($id) { $list = M() ->table('cmf_follow_us_type as type	
 							join
 						 cmf_follow_us_rela as rela
 						 	on
 						 type.typeid = rela.type_id 
 						    join
 						 cmf_follow_us as cfu 
 						  ON  
 						 rela.socially_id = cfu.socially_id ') ->field('cfu.logo_url, cfu.socially_name,cfu.socially_url') ->where("type.id = '$id' and rela.is_show=0") ->select(); $str = ""; foreach ($list as $value) { $str.= '<a href="'.$value['socially_url'].'"  target="_blank" ><img src="'.$value['logo_url'].'" alt="" width="200px"/>'; $str.="<p>".$value['socially_name']."</P>"; $str.='</a>'; } return $str; } function fileext($filename) { $pathinfo = pathinfo($filename); return $pathinfo['extension']; } function isImage($file) { $ext_arr = array('jpg', 'gif', 'png', 'bmp', 'jpeg', 'tiff'); $ext = fileext($file); return in_array($ext, $ext_arr) ? true : false; } function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){ if(is_array($multi_array)){ foreach ($multi_array as $row_array){ if(is_array($row_array)){ $key_array[] = $row_array[$sort_key]; }else{ return false; } } }else{ return false; } array_multisort($key_array,$sort,$multi_array); return $multi_array; } function juhecurl($url,$params=false,$ispost=0){ $ch = curl_init(); curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 60); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); if( $ispost ) { curl_setopt( $ch , CURLOPT_POST , true ); curl_setopt( $ch , CURLOPT_POSTFIELDS , $params ); curl_setopt( $ch , CURLOPT_URL , $url ); } else { if($params){ if(is_array($params)){ $params = http_build_query($params); } curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params ); }else{ curl_setopt( $ch , CURLOPT_URL , $url); } } $response = curl_exec( $ch ); curl_close( $ch ); return $response; } function banks(){ $bank = array( '工商银行'=> 0, '招商银行'=> 1, '建设银行'=> 2, '中国银行'=> 3, '交通银行'=> 4, '农业银行'=> 5, ); return $bank; } function currency_list(){ $appkey = "23bbcd6675880265c674a3f9a880c8f5"; $url = "http://op.juhe.cn/onebox/exchange/list"; $params = array( "key" => $appkey, ); $paramstring = http_build_query($params); $content = juhecurl($url,$paramstring); $results = json_decode($content,true); if($results){ if($results['error_code']=='0'){ return $results['result']['list']; }else{ return false; } }else{ return false; } } function gpoint($adminid,$cotenttype){ $admininfo = get_admin_info($adminid); $points_auth = explode(',', $admininfo['points_auth']); if($admininfo['identity'] == 1 && in_array($cotenttype, $points_auth)){ $year = date('Y',time()); $month = date('m',time()); $month_start = $year.'-'.$month.'-01'; $month_end = mktime(23, 59, 59, date('m', strtotime($month))+1, 00); $month_end = date("Y-m-d",$month_end); $m['contentid'] = array(array('in','1,2,3')); $m['addtime'] = array(array('EGT',$month_start),array('ELT',$month_end)); $sum = M('Points')->field('sum(points) as pointssum')->where($m)->find(); $w['addtime'] = array('eq',date('Y-m-d',time())); $w['contentid'] = $cotenttype; $w['adminid'] = $adminid; $pointnum = M('Points')->where($w)->count(); if(!$pointnum && $sum['pointssum'] < 30){ $point_data['adminid'] = $adminid; $point_data['contentid'] = $cotenttype; $point_data['points'] = 1; $point_data['addtime'] = date("Y-m-d",time()); $rel = M('Points')->add($point_data); return true; }else{ return false; } }else{ return false; } } function get_catgory_product($catid,$type=0){ if($type){$rel=0; return $rel;} $modelid = getCategory($catid, 'modelid'); $model_name=getModel($modelid, 'tablename'); $map['catid'] = $catid; $prolist = M($model_name)->where($map)->count(); if($prolist)$rel=1; else $rel=0; return $rel; } function get_catgory_son($catid){ $map['parentid'] = $catid; $sonnum = M('Category')->where($map)->count(); if($sonnum)$rel=1; else $rel=0; return $rel; } function get_sort_order($catid){ if(!$catid){ $data['order'] = 'listorder desc,id desc'; return $data; } $map['catid'] = $catid; $info = M('Sortorder')->where($map)->find(); if($info){ $data['order'] = $info['sort'].' '.$info['order']; }else{ $data['order'] = 'listorder desc,id desc'; } return $data; } function getOpAds(){ $map['option_name'] = 'site_indexads'; $adinfo = M('Options')->where($map)->find(); $ads = json_decode($adinfo['option_value'],true); $sort = array( 'direction' => 'SORT_ASC', 'field' => 'sort', ); $arrSort = array(); foreach($ads AS $uniqid => $row){ foreach($row AS $key=>$value){ $arrSort[$key][$uniqid] = $value; } } array_multisort($arrSort[$sort['field']], constant($sort['direction']), $ads); if($ads)return $ads; else return false; } function getPsitionAds($position_id){ if(!$position_id)return false; $map['position_id'] = $position_id; $map['status'] = 0; $ads = M('Ads')->where($map)->order('sort asc,id desc')->select(); if($ads)return $ads; else return false; } function recursiveDelete($dir) { if(is_dir($dir)){ if ($handle = @opendir($dir)) { while (($file = readdir($handle)) !== false) { if (($file == ".") || ($file == "..")) { continue; } if (is_dir($dir . '/' . $file)) { recursiveDelete($dir . '/' . $file); } else { unlink($dir . '/' . $file); } } @closedir($handle); rmdir ($dir); } }else{ if(file_exists($dir)) unlink($dir); } } function get_c_url($catid){ $cate = M("Category")->where(" catid = $catid ")->find(); return $cate['url']; } function get_c_name($catid){ $arr = M('Category')->where("catid =".$catid)->select(); $catname=$arr[0]['catname']; return $catname; } function get_c_img($catid){ $arr = M('Category')->where("catid =".$catid)->select(); $catimage=$arr[0]['image']; return $catimage; } function get_c_banner($catid){ $arr = M('Category')->where("catid =".$catid)->select(); $catimage=$arr[0]['banner']; return $catimage; } function get_c_desc($catid){ $arr = M('Category')->where("catid =".$catid)->select(); $catdescription=$arr[0]['description']; return $catdescription; } function wps_getcatparentid($catid){ $arr = M('Category')->where("catid =".$catid)->select(); $catparentid=$arr[0]['parentid']; return $catparentid; } function get_c_seo($catid){ $arr = M('Category')->where("catid =".$catid)->select(); $catdescription=$arr[0]['seo']; return $catdescription; } function get_p_thumb($catid){ $arr = M('Page')->where("catid =".$catid)->select(); $catdescription=$arr[0]['thumb']; return $catdescription; } function get_p_content($catid){ $arr = M('Page')->where("catid =".$catid)->select(); $catdescription=$arr[0]['content']; return $catdescription; } function get_p_title($catid){ $arr = M('Page')->where("catid =".$catid)->select(); $catdescription=$arr[0]['title']; return $catdescription; } function get_p_photo($catid){ $arr = M('Page')->where("catid =".$catid)->select(); $catdescription=$arr[0]['photo']; $photo = json_decode($catdescription,true); return $photo; } function get_p_intro($catid){ $arr = M('Page')->where("catid =".$catid)->select(); $catdescription=$arr[0]['intro']; return $catdescription; } function get_cat_sortorder($catid) { if (!$catid) { return false; } $maporder['catid'] = $catid; $sortorder = M('Sortorder')->where($maporder)->find(); if($sortorder['sort'] && empty($data['order'])){ $sort = !empty($sortorder['sort'])?$sortorder['sort']:'id'; $order = !empty($sortorder['order'])?$sortorder['order']:'desc'; $sortorder = $sort.' '.$order; }else { $sortorder = 'id desc'; } return $sortorder; } function get_prev_param($catid, $id) { if (!$id) { return false; } $sortorder = get_cat_sortorder($catid); if (!$sortorder) { $sortorder = 'id desc'; } $sort_arr = explode(' ', $sortorder); if ($sort_arr[1] == 'asc') { $data['symbol'] = 'lt'; $data['order'] = 'desc'; } else { $data['symbol'] = 'gt'; $data['order'] = 'asc'; } $data['field_key'] = $sort_arr[0]; $info = \Content\Model\ContentModel::getInstance(getCategory($catid,"modelid"))->where(array("id"=>$id))->field("id,listorder,updatetime,inputtime")->find(); $data['field_val'] = $info[$sort_arr[0]]; return $data; } function get_next_param($catid, $id) { if (!$id) { return false; } $sortorder = get_cat_sortorder($catid); if (!$sortorder) { $sortorder = 'id desc'; } $sort_arr = explode(' ', $sortorder); if ($sort_arr[1] == 'asc') { $data['symbol'] = 'gt'; $data['order'] = 'asc'; } else { $data['symbol'] = 'lt'; $data['order'] = 'desc'; } $data['field_key'] = $sort_arr[0]; $info = \Content\Model\ContentModel::getInstance(getCategory($catid,"modelid"))->where(array("id"=>$id))->field("id,listorder,updatetime,inputtime")->find(); $data['field_val'] = $info[$sort_arr[0]]; return $data; } function img_cdn_url($url){ $site_options = get_site_options(); $cnd_url = C('IMG_CDN_URL'); if (!empty($site_options['site_host'])) { $url = str_replace($site_options['site_host'], '', $url); } if (!empty(C('APP_NAME'))) { $url = str_replace_limit(C('APP_NAME'), "", $url, 1); } $url = str_replace($cnd_url, '', $url); if(substr($url,0,1) == '/'){ $url = substr($url,1); } $url = $cnd_url.$url; return $url; } function str_replace_limit($search, $replace, $subject, $limit=-1){ if(is_array($search)){ foreach($search as $k=>$v){ $search[$k] = '`'. preg_quote($search[$k], '`'). '`'; } }else{ $search = '`'. preg_quote($search, '`'). '`'; } return preg_replace($search, $replace, $subject, $limit); } function structureData($type, $catid = 0, $seo_title = '', $url = '', $newsImage = '', $newsName = '', $newsInputTime = 0, $newsUpdateTime = 0, $newsAbstract = '', $newsContent = '') { $option = M("Options")->where("option_name='structured_data'")->find(); if(empty($option)){ return ''; } $structured_data_option = json_decode($option['option_value'],true); if (!empty($structured_data_option['structured_data']) && $structured_data_option['structured_data'] == 1) { $get_site_options = get_site_options(); $structured = ''; $structured_data = []; switch ($type) { case 1: $structured_data = array( [ '@context' => 'https://schema.org/', '@type' => 'WebSite', 'id' => $get_site_options['site_host'].'#website', 'url' => $get_site_options['site_host'], 'name' => $get_site_options['site_name'], 'potentialAction' => array( '@type' => 'SearchAction', 'target' => $get_site_options['site_host']."Search/Index/index.html?q={search_term_string}", 'query-input' => 'required name=search_term_string' ) ], [ '@context' => 'https://schema.org/', "@type" => "WebPage", "mainEntity" => [ '@type' => 'Thing', 'name' => $get_site_options['site_seo_title'], 'url' => $get_site_options['site_host'], ], "speakable" => [ '@type' => 'SpeakableSpecification', 'xpath' => '/html/head/title', 'value' => $get_site_options['site_seo_title'], ] ] ); break; case 2: $structured_data = array( [ '@context' => 'https://schema.org/', '@type' => 'WebSite', 'id' => $get_site_options['site_host'].'#website', 'url' => $get_site_options['site_host'], 'name' => $get_site_options['site_name'], 'potentialAction' => array( '@type' => 'SearchAction', 'target' => $get_site_options['site_host']."Search/Index/index.html?q={search_term_string}", 'query-input' => 'required name=search_term_string' ) ], [ '@context' => 'https://schema.org/', "@type" => "WebPage", "url" => $url, "mainEntity" => [ '@type' => 'Thing', 'name' => $seo_title, 'url' => $url, ], ] ); $BreadcrumbList = [ "@context" => 'https://schema.org/', "@type" => "BreadcrumbList", "itemListElement" => [ [ "@type" => "ListItem", "position" => 0, "item" => [ "@type" => "Thing", "@id" => $get_site_options['site_host'], "name" => 'Home' ] ] ] ]; $arrparentid = array_filter(explode(',', getCategory($catid, 'arrparentid') . ',' . $catid)); $i = 1; foreach ($arrparentid as $key => $cid) { $itemListElement = array( "@type" => "ListItem", "position" => $i, "item" => array( "@type" => "Thing", "@id" => getCategory($cid, 'url'), "name" => getCategory($cid, 'catname') ) ); $i++; $BreadcrumbList['itemListElement'][] = $itemListElement; } array_push($structured_data, $BreadcrumbList); break; case 3: $structured_data = array( [ '@context' => 'https://schema.org/', '@type' => 'WebSite', 'id' => $get_site_options['site_host'].'#website', 'url' => $get_site_options['site_host'], 'name' => $get_site_options['site_name'], 'potentialAction' => array( '@type' => 'SearchAction', 'target' => $get_site_options['site_host']."Search/Index/index.html?q={search_term_string}", 'query-input' => 'required name=search_term_string' ) ], [ '@context' => 'https://schema.org/', "@type" => "WebPage", "mainEntity" => [ '@type' => 'Thing', 'name' => $seo_title, 'url' => $url, ] ] ); $BreadcrumbList = [ "@context" => 'https://schema.org/', "@type" => "BreadcrumbList", "itemListElement" => [ [ "@type" => "ListItem", "position" => 0, "item" => [ "@type" => "Thing", "@id" => $get_site_options['site_host'], "name" => 'Home' ] ] ] ]; $arrparentid = array_filter(explode(',', getCategory($catid, 'arrparentid') . ',' . $catid)); $i = 1; foreach ($arrparentid as $key => $cid) { $itemListElement = array( "@type" => "ListItem", "position" => $i, "item" => array( "@type" => "Thing", "@id" => getCategory($cid, 'url'), "name" => getCategory($cid, 'catname') ) ); $i++; $BreadcrumbList['itemListElement'][] = $itemListElement; } array_push($structured_data, $BreadcrumbList); break; case 4: $logo = json_decode($get_site_options['smeta_logo'], true); $newsContent = str_replace(array("\r\n", "\r", "\n"), '', htmlspecialchars_decode($newsContent)); $newsContent = strip_tags($newsContent); $structured_data = [ '@context' => 'https://schema.org/', "@type" => "Article", "image" => $get_site_options['site_host'].$newsImage, "mainEntityOfPage" => $url, "name" => $newsName, "headline" => $newsName, "datePublisher" => date('c', $newsInputTime), "dateModified" => date('c', $newsUpdateTime), "description" => $newsAbstract, "articleBody" => $newsContent, "author" => [ "@type" => "Thing", "name" => $get_site_options['site_name'], ], "publisher" => [ "@type" => "Organization", "name" => $get_site_options['site_name'], "logo" => [ "@type" => "ImageObject", "url" => $get_site_options['site_host'].$logo['logo1'], ] ], "speakable" => [ "@type" => "SpeakableSpecification", "xpath" => [ "/html/head/title", "html/head/meta[@name='description']/@content" ] ] ]; break; } if ($structured_data) { $structured_data_json = stripslashes(json_encode($structured_data, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE)); $structured = '<script type="application/ld+json">
'.$structured_data_json.'
</script>'; } return $structured; } return ''; } function sql_add_data($data){ $data['uid'] = $_SESSION['ADMIN_ID']; return $data; } function exhibition_country($where = array()){ $country = M('exhibition')->where($where)->group('country')->getField('country', true); $country = array_filter($country); $country = eval('return '.mb_convert_encoding(var_export($country,true), "gbk","utf-8").";"); sort($country); $country = eval('return '.mb_convert_encoding(var_export($country,true), "utf-8", "gbk").";"); return $country ? $country : array(); } function get_country_data_count(){ $country_data_count = S('country_data_count'); if (empty($country_data_count)) { $country_data_count = array(); $country = exhibition_country(); foreach ($country as $k => $v) { $where['country'] = $v; $country_data_count[$v]['count'] = M('exhibition')->where($where)->count(); } arsort($country_data_count); S('country_data_count', $country_data_count); } return $country_data_count; } function customs_country($where = array()){ $country = M('customs_country')->order('CONVERT(name USING gbk)')->select(); return $country ? $country : array(); } function get_customs_country_data_count(){ $customs_country_data_count = S('customs_country_data_count'); if (empty($customs_country_data_count)) { $customs_country_data_count = array(); $country = customs_country(); foreach ($country as $k => $v) { $where['country'] = $v['name']; $customs_country_data_count[$v['name']]['count'] = M('customs_list')->where($where)->count(); $customs_country_data_count[$v['name']]['pic'] = $v['pic']; } arsort($customs_country_data_count); S('customs_country_data_count', $customs_country_data_count); } return $customs_country_data_count; } function ueditor($content) { if (empty($content)) { return ''; } $img_pattern = '/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i'; $iframe_pattern = '/<iframe(.*?)><\/iframe>/i'; $video_pattern = '/<video(.*?)>(.*?)<\/video>/is'; $img = preg_match_all($img_pattern, $content, $match_img); $iframe = preg_match_all($iframe_pattern, $content, $match_iframe); $video = preg_match_all($video_pattern, $content, $match_video); foreach ($match_img[0] as $k=>$v) { $data_img[$k]['old'] = $v; $old_img = $v; if (strpos($v, 'layout') === false) { $v = str_replace('<img', '<img layout="responsive"', $v); } if (strpos($v, 'width') === false) { $v = str_replace('<img', '<img width="70"', $v); } if (strpos($v, 'height') === false) { $v = str_replace('<img', '<img height="70"', $v); } if (strpos($v, 'http:') !== false) { $v = str_replace('http:', '', $v); } $v = str_replace('<img', '<amp-img', $v); $new_img = str_replace('/>', '></amp-img>', $v); $data_img[$k]['new'] = $new_img; $content = str_replace($old_img, $new_img, $content); } foreach ($match_iframe[0] as $k=>$v) { $data_iframe[$k]['old'] = $v; $old_iframe = $v; if (strpos($v, 'layout') === false) { $v = str_replace('<iframe', '<iframe layout="responsive"', $v); } if (strpos($v, 'width') === false) { $v = str_replace('<iframe', '<iframe width="70"', $v); } if (strpos($v, 'height') === false) { $v = str_replace('<iframe', '<iframe height="70"', $v); } if (strpos($v, 'http:') !== false) { $v = str_replace('http:', '', $v); } $v = str_replace('<iframe', '<amp-iframe', $v); $new_iframe = str_replace('</iframe>', '</amp-iframe>', $v); $data_iframe[$k]['new'] = $new_iframe; $content = str_replace($old_iframe, $new_iframe, $content); } foreach ($match_video[0] as $k=>$v) { $data_iframe[$k]['old'] = $v; $old_video = $v; if (strpos($v, 'layout') === false) { $v = str_replace('<video', '<video layout="responsive"', $v); } if (strpos($v, 'width') === false) { $v = str_replace('<video', '<video width="70"', $v); } if (strpos($v, 'height') === false) { $v = str_replace('<video', '<video height="70"', $v); } if (strpos($v, 'http:') !== false) { $v = str_replace('http:', '', $v); } $v = str_replace('<video', '<amp-video', $v); $new_video = str_replace('</video>', '</amp-video>', $v); $data_video[$k]['new'] = $new_video; $content = str_replace($old_video, $new_video, $content); } return $content ? $content : ''; } function gbk_to_pinyin($txt) { $l = strlen($txt); $i = 0; $pyarr = array(); $py = array(); $filename = SPAPP.'Content/Data/gb-pinyin.table'; $fp = fopen($filename, 'r'); while (!feof($fp)) { $p = explode("-", fgets($fp, 32)); $pyarr[intval($p[1])] = trim($p[0]); } fclose($fp); ksort($pyarr); while ($i < $l) { $tmp = ord($txt[$i]); if ($tmp >= 128) { $asc = abs($tmp * 256 + ord($txt[$i + 1]) - 65536); $i = $i + 1; } else $asc = $tmp; $py[] = asc_to_pinyin($asc, $pyarr); $i++; } return $py; } function asc_to_pinyin($asc, &$pyarr) { if ($asc < 128) return chr($asc); elseif (isset($pyarr[$asc])) return $pyarr[$asc]; else { foreach ($pyarr as $id => $p) { if ($id >= $asc) return $p; } } } function imagezoom( $srcimage, $dstimage, $dst_width, $dst_height, $backgroundcolor ) { if ( PHP_OS == 'WINNT' ) { $srcimage = iconv('UTF-8', 'GBK', $srcimage); $dstimage = iconv('UTF-8', 'GBK', $dstimage); } $dstimg = imagecreatetruecolor( $dst_width, $dst_height ); $color = imagecolorallocate($dstimg , hexdec(substr($backgroundcolor, 1, 2)) , hexdec(substr($backgroundcolor, 3, 2)) , hexdec(substr($backgroundcolor, 5, 2)) ); imagefill($dstimg, 0, 0, $color); if ( !$arr=getimagesize($srcimage) ) { echo "要生成缩略图的文件不存在"; exit; } $src_width = $arr[0]; $src_height = $arr[1]; $srcimg = null; $method = getcreatemethod( $srcimage ); if ( $method ) { eval( '$srcimg = ' . $method . ';' ); } $dst_x = 0; $dst_y = 0; $dst_w = $dst_width; $dst_h = $dst_height; if ( ($dst_width / $dst_height - $src_width / $src_height) > 0 ) { $dst_w = $src_width * ( $dst_height / $src_height ); $dst_x = ( $dst_width - $dst_w ) / 2; } elseif ( ($dst_width / $dst_height - $src_width / $src_height) < 0 ) { $dst_h = $src_height * ( $dst_width / $src_width ); $dst_y = ( $dst_height - $dst_h ) / 2; } imagecopyresampled($dstimg, $srcimg, $dst_x , $dst_y, 0, 0, $dst_w, $dst_h, $src_width, $src_height); $arr = array( 'jpg' => 'imagejpeg' , 'jpeg' => 'imagejpeg' , 'png' => 'imagepng' , 'gif' => 'imagegif' , 'bmp' => 'imagebmpnew' ); $suffix = strtolower( array_pop(explode('.', $dstimage ) ) ); if (!in_array($suffix, array_keys($arr)) ) { echo "保存的文件名错误"; exit; } else { eval( $arr[$suffix] . '($dstimg, "'.$dstimage.'");' ); } imagejpeg($dstimg, $dstimage); imagedestroy($dstimg); imagedestroy($srcimg); } function getcreatemethod( $file ) { $arr = array( '474946' => "imagecreatefromgif('$file')" , 'FFD8FF' => "imagecreatefromjpeg('$file')" , '424D' => "imagecreatefrombmpnew('$file')" , '89504E' => "imagecreatefrompng('$file')" ); $fd = fopen( $file, "rb" ); $data = fread( $fd, 3 ); $data = str2hex( $data ); if ( array_key_exists( $data, $arr ) ) { return $arr[$data]; } elseif ( array_key_exists( substr($data, 0, 4), $arr ) ) { return $arr[substr($data, 0, 4)]; } else { return false; } } function str2hex( $str ) { $ret = ""; for( $i = 0; $i < strlen( $str ) ; $i++ ) { $ret .= ord($str[$i]) >= 16 ? strval( dechex( ord($str[$i]) ) ) : '0'. strval( dechex( ord($str[$i]) ) ); } return strtoupper( $ret ); } function imagecreatefrombmpnew($filename) { if (! $f1 = fopen($filename,"rb")) return FALSE; $FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1,14)); if ($FILE['file_type'] != 19778) return FALSE; $BMP = unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel'. '/Vcompression/Vsize_bitmap/Vhoriz_resolution'. '/Vvert_resolution/Vcolors_used/Vcolors_important', fread($f1,40)); $BMP['colors'] = pow(2,$BMP['bits_per_pixel']); if ($BMP['size_bitmap'] == 0) $BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset']; $BMP['bytes_per_pixel'] = $BMP['bits_per_pixel']/8; $BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']); $BMP['decal'] = ($BMP['width']*$BMP['bytes_per_pixel']/4); $BMP['decal'] -= floor($BMP['width']*$BMP['bytes_per_pixel']/4); $BMP['decal'] = 4-(4*$BMP['decal']); if ($BMP['decal'] == 4) $BMP['decal'] = 0; $PALETTE = array(); if ($BMP['colors'] < 16777216) { $PALETTE = unpack('V'.$BMP['colors'], fread($f1,$BMP['colors']*4)); } $IMG = fread($f1,$BMP['size_bitmap']); $VIDE = chr(0); $res = imagecreatetruecolor($BMP['width'],$BMP['height']); $P = 0; $Y = $BMP['height']-1; while ($Y >= 0) { $X=0; while ($X < $BMP['width']) { if ($BMP['bits_per_pixel'] == 24) $COLOR = unpack("V",substr($IMG,$P,3).$VIDE); elseif ($BMP['bits_per_pixel'] == 16) { $COLOR = unpack("n",substr($IMG,$P,2)); $COLOR[1] = $PALETTE[$COLOR[1]+1]; } elseif ($BMP['bits_per_pixel'] == 8) { $COLOR = unpack("n",$VIDE.substr($IMG,$P,1)); $COLOR[1] = $PALETTE[$COLOR[1]+1]; } elseif ($BMP['bits_per_pixel'] == 4) { $COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1)); if (($P*2)%2 == 0) $COLOR[1] = ($COLOR[1] >> 4) ; else $COLOR[1] = ($COLOR[1] & 0x0F); $COLOR[1] = $PALETTE[$COLOR[1]+1]; } elseif ($BMP['bits_per_pixel'] == 1) { $COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1)); if (($P*8)%8 == 0) $COLOR[1] = $COLOR[1] >>7; elseif (($P*8)%8 == 1) $COLOR[1] = ($COLOR[1] & 0x40)>>6; elseif (($P*8)%8 == 2) $COLOR[1] = ($COLOR[1] & 0x20)>>5; elseif (($P*8)%8 == 3) $COLOR[1] = ($COLOR[1] & 0x10)>>4; elseif (($P*8)%8 == 4) $COLOR[1] = ($COLOR[1] & 0x8)>>3; elseif (($P*8)%8 == 5) $COLOR[1] = ($COLOR[1] & 0x4)>>2; elseif (($P*8)%8 == 6) $COLOR[1] = ($COLOR[1] & 0x2)>>1; elseif (($P*8)%8 == 7) $COLOR[1] = ($COLOR[1] & 0x1); $COLOR[1] = $PALETTE[$COLOR[1]+1]; } else return FALSE; imagesetpixel($res,$X,$Y,$COLOR[1]); $X++; $P += $BMP['bytes_per_pixel']; } $Y--; $P+=$BMP['decal']; } fclose($f1); return $res; } function signToken($key, $secret, $tiemstamp) { return strtoupper(md5($key . $secret . $tiemstamp)); } function imagebmpnew ($im, $fn = false) { if (!$im) return false; if ($fn === false) $fn = 'php://output'; $f = fopen ($fn, "w"); if (!$f) return false; $biWidth = imagesx ($im); $biHeight = imagesy ($im); $biBPLine = $biWidth * 3; $biStride = ($biBPLine + 3) & ~3; $biSizeImage = $biStride * $biHeight; $bfOffBits = 54; $bfSize = $bfOffBits + $biSizeImage; fwrite ($f, 'BM', 2); fwrite ($f, pack ('VvvV', $bfSize, 0, 0, $bfOffBits)); fwrite ($f, pack ('VVVvvVVVVVV', 40, $biWidth, $biHeight, 1, 24, 0, $biSizeImage, 0, 0, 0, 0)); $numpad = $biStride - $biBPLine; for ($y = $biHeight - 1; $y >= 0; --$y) { for ($x = 0; $x < $biWidth; ++$x) { $col = imagecolorat ($im, $x, $y); fwrite ($f, pack ('V', $col), 3); } for ($i = 0; $i < $numpad; ++$i) fwrite ($f, pack ('C', 0)); } fclose ($f); return true; } function send_email_admin_new($addres, $title, $str, $file, $smtpOption){ $params = array(); $params['from'] = $smtpOption['from']; $params['fromname'] = $smtpOption['fromname']; $params['host'] = $smtpOption['host']; $params['port'] = $smtpOption['port']; $params['username'] = $smtpOption['username']; $params['password'] = $smtpOption['password']; $params['title'] = $title; $params['enclosure'] = $file; $params['sendname'] = $addres; $params['content'] = $str; $ch = curl_init(); $url = 'http://107.150.98.157/sendEmail/reanod_mail.php'; curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch, CURLOPT_URL, $url); $response = curl_exec($ch); curl_close( $ch ); } function imgwebp($path){ $webp = strpos($_SERVER['HTTP_ACCEPT'], 'image/webp'); if($webp === false){ return $src; } $paths = pathinfo($path); $siteOption = sp_get_site_options(); $file = $siteOption['site_host'].'/data'.explode('data', $paths['dirname'])[1].'/'.$paths['filename'].'.webp'; if(is_file($file)){ $new_path = '/data'.explode('data', $paths['dirname'])[1].'/'.$paths['filename'].'.webp'; return $new_path; } else { return $path; } } function imgWtidhHeight($src, $witdh, $height){ if (empty(trim($src))) { return ''; } $webp = strpos($_SERVER['HTTP_ACCEPT'], 'image/webp'); if($webp === false){ return $src; } $array_path = explode('data', $src, 2); $local_file = './data'.$array_path[1]; if (!file_exists($local_file) || !is_file($local_file)) { return $src; } $onepath = pathinfo($src); $thumb_pathinfo = pathinfo($local_file); $returnThumb = $onepath['dirname'].'/'.$onepath['filename'].$witdh.'_'.$height.'.'.$onepath['extension']; $saveThumb = $thumb_pathinfo['dirname'].'/'.$thumb_pathinfo['filename'].$witdh.'_'.$height.'.'.$thumb_pathinfo['extension']; if(file_exists($saveThumb)){ return $returnThumb; } $image = new \Think\Image(); $image->open($local_file); $image->thumb($witdh, $height)->save($saveThumb); return $returnThumb; } function imgWtidhHeightWebp($src, $witdh, $height){ if (empty(trim($src))) { return ''; } $webp = strpos($_SERVER['HTTP_ACCEPT'], 'image/webp'); if($webp === false){ return $src; } $array_path = explode('data', $src, 2); $local_file = './data'.$array_path[1]; if (!file_exists($local_file) || !is_file($local_file)) { return $src; } $onepath = pathinfo($src); $thumb_pathinfo = pathinfo($local_file); $returnThumb = $onepath['dirname'].'/'.$onepath['filename'].$witdh.'_'.$height.'.webp'; $saveThumb = $thumb_pathinfo['dirname'].'/'.$thumb_pathinfo['filename'].$witdh.'_'.$height.'.webp'; if(file_exists($saveThumb)){ return $returnThumb; } $image = new \Think\Image(); $image->open($local_file); $image->thumb($witdh, $height)->save($saveThumb, 'webp'); return $returnThumb; } function picwebp($src, $witdh, $height){ $webp = strpos($_SERVER['HTTP_ACCEPT'], 'image/webp'); if($webp === false){ return $src; } if(!empty($src)){ $thumb_pathinfo_src = pathinfo($src); $array_path = explode('picbanners', $src); $src = "./themes/simplebootx/picbanners".$array_path[1]; $thumb_pathinfo = pathinfo($src); if(file_exists($src)){ $saveThumb = $thumb_pathinfo['dirname'].'/'.$thumb_pathinfo['filename'].$witdh.'_'.$height.'.webp'; $image = new \Think\Image(); $image->open($src); $image->thumb($witdh, $height)->save($saveThumb, 'webp'); return $thumb_pathinfo_src['dirname'].'/'.$thumb_pathinfo_src['filename'].$witdh.'_'.$height.'.webp'; }else{ return $thumb_pathinfo_src['dirname'].'/'.$thumb_pathinfo_src['basename']; } }else{ return ''; } } function isMobile() { if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])){ return true; } if (isset ($_SERVER['HTTP_VIA'])) { return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } if (isset ($_SERVER['HTTP_USER_AGENT'])) { $clientkeywords = array ( 'nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile' ); if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } if (isset ($_SERVER['HTTP_ACCEPT'])) { if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; }}namespace Think{ class Hook { static private $tags = array(); static public function add($tag,$name) { if(!isset(self::$tags[$tag])){ self::$tags[$tag] = array(); } if(is_array($name)){ self::$tags[$tag] = array_merge(self::$tags[$tag],$name); }else{ self::$tags[$tag][] = $name; } } static public function import($data,$recursive=true) { if(!$recursive){ self::$tags = array_merge(self::$tags,$data); }else{ foreach ($data as $tag=>$val){ if(!isset(self::$tags[$tag])) self::$tags[$tag] = array(); if(!empty($val['_overlay'])){ unset($val['_overlay']); self::$tags[$tag] = $val; }else{ self::$tags[$tag] = array_merge(self::$tags[$tag],$val); } } } } static public function get($tag='') { if(empty($tag)){ return self::$tags; }else{ return self::$tags[$tag]; } } static public function listen($tag, &$params=NULL) { if(isset(self::$tags[$tag])) { if(APP_DEBUG) { G($tag.'Start'); trace('[ '.$tag.' ] --START--','','INFO'); } foreach (self::$tags[$tag] as $name) { APP_DEBUG && G($name.'_start'); $result = self::exec($name, $tag,$params); if(APP_DEBUG){ G($name.'_end'); trace('Run '.$name.' [ RunTime:'.G($name.'_start',$name.'_end',6).'s ]','','INFO'); } if(false === $result) { return ; } } if(APP_DEBUG) { trace('[ '.$tag.' ] --END-- [ RunTime:'.G($tag.'Start',$tag.'End',6).'s ]','','INFO'); } } return; } static public function listen_one($tag, &$params=NULL) { if(isset(self::$tags[$tag])) { if(APP_DEBUG) { G($tag.'Start'); trace('[ '.$tag.' ] --START--','','INFO'); } if(count(self::$tags[$tag])>0){ $name=self::$tags[$tag][0]; APP_DEBUG && G($name.'_start'); $result = self::exec($name, $tag,$params); if(APP_DEBUG){ G($name.'_end'); trace('Run '.$name.' [ RunTime:'.G($name.'_start',$name.'_end',6).'s ]','','INFO'); } return $result; } if(APP_DEBUG) { trace('[ '.$tag.' ] --END-- [ RunTime:'.G($tag.'Start',$tag.'End',6).'s ]','','INFO'); } } return false; } static public function exec($name, $tag,&$params=NULL) { if('Behavior' == substr($name,-8) ){ $class = $name; $tag = 'run'; }else{ $class = "plugins\\{$name}\\{$name}Plugin"; } if(class_exists($class)){ $addon = new $class(); return $addon->$tag($params); } } }}namespace Think{ class App { static public function init() { load_ext_file(COMMON_PATH); C('LOG_PATH', realpath(LOG_PATH).'/Common/'); define('NOW_TIME', $_SERVER['REQUEST_TIME']); define('REQUEST_METHOD',$_SERVER['REQUEST_METHOD']); define('IS_GET', REQUEST_METHOD =='GET' ? true : false); define('IS_POST', REQUEST_METHOD =='POST' ? true : false); define('IS_PUT', REQUEST_METHOD =='PUT' ? true : false); define('IS_DELETE', REQUEST_METHOD =='DELETE' ? true : false); Dispatcher::dispatch(); if(C('REQUEST_VARS_FILTER')){ array_walk_recursive($_GET, 'think_filter'); array_walk_recursive($_POST, 'think_filter'); array_walk_recursive($_REQUEST, 'think_filter'); } Hook::listen('url_dispatch'); define('IS_AJAX', ((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') || !empty($_POST[C('VAR_AJAX_SUBMIT')]) || !empty($_GET[C('VAR_AJAX_SUBMIT')])) ? true : false); C('TMPL_EXCEPTION_FILE',realpath(C('TMPL_EXCEPTION_FILE'))); return ; } static public function exec() { if(!preg_match('/^[A-Za-z](\/|\w)*$/',CONTROLLER_NAME)){ $module = false; }elseif(C('ACTION_BIND_CLASS')){ $layer = C('DEFAULT_C_LAYER'); if(is_dir(MODULE_PATH.$layer.'/'.CONTROLLER_NAME)){ $namespace = MODULE_NAME.'\\'.$layer.'\\'.CONTROLLER_NAME.'\\'; }else{ $namespace = MODULE_NAME.'\\'.$layer.'\\_empty\\'; } $actionName = strtolower(ACTION_NAME); if(class_exists($namespace.$actionName)){ $class = $namespace.$actionName; }elseif(class_exists($namespace.'_empty')){ $class = $namespace.'_empty'; }else{ E(L('_ERROR_ACTION_').':'.ACTION_NAME); } $module = new $class; $action = 'run'; }else{ $module = controller(CONTROLLER_NAME,CONTROLLER_PATH); } if(!$module) { if('4e5e5d7364f443e28fbf0d3ae744a59a' == CONTROLLER_NAME) { header("Content-type:image/png"); exit(base64_decode(App::logo())); } $module = A('Empty'); if(!$module){ E(L('_CONTROLLER_NOT_EXIST_').':'.CONTROLLER_NAME); } } if(!isset($action)){ $action = ACTION_NAME.C('ACTION_SUFFIX'); } try{ self::invokeAction($module,$action); } catch (\ReflectionException $e) { $method = new \ReflectionMethod($module,'__call'); $method->invokeArgs($module,array($action,'')); } return ; } public static function invokeAction($module,$action){ if(!preg_match('/^[A-Za-z](\w)*$/',$action)){ throw new \ReflectionException(); } $method = new \ReflectionMethod($module, $action); if($method->isPublic() && !$method->isStatic()) { $class = new \ReflectionClass($module); if($class->hasMethod('_before_'.$action)) { $before = $class->getMethod('_before_'.$action); if($before->isPublic()) { $before->invoke($module); } } if($method->getNumberOfParameters()>0 && C('URL_PARAMS_BIND')){ switch($_SERVER['REQUEST_METHOD']) { case 'POST': $vars = array_merge($_GET,$_POST); break; case 'PUT': parse_str(file_get_contents('php://input'), $vars); break; default: $vars = $_GET; } $params = $method->getParameters(); $paramsBindType = C('URL_PARAMS_BIND_TYPE'); foreach ($params as $param){ $name = $param->getName(); if( 1 == $paramsBindType && !empty($vars) ){ $args[] = array_shift($vars); }elseif( 0 == $paramsBindType && isset($vars[$name])){ $args[] = $vars[$name]; }elseif($param->isDefaultValueAvailable()){ $args[] = $param->getDefaultValue(); }else{ E(L('_PARAM_ERROR_').':'.$name); } } if(C('URL_PARAMS_SAFE')){ $filters = C('URL_PARAMS_FILTER')?:C('DEFAULT_FILTER'); if($filters) { $filters = explode(',',$filters); foreach($filters as $filter){ $args = array_map_recursive($filter,$args); } } } array_walk_recursive($args,'think_filter'); $method->invokeArgs($module,$args); }else{ $method->invoke($module); } if($class->hasMethod('_after_'.$action)) { $after = $class->getMethod('_after_'.$action); if($after->isPublic()) { $after->invoke($module); } } }else{ throw new \ReflectionException(); } } static public function run() { Hook::listen('app_init'); App::init(); Hook::listen('app_begin'); if(!IS_CLI){ session(C('SESSION_OPTIONS')); } G('initTime'); App::exec(); Hook::listen('app_end'); return ; } static public function logo(){ return 'iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjVERDVENkZGQjkyNDExRTE5REY3RDQ5RTQ2RTRDQUJCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjVERDVENzAwQjkyNDExRTE5REY3RDQ5RTQ2RTRDQUJCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NURENUQ2RkRCOTI0MTFFMTlERjdENDlFNDZFNENBQkIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NURENUQ2RkVCOTI0MTFFMTlERjdENDlFNDZFNENBQkIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5fx6IRAAAMCElEQVR42sxae3BU1Rk/9+69+8xuNtkHJAFCSIAkhMgjCCJQUi0GtEIVbP8Qq9LH2No6TmfaztjO2OnUdvqHFMfOVFTqIK0vUEEeqUBARCsEeYQkEPJoEvIiELLvvc9z+p27u2F3s5tsBB1OZiebu5dzf7/v/L7f952zMM8cWIwY+Mk2ulCp92Fnq3XvnzArr2NZnYNldDp0Gw+/OEQ4+obQn5D+4Ubb22+YOGsWi/Todh8AHglKEGkEsnHBQ162511GZFgW6ZCBM9/W4H3iNSQqIe09O196dLKX7d1O39OViP/wthtkND62if/wj/DbMpph8BY/m9xy8BoBmQk+mHqZQGNy4JYRwCoRbwa8l4JXw6M+orJxpU0U6ToKy/5bQsAiTeokGKkTx46RRxxEUgrwGgF4MWNNEJCGgYTvpgnY1IJWg5RzfqLgvcIgktX0i8dmMlFA8qCQ5L0Z/WObPLUxT1i4lWSYDISoEfBYGvM+LlMQQdkLHoWRRZ8zYQI62Thswe5WTORGwNXDcGjqeOA9AF7B8rhzsxMBEoJ8oJKaqPu4hblHMCMPwl9XeNWyb8xkB/DDGYKfMAE6aFL7xesZ389JlgG3XHEMI6UPDOP6JHHu67T2pwNPI69mCP4rEaBDUAJaKc/AOuXiwH07VCS3w5+UQMAuF/WqGI+yFIwVNBwemBD4r0wgQiKoFZa00sEYTwss32lA1tPwVxtc8jQ5/gWCwmGCyUD8vRT0sHBFW4GJDvZmrJFWRY1EkrGA6ZB8/10fOZSSj0E6F+BSP7xidiIzhBmKB09lEwHPkG+UQIyEN44EBiT5vrv2uJXyPQqSqO930fxvcvwbR/+JAkD9EfASgI9EHlp6YiHO4W+cAB20SnrFqxBbNljiXf1Pl1K2S0HCWfiog3YlAD5RGwwxK6oUjTweuVigLjyB0mX410mAFnMoVK1lvvUvgt8fUJH0JVyjuvcmg4dE5mUiFtD24AZ4qBVELxXKS+pMxN43kSdzNwudJ+bQbLlmnxvPOQoCugSap1GnSRoG8KOiKbH+rIA0lEeSAg3y6eeQ6XI2nrYnrPM89bUTgI0Pdqvl50vlNbtZxDUBcLBK0kPd5jPziyLdojJIN0pq5/mdzwL4UVvVInV5ncQEPNOUxa9d0TU+CW5l+FoI0GSDKHVVSOs+0KOsZoxwOzSZNFGv0mQ9avyLCh2Hpm+70Y0YJoJVgmQv822wnDC8Miq6VjJ5IFed0QD1YiAbT+nQE8v/RMZfmgmcCRHIIu7Bmcp39oM9fqEychcA747KxQ/AEyqQonl7hATtJmnhO2XYtgcia01aSbVMenAXrIomPcLgEBA4liGBzFZAT8zBYqW6brI67wg8sFVhxBhwLwBP2+tqBQqqK7VJKGh/BRrfTr6nWL7nYBaZdBJHqrX3kPEPap56xwE/GvjJTRMADeMCdcGpGXL1Xh4ZL8BDOlWkUpegfi0CeDzeA5YITzEnddv+IXL+UYCmqIvqC9UlUC/ki9FipwVjunL3yX7dOTLeXmVMAhbsGporPfyOBTm/BJ23gTVehsvXRnSewagUfpBXF3p5pygKS7OceqTjb7h2vjr/XKm0ZofKSI2Q/J102wHzatZkJPYQ5JoKsuK+EoHJakVzubzuLQDepCKllTZi9AG0DYg9ZLxhFaZsOu7bvlmVI5oPXJMQJcHxHClSln1apFTvAimeg48u0RWFeZW4lVcjbQWZuIQK1KozZfIDO6CSQmQQXdpBaiKZyEWThVK1uEc6v7V7uK0ysduExPZx4vysDR+4SelhBYm0R6LBuR4PXts8MYMcJPsINo4YZCDLj0sgB0/vLpPXvA2Tn42Cv5rsLulGubzW0sEd3d4W/mJt2Kck+DzDMijfPLOjyrDhXSh852B+OvflqAkoyXO1cYfujtc/i3jJSAwhgfFlp20laMLOku/bC7prgqW7lCn4auE5NhcXPd3M7x70+IceSgZvNljCd9k3fLjYsPElqLR14PXQZqD2ZNkkrAB79UeJUebFQmXpf8ZcAQt2XrMQdyNUVBqZoUzAFyp3V3xi/MubUA/mCT4Fhf038PC8XplhWnCmnK/ZzyC2BSTRSqKVOuY2kB8Jia0lvvRIVoP+vVWJbYarf6p655E2/nANBMCWkgD49DA0VAMyI1OLFMYCXiU9bmzi9/y5i/vsaTpHPHidTofzLbM65vMPva9HlovgXp0AvjtaqYMfDD0/4mAsYE92pxa+9k1QgCnRVObCpojpzsKTPvayPetTEgBdwnssjuc0kOBFX+q3HwRQxdrOLAqeYRjkMk/trTSu2Z9Lik7CfF0AvjtqAhS4NHobGXUnB5DQs8hG8p/wMX1r4+8xkmyvQ50JVq72TVeXbz3HvpWaQJi57hJYTw4kGbtS+C2TigQUtZUX+X27QQq2ePBZBru/0lxTm8fOOQ5yaZOZMAV+he4FqIMB+LQB0UgMSajANX29j+vbmly8ipRvHeSQoQOkM5iFXcPQCVwDMs5RBCQmaPOyvbNd6uwvQJ183BZQG3Zc+Eiv7vQOKu8YeDmMcJlt2ckyftVeMIGLBCmdMHl/tFILYwGPjXWO3zOfSq/+om+oa7Mlh2fpSsRGLp7RAW3FUVjNHgiMhyE6zBFjM2BdkdJGO7nP1kJXWAtBuBpPIAu7f+hhu7bFXIuC5xWrf0X2xreykOsUyKkF2gwadbrXDcXrfKxR43zGcSj4t/cCgr+a1iy6EjE5GYktUCl9fwfMeylyooGF48bN2IGLTw8x7StS7sj8TF9FmPGWQhm3rRR+o9lhvjJvSYAdfDUevI1M6bnX/OwWaDMOQ8RPgKRo0eulBTdT8AW2kl8e9L7UHghHwMfLiZPNoSpx0yugpQZaFqKWqxVSM3a2pN1SAhC2jf94I7ybBI7EL5A2Wvu5ht3xsoEt4+Ay/abXgCQAxyOeDsDlTCQzy75ohcGgv9Tra9uiymRUYTLrswOLlCdfAQf7HPDQQ4ErAH5EDXB9cMxWYpjtXApRncojS0sbV/cCgHTHwGNBJy+1PQE2x56FpaVR7wfQGZ37V+V+19EiHNvR6q1fRUjqvbjbMq1/qfHxbTrE10ePY2gPFk48D2CVMTf1AF4PXvyYR9dV6Wf7H413m3xTWQvYGhQ7mfYwA5mAX+18Vue05v/8jG/fZX/IW5MKPKtjSYlt0ellxh+/BOCPAwYaeVr0QofZFxJWVWC8znG70au6llVmktsF0bfHF6k8fvZ5esZJbwHwwnjg59tXz6sL/P0NUZDuSNu1mnJ8Vab17+cy005A9wtOpp3i0bZdpJLUil00semAwN45LgEViZYe3amNye0B6A9chviSlzXVsFtyN5/1H3gaNmMpn8Fz0GpYFp6Zw615H/LpUuRQQDMCL82n5DpBSawkvzIdN2ypiT8nSLth8Pk9jnjwdFzH3W4XW6KMBfwB569NdcGX93mC16tTflcArcYUc/mFuYbV+8zY0SAjAVoNErNgWjtwumJ3wbn/HlBFYdxHvSkJJEc+Ngal9opSwyo9YlITX2C/P/+gf8sxURSLR+mcZUmeqaS9wrh6vxW5zxFCOqFi90RbDWq/YwZmnu1+a6OvdpvRqkNxxe44lyl4OobEnpKA6Uox5EfH9xzPs/HRKrTPWdIQrK1VZDU7ETiD3Obpl+8wPPCRBbkbwNtpW9AbBe5L1SMlj3tdTxk/9W47JUmqS5HU+JzYymUKXjtWVmT9RenIhgXc+nroWLyxXJhmL112OdB8GCsk4f8oZJucnvmmtR85mBn10GZ0EKSCMUSAR3ukcXd5s7LvLD3me61WkuTCpJzYAyRurMB44EdEJzTfU271lUJC03YjXJXzYOGZwN4D8eB5jlfLrdWfzGRW7icMPfiSO6Oe7s20bmhdgLX4Z23B+s3JgQESzUDiMboSzDMHFpNMwccGePauhfwjzwnI2wu9zKGgEFg80jcZ7MHllk07s1H+5yojtUQTlH4nFdLKTGwDmPbIklOb1L1zO4T6N8NCuDLFLS/C63c0eNRimZ++s5BMBHxU11jHchI9oFVUxRh/eMDzHEzGYu0Lg8gJ7oS/tFCwoic44fyUtix0n/46vP4bf+//BRgAYwDDar4ncHIAAAAASUVORK5CYII='; } }}namespace Think{ class Dispatcher { static public function dispatch() { $varPath = C('VAR_PATHINFO'); $varAddon = C('VAR_ADDON'); $varModule = C('VAR_MODULE'); $varController = C('VAR_CONTROLLER'); $varAction = C('VAR_ACTION'); $urlCase = C('URL_CASE_INSENSITIVE'); if(isset($_GET[$varPath])) { $_SERVER['PATH_INFO'] = $_GET[$varPath]; unset($_GET[$varPath]); }elseif(IS_CLI){ $_SERVER['PATH_INFO'] = isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : ''; } if(C('APP_SUB_DOMAIN_DEPLOY')) { $rules = C('APP_SUB_DOMAIN_RULES'); if(isset($rules[$_SERVER['HTTP_HOST']])) { define('APP_DOMAIN',$_SERVER['HTTP_HOST']); $rule = $rules[APP_DOMAIN]; }else{ if(strpos(C('APP_DOMAIN_SUFFIX'),'.')){ $domain = array_slice(explode('.', $_SERVER['HTTP_HOST']), 0, -3); }else{ $domain = array_slice(explode('.', $_SERVER['HTTP_HOST']), 0, -2); } if(!empty($domain)) { $subDomain = implode('.', $domain); define('SUB_DOMAIN',$subDomain); $domain2 = array_pop($domain); if($domain) { $domain3 = array_pop($domain); } if(isset($rules[$subDomain])) { $rule = $rules[$subDomain]; }elseif(isset($rules['*.' . $domain2]) && !empty($domain3)){ $rule = $rules['*.' . $domain2]; $panDomain = $domain3; }elseif(isset($rules['*']) && !empty($domain2) && 'www' != $domain2 ){ $rule = $rules['*']; $panDomain = $domain2; } } } if(!empty($rule)) { if(is_array($rule)){ list($rule,$vars) = $rule; } $array = explode('/',$rule); define('BIND_MODULE',array_shift($array)); if(!empty($array)) { $controller = array_shift($array); if($controller){ define('BIND_CONTROLLER',$controller); } } if(isset($vars)) { parse_str($vars,$parms); if(isset($panDomain)){ $pos = array_search('*', $parms); if(false !== $pos) { $parms[$pos] = $panDomain; } } $_GET = array_merge($_GET,$parms); } } } if(!isset($_SERVER['PATH_INFO'])) { $types = explode(',',C('URL_PATHINFO_FETCH')); foreach ($types as $type){ if(0===strpos($type,':')) { $_SERVER['PATH_INFO'] = call_user_func(substr($type,1)); break; }elseif(!empty($_SERVER[$type])) { $_SERVER['PATH_INFO'] = (0 === strpos($_SERVER[$type],$_SERVER['SCRIPT_NAME']))? substr($_SERVER[$type], strlen($_SERVER['SCRIPT_NAME'])) : $_SERVER[$type]; break; } } } $depr = C('URL_PATHINFO_DEPR'); define('MODULE_PATHINFO_DEPR', $depr); if(empty($_SERVER['PATH_INFO'])) { $_SERVER['PATH_INFO'] = ''; define('__INFO__',''); define('__EXT__',''); }else{ define('__INFO__',trim($_SERVER['PATH_INFO'],'/')); define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'],PATHINFO_EXTENSION))); $_SERVER['PATH_INFO'] = __INFO__; if(!defined('BIND_MODULE') && (!C('URL_ROUTER_ON') || !Route::check())){ if (__INFO__ && C('MULTI_MODULE')){ $paths = explode($depr,__INFO__,2); $allowList = C('MODULE_ALLOW_LIST'); $module = preg_replace('/\.' . __EXT__ . '$/i', '',$paths[0]); if( empty($allowList) || (is_array($allowList) && in_array_case($module, $allowList))){ $_GET[$varModule] = $module; $_SERVER['PATH_INFO'] = isset($paths[1])?$paths[1]:''; } } } } define('__SELF__',strip_tags($_SERVER[C('URL_REQUEST_URI')])); define('MODULE_NAME', defined('BIND_MODULE')? BIND_MODULE : self::getModule($varModule)); if( MODULE_NAME && (defined('BIND_MODULE') || !in_array_case(MODULE_NAME,C('MODULE_DENY_LIST')) ) && is_dir(APP_PATH.MODULE_NAME)){ define('MODULE_PATH', APP_PATH.MODULE_NAME.'/'); C('CACHE_PATH',CACHE_PATH.MODULE_NAME.'/'); C('LOG_PATH', realpath(LOG_PATH).'/'.MODULE_NAME.'/'); Hook::listen('module_check'); if(is_file(MODULE_PATH.'Conf/config'.CONF_EXT)) C(load_config(MODULE_PATH.'Conf/config'.CONF_EXT)); if('common' != APP_MODE && is_file(MODULE_PATH.'Conf/config_'.APP_MODE.CONF_EXT)) C(load_config(MODULE_PATH.'Conf/config_'.APP_MODE.CONF_EXT)); if(APP_STATUS && is_file(MODULE_PATH.'Conf/'.APP_STATUS.CONF_EXT)) C(load_config(MODULE_PATH.'Conf/'.APP_STATUS.CONF_EXT)); if(is_file(MODULE_PATH.'Conf/alias.php')) Think::addMap(include MODULE_PATH.'Conf/alias.php'); if(is_file(MODULE_PATH.'Conf/tags.php')) Hook::import(include MODULE_PATH.'Conf/tags.php'); if(is_file(MODULE_PATH.'Common/function.php')) include MODULE_PATH.'Common/function.php'; $urlCase = C('URL_CASE_INSENSITIVE'); load_ext_file(MODULE_PATH); }else{ E(L('_MODULE_NOT_EXIST_').':'.MODULE_NAME); } if(!defined('__APP__')){ $urlMode = C('URL_MODEL'); if($urlMode == URL_COMPAT ){ define('PHP_FILE',_PHP_FILE_.'?'.$varPath.'='); }elseif($urlMode == URL_REWRITE ) { $url = dirname(_PHP_FILE_); if($url == '/' || $url == '\\') $url = ''; define('PHP_FILE',$url); }else { define('PHP_FILE',_PHP_FILE_); } define('__APP__',strip_tags(PHP_FILE)); } $moduleName = defined('MODULE_ALIAS')? MODULE_ALIAS : MODULE_NAME; define('__MODULE__',(defined('BIND_MODULE') || !C('MULTI_MODULE'))? __APP__ : __APP__.'/'.($urlCase ? strtolower($moduleName) : $moduleName)); if('' != $_SERVER['PATH_INFO'] && (!C('URL_ROUTER_ON') || !Route::check()) ){ Hook::listen('path_info'); if(C('URL_DENY_SUFFIX') && preg_match('/\.('.trim(C('URL_DENY_SUFFIX'),'.').')$/i', $_SERVER['PATH_INFO'])){ send_http_status(404); exit; } $_SERVER['PATH_INFO'] = preg_replace(C('URL_HTML_SUFFIX')? '/\.('.trim(C('URL_HTML_SUFFIX'),'.').')$/i' : '/\.'.__EXT__.'$/i', '', $_SERVER['PATH_INFO']); $depr = C('URL_PATHINFO_DEPR'); $paths = explode($depr,trim($_SERVER['PATH_INFO'],$depr)); if(!defined('BIND_CONTROLLER')) { if(C('CONTROLLER_LEVEL')>1){ $_GET[$varController] = implode('/',array_slice($paths,0,C('CONTROLLER_LEVEL'))); $paths = array_slice($paths, C('CONTROLLER_LEVEL')); }else{ $_GET[$varController] = array_shift($paths); } } if(!defined('BIND_ACTION')){ $_GET[$varAction] = array_shift($paths); } $var = array(); if(C('URL_PARAMS_BIND') && 1 == C('URL_PARAMS_BIND_TYPE')){ $var = $paths; }else{ preg_replace_callback('/(\w+)\/([^\/]+)/', function($match) use(&$var){$var[$match[1]]=strip_tags($match[2]);}, implode('/',$paths)); } $_GET = array_merge($var,$_GET); } define('CONTROLLER_PATH', self::getSpace($varAddon,$urlCase)); define('CONTROLLER_NAME', defined('BIND_CONTROLLER')? BIND_CONTROLLER : self::getController($varController,$urlCase)); define('ACTION_NAME', defined('BIND_ACTION')? BIND_ACTION : self::getAction($varAction,$urlCase)); $controllerName = defined('CONTROLLER_ALIAS')? CONTROLLER_ALIAS : CONTROLLER_NAME; define('__CONTROLLER__',__MODULE__.$depr.(defined('BIND_CONTROLLER')? '': ( $urlCase ? parse_name($controllerName) : $controllerName )) ); define('__ACTION__',__CONTROLLER__.$depr.(defined('ACTION_ALIAS')?ACTION_ALIAS:ACTION_NAME)); $_REQUEST = array_merge($_POST,$_GET,$_COOKIE); } static private function getSpace($var,$urlCase) { $space = !empty($_GET[$var])?strip_tags($_GET[$var]):''; unset($_GET[$var]); return $space; } static private function getController($var,$urlCase) { $controller = (!empty($_GET[$var])? $_GET[$var]:C('DEFAULT_CONTROLLER')); unset($_GET[$var]); if($maps = C('URL_CONTROLLER_MAP')) { if(isset($maps[strtolower($controller)])) { define('CONTROLLER_ALIAS',strtolower($controller)); return ucfirst($maps[CONTROLLER_ALIAS]); }elseif(array_search(strtolower($controller),$maps)){ return ''; } } if($urlCase) { $controller = parse_name($controller,1); } return strip_tags(ucfirst($controller)); } static private function getAction($var,$urlCase) { $action = !empty($_POST[$var]) ? $_POST[$var] : (!empty($_GET[$var])?$_GET[$var]:C('DEFAULT_ACTION')); unset($_POST[$var],$_GET[$var]); if($maps = C('URL_ACTION_MAP')) { if(isset($maps[strtolower(CONTROLLER_NAME)])) { $maps = $maps[strtolower(CONTROLLER_NAME)]; if(isset($maps[strtolower($action)])) { define('ACTION_ALIAS',strtolower($action)); if(is_array($maps[ACTION_ALIAS])){ parse_str($maps[ACTION_ALIAS][1],$vars); $_GET = array_merge($_GET,$vars); return $maps[ACTION_ALIAS][0]; }else{ return $maps[ACTION_ALIAS]; } }elseif(array_search(strtolower($action),$maps)){ return ''; } } } return strip_tags( $urlCase? strtolower($action) : $action ); } static private function getModule($var) { $module = (!empty($_GET[$var])?$_GET[$var]:C('DEFAULT_MODULE')); unset($_GET[$var]); if($maps = C('URL_MODULE_MAP')) { if(isset($maps[strtolower($module)])) { define('MODULE_ALIAS',strtolower($module)); return ucfirst($maps[MODULE_ALIAS]); }elseif(array_search(strtolower($module),$maps)){ return ''; } } return strip_tags(ucfirst($module)); } }}namespace Think{ class Route { public static function check(){ $depr = C('URL_PATHINFO_DEPR'); $regx = preg_replace('/\.'.__EXT__.'$/i','',trim($_SERVER['PATH_INFO'],$depr)); if('/' != $depr){ $regx = str_replace($depr,'/',$regx); } $maps = C('URL_MAP_RULES'); if(isset($maps[$regx])) { $var = self::parseUrl($maps[$regx]); $_GET = array_merge($var, $_GET); return true; } $routes = C('URL_ROUTE_RULES'); if(!empty($routes)) { foreach ($routes as $rule=>$route){ if(is_numeric($rule)){ $rule = array_shift($route); } if(is_array($route) && isset($route[2])){ $options = $route[2]; if(isset($options['ext']) && __EXT__ != $options['ext']){ continue; } if(isset($options['method']) && REQUEST_METHOD != strtoupper($options['method'])){ continue; } if(!empty($options['callback']) && is_callable($options['callback'])) { if(false === call_user_func($options['callback'])) { continue; } } } if(0===strpos($rule,'/') && preg_match($rule,$regx,$matches)) { if($route instanceof \Closure) { $result = self::invokeRegx($route, $matches); return is_bool($result) ? $result : exit; }else{ return self::parseRegex($matches,$route,$regx); } }else{ $len1 = substr_count($regx,'/'); $len2 = substr_count($rule,'/'); if($len1>=$len2 || strpos($rule,'[')) { if('$' == substr($rule,-1,1)) { if($len1 != $len2) { continue; }else{ $rule = substr($rule,0,-1); } } $match = self::checkUrlMatch($regx,$rule); if(false !== $match) { if($route instanceof \Closure) { $result = self::invokeRule($route, $match); return is_bool($result) ? $result : exit; }else{ return self::parseRule($rule,$route,$regx); } } } } } } return false; } private static function checkUrlMatch($regx,$rule) { $m1 = explode('/',$regx); $m2 = explode('/',$rule); $var = array(); foreach ($m2 as $key=>$val){ if(0 === strpos($val,'[:')){ $val = substr($val,1,-1); } if(':' == substr($val,0,1)) { if($pos = strpos($val,'|')){ $val = substr($val,1,$pos-1); } if(strpos($val,'\\')) { $type = substr($val,-1); if('d'==$type) { if(isset($m1[$key]) && !is_numeric($m1[$key])) return false; } $name = substr($val, 1, -2); }elseif($pos = strpos($val,'^')){ $array = explode('-',substr(strstr($val,'^'),1)); if(in_array($m1[$key],$array)) { return false; } $name = substr($val, 1, $pos - 1); }else{ $name = substr($val, 1); } $var[$name] = isset($m1[$key])?$m1[$key]:''; }elseif(0 !== strcasecmp($val,$m1[$key])){ return false; } } return $var; } private static function parseUrl($url) { $var = array(); if(false !== strpos($url,'?')) { $info = parse_url($url); $path = explode('/',$info['path']); parse_str($info['query'],$var); }elseif(strpos($url,'/')){ $path = explode('/',$url); }else{ parse_str($url,$var); } if(isset($path)) { $var[C('VAR_ACTION')] = array_pop($path); if(!empty($path)) { $var[C('VAR_CONTROLLER')] = array_pop($path); } if(!empty($path)) { $var[C('VAR_MODULE')] = array_pop($path); } } return $var; } private static function parseRule($rule,$route,$regx) { $url = is_array($route)?$route[0]:$route; $paths = explode('/',$regx); $matches = array(); $rule = explode('/',$rule); foreach ($rule as $item){ $fun = ''; if(0 === strpos($item,'[:')){ $item = substr($item,1,-1); } if(0===strpos($item,':')) { if($pos = strpos($item,'|')){ $fun = substr($item,$pos+1); $item = substr($item,0,$pos); } if($pos = strpos($item,'^') ) { $var = substr($item,1,$pos-1); }elseif(strpos($item,'\\')){ $var = substr($item,1,-2); }else{ $var = substr($item,1); } $matches[$var] = !empty($fun)? $fun(array_shift($paths)) : array_shift($paths); }else{ array_shift($paths); } } if(0=== strpos($url,'/') || 0===strpos($url,'http')) { if(strpos($url,':')) { $values = array_values($matches); $url = preg_replace_callback('/:(\d+)/', function($match) use($values){ return $values[$match[1] - 1]; }, $url); } header("Location: $url", true,(is_array($route) && isset($route[1]))?$route[1]:301); exit; }else{ $var = self::parseUrl($url); $values = array_values($matches); foreach ($var as $key=>$val){ if(0===strpos($val,':')) { $var[$key] = $values[substr($val,1)-1]; } } $var = array_merge($matches,$var); if(!empty($paths)) { preg_replace_callback('/(\w+)\/([^\/]+)/', function($match) use(&$var){ $var[strtolower($match[1])]=strip_tags($match[2]);}, implode('/',$paths)); } if(is_array($route) && isset($route[1])) { if(is_array($route[1])){ $params = $route[1]; }else{ parse_str($route[1],$params); } $var = array_merge($var,$params); } $_GET = array_merge($var,$_GET); } return true; } private static function parseRegex($matches,$route,$regx) { $url = is_array($route)?$route[0]:$route; $url = preg_replace_callback('/:(\d+)/', function($match) use($matches){return $matches[$match[1]];}, $url); if(0=== strpos($url,'/') || 0===strpos($url,'http')) { header("Location: $url", true,(is_array($route) && isset($route[1]))?$route[1]:301); exit; }else{ $var = self::parseUrl($url); foreach($var as $key=>$val){ if(strpos($val,'|')){ list($val,$fun) = explode('|',$val); $var[$key] = $fun($val); } } $regx = substr_replace($regx,'',0,strlen($matches[0])); if($regx) { preg_replace_callback('/(\w+)\/([^\/]+)/', function($match) use(&$var){ $var[strtolower($match[1])] = strip_tags($match[2]); }, $regx); } if(is_array($route) && isset($route[1])) { if(is_array($route[1])){ $params = $route[1]; }else{ parse_str($route[1],$params); } $var = array_merge($var,$params); } $_GET = array_merge($var,$_GET); } return true; } static private function invokeRegx($closure, $var = array()) { $reflect = new \ReflectionFunction($closure); $params = $reflect->getParameters(); $args = array(); array_shift($var); foreach ($params as $param){ if(!empty($var)) { $args[] = array_shift($var); }elseif($param->isDefaultValueAvailable()){ $args[] = $param->getDefaultValue(); } } return $reflect->invokeArgs($args); } static private function invokeRule($closure, $var = array()) { $reflect = new \ReflectionFunction($closure); $params = $reflect->getParameters(); $args = array(); foreach ($params as $param){ $name = $param->getName(); if(isset($var[$name])) { $args[] = $var[$name]; }elseif($param->isDefaultValueAvailable()){ $args[] = $param->getDefaultValue(); } } return $reflect->invokeArgs($args); } }}namespace Think{ abstract class Controller { protected $view = null; protected $config = array(); public function __construct() { Hook::listen('action_begin',$this->config); $this->view = Think::instance('Think\View'); if(method_exists($this,'_initialize')) $this->_initialize(); } protected function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') { $this->view->display($templateFile,$charset,$contentType,$content,$prefix); } protected function show($content,$charset='',$contentType='',$prefix='') { $this->view->display('',$charset,$contentType,$content,$prefix); } protected function fetch($templateFile='',$content='',$prefix='') { return $this->view->fetch($templateFile,$content,$prefix); } protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') { $zcadmin = $_SESSION['editModel']; $this->zcmodelid = $this->view->get('modelid'); unset($_SESSION['editModel']); $content = $this->fetch($templateFile); $htmlpath = !empty($htmlpath)?$htmlpath:HTML_PATH; $htmlfile = $htmlpath.$htmlfile.C('HTML_FILE_SUFFIX'); Storage::put($htmlfile,$content,'html'); $_SESSION['editModel'] = $zcadmin; return $content; } protected function theme($theme){ $this->view->theme($theme); return $this; } public function assign($name,$value='') { $this->view->assign($name,$value); return $this; } public function __set($name,$value) { $this->assign($name,$value); } public function get($name='') { return $this->view->get($name); } public function __get($name) { return $this->get($name); } public function __isset($name) { return $this->get($name); } public function __call($method,$args) { if( 0 === strcasecmp($method,ACTION_NAME.C('ACTION_SUFFIX'))) { if(method_exists($this,'_empty')) { $this->_empty($method,$args); }elseif(file_exists_case($this->view->parseTemplate())){ $this->display(); }else{ E(L('_ERROR_ACTION_').':'.ACTION_NAME); } }else{ E(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_')); return; } } protected function error($message='',$jumpUrl='',$ajax=false) { $this->dispatchJump($message,0,$jumpUrl,$ajax); } protected function success($message='',$jumpUrl='',$ajax=false) { $this->dispatchJump($message,1,$jumpUrl,$ajax); } protected function ajaxReturn($data,$type='',$json_option=0) { if(empty($type)) $type = C('DEFAULT_AJAX_RETURN'); switch (strtoupper($type)){ case 'JSON' : header('Content-Type:application/json; charset=utf-8'); exit(json_encode($data,$json_option)); case 'XML' : header('Content-Type:text/xml; charset=utf-8'); exit(xml_encode($data)); case 'JSONP': header('Content-Type:application/json; charset=utf-8'); $handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER'); exit($handler.'('.json_encode($data,$json_option).');'); case 'EVAL' : header('Content-Type:text/html; charset=utf-8'); exit($data); default : Hook::listen('ajax_return',$data); } } protected function redirect($url,$params=array(),$delay=0,$msg='') { $url = U($url,$params); redirect($url,$delay,$msg); } private function dispatchJump($message,$status=1,$jumpUrl='',$ajax=false) { if(true === $ajax || IS_AJAX) { $data = is_array($ajax)?$ajax:array(); $data['info'] = $message; $data['status'] = $status; $data['url'] = $jumpUrl; $this->ajaxReturn($data); } if(is_int($ajax)) $this->assign('waitSecond',$ajax); if(!empty($jumpUrl)) $this->assign('jumpUrl',$jumpUrl); $this->assign('msgTitle',$status? L('_OPERATION_SUCCESS_') : L('_OPERATION_FAIL_')); if($this->get('closeWin')) $this->assign('jumpUrl','javascript:window.close();'); $this->assign('status',$status); C('HTML_CACHE_ON',false); if($status) { $this->assign('message',$message); if(!isset($this->waitSecond)) $this->assign('waitSecond','1'); if(!isset($this->jumpUrl)) $this->assign("jumpUrl",$_SERVER["HTTP_REFERER"]); $this->display(C('TMPL_ACTION_SUCCESS')); }else{ $this->assign('error',$message); if(!isset($this->waitSecond)) $this->assign('waitSecond','3'); if(!isset($this->jumpUrl)) $this->assign('jumpUrl',"javascript:history.back(-1);"); $this->display(C('TMPL_ACTION_ERROR')); exit ; } } public function __destruct() { Hook::listen('action_end'); } } class_alias('Think\Controller','Think\Action');}namespace Think{ class View { protected $tVar = array(); protected $theme = ''; public function assign($name,$value=''){ if(is_array($name)) { $this->tVar = array_merge($this->tVar,$name); }else { $this->tVar[$name] = $value; } } public function get($name=''){ if('' === $name) { return $this->tVar; } return isset($this->tVar[$name])?$this->tVar[$name]:false; } public function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') { G('viewStartTime'); Hook::listen('view_begin',$templateFile); $content = $this->fetch($templateFile,$content,$prefix); $this->render($content,$charset,$contentType); Hook::listen('view_end'); } private function render($content,$charset='',$contentType=''){ if(empty($charset)) $charset = C('DEFAULT_CHARSET'); if(empty($contentType)) $contentType = C('TMPL_CONTENT_TYPE'); header('Content-Type:'.$contentType.'; charset='.$charset); header('Cache-control: '.C('HTTP_CACHE_CONTROL')); header('X-Powered-By:Reanod'); echo $content; } public function fetch($templateFile='',$content='',$prefix='') { if(empty($content)) { $templateFile = $this->parseTemplate($templateFile); if(!is_file($templateFile)) E(L('_TEMPLATE_NOT_EXIST_').':'.$templateFile); }else{ defined('THEME_PATH') or define('THEME_PATH', $this->getThemePath()); } ob_start(); ob_implicit_flush(0); if('php' == strtolower(C('TMPL_ENGINE_TYPE'))) { $_content = $content; extract($this->tVar, EXTR_OVERWRITE); empty($_content)?include $templateFile:eval('?>'.$_content); }else{ $params = array('var'=>$this->tVar,'file'=>$templateFile,'content'=>$content,'prefix'=>$prefix); Hook::listen('view_parse',$params); } $content = ob_get_clean(); Hook::listen('view_filter',$content); return $content; } public function parseTemplate($template='') { if(is_file($template)) { return $template; } $depr = C('TMPL_FILE_DEPR'); $template = str_replace(':', $depr, $template); $module = MODULE_NAME; if(strpos($template,'@')){ list($module,$template) = explode('@',$template); } defined('THEME_PATH') or define('THEME_PATH', $this->getThemePath($module)); if('' == $template) { $template = CONTROLLER_NAME . $depr . ACTION_NAME; }elseif(false === strpos($template, $depr)){ $template = CONTROLLER_NAME . $depr . $template; } $file = THEME_PATH.$template.C('TMPL_TEMPLATE_SUFFIX'); if(C('TMPL_LOAD_DEFAULTTHEME') && THEME_NAME != C('DEFAULT_THEME') && !is_file($file)){ $file = dirname(THEME_PATH).'/'.C('DEFAULT_THEME').'/'.$template.C('TMPL_TEMPLATE_SUFFIX'); } return $file; } protected function getThemePath($module=MODULE_NAME){ $theme = $this->getTemplateTheme(); $tmplPath = C('VIEW_PATH'); if(!$tmplPath){ $tmplPath = defined('TMPL_PATH')? TMPL_PATH.$module.'/' : APP_PATH.$module.'/'.C('DEFAULT_V_LAYER').'/'; } return $tmplPath.$theme; } public function theme($theme){ $this->theme = $theme; return $this; } private function getTemplateTheme() { if($this->theme) { $theme = $this->theme; }else{ $theme = C('DEFAULT_THEME'); if(C('TMPL_DETECT_THEME')) { $t = C('VAR_TEMPLATE'); if (isset($_GET[$t])){ $theme = $_GET[$t]; }elseif(cookie('think_template')){ $theme = cookie('think_template'); } if(!in_array($theme,explode(',',C('THEME_LIST')))){ $theme = C('DEFAULT_THEME'); } cookie('think_template',$theme,864000); } } defined('THEME_NAME') || define('THEME_NAME', $theme); return $theme?$theme . '/':''; } }}namespace Behavior{ class BuildLiteBehavior { public function run(&$params) { if(!defined('BUILD_LITE_FILE')) return ; $litefile = C('RUNTIME_LITE_FILE',null,RUNTIME_PATH.'lite.php'); if(is_file($litefile)) return; $defs = get_defined_constants(TRUE); $content = 'namespace {$GLOBALS[\'_beginTime\'] = microtime(TRUE);'; if(MEMORY_LIMIT_ON) { $content .= '$GLOBALS[\'_startUseMems\'] = memory_get_usage();'; } unset($defs['user']['BUILD_LITE_FILE']); $content .= $this->buildArrayDefine($defs['user']).'}'; $filelist = is_file(CONF_PATH.'lite.php')? include CONF_PATH.'lite.php': array( THINK_PATH.'Common/functions.php', COMMON_PATH.'Common/function.php', CORE_PATH . 'Think'.EXT, CORE_PATH . 'Hook'.EXT, CORE_PATH . 'App'.EXT, CORE_PATH . 'Dispatcher'.EXT, CORE_PATH . 'Log'.EXT, CORE_PATH . 'Log/Driver/File'.EXT, CORE_PATH . 'Route'.EXT, CORE_PATH . 'Controller'.EXT, CORE_PATH . 'View'.EXT, CORE_PATH . 'Storage'.EXT, CORE_PATH . 'Storage/Driver/File'.EXT, CORE_PATH . 'Exception'.EXT, BEHAVIOR_PATH . 'ParseTemplateBehavior'.EXT, BEHAVIOR_PATH . 'ContentReplaceBehavior'.EXT, ); foreach ($filelist as $file){ if(is_file($file)) { $content .= compile($file); } } $content = preg_replace('/\$runtimefile = RUNTIME_PATH(.+?)(if\(APP_STATUS)/','\2',$content,1); $content .= "\nnamespace { Think\Think::addMap(".var_export(\Think\Think::getMap(),true).");"; $content .= "\nL(".var_export(L(),true).");\nC(".var_export(C(),true).');Think\Hook::import('.var_export(\Think\Hook::get(),true).');Think\Think::start();}'; file_put_contents($litefile,strip_whitespace('<?php '.$content)); } private function buildArrayDefine($array) { $content = "\n"; foreach ($array as $key => $val) { $key = strtoupper($key); $content .= 'defined(\'' . $key . '\') or '; if (is_int($val) || is_float($val)) { $content .= "define('" . $key . "'," . $val . ');'; } elseif (is_bool($val)) { $val = ($val) ? 'true' : 'false'; $content .= "define('" . $key . "'," . $val . ');'; } elseif (is_string($val)) { $content .= "define('" . $key . "','" . addslashes($val) . "');"; } $content .= "\n"; } return $content; } }}namespace Behavior{ use Think\Storage; use Think\Think; class ParseTemplateBehavior { public function run(&$_data){ $engine = strtolower(C('TMPL_ENGINE_TYPE')); $_content = empty($_data['content'])?$_data['file']:$_data['content']; $_data['prefix'] = !empty($_data['prefix'])?$_data['prefix']:C('TMPL_CACHE_PREFIX'); if('think'==$engine){ if((!empty($_data['content']) && $this->checkContentCache($_data['content'],$_data['prefix'])) || $this->checkCache($_data['file'],$_data['prefix'])) { Storage::load(C('CACHE_PATH').$_data['prefix'].md5($_content).C('TMPL_CACHFILE_SUFFIX'),$_data['var']); }else{ $tpl = Think::instance('Think\\Template'); $tpl->fetch($_content,$_data['var'],$_data['prefix']); } }else{ if(strpos($engine,'\\')){ $class = $engine; }else{ $class = 'Think\\Template\\Driver\\'.ucwords($engine); } if(class_exists($class)) { $tpl = new $class; $tpl->fetch($_content,$_data['var']); }else { E(L('_NOT_SUPPORT_').': ' . $class); } } } protected function checkCache($tmplTemplateFile,$prefix='') { if (!C('TMPL_CACHE_ON')) return false; $tmplCacheFile = C('CACHE_PATH').$prefix.md5($tmplTemplateFile).C('TMPL_CACHFILE_SUFFIX'); if(!Storage::has($tmplCacheFile)){ return false; }elseif (filemtime($tmplTemplateFile) > Storage::get($tmplCacheFile,'mtime')) { return false; }elseif (C('TMPL_CACHE_TIME') != 0 && time() > Storage::get($tmplCacheFile,'mtime')+C('TMPL_CACHE_TIME')) { return false; } if(C('LAYOUT_ON')) { $layoutFile = THEME_PATH.C('LAYOUT_NAME').C('TMPL_TEMPLATE_SUFFIX'); if(filemtime($layoutFile) > Storage::get($tmplCacheFile,'mtime')) { return false; } } return true; } protected function checkContentCache($tmplContent,$prefix='') { if(Storage::has(C('CACHE_PATH').$prefix.md5($tmplContent).C('TMPL_CACHFILE_SUFFIX'))){ return true; }else{ return false; } } }}namespace Behavior{ class ContentReplaceBehavior { public function run(&$content){ $content = $this->templateContentReplace($content); } protected function templateContentReplace($content) { $replace = array( '__ROOT__' => __ROOT__, '__APP__' => __APP__, '__MODULE__' => __MODULE__, '__ACTION__' => __ACTION__, '__SELF__' => htmlentities(__SELF__), '__CONTROLLER__'=> __CONTROLLER__, '__URL__' => __CONTROLLER__, '__PUBLIC__' => __ROOT__.'/public', ); if(is_array(C('TMPL_PARSE_STRING')) ) $replace = array_merge($replace,C('TMPL_PARSE_STRING')); $content = str_replace(array_keys($replace),array_values($replace),$content); return $content; } }} namespace { Think\Think::addMap(array ( 'Think\\Log' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Log.class.php', 'Think\\Log\\Driver\\File' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Log/Driver/File.class.php', 'Think\\Exception' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Exception.class.php', 'Think\\Model' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Model.class.php', 'Think\\Db' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Db.class.php', 'Think\\Template' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Template.class.php', 'Think\\Cache' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Cache.class.php', 'Think\\Cache\\Driver\\File' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Cache/Driver/File.class.php', 'Think\\Storage' => '/home/kwssawblade/public_html/simplewind/Core/Library/Think/Storage.class.php', 'PHPMailer' => '/home/kwssawblade/public_html/simplewind/Lib/Util/class.phpmailer.php', 'Pclzip' => '/home/kwssawblade/public_html/simplewind/Lib/Util/Pclzip.class.php', 'Dir' => '/home/kwssawblade/public_html/simplewind/Lib/Util/Dir.class.php', 'Tree' => '/home/kwssawblade/public_html/simplewind/Lib/Util/Tree.class.php', 'PathTree' => '/home/kwssawblade/public_html/simplewind/Lib/Util/PathTree.class.php', 'Curl' => '/home/kwssawblade/public_html/simplewind/Lib/Util/Curl.class.php', 'Page' => '/home/kwssawblade/public_html/simplewind/Lib/Util/Page.class.php', 'phpQuery' => '/home/kwssawblade/public_html/simplewind/Lib/Extend/phpQuery/phpQuery.php', 'ThinkOauth' => '/home/kwssawblade/public_html/simplewind/Lib/Extend/ThinkSDK/ThinkOauth.class.php', 'phpzip' => '/home/kwssawblade/public_html/simplewind/Lib/Util/phpzip.php', 'Url' => '/home/kwssawblade/public_html/simplewind/Lib/Util/Url.class.php', 'Form' => '/home/kwssawblade/public_html/simplewind/Lib/Util/Form.class.php', 'content_output' => '/home/kwssawblade/public_html/application/Content/Fields/content_output.class.php', )); L(array ( '_MODULE_NOT_EXIST_' => '无法加载模块', '_CONTROLLER_NOT_EXIST_' => '无法加载控制器', '_ERROR_ACTION_' => '非法操作', '_LANGUAGE_NOT_LOAD_' => '无法加载语言包', '_TEMPLATE_NOT_EXIST_' => '模板不存在', '_MODULE_' => '模块', '_ACTION_' => '操作', '_MODEL_NOT_EXIST_' => '模型不存在或者没有定义', '_VALID_ACCESS_' => '没有权限', '_XML_TAG_ERROR_' => 'XML标签语法错误', '_DATA_TYPE_INVALID_' => '非法数据对象!', '_OPERATION_WRONG_' => '操作出现错误', '_NOT_LOAD_DB_' => '无法加载数据库', '_NO_DB_DRIVER_' => '无法加载数据库驱动', '_NOT_SUPPORT_DB_' => '系统暂时不支持数据库', '_NO_DB_CONFIG_' => '没有定义数据库配置', '_NOT_SUPPORT_' => '系统不支持', '_CACHE_TYPE_INVALID_' => '无法加载缓存类型', '_FILE_NOT_WRITABLE_' => '目录(文件)不可写', '_METHOD_NOT_EXIST_' => '方法不存在!', '_CLASS_NOT_EXIST_' => '实例化一个不存在的类!', '_CLASS_CONFLICT_' => '类名冲突', '_TEMPLATE_ERROR_' => '模板引擎错误', '_CACHE_WRITE_ERROR_' => '缓存文件写入失败!', '_TAGLIB_NOT_EXIST_' => '标签库未定义', '_OPERATION_FAIL_' => '操作失败!', '_OPERATION_SUCCESS_' => '操作成功!', '_SELECT_NOT_EXIST_' => '记录不存在!', '_EXPRESS_ERROR_' => '表达式错误', '_TOKEN_ERROR_' => '表单令牌错误', '_RECORD_HAS_UPDATE_' => '记录已经更新', '_NOT_ALLOW_PHP_' => '模板禁用PHP代码', '_PARAM_ERROR_' => '参数错误或者未定义', '_ERROR_QUERY_EXPRESS_' => '错误的查询条件', )); C(array ( 'APP_USE_NAMESPACE' => true, 'APP_SUB_DOMAIN_DEPLOY' => false, 'APP_SUB_DOMAIN_RULES' => array ( ), 'APP_DOMAIN_SUFFIX' => '', 'ACTION_SUFFIX' => '', 'MULTI_MODULE' => true, 'MODULE_DENY_LIST' => array ( 0 => 'Common', 1 => 'Runtime', ), 'CONTROLLER_LEVEL' => 1, 'APP_AUTOLOAD_LAYER' => 'Controller,Model', 'APP_AUTOLOAD_PATH' => '', 'COOKIE_EXPIRE' => 0, 'COOKIE_DOMAIN' => '', 'COOKIE_PATH' => '/', 'COOKIE_PREFIX' => '90CfBI_', 'COOKIE_SECURE' => false, 'COOKIE_HTTPONLY' => '', 'DEFAULT_M_LAYER' => 'Model', 'DEFAULT_C_LAYER' => 'Controller', 'DEFAULT_V_LAYER' => 'View', 'DEFAULT_LANG' => 'en-us', 'DEFAULT_THEME' => 'simplebootx', 'DEFAULT_MODULE' => 'Portal', 'DEFAULT_CONTROLLER' => 'Index', 'DEFAULT_ACTION' => 'index', 'DEFAULT_CHARSET' => 'utf-8', 'DEFAULT_TIMEZONE' => 'PRC', 'DEFAULT_AJAX_RETURN' => 'JSON', 'DEFAULT_JSONP_HANDLER' => 'jsonpReturn', 'DEFAULT_FILTER' => 'trim,htmlspecialchars,addslashes', 'DB_TYPE' => 'mysql', 'DB_HOST' => '127.0.0.1', 'DB_NAME' => 'kwssawblade_kwssawblade', 'DB_USER' => 'kwssawblade_kwssawblade', 'DB_PWD' => 'kwssawblade_kwssawblade', 'DB_PORT' => '3306', 'DB_PREFIX' => 'cmf_', 'DB_PARAMS' => array ( ), 'DB_DEBUG' => true, 'DB_FIELDS_CACHE' => true, 'DB_CHARSET' => 'utf8', 'DB_DEPLOY_TYPE' => 0, 'DB_RW_SEPARATE' => false, 'DB_MASTER_NUM' => 1, 'DB_SLAVE_NO' => '', 'DATA_CACHE_TIME' => 0, 'DATA_CACHE_COMPRESS' => false, 'DATA_CACHE_CHECK' => false, 'DATA_CACHE_PREFIX' => '', 'DATA_CACHE_TYPE' => 'File', 'DATA_CACHE_PATH' => '/home/kwssawblade/public_html/data/runtime/Temp/', 'DATA_CACHE_KEY' => '', 'DATA_CACHE_SUBDIR' => false, 'DATA_PATH_LEVEL' => 1, 'ERROR_MESSAGE' => '页面错误!请稍后再试~', 'ERROR_PAGE' => '', 'SHOW_ERROR_MSG' => false, 'TRACE_MAX_RECORD' => 100, 'LOG_RECORD' => false, 'LOG_TYPE' => 'File', 'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR', 'LOG_FILE_SIZE' => 2097152, 'LOG_EXCEPTION_RECORD' => false, 'SESSION_AUTO_START' => true, 'SESSION_OPTIONS' => array ( 'expire' => 36000, 'path' => '/home/kwssawblade/public_html/tmp', ), 'SESSION_TYPE' => '', 'SESSION_PREFIX' => '', 'TMPL_CONTENT_TYPE' => 'text/html', 'TMPL_ACTION_ERROR' => '/home/kwssawblade/public_html/simplewind/Core/Tpl/dispatch_jump.tpl', 'TMPL_ACTION_SUCCESS' => '/home/kwssawblade/public_html/simplewind/Core/Tpl/dispatch_jump.tpl', 'TMPL_EXCEPTION_FILE' => '/home/kwssawblade/public_html/public/exception.html', 'TMPL_DETECT_THEME' => false, 'TMPL_TEMPLATE_SUFFIX' => '.html', 'TMPL_FILE_DEPR' => '/', 'TMPL_ENGINE_TYPE' => 'Think', 'TMPL_CACHFILE_SUFFIX' => '.php', 'TMPL_DENY_FUNC_LIST' => 'echo,exit', 'TMPL_DENY_PHP' => false, 'TMPL_L_DELIM' => '{', 'TMPL_R_DELIM' => '}', 'TMPL_VAR_IDENTIFY' => 'array', 'TMPL_STRIP_SPACE' => false, 'TMPL_CACHE_ON' => true, 'TMPL_CACHE_PREFIX' => '', 'TMPL_CACHE_TIME' => 0, 'TMPL_LAYOUT_ITEM' => '{__CONTENT__}', 'LAYOUT_ON' => false, 'LAYOUT_NAME' => 'layout', 'TAGLIB_BEGIN' => '<', 'TAGLIB_END' => '>', 'TAGLIB_LOAD' => true, 'TAGLIB_BUILD_IN' => 'cx,Common\\Lib\\Taglib\\TagLibSpadmin,Common\\Lib\\Taglib\\TagLibHome', 'TAGLIB_PRE_LOAD' => '', 'URL_CASE_INSENSITIVE' => false, 'URL_MODEL' => '1', 'URL_PATHINFO_DEPR' => '/', 'URL_PATHINFO_FETCH' => 'ORIG_PATH_INFO,REDIRECT_PATH_INFO,REDIRECT_URL', 'URL_REQUEST_URI' => 'REQUEST_URI', 'URL_HTML_SUFFIX' => '.html', 'URL_DENY_SUFFIX' => 'ico|png|gif|jpg', 'URL_PARAMS_BIND' => true, 'URL_PARAMS_BIND_TYPE' => 0, 'URL_PARAMS_FILTER' => false, 'URL_PARAMS_FILTER_TYPE' => '', 'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES' => array ( 'lists_pro/catid/:catid\\d' => 'content/pagedis/lists_pro', 'products/:q' => 'search/index/keywordsearch', ), 'URL_MAP_RULES' => array ( ), 'VAR_MODULE' => 'g', 'VAR_ADDON' => 'addon', 'VAR_CONTROLLER' => 'm', 'VAR_ACTION' => 'a', 'VAR_AJAX_SUBMIT' => 'ajax', 'VAR_JSONP_HANDLER' => 'callback', 'VAR_PATHINFO' => 's', 'VAR_TEMPLATE' => 't', 'VAR_AUTO_STRING' => false, 'HTTP_CACHE_CONTROL' => 'private', 'CHECK_APP_DIR' => true, 'FILE_UPLOAD_TYPE' => 'Local', 'DATA_CRYPT_TYPE' => 'Think', 'LOAD_EXT_FILE' => 'extend', 'UPLOADPATH' => 'data/upload/', 'UPLOADPATHADS' => 'img/', 'SHOW_PAGE_TRACE' => false, 'THIRD_UDER_ACCESS' => false, 'MODULE_ALLOW_LIST' => array ( 0 => 'Admin', 1 => 'App', 2 => 'Portal', 3 => 'Asset', 4 => 'Api', 5 => 'User', 6 => 'Wx', 7 => 'Comment', 8 => 'Qiushi', 9 => 'Tpl', 10 => 'Topic', 11 => 'Install', 12 => 'Bug', 13 => 'Better', 14 => 'Pay', 15 => 'Cas', 16 => 'Statistics', 17 => 'Contact', 18 => 'Content', 19 => 'Release', 20 => 'Crm', 21 => 'Gadgets', 22 => 'Search', 23 => 'Socialplatform', 24 => 'HelpDocument', ), 'LANG_SWITCH_ON' => true, 'LANG_LIST' => 'zh-cn,en-us,fg-fh,dutch', 'LANG_AUTO_DETECT' => true, 'SP_TMPL_PATH' => 'themes/', 'SP_DEFAULT_THEME' => 'simplebootx', 'SP_TMPL_ACTION_ERROR' => 'error', 'SP_TMPL_ACTION_SUCCESS' => 'success', 'SP_ADMIN_STYLE' => 'flat', 'SP_ADMIN_TMPL_PATH' => 'admin/themes/', 'SP_ADMIN_DEFAULT_THEME' => 'simplebootx', 'SP_ADMIN_TMPL_ACTION_ERROR' => 'Admin/error.html', 'SP_ADMIN_TMPL_ACTION_SUCCESS' => 'Admin/success.html', 'AUTOLOAD_NAMESPACE' => array ( 'plugins' => './plugins/', ), 'VAR_SESSION_ID' => 'session_id', 'UCENTER_ENABLED' => 0, 'COMMENT_NEED_CHECK' => 0, 'COMMENT_TIME_INTERVAL' => 60, 'VAR_PAGE' => 'p', 'OUTPUT_ENCODE' => true, 'HTML_CACHE_ON' => false, 'HTML_CACHE_TIME' => 60, 'HTML_FILE_SUFFIX' => '.html', 'PAGE_LISTROWS' => 20, 'TMPL_PARSE_STRING' => array ( '/Public/upload' => 'data/upload', '__UPLOAD__' => 'data/upload/', '__UPLOADADS__' => 'img/', '__STATICS__' => 'statics/', ), 'YCTOKEN' => 'ReaNod666', 'IMG_CDN_URL' => 'https://www.kwssawblade.com/', 'APP_NAME' => '', 'CHAT_URL' => 'chat.chukouplus.com:7272', 'PDF_URL' => 'E:\\app\\wkhtmltopdf\\bin\\wkhtmltopdf.exe', 'IMAGE_FORMAT' => 'webp', 'IS_KEYWORD' => 1, 'KEYWORDS_API' => '//keyword-api.chukouplus.com', 'CHAT_SITE_URL' => 'chat.chukouplus.com', 'AUTHCODE' => 'U0tYKi50BKoyyKy2tC', 'FWQ_HOST' => '169.44.141.129', 'REANODFWQ' => 'http://107.150.98.212/zht_new/index.php/', 'SP_SITE_ADMIN_URL_PASSWORD' => '', 'MOBILE_TPL_ENABLED' => 0, 'SP_MAIL_ADDRESS' => 'remind2@reanod.com', 'SP_MAIL_SENDER' => 'reanod', 'SP_MAIL_SMTP' => 'smtp.qq.com', 'SP_MAIL_SMTP_PORT' => '25', 'SP_MAIL_LOGINNAME' => 'remind2@reanod.com', 'SP_MAIL_PASSWORD' => 'Li6688', 'SMETA' => '{"thumb":"\\/thinkcmf\\/data\\/upload\\/20160606\\/57550cff9b230.png"}', 'CX_RULE_URL' => array ( 2 => '1', 25 => '20', 26 => '19', 27 => '18', 28 => '17', 29 => '21', 30 => '22', 31 => '23', 32 => '24', 35 => '33', 36 => '34', ), 'CRM_FILE_TYPE' => array ( 0 => '报价', 1 => '合同', 2 => '图片', 3 => '产品图纸', 4 => '包装', 5 => '其他文件', ), ));Think\Hook::import(array ( 'app_init' => array ( 0 => 'Behavior\\BuildLiteBehavior', 1 => 'Common\\Behavior\\InitHookBehavior', ), 'app_begin' => array ( 0 => 'Behavior\\ReadHtmlCacheBehavior', 1 => 'Behavior\\CheckLangBehavior', ), 'app_end' => array ( 0 => 'Behavior\\ShowPageTraceBehavior', ), 'view_parse' => array ( 0 => 'Behavior\\ParseTemplateBehavior', ), 'template_filter' => array ( 0 => 'Behavior\\ContentReplaceBehavior', ), 'view_filter' => array ( 0 => 'Behavior\\WriteHtmlCacheBehavior', 1 => 'Common\\Behavior\\TmplStripSpaceBehavior', ), ));}

Anon7 - 2021