layer; foreach($array as $name){ $class .= '\\'.parse_name($name, 1); } if($extend){ $class = $extend.'\\'.$class; } return $class.$layer; } function A($name,$layer='',$level='') { static $_action = array(); $layer = $layer? $layer : C('DEFAULT_C_LAYER'); $level = $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) { return \Think\Hook::listen($tag,$params); } function B($name, &$params=NULL) { if(strpos($name,'/')){ list($name,$tag) = explode('/',$name); }else{ $tag = 'run'; } 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 .= "<<'; } 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 = '
' . $label . htmlspecialchars($output, ENT_QUOTES) . '
'; } } 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=true) { $info = parse_url($url); if(isset($_GET['_addons']) && strpos($info['path'],'/')===false){ $info['query'] = '_addons='.$_GET['_addons'].'&_controller='.$_GET['_controller'].'&_action='.$info['path'].'&'.$info['query']; $info['path'] = 'home/addons/execute'; } $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'); 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(); $var[C('VAR_ACTION')] = !empty($path)?array_pop($path):ACTION_NAME; $var[C('VAR_CONTROLLER')] = !empty($path)?array_pop($path):CONTROLLER_NAME; if($maps = C('URL_ACTION_MAP')) { if(isset($maps[strtolower($var[C('VAR_CONTROLLER')])])) { $maps = $maps[strtolower($var[C('VAR_CONTROLLER')])]; if($action = array_search(strtolower($var[C('VAR_ACTION')]),$maps)){ $var[C('VAR_ACTION')] = $action; } } } if($maps = C('URL_CONTROLLER_MAP')) { if($controller = array_search(strtolower($var[C('VAR_CONTROLLER')]),$maps)){ $var[C('VAR_CONTROLLER')] = $controller; } } if(C('URL_CASE_INSENSITIVE')) { $var[C('VAR_CONTROLLER')] = parse_name($var[C('VAR_CONTROLLER')]); } $module = ''; if(!empty($path)) { $var[C('VAR_MODULE')] = array_pop($path); }else{ if(C('MULTI_MODULE')) { if(MODULE_NAME != C('DEFAULT_MODULE') || !C('MODULE_ALLOW_LIST')){ $var[C('VAR_MODULE')]= MODULE_NAME; } } } if($maps = C('URL_MODULE_MAP')) { if($_module = array_search(strtolower($var[C('VAR_MODULE')]),$maps)){ $var[C('VAR_MODULE')] = $_module; } } if(isset($var[C('VAR_MODULE')])){ $module = $var[C('VAR_MODULE')]; unset($var[C('VAR_MODULE')]); } } } if(C('URL_MODEL') == 0) { $url = __APP__.'?'.C('VAR_MODULE')."={$module}&".http_build_query(array_reverse($var)); if(C('URL_CASE_INSENSITIVE')){ $url = strtolower($url); } if(!empty($vars)) { $vars = http_build_query($vars); $url .= '&'.$vars; } }else{ $module = defined('BIND_MODULE') ? '' : $module; if(isset($route)) { $url = __APP__.'/'.($module?$module.MODULE_PATHINFO_DEPR:'').rtrim($url,$depr); }else{ $url = __APP__.'/'.($module?$module.MODULE_PATHINFO_DEPR:'').implode($depr,array_reverse($var)); } if(C('URL_CASE_INSENSITIVE')){ $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 = ""; if ($time != 0) $str .= $msg; exit($str); } } function S($name,$value='',$options=null) { static $cache = ''; if(is_array($options) && empty($cache)){ $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 ; } } 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 .= "<{$root}{$attr}>"; $xml .= data_to_xml($data, $item, $id); $xml .= ""; 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 .= ""; } 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', 7200); 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')) { $class = 'Think\\Session\\Driver\\'. ucwords(strtolower(C('SESSION_TYPE'))); $hander = new $class(); $hander->execute(); } if(C('SESSION_AUTO_START')) session_start(); }elseif('' === $value){ if(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($prefix){ unset($_SESSION[$prefix][$name]); }else{ unset($_SESSION[$name]); } }else{ if($prefix){ if (!is_array($_SESSION[$prefix])) { $_SESSION[$prefix] = array(); } $_SESSION[$prefix][$name] = $value; }else{ $_SESSION[$name] = $value; } } } function cookie($name, $value='', $option=null) { $config = array( 'prefix' => C('COOKIE_PREFIX'), 'expire' => C('COOKIE_EXPIRE'), 'path' => C('COOKIE_PATH'), 'domain' => C('COOKIE_DOMAIN'), ); 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 (is_null($name)) { if (empty($_COOKIE)) return; $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']); unset($_COOKIE[$key]); } } } return; } $name = $config['prefix'] . $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']); 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']); $_COOKIE[$name] = $value; } } } function load_ext_file($path) { if(C('LOAD_EXT_FILE')) { $files = explode(',',C('LOAD_EXT_FILE')); foreach ($files as $file){ $file = $path.'Common/'.$file.'.php'; if(is_file($file)) include $file; } } if(C('LOAD_EXT_CONFIG')) { $configs = C('LOAD_EXT_CONFIG'); if(is_string($configs)) $configs = explode(',',$configs); foreach ($configs as $key=>$config){ $file = $path.'Conf/'.$config.'.php'; if(is_file($file)) { is_numeric($key)?C(include $file):C($key,include $file); } } } } function get_client_ip($type = 0) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$type]; 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']; } $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( 200 => 'OK', 301 => 'Moved Permanently', 302 => 'Moved Temporarily ', 400 => 'Bad Request', 403 => 'Forbidden', 404 => 'Not Found', 500 => 'Internal Server Error', 503 => 'Service Unavailable', ); if(isset($_status[$code])) { header('HTTP/1.1 '.$code.' '.$_status[$code]); header('Status:'.$code.' '.$_status[$code]); } } function filter_exp(&$value){ if (in_array(strtolower($value),array('exp','or'))){ $value .= ' '; } } function in_array_case($value,$array){ return in_array(strtolower($value),array_map('strtolower',$array)); } function getAddonConfig($name) { static $_config = array (); if (isset ( $_config [$name] )) { return $_config [$name]; } $config = array (); $token = get_token (); if (! empty ( $token )) { $map ['token'] = $token; $addon_config = M ( 'member_public' )->where ( $map )->getField ( 'addon_config' ); $addon_config = json_decode ( $addon_config, true ); if (isset ( $addon_config [$name] )) $config = $addon_config [$name]; unset ( $map ['token'] ); } if (empty ( $config )) { $map ['name'] = $name; $map ['status'] = 1; $config = M ( 'Addons' )->where ( $map )->getField ( 'config' ); $config = json_decode ( $config, true ); } if (!$config) { $temp_arr = include_once ONETHINK_ADDON_PATH . $name . '/config.php'; foreach ( $temp_arr as $key => $value ) { $config [$key] = $temp_arr [$key] ['value']; } } $_config [$name] = $config; return $config; }}namespace {const JIANG_ADDON_PATH = './Addons/'; function getTableId($value,$num=10){ if(empty($value)) return 0; $__v = intval($value)%$num; return $__v; } function is_login() { $user = session ( 'user_auth' ); if (empty ( $user )) { return 0; } else { return session ( 'user_auth_sign' ) == data_auth_sign ( $user ) ? $user ['uid'] : 0; } } function is_blogin() { $user = session ( 'business_auth' ); if (empty ( $user ) || empty($user ['uid'])) { $buid = cookie('jiang_buid'); if($buid){ $str = uncrypt_str($buid); $arr_str = explode('_', $str); if($arr_str[2] == C('DATA_AUTH_KEY') && 3 == $arr_str[0]){ $user = M('Seller')->where('id='.$arr_str[1])->find(); D('Business/seller')->autoLogin($user); if(empty($user) || empty($user['id'])){ return 0; } return $user['id']; } } return 0; }else { return session ( 'business_auth_sign' ) == data_auth_sign ( $user ) ? $user ['uid'] : 0; } } function blogout(){ cookie ( 'jiang_buid', null ); $_COOKIE[C('COOKIE_PREFIX')."_jiang_buid"] = null; } function dlogout(){ cookie ( 'jiang_duid', null ); $_COOKIE[C('COOKIE_PREFIX')."_jiang_duid"] = null; } function klogout(){ cookie ( 'jiang_kuid', null ); $_COOKIE[C('COOKIE_PREFIX')."_jiang_kuid"] = null; } function is_dlogin() { $user = session ( 'designer_auth' ); if (empty ( $user ) || empty($user ['uid'])) { $duid = cookie('jiang_duid'); if($duid){ $str = uncrypt_str($duid); $arr_str = explode('_', $str); if($arr_str[2] == C('DATA_AUTH_KEY') && 1 == $arr_str[0]){ $user = M('Designer')->where('uid='.$arr_str[1])->field('nickname,uid')->find(); $user1 = M('Desuser')->where('id='.$arr_str[1])->field('username')->find(); $user['id'] = $user['uid']; $user['username'] = $user1['username']; D('Home/Desuser')->autoLogin($user); if(empty($user) || empty($user['id'])){ return 0; } return $user['id']; } } return 0; } else { return session ( 'designer_auth_sign' ) == data_auth_sign ( $user ) ? $user ['uid'] : 0; } } function is_klogin() { $user = session ( 'jiangke_auth' ); if (empty ( $user ) || empty($user ['uid'])) { $kuid = cookie('jiang_kuid'); if($kuid){ $str = uncrypt_str($kuid); $arr_str = explode('_', $str); if($arr_str[2] == C('DATA_AUTH_KEY') && 3 == $arr_str[0]){ $user = M('Jiangke')->where('id='.$arr_str[1])->find(); D('Ke/Jiangke')->autoLogin($user); if(empty($user) || empty($user['id'])){ return 0; } return $user['id']; } } return 0; } else { return session ( 'jiangke_auth_sign' ) == data_auth_sign ( $user ) ? $user ['uid'] : 0; } } function is_Dauth($all=false) { $user = session ( 'designer_auth_n' ); if (empty ( $user )) { return 0; } else { if($all) return session ( 'designer_auth_sign_n' ) == data_auth_sign ( $user ) ? $user : 0; else return session ( 'designer_auth_sign_n' ) == data_auth_sign ( $user ) ? $user ['auth'] : 0; } } function is_group() { $user = session ( 'user_auth' ); if (empty ( $user )) { return 0; } else { return session ( 'user_auth_sign' ) == data_auth_sign ( $user ) ? $user ['group_id'] : 0; } } function is_administrator($uid = null) { $uid = is_null ( $uid ) ? is_login () : $uid; return $uid && (intval ( $uid ) === C ( 'USER_ADMINISTRATOR' )); } function str2arr($str, $glue = ',') { return explode ( $glue, $str ); } function arr2str($arr, $glue = ',') { return implode ( $glue, $arr ); } function msubstr($str, $start=0, $length=100, $charset="utf-8", $suffix=true) { if(function_exists("mb_substr")) $slice = mb_substr($str, $start, $length, $charset); elseif(function_exists('iconv_substr')) { $slice = iconv_substr($str,$start,$length,$charset); if(false === $slice) { $slice = ''; } }else{ $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); } $fix=''; if(strlen($slice) < strlen($str)){ $fix='...'; } return $suffix ? $slice.$fix : $slice; } function msubstr_len($str, $charset="utf-8") { if(function_exists("mb_strlen")){ return mb_strlen($str,$charset); }elseif(function_exists('iconv_strlen')) { return iconv_strlen($str,$charset); }else{ $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; preg_match_all($re[$charset], $str, $match); return count($match[0]); } } function think_encrypt($data, $key = '', $expire = 0) { $key = md5 ( empty ( $key ) ? C ( 'DATA_AUTH_KEY' ) : $key ); $data = base64_encode ( $data ); $x = 0; $len = strlen ( $data ); $l = strlen ( $key ); $char = ''; for($i = 0; $i < $len; $i ++) { if ($x == $l) $x = 0; $char .= substr ( $key, $x, 1 ); $x ++; } $str = sprintf ( '%010d', $expire ? $expire + time () : 0 ); for($i = 0; $i < $len; $i ++) { $str .= chr ( ord ( substr ( $data, $i, 1 ) ) + (ord ( substr ( $char, $i, 1 ) )) % 256 ); } return str_replace ( array ( '+', '/', '=' ), array ( '-', '_', '' ), base64_encode ( $str ) ); } function think_decrypt($data, $key = '') { $key = md5 ( empty ( $key ) ? C ( 'DATA_AUTH_KEY' ) : $key ); $data = str_replace ( array ( '-', '_' ), array ( '+', '/' ), $data ); $mod4 = strlen ( $data ) % 4; if ($mod4) { $data .= substr ( '====', $mod4 ); } $data = base64_decode ( $data ); $expire = substr ( $data, 0, 10 ); $data = substr ( $data, 10 ); if ($expire > 0 && $expire < time ()) { return ''; } $x = 0; $len = strlen ( $data ); $l = strlen ( $key ); $char = $str = ''; for($i = 0; $i < $len; $i ++) { if ($x == $l) $x = 0; $char .= substr ( $key, $x, 1 ); $x ++; } for($i = 0; $i < $len; $i ++) { if (ord ( substr ( $data, $i, 1 ) ) < ord ( substr ( $char, $i, 1 ) )) { $str .= chr ( (ord ( substr ( $data, $i, 1 ) ) + 256) - ord ( substr ( $char, $i, 1 ) ) ); } else { $str .= chr ( ord ( substr ( $data, $i, 1 ) ) - ord ( substr ( $char, $i, 1 ) ) ); } } return base64_decode ( $str ); } function data_auth_sign($data) { if (! is_array ( $data )) { $data = ( array ) $data; } ksort ( $data ); $code = http_build_query ( $data ); $sign = sha1 ( $code ); return $sign; } function list_sort_by($list, $field, $sortby = 'asc') { if (is_array ( $list )) { $refer = $resultSet = array (); foreach ( $list as $i => $data ) $refer [$i] = &$data [$field]; switch ($sortby) { case 'asc' : asort ( $refer ); break; case 'desc' : arsort ( $refer ); break; case 'nat' : natcasesort ( $refer ); break; } foreach ( $refer as $key => $val ) $resultSet [] = &$list [$key]; return $resultSet; } return false; } function list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = 0) { $tree = array (); if (is_array ( $list )) { $refer = array (); foreach ( $list as $key => $data ) { if(strtolower($data['url']) == ('designer/unlist')){ $where = array(); $my_htype = get_htype(); $where['status'] = 4; $where['cwstatus'] = 2; if($my_htype)$where['htype'] = array('in',$my_htype); $num1 = M('Project')->where($where)->count(); $num2 = M('Projapply')->where('uid='.UID.' AND status=1 AND ctype=1')->count(); $list [$key] ['num'] = $num1+$num2; }else if(strtolower($data['url']) == ('designer/dolist')){ $map = array('ks_project.status'=>4,'ks_project.cwstatus'=>2,'ks_projapply.status'=>0,'ks_projapply.suid'=>UID,'ks_projapply.ctype'=>1); $join = '__PROJECT__ ON __PROJAPPLY__.pid = __PROJECT__.id'; $num = M('Projapply')->join($join)->where($map)->count(); $list [$key] ['num'] = $num; }else if(strtolower($data['url']) == ('finance/index')){ $map = array('cwstatus'=>0); $num = M('Project')->where($map)->count(); $list [$key] ['num'] = $num; }else if(strtolower($data['url']) == ('finance/xindex')){ $map = array('cwstatus'=>0); $num = M('Project_1')->where($map)->count(); $list [$key] ['num'] = $num; }else if(strtolower($data['url']) == ('customer/mlist')){ $map = array('customer'=>array('eq',0),'status'=>array('in','0,1,2,5,6,7')); $where['customer'] = array('eq',0); $num = M('Project')->where($map)->count(); $list [$key] ['num'] = $num; }else if(strtolower($data['url']) == ('designer/newlist')){ $map = array('des_id'=>UID,'cwstatus'=>2,'status'=>5); $num = M('Project')->where($map)->count(); $list [$key] ['num'] = $num; }else if(strtolower($data['url']) == ('customer/yanqi')){ $map = array('customer'=>UID,'step'=>2,'status'=>1); $num = M('Yanqi')->where($map)->count(); $list [$key] ['num'] = $num; }else if(strtolower($data['url']) == ('customer/yichang')){ $map = array('customer'=>UID ,'status'=>1); $num = M('Prostop')->where($map)->count(); $list [$key] ['num'] = $num; }else if(strtolower($data['url']) == ('customer/dlist')){ if(UGROUP==C('CUSTOMER_MASTER')) $map = array('status'=>3); else $map = array('customer'=>UID ,'status'=>3); $num = M('Project')->where($map)->count(); $list [$key] ['num'] = $num; }else if(strtolower($data['url']) == ('finance/fqlist')){ $map = array('cwstatus'=>0); $num = M('Fenqi')->where($map)->count(); $list [$key] ['num'] = $num; } $refer [$data [$pk]] = & $list [$key]; } foreach ( $list as $key => $data ) { $parentId = $data [$pid]; if ($root == $parentId ) { $tree [] = & $list [$key]; } else { if (isset ( $refer [$parentId] )) { $parent = & $refer [$parentId]; $parent [$child] [] = & $list [$key]; } } } } return $tree; } function tree_to_list($tree, $child = '_child', $order = 'id', &$list = array()) { if (is_array ( $tree )) { $refer = array (); foreach ( $tree as $key => $value ) { $reffer = $value; if (isset ( $reffer [$child] )) { unset ( $reffer [$child] ); tree_to_list ( $value [$child], $child, $order, $list ); } $list [] = $reffer; } $list = list_sort_by ( $list, $order, $sortby = 'asc' ); } return $list; } function format_bytes($size, $delimiter = '') { $units = array ( 'B', 'KB', 'MB', 'GB', 'TB', 'PB' ); for($i = 0; $size >= 1024 && $i < 5; $i ++) $size /= 1024; return round ( $size, 2 ) . $delimiter . $units [$i]; } function set_redirect_url($url) { cookie ( 'redirect_url', $url ); } function get_redirect_url() { $url = cookie ( 'redirect_url' ); return empty ( $url ) ? __APP__ : $url; } function hook($hook, $params = array()) { \Think\Hook::listen ( $hook, $params ); } function get_addon_class($name) { $class = "Addons\\{$name}\\{$name}Addon"; return $class; } function get_addon_config($name) { $class = get_addon_class ( $name ); if (class_exists ( $class )) { $addon = new $class (); return $addon->getConfig (); } else { return array (); } } function addons_url($url, $param = array()) { $urlArr = explode ( '://', $url ); if (stripos ( $urlArr [0], '_' ) !== false) { $addons = $urlArr [0]; $url = 'http://' . $urlArr [1]; } $url = parse_url ( $url ); $case = C ( 'URL_CASE_INSENSITIVE' ); ! $addons || $url ['scheme'] = $addons; $addons = $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 ( '_addons' => $addons, '_controller' => $controller, '_action' => $action ); $params = array_merge ( $params, $param ); return U ( 'Home/Addons/execute', $params ); } function time_format($time = NULL, $format = 'Y-m-d') { if (empty ( $time )) return ''; $time = $time === NULL ? NOW_TIME : intval ( $time ); return date ( $format, $time ); } function time_format1($time = NULL, $format = 'm-d') { return time_format($time,'m-d H:i'); } function get_username($uid = 0) { static $list; if (! ($uid && is_numeric ( $uid ))) { return session ( 'user_auth.username' ); } if (empty ( $list )) { $list = S ( 'sys_active_user_list' ); } $key = "u{$uid}"; if (isset ( $list [$key] )) { $name = $list [$key]; } else { $User = new User\Api\UserApi (); $info = $User->info ( $uid ); if ($info && isset ( $info [1] )) { $name = $list [$key] = $info [1]; $count = count ( $list ); $max = C ( 'USER_MAX_CACHE' ); while ( $count -- > $max ) { array_shift ( $list ); } S ( 'sys_active_user_list', $list ); } else { $name = ''; } } return $name; } function get_nickname($uid = 0) { $info = D ( 'Home/Member' )->getMemberInfo ( $uid ); return $info ['nickname'];; } function get_truename($uid) { $info = D ( 'Home/Member' )->getMemberInfo ( $uid ); return $info ['truename']; } function get_memberinfo($uid) { return D ( 'Home/Member' )->getMemberInfo ( $uid ); } function get_des_info($uid=0,$field='',$default='',$cache=true){ global $des_info_key; $uid = intval($uid); if(empty($uid))return $default; $key = C('des_info_key').'_'.$uid; if($cache) $info = S ($key); if(empty($info)){ $info = D ( 'Designer/designer' )->detail ( $uid ); if(empty($info)) return array(); if($info['dtype'] != 0){ if($info['dtype'] == 1){ $tinfo = M('st_info')->where('des_id='.$info['uid'])->field('id,name,inside')->find(); }else if($info['master']){ $tinfo = M('st_info')->where('des_id='.$info['master'])->field('id,name,inside')->find(); } $info['tid'] = $tinfo['id']; $info['tname'] = $tinfo['name']; $info['mp_inside'] = $tinfo['inside']; } $is_open = M('TempDes')->where('uid='.$uid)->getField('is_open'); $info['temp_ele'] = intval($is_open); if($info['uid']) S ($key,$info); } if(empty($info['uid'])){ errorLog($uid.'_des|'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"],'userinfolog'); } $rzedu_test = []; if($rzedu_test) $info['rzedu_test'] = 1; else $info['rzedu_test'] = 0; if($info['uid']){ $arrzhe = D('Home/Zhekou')->getMyZhe($uid,1); $info['zhekou'] = intval($arrzhe['avalue']); if($info['zhekou']){ $info['zhe_price'] = intval($info['zhekou']*$info['price']/100); } $info = array_merge($info,D('Home/Worker')->getFakeFInfo($info['uid'])); } if($field){ if(!isset($info[$field]))return $default;else return $info[$field]; } if($info['htype']){ $arr_htype = get_ht_type(true,true); foreach($arr_htype as $kk=>$value){ if(check_document_position($kk,$info['htype'])){ $htype_name.= $value.' ' ; } } $info['htype_name'] = $htype_name; } return $info; } function get_sell_info($uid=0,$field='',$default='',$cache=true){ $uid = intval($uid); if(empty($uid))return $default; $key = C('seller_info_key').'_'.$uid; if($cache) $info = S ($key); if(empty($info)){ $info = D ( 'Business/seller' )->getInfo ( $uid ); if($info['lxtel'] && $info['showtel'] && doreg($info['lxtel'],'cell')){ $showtel = 0; }else{ $showtel = $info['showtel']; } $info['showtel'] = $showtel; S ($key,$info); } if($field){ if(!isset($info[$field]))return $default;else return $info[$field]; } return $info; } function get_ke_info($uid=0,$field='',$default='',$cache=true){ $uid = intval($uid); if(empty($uid))return $default; $key = C('jiangke_info_key').'_'.$uid; if($cache) $info = S ($key); if(empty($info)){ $info = D ( 'Ke/jiangke' )->getInfo ( $uid ); S ($key,$info); } if($field == 'nickname') $field = 'username'; if($field){ if(empty($info[$field]))return $default;else return $info[$field]; } return $info; } function get_kefu_info($uid=0,$field='',$default='',$cache=true){ $uid = intval($uid); if(empty($uid))return $default; $key = C('des_info_key').'_'.$uid; if($cache) $info = S ($key); if(empty($info['uid'])){ $info1 = M('Desuser')->where('id='.$uid)->find(); $kinfo = M('Kefu')->where('uid='.$uid)->find(); if(empty($info1)) $info1 = array(); if(empty($kinfo)) $kinfo = array(); if($kinfo['dtype'] == 1){ $tinfo = M('st_info')->where('des_id='.$kinfo['uid'])->field('id,name,inside')->find(); }else if($kinfo['master']){ $tinfo = M('st_info')->where('des_id='.$kinfo['master'])->field('id,name,inside')->find(); } $kinfo['tid'] = $tinfo['id']; $kinfo['tname'] = $tinfo['name']; $kinfo['mp_inside'] = $tinfo['inside']; $info = array_merge($info1,$kinfo); $info['truename'] = $info['name']; if($info['uid']) S ($key,$info); } if(empty($info['uid'])){ errorLog($uid.'_kefu|'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"],'userinfolog'); } if($field){ if(!isset($info[$field]))return $default;else return $info[$field]; } return $info; } function get_worker_info($uid=0,$field='',$default='',$cache=true){ $uid = intval($uid); if(empty($uid))return $default; $key = C('des_info_key').'_'.$uid; if($cache) $info = S ($key); if(empty($info['uid'])){ $info1 = M('Desuser')->where('id='.$uid)->field(true)->find(); $kinfo = M('Worker')->where('uid='.$uid)->find(); if(empty($info1)) $info1 = array(); if(empty($kinfo)) $kinfo = array(); if($kinfo['dtype'] == 1){ $tinfo = M('st_info')->where('des_id='.$kinfo['uid'])->field('id,name,inside')->find(); }else if($kinfo['master']){ $tinfo = M('st_info')->where('des_id='.$kinfo['master'])->field('id,name,inside')->find(); } $kinfo['tid'] = $tinfo['id']; $kinfo['tname'] = $tinfo['name']; $kinfo['mp_inside'] = $tinfo['inside']; $info = array_merge($info1,$kinfo); $info['truename'] = $info['name']; if($info['uid']) S ($key,$info); } if(empty($info['uid'])){ errorLog($uid.'_worker|'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"],'userinfolog'); } if($field){ if(!isset($info[$field]))return $default;else return $info[$field]; } return $info; } function get_user_info($uid=0,$field='',$default='',$cache=true){ $uid = intval($uid); if(empty($uid)) return $default; $rkey = C('des_info_key').'_role_'.$uid; $role = S($rkey); if(false === $role){ $role = M('Desuser')->where('id='.$uid)->getField('role'); S($rkey,$role,24*3600); } if(2 == $role){ return get_kefu_info($uid,$field,$default,$cache); }elseif($role==1){ return get_des_info($uid,$field,$default,$cache); }elseif($role>=4){ return get_worker_info($uid,$field,$default,$cache); }elseif(empty($role)){ if($field) $info = M('Desuser')->where('id='.$uid)->getField($field); else $info = M('Desuser')->where('id='.$uid)->field($field)->find(); return $info; } } function get_kefu_type($type=null,$all=false,$showtype=1){ if(!isset($type)) return ''; if(1 == $showtype){ $str = '|售前|售后'; }else{ $str = '|售前客服|售后客服'; } $arr_str = explode('|',$str); if($all){ unset($arr_str[0]); return $arr_str; } return $arr_str[$type] ; } function get_des_status($status=null,$s){ if(!isset($status)) return false; $arr = array('在认证中','有效','删除'); if($s) return $arr; return $arr[$status]; } function get_desneeds_status($type=null){ $str='未采纳|采纳|已删除'; $arr_str = explode('|',$str); return $arr_str[$type]; } function get_shopstaff($type=null,$all=false){ if(!isset($type)){ return '无'; } $str = '|老板|职员|前端|美工|销售'; $arr_str = explode('|',$str); if($all){ unset($arr_str[0]); return $arr_str; } return $arr_str[$type]; } function get_yearsales($type=null,$all=false){ if(!isset($type)) return ''; $str = '|1000W以上|900W以下|800W以下|700W以下|600W以下|500W以下|300W以下|100W以下'; $arr_str = explode('|',$str); if($all){ unset($arr_str[0]); return $arr_str; } return $arr_str[$type]; } function get_platform($type=null,$all=false){ if(!isset($type)) return ''; $str = '|淘宝|天猫|阿里巴巴|京东|唯品会|当当|一号店|亚马逊|其他'; $arr_str = explode('|',$str); if($all){ unset($arr_str[0]); return $arr_str; } return $arr_str[$type] ; } function get_note_type1($type = null,$s=false){ if(!isset($type)) return ''; else $type = intval($type); $str = '|首页|详情页模板|自定义页面|活动页面|手机淘宝|详情页嵌套|海报|其他'; $arr_str = explode('|',$str); if($all){ unset($arr_str[0]); return $arr_str; } return $arr_str[$type] ; } function get_note_type($type = null,$s=false){ if(!isset($type)) return ''; else $type = intval($type); $str = '|首页|详情页模板|爆款策划|海报BANNER|营销活动|钻石展位|直通车|其他'; $arr_str = explode('|',$str); if($s){ unset($arr_str[0]); return $arr_str; } return $arr_str[$type] ; } function get_ht_type($type = null,$s=false){ $type = intval($type); if(!isset($type)) return ''; $arr[0] = ''; $arr[1] = '服装内衣'; $arr[2] = '母婴玩具'; $arr[4] = '精品鞋包'; $arr[8] = '生活百货'; $arr[16] = '3C数码'; $arr[32] = '家电办公'; $arr[64] = '化妆美容'; $arr[128] = '家具家纺'; $arr[256] = '珠宝手表'; $arr[512] = '食品保健'; $arr[1024] = '汽车配件'; $arr[2048] = '运动户外'; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$type]; } } function get_demand_type($type = null,$s=false){ $type = intval($type); if(!isset($type)) return ''; $arr[0] = ''; $arr[1] = '首页'; $arr[2] = '详情页模版'; $arr[4] = '爆款策划'; $arr[8] = '海报BANNER'; $arr[16] = '营销活动'; $arr[32] = '钻石展位'; $arr[64] = '直通车'; $arr[128] = '其他'; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$type]; } } function get_ht_type1($type = null,$s=false){ $arr[0] = ''; $arr[1] = '服装内衣'; $arr[2] = '母婴玩具'; $arr[3] = '精品鞋包'; $arr[4] = '生活百货'; $arr[5] = '3C数码'; $arr[6] = '家电办公'; $arr[7] = '化妆美容'; $arr[8] = '家具家纺'; $arr[9] = '珠宝手表'; $arr[10] = '食品保健'; $arr[11] = '汽车配件'; $arr[12] = '运动户外'; if(!isset($type)) return ''; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$type]; } } function get_sel_demand($htype,$glue=' | '){ $arr_htype = get_demand_type(true,true); foreach($arr_htype as $key=>$value){ if(check_document_position($key,$htype)){ $ht[$key] = $value; } } return implode($glue, $ht); } function get_sub_work($htype,$role = 1,$glue=' | '){ $arr_htype = get_sub_work_type($role); foreach($arr_htype as $key=>$value){ if(check_document_position($key,$htype)){ $ht[$key] = $value; } } return implode($glue, $ht); } function get_des_ht($htype,$glue=' | '){ $arr_htype = get_ht_type(true,true); foreach($arr_htype as $key=>$value){ if(check_document_position($key,$htype)){ $ht[$key] = $value; } } return implode($glue, $ht); } function get_kefu_ht($htype,$glue=' | '){ $arr_htype = get_ht_type(true,true); foreach($arr_htype as $key=>$value){ if(check_document_position($key,$htype)){ $ht[$key] = $value; } } return implode($glue, $ht); } function get_baodes_ht($str,$cut = false){ if(empty($str)) return '未填写'; $arr=explode(',',$str); $rstr=''; $num = count($arr); $i = 1; foreach($arr as $value){ if($i < $num) $s= '/'; else $s = ''; $rstr.=get_ht_type1($value).$s; $i ++ ; } return $cut ? msubstr($rstr,0,10) : $rstr; } function get_needs_status($type = null){ $str = '无|进行中|待发工资|已完结|已取消'; $arr_str = explode('|',$str); return $arr_str[$type]; } function get_needs_status_pro($type,$prostatus){ if($prostatus == 6) return '项目完结'; if(empty($type)) $type = 0; return get_needs_status($type); } function get_days_pro($time,$prostatus){ if($prostatus == 6) return '项目到期'; return get_days($time); } function get_service_status($type = null){ $str = '等待客服介入|投诉处理中|已解决|已取消|已删除'; $arr_str = explode('|',$str); return $arr_str[$type]; } function get_record_rtype($type = null){ $arr[0] = '无'; $arr[1] = '工资支付'; $arr[2] = '退款'; $arr[3] = '佣金分成'; $arr[4] = '徒弟收入'; $arr[5] = '提成支付'; $arr[6] = '手续费'; return $arr[$type]; } function get_charge_status($type = null){ $arr[-1] = '已取消'; $arr[0] = '未充值'; $arr[1] = '成功'; $arr[2] = '打回'; return $arr[$type]; } function get_draw_status($type = null,$role=3){ $arr[0] = '未提现'; $arr[1] = '成功'; $arr[2] = '取消'; $arr[3] = '提现中'; $arr[4] = '审核中'; if(3 != $role){ $arr[4] = '等待交税'; $arr[5] = '等待确认提现方式'; $arr[6] = '等待交税'; } return $arr[$type]; } function get_user_level($uid){ $user = get_user_info($uid); $args = func_get_args(); $args[0] = $user['level']; $role = $user['role']; if(4 == $role){ $funName = 'get_yylevel'; }elseif(2 == $role){ $funName = 'get_kflevel'; }else{ $funName = 'get_dlevel'; } $levelName = call_user_func($funName,$args[0],$args[1],$args[2]); return $levelName; } function get_des_level($level = null,$s='0'){ $arr=array('','D','C','B','A','Z'); if(!isset($level)) return ''; if($s){ unset($arr[0]); return $arr; }else{ return strtolower($arr[$level]); } } function get_dlevel($level = null,$s='0',$m){ $arr=array('','助','初','中','高','专'); $arr2=array('','理','级','级','级','家'); if(!isset($level)) return ''; if($m){ foreach ($arr as $k => $val) { $arr[$k] = $arr[$k].$arr2[$k]; } } if($s){ unset($arr[0]); return $arr; }else{ return $arr[$level]; } } function get_yylevel($level = null,$s='0',$showtype=1){ if(1 == $showtype){ $arr=array('','助理','普通','高级'); }else{ $arr=array('','运营助理','店铺运营','高级店铺运营'); } if(!isset($level)) return ''; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$level]; } } function get_kflevel($level = null,$s='0',$showtype=1){ if(1 == $showtype){ $arr=array('','普通','金牌','钻石'); }else{ $arr=array('','普通客服','金牌客服','钻石客服'); } if(!isset($level)) return ''; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$level]; } } function get_des_school($highestxl = null,$s='0'){ $arr=array('未设置','小学及以下','初中','高中','大专','本科','研究生','博士及以上'); if(!isset($highestxl)) return ''; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$highestxl]; } } function get_des_zzmm($zzmm = null,$s='0'){ $arr=array('群众','群众','团员','党员'); if(!isset($zzmm)) return ''; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$zzmm]; } } function get_des_salary($salary = null,$s='0'){ $arr=array('2600','2600','3600','4800','7000','10000'); if(!isset($salary)) return ''; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$salary]; } } function get_des_itjn($itjn = null,$s='0'){ $arr=array('Photoshop','Photoshop','Dreamweaver','Flash','Illustrator','HTML','CoreDraw'); if(!isset($itjn)) return ''; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$itjn]; } } function get_des_type($index='0'){ $arr = array('','目标设计师(未联系)','目标设计师(已联系)','意向设计师','无意向设计师','待确认设计师'); if(is_numeric($index) && $index > 0){ return $arr[$index]; } return $arr; } function get_leave_status($type = null){ $str = '请假审批中|审批通过|驳回|请假结束'; $arr_str = explode('|',$str); if(!isset($type)){ return $arr_str; } return $arr_str[$type]; } function get_pro_status($type = null){ $str='未确认|正常|暂停|投诉|解雇|待完结|已结束|已结束(三天无理由试用)'; $arr_str = explode('|',$str); if(!isset($type)) return $arr_str; return $arr_str[$type]; } function get_wjstatus($id=0,$s){ $str = '正常完结|正常完结|暂停完结|解雇完结|投诉完结|三天无理由完结'; $arr_str = explode('|',$str); if($s){ unset($arr_str[0]); return $arr_str; }else{ return $arr_str[$id]; } } function setArrToDes(&$arr= array(),$id='des_id'){ if(empty($arr))return $arr; $arr_htype = get_ht_type(true,true); foreach($arr as $key=>$uu){ $arr_info = get_des_info($uu[$id]); $arr[$key]['nickname'] = $arr_info['nickname']?$arr_info['nickname']:'无'; $arr[$key]['status'] = ($uu['status']); $arr[$key]['qq'] = $arr_info['qq']; $arr[$key]['level'] = $arr_info['level']; $arr[$key]['gzage'] = $arr_info['gzage']; $arr[$key]['lxtel'] = $arr_info['lxtel']; $arr[$key]['areaid'] = $arr_info['area']; $arr[$key]['htype'] = $arr_info['htype']; $arr[$key]['sex'] = $arr_info['sex']; $arr[$key]['school'] = $arr_info['school']; $arr[$key]['price'] = $arr_info['price']; $arr[$key]['age'] = get_age($arr_info['birthday'],'岁'); $arr[$key]['truename'] = $arr_info['truename']?$arr_info['truename']:'无';; $arr[$key]['wangw'] = $arr_info['wangw']; $arr[$key]['showtel'] = $arr_info['showtel']; if($arr_info['htype']){ $htype_name = ''; foreach($arr_htype as $kk=>$value){ if(check_document_position($kk,$arr_info['htype'])){ $htype_name.= $value.' ' ; } } } $arr[$key]['htype_name'] = $htype_name; } ; return $arr; } function setArrToUsera(&$arr= array(),$id='des_id'){ if(empty($arr))return $arr; foreach($arr as $key=>$uu){ $usera_max = $usera = 0; $arr[$key]['usera'] = $usera = getExpByLevel(getDesAccount($uu[$id],'usera'),$uu['level']); $arr[$key]['usera_max'] = $usera_max = getDesExp($uu['level']); $arr[$key]['usera_bl'] = ceil(100*$usera/$usera_max); } return $info; } function setArrToService(&$arr= array(),$id='id'){ if(empty($arr))return $arr; foreach($arr as $key=>$uu){ if($uu[$id] && 3==$uu['status']){ $status = M('Service')->where('pid='.$uu[$id].' AND status<=1')->field('status,ctime')->find(); $arr[$key]['ser_status'] = $status['status']; $arr[$key]['ser_status_name'] = get_service_status($status['status']); $arr[$key]['ser_time'] = date('Y-m-d',$status['ctime']); }else{ $arr[$key]['ser_status'] = 0; $arr[$key]['ser_status_name'] = '无'; } } return $arr; } function setArrToCase(&$arr= array(),$id='case_id'){ if(empty($arr))return $arr; foreach($arr as $value){ $cid_arr[] = $value[$id]; } $cid_str = implode(',', $cid_arr); $map = array('id' => array('IN',$cid_str)); $case = M('Case')->where($map)->getField('id,name,thumb,des_id,views,likes,thumb_height,tags,ctime'); foreach($arr as $key=>$uu){ $case_id = $uu[$id]; $arr[$key]['case_name'] = $case[$case_id]['name']; $arr[$key]['case_des_id'] = $case[$case_id]['des_id']; $arr[$key]['thumb_height'] = $case[$case_id]['thumb_height']; $arr[$key]['views'] = $case[$case_id]['views']; $arr[$key]['likes'] = $case[$case_id]['likes']; $arr[$key]['tags'] = $case[$case_id]['tags']; $arr[$key]['ctime'] = $case[$case_id]['ctime']; $arr[$key]['pic'] = '//'.DJ_URL_IMAGE.$case[$case_id]['thumb']; } return $arr; } function get_des_case($case_id,$field = null){ if(empty($case_id)) return $case; $case = D('Designer/Case')->detail($case_id,'status > 0'); if(isset($field)) return $case[$field]; return $case; } function setArrNodeNum(&$arr= array(),$uid=BUID,$role=3){ if(empty($arr) || empty($uid) || empty($role))return $arr; $arr_id = array(); foreach($arr as $key=>$uu){ $arr_id[] = $uu['id']; } $id_str = implode(',', $arr_id); $arr_stime = M('NeedsLook')->where('uid='.$uid.' AND role='.$role.' AND nid IN('.$id_str.')')->getField('nid,stime'); foreach($arr as $key=>$uu){ if($uu){ $nums = D('Business/Notes')->acount(array('uid'=>array('neq',$uid),'nid'=>$uu['id'],'status'=>1,'ctime'=>array('gt',$arr_stime[$uu['id']]))); $arr[$key]['num'] = $nums; } } return $arr; } function get_city($areaid,$field = 'joinname'){ $c= D('Home/Areas')->getInfo($areaid); $str = $c[$field]; if($field == 'joinname'){ $str = str_replace(',','-',$str); } return $str; } function get_city1($areaid,$field = 'joinname'){ $c= D('Home/Areas')->getInfo($areaid); $str = $c[$field]; $arr_str = explode(',', $str); if($arr_str[1]=='市辖区')$res=$arr_str[0];else $res=$arr_str[1]; return $res; } function get_role($type,$all,$showType=''){ if(!isset($type)){ return '无'; } $str = '系统|艺术设计|客服|雇主|运营文案|云匠客|摄影视频|产品技术|其他|传媒公关|市场营销|教育培训|职能/HR/财务|咨询/翻译/法律'; $arr_str = explode('|',$str); if($all){ if('ck' == $showType) unset($arr_str[0],$arr_str[3],$arr_str[5],$arr_str[8]); return $arr_str; } return $arr_str[$type]; } function addProLog($arr){ $data = array(); $data['ctime'] = time(); $data['contents'] = is_array($arr['contents'])?serialize($arr['contents']):$arr['contents']; $data['status'] = $arr['status']; return M('Projectlog')->add($data); } function get_category($id, $field = null) { static $list; if (empty ( $id ) || ! is_numeric ( $id )) { return ''; } if (empty ( $list )) { $list = S ( 'sys_category_list' ); } if (! isset ( $list [$id] )) { $cate = M ( 'Category' )->find ( $id ); if (! $cate || 1 != $cate ['status']) { return ''; } $list [$id] = $cate; S ( 'sys_category_list', $list ); } return is_null ( $field ) ? $list [$id] : $list [$id] [$field]; } function get_category_name($id) { return get_category ( $id, 'name' ); } function get_category_title($id) { return get_category ( $id, 'title' ); } function get_document_model($id = null, $field = null,$extend=1) { static $list; if (! (is_numeric ( $id ) || is_null ( $id ))) { return ''; } if (empty ( $list )) { } if (empty ( $list )) { $map = array ( 'status' => 1, 'extend' => $extend ); $model = M ( 'Model' )->where ( $map )->field ( true )->select (); foreach ( $model as $value ) { $list [$value ['id']] = $value; } S ( 'DOCUMENT_MODEL_LIST', $list ); } if (is_null ( $id )) { return $list; } elseif (is_null ( $field )) { return $list [$id]; } else { return $list [$id] [$field]; } } function ubb($data) { return $data; } function action_log($action = null, $model = null, $record_id = null, $user_id = null,$ob_id = null,$message=null) { if (empty ( $action ) || empty ( $model ) || empty ( $record_id )) { return '参数不能为空'; } if (empty ( $user_id )) { $user_id = is_login (); } $action_info = M ( 'Action' )->getByName ( $action ); if ($action_info ['status'] != 1) { return '该行为被禁用或删除'; } $data ['action_id'] = $action_info ['id']; $data ['user_id'] = $user_id; $data ['action_ip'] = bindec( decbin( ip2long( get_client_ip () ) ) ); $data ['model'] = $model; $data ['record_id'] = $record_id; $data ['create_time'] = NOW_TIME; if (! empty ( $action_info ['log'] )) { if (preg_match_all ( '/\[(\S+?)\]/', $action_info ['log'], $match )) { $log ['user'] = $user_id; $log ['record'] = $record_id; $log ['model'] = $model; $log ['ob_id'] = $ob_id; $log ['time'] = NOW_TIME; $log ['extdata'] = $message; $log ['data'] = array ( 'user' => $user_id, 'model' => $model, 'ob_id' => $ob_id, 'record' => $record_id, 'time' => NOW_TIME ); $log['message'] = $message; if($record_id){ if(strtolower($model)=='member' || strtolower($model)=='designer') $info = M($model)->where('uid='.$record_id)->find(); else $info = M($model)->where('id='.$record_id)->find(); $log = array_merge($log,$info); } foreach ( $match [1] as $value ) { $param = explode ( '|', $value ); if (isset ( $param [1] )) { $replace [] = call_user_func ( $param [1], $log [$param [0]] ); } else { $replace [] = $log [$param [0]]; } } $data ['remark'] = str_replace ( $match [0], $replace, $action_info ['log'] ); } else { $data ['remark'] = $action_info ['log']; } } else { $data ['remark'] = '操作url:' . $_SERVER ['REQUEST_URI']; } M ( 'ActionLog' )->add ( $data ); if (! empty ( $action_info ['rule'] )) { $rules = parse_action ( $action, $user_id ); $res = execute_action ( $rules, $action_info ['id'], $user_id ); } } function parse_action($action = null, $self) { if (empty ( $action )) { return false; } if (is_numeric ( $action )) { $map = array ( 'id' => $action ); } else { $map = array ( 'name' => $action ); } $info = M ( 'Action' )->where ( $map )->find (); if (! $info || $info ['status'] != 1) { return false; } $rules = $info ['rule']; $rules = str_replace ( '{$self}', $self, $rules ); $rules = explode ( ';', $rules ); $return = array (); foreach ( $rules as $key => &$rule ) { $rule = explode ( '|', $rule ); foreach ( $rule as $k => $fields ) { $field = empty ( $fields ) ? array () : explode ( ':', $fields ); if (! empty ( $field )) { $return [$key] [$field [0]] = $field [1]; } } if (! array_key_exists ( 'cycle', $return [$key] ) || ! array_key_exists ( 'max', $return [$key] )) { unset ( $return [$key] ['cycle'], $return [$key] ['max'] ); } } return $return; } function execute_action($rules = false, $action_id = null, $user_id = null) { if (! $rules || empty ( $action_id ) || empty ( $user_id )) { return false; } $return = true; foreach ( $rules as $rule ) { $map = array ( 'action_id' => $action_id, 'user_id' => $user_id ); $map ['create_time'] = array ( 'gt', NOW_TIME - intval ( $rule ['cycle'] ) * 3600 ); $exec_count = M ( 'ActionLog' )->where ( $map )->count (); if ($exec_count > $rule ['max']) { continue; } $Model = M ( ucfirst ( $rule ['table'] ) ); $field = $rule ['field']; $res = $Model->where ( $rule ['condition'] )->setField ( $field, array ( 'exp', $rule ['rule'] ) ); if (! $res) { $return = false; } } return $return; } function create_dir_or_files($files) { foreach ( $files as $key => $value ) { if (substr ( $value, - 1 ) == '/') { mkdir ( $value ); } else { @file_put_contents ( $value, '' ); } } } if (! function_exists ( 'array_column' )) { function array_column(array $input, $columnKey, $indexKey = null) { $result = array (); if (null === $indexKey) { if (null === $columnKey) { $result = array_values ( $input ); } else { foreach ( $input as $row ) { $result [] = $row [$columnKey]; } } } else { if (null === $columnKey) { foreach ( $input as $row ) { $result [$row [$indexKey]] = $row; } } else { foreach ( $input as $row ) { $result [$row [$indexKey]] = $row [$columnKey]; } } } return $result; } } function get_table_name($model_id = null) { if (empty ( $model_id )) { return false; } $Model = M ( 'Model' ); $name = ''; $info = $Model->getById ( $model_id ); if ($info ['extend'] != 0) { $name = $Model->getFieldById ( $info ['extend'], 'name' ) . '_'; } $name .= $info ['name']; return $name; } function get_model_attribute($model_id, $group = true) { static $list; if (empty ( $model_id ) || ! is_numeric ( $model_id )) { return ''; } if (empty ( $list )) { } if (! isset ( $list [$model_id] )) { $map = array ( 'model_id' => $model_id ); $extend = M ( 'Model' )->getFieldById ( $model_id, 'extend' ); if ($extend) { $map = array ( 'model_id' => array ( "in", array ( $model_id, $extend ) ) ); } $info = M ( 'Attribute' )->where ( $map )->order("corder asc,id asc")->select (); $list [$model_id] = $info; } $attr = array (); foreach ( $list [$model_id] as $value ) { $attr [$value ['name']] = $value; } if ($group) { $sort = M ( 'Model' )->getFieldById ( $model_id, 'field_sort' ); if (empty ( $sort ) ) { $group = array ( 1 => array_merge ( $attr ) ); } else { $group = json_decode ( $sort, true ); $group[1] = array_reverse($group[1]); $keys = array_keys ( $group ); foreach ( $group as &$value ) { foreach ( $value as $key => $val ) { $value [$key] = $attr [$val]; unset ( $attr [$val] ); } } if (! empty ( $attr )) { $group [$keys [0]] = array_merge ( $group [$keys [0]], $attr ); } } $attr = $group; } return $attr; } function api($name, $vars = array()) { $array = explode ( '/', $name ); $method = array_pop ( $array ); $classname = array_pop ( $array ); $module = $array ? array_pop ( $array ) : 'Common'; $callback = $module . '\\Api\\' . $classname . 'Api::' . $method; if (is_string ( $vars )) { parse_str ( $vars, $vars ); } return call_user_func_array ( $callback, $vars ); } function get_table_field($value = null, $condition = 'id', $field = null, $table = null) { if (empty ( $value ) || empty ( $table )) { return false; } $map [$condition] = $value; $info = M ( ucfirst ( $table ) )->where ( $map ); if (empty ( $field )) { $info = $info->field ( true )->find (); } else { $info = $info->getField ( $field ); } return $info; } function get_link($link_id = null, $field = 'url') { $link = ''; if (empty ( $link_id )) { return $link; } $link = M ( 'Url' )->getById ( $link_id ); if (empty ( $field )) { return $link; } else { return $link [$field]; } } function get_cover($cover_id, $s='',$field = null){ if(empty($cover_id)){ return false; } $picture = M('Picture')->where(array('status'=>1))->getById($cover_id); if($s){ $path = $picture['path']; $name = basename($path); $imgurl1 = str_replace($name,$s.$name,$path); if(!file_exists(WEB_PATH.$imgurl1)) $imgurl1 = str_replace($name,'t_'.$name,$path); if(!file_exists(WEB_PATH.$imgurl1)) $imgurl1 = $path; return $imgurl1; } $t = empty($field) ? $picture : $picture[$field]; return $t; } function get_case_cover($path, $s='t1_'){ if(empty($path)) return ''; $name = basename($path); $imgurl1 = str_replace($name,$s.$name,$path); return $imgurl1; } function get_thumb_path($path, $s='t1_'){ if(empty($path)) return ''; $name = basename($path); $imgurl1 = str_replace($name,$s.$name,$path); return $imgurl1; } function get_ossthumb_path($path, $s='t1_'){ if(empty($path)) return ''; if(strpos($path, 'jiangcdn.com') || strpos($path, 'case.zhuhuos.com')){ if($s == 't3_t1_'){ $s = 't1_'; $name = basename($path); $imgurl1 = str_replace($name,$s.$name,$path); $imgurl1 = $imgurl1.'@!pe'; }elseif($s == 't2_'){ $imgurl1 = $path.'@!case1130'; }elseif($s == 'qg_'){ $imgurl1 = $path; }elseif($s == 't1_t4_t1_'){ $s = 't1_'; $name = basename($path); $imgurl1 = str_replace($name,$s.$name,$path); $imgurl1 = $imgurl1.'@!case164'; }elseif($s == 't1_t4_t2_'){ $s = 't1_'; $name = basename($path); $imgurl1 = str_replace($name,$s.$name,$path); $imgurl1 = $imgurl1.'@!case220'; }elseif(0 === strpos($s, '@!')){ $imgurl1 = $path.$s; } }else{ $s = ('t1_t4_t2_' == $s)?'t1_t4_t1_':$s; $name = basename($path); if($s == 'qg_'){ $name = basename($path); $imgurl1 = str_replace($s,'',$path); }else{ $imgurl1 = str_replace($name,$s.$name,$path); } if(strpos($imgurl1, DOMAIN)===false){ $imgurl1 = '//img'.DOMAIN.$imgurl1; } } if($imgurl1) $imgurl1 = str_replace('http://', '//', $imgurl1); $imgurl1 = str_replace('image.jiangcdn.com', 'case.zhuhuos.com', $imgurl1); return $imgurl1; } function get_file_url($cover_id,$is_thumb=false) { return SITE_URL . get_file ( $cover_id, 'path',$is_thumb ); } function get_file($cover_id, $s='',$field = null){ if(empty($cover_id)){ return false; } $picture = M('File')->getById($cover_id); if($s){ $path = $picture['path']; $name = basename($path); $imgurl1 = str_replace($name,$s.$name,$path); if(!file_exists(WEB_PATH.$imgurl1)) $imgurl1 = str_replace($name,'t_'.$name,$path); if(!file_exists(WEB_PATH.$imgurl1)) $imgurl1 = $path; return $imgurl1; } $t = empty($field) ? $picture : $picture[$field]; return $t; } function get_cover_url($cover_id,$is_thumb=false) { return SITE_URL . get_cover ( $cover_id, 'path',$is_thumb ); } function get_picture_url($id, $img = false,$ist=false) { $url = get_cover_url ( $id ); if (! $img) return $url; $arr_id = explode(',',$id); foreach($arr_id as $uu){ $url = get_cover_url ( $uu,$ist ); $arr_img[] = ''; } return implode('',$arr_img); } function get_picture_url1($id, $name,$is_thumb=false) { $arr_id = explode(',',$id); foreach($arr_id as $uu){ $url = get_cover_url ( $uu,$is_thumb ); $arr_img[] = '
X
'; } return implode('',$arr_img); } function check_document_position($pos = 0, $contain = 0) { if (empty ( $pos ) || empty ( $contain )) { return false; } $res = $pos & $contain; if ($res != 0) { return true; } else { return false; } } function get_stemma($pids, Model &$model, $field = 'id') { $collection = array (); if (empty ( $pids )) { return $collection; } if (is_array ( $pids )) { $pids = trim ( implode ( ',', $pids ), ',' ); } $result = $model->field ( $field )->where ( array ( 'pid' => array ( 'IN', ( string ) $pids ) ) )->select (); $child_ids = array_column ( ( array ) $result, 'id' ); while ( ! empty ( $child_ids ) ) { $collection = array_merge ( $collection, $result ); $result = $model->field ( $field )->where ( array ( 'pid' => array ( 'IN', $child_ids ) ) )->select (); $child_ids = array_column ( ( array ) $result, 'id' ); } return $collection; } function keyword_unique($keyword) { if (empty ( $keyword )) return false; $map ['keyword'] = $keyword; $info = M ( 'keyword' )->where ( $map )->find (); return empty ( $info ); } function parse_config_attr($string) { $array = preg_split ( '/[,;\r\n]+/', trim ( $string, ",;\r\n" ) ); if (strpos ( $string, ':' )) { $value = array (); foreach ( $array as $val ) { list ( $k, $v ) = explode ( ':', $val ); $value [$k] = $v; } } else { $value = $array; } return $value; } function parse_field_attr($string) { if (0 === strpos ( $string, ':' )) { return eval ( substr ( $string, 1 ) . ';' ); } $array = preg_split ( '/[,;\r\n]+/', trim ( $string, ",;\r\n" ) ); if (strpos ( $string, ':' )) { $value = array (); foreach ( $array as $val ) { list ( $k, $v ) = explode ( ':', $val ); $value [$k] = $v; } } else { $value = $array; } return $value; } function get_color($time){ if($time){ if(date('Y-m-d',$time)==date('Y-m-d')){ return 'style="background-color:#ccc"'; } } } function get_list_field($data, $grid, $model) { foreach ( $grid ['field'] as $field ) { $array1 = explode ( ',', $field ); $arr_temp = array(); if(count($array1)>0) foreach($array1 as $tfi){ if($tfi){ $array = explode ( '|', $tfi ); $array [0] = trim ( $array [0] ); $farray = explode('+',$array [0]); if(count($farray)>1){ $temp = $data [$farray [0]]; if($farray [1] == 'true') $temp1 = $farray [1]; else $temp1 = $data [$farray [1]]; } else $temp = $data [$array [0]]; if (isset ( $array [1] )) { if ($array [1] == 'get_name_by_status') { $temp = get_name_by_status ( $temp, $array [0], $model ['id'] ); } else if ($array [1] == 'get_days') { $temp = get_days ( $temp, $data['begintime'] ); } else if ($array [1] == 'get_attribute_item') { $temp_array = explode('_',$array [0]); $temp = $data [$temp_array [0]]; $temp = get_attribute_item ( $temp,$temp_array [0],$temp_array[1]); } else { if($temp1) $temp = call_user_func ( $array [1], $temp,$temp1 ); else $temp = call_user_func ( $array [1], $temp ); } } $arr_temp[] = $temp; } } $data2 [$array [0]] = implode('/',$arr_temp); } if (! empty ( $grid ['format'] )) { $value = preg_replace_callback ( '/\[([a-z_]+)\]/', function ($match) use($data2) { return $data2 [$match [1]]; }, $grid ['format'] ); } else { if($data2['des_id']){ if($data['ydes_id'] && $data['ydes_id']!=$data2['des_id']){ $ye_vale = get_name($data['ydes_id']); } } $value = implode ( ' ', $data2 ); } $add_value = ''; if (! empty ( $grid ['href'] )) { $links1 = explode ( '::', $grid ['href'] ); $links = explode ( ',', $grid ['href'] ); foreach ( $links as $link ) { $array = explode ( '|', $link ); $href = $array [0]; if (preg_match ( '/^\[([a-z_]+)\]$/', $href, $matches )) { $val [] = $data2 [$matches [1]]; } else { $show = isset ( $array [1] ) ? $array [1] : $value; $href = str_replace ( array ( '[DELETE]', '[EDIT]', '[MODEL]' ), array ( 'del?id=[id]&model=[MODEL]', 'edit?id=[id]&model=[MODEL]', $model ['id'] ), $href ); if($array[4]=='redahui'){ if($data['status'] == 4 && $data['cwstatus'] == 2){ }else continue; } $href = preg_replace_callback ( '/\[([a-z_]+)\]/', function ($match) use($data) { return $data [$match [1]]; }, $href ); if($array[2]=='check1'){ if($data['sponsor']!=UID && $data['follower']!=UID && false) $val [] = ''; else $val [] = '' . $show . ''; } else if($array[2]){ $arr_m = explode(":",$href); }else $val [] = '' . $show . ''; } } $value = implode ( ' ', $val ); } $value = $end_value?$value.$end_value:$value; return $add_value.$value; } function get_name_by_status($val, $name, $model_id) { static $_name = array (); if (! isset ( $_name [$model_id] )) { $_name [$model_id] = array (); $map ['extra'] = array ( 'EXP', '!=""' ); $map ['model_id'] = $model_id; $list = M ( 'attribute' )->where ( $map )->select (); foreach ( $list as $attr ) { if (empty ( $attr ['extra'] )) continue; $extra = parse_config_attr ( $attr ['extra'] ); if (is_array ( $extra ) && ! empty ( $extra )) { $_name [$model_id] [$attr ['name']] = $extra; } } } return empty ( $_name [$model_id] [$name] [$val] ) ? $val : $_name [$model_id] [$name] [$val]; } function GetCurUrl() { $url = 'http://'; if (isset ( $_SERVER ['HTTPS'] ) && $_SERVER ['HTTPS'] == 'on') { $url = 'https://'; } if ($_SERVER ['SERVER_PORT'] != '80') { $url .= $_SERVER ['SERVER_NAME'] . ':' . $_SERVER ['SERVER_PORT'] . $_SERVER ['REQUEST_URI']; } else { $url .= $_SERVER ['SERVER_NAME'] . $_SERVER ['REQUEST_URI']; } if (stripos ( $url, '?' ) === false) { $url .= '?t=' . time (); } return $url; } function get_token() { if (! empty ( $_REQUEST ['token'] )) { session ( 'token', $_REQUEST ['token'] ); } $token = session ( 'token' ); if (empty ( $token )) { return - 1; } return $token; } function get_mid() { return session ( 'user_auth.uid' ); } function get_htype() { return session ( 'user_auth.htype' ); } function execute_sql_file($sql_path) { $sql = file_get_contents ( $sql_path ); $sql = str_replace ( "\r", "\n", $sql ); $sql = explode ( ";\n", $sql ); $orginal = 'wp_'; $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 getShort($str, $length = 40, $ext = '') { $str = htmlspecialchars($str); $str = strip_tags($str); $str = htmlspecialchars_decode($str); $strlenth = 0; $out = ''; preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/", $str, $match); foreach($match[0] as $v){ preg_match("/[\xe0-\xef][\x80-\xbf]{2}/",$v, $matchs); if(!empty($matchs[0])){ $strlenth += 1; }elseif(is_numeric($v)){ $strlenth += 0.5; }else{ $strlenth += 0.5; } if ($strlenth > $length) { $output .= $ext; break; } $output .= $v; } return $output; } function wp_file_get_contents($url){ $context = stream_context_create(array( 'http' => array( 'timeout' => 30 ) )); return file_get_contents($url, 0, $context); } function thumb($id){ return '/Public/meigong/thumb/'.$id.'.jpg'; } function big($id){ return '/Public/meigong/big/'.$id.'.jpg'; } function getArea($id,$value='joinname'){ if($id){ $area = M('Areas')->where('areaid='.$id)->getField($value); return str_replace(",","",$area); } } function getDPrice($type){ $arr[23] = '2600,7000,13500,26000'; $arr[24] = '3600,9700,18800,36000'; $arr[25] = '4800,12900,25000,48000'; $arr[26] = '8000,21600,41000,80000'; $arr[27] = '13000,35100,67000,130000'; return $arr[$type]; } function getCtype($type){ $arr[0] = '1个月(30天)'; $arr[1] = '1季度(3月)'; $arr[2] = '半年(6月)'; $arr[3] = '1年(12月)'; return $arr[$type]; } function getIP(){ return bindec( decbin( ip2long( get_client_ip () ) ) ); } function errorLog($str,$file='logs'){ if(is_array($str))$str=serialize($str); return error_log(date('Y-m-d H:i:s').'|'.$str."\r\n",3,WEB_PATH.'/_logs/'.$file.'_log.log'); } function get_str_id($list,$key='id'){ $return_arr = array(); if(count($list)>0){ foreach($list as $uu){ if($uu[$key])$return_arr[] = $uu[$key]; } } return implode(',',array_unique($return_arr)); } function set_color($p){ if($p){ return ''.$p.''; } } function SendMail($address,$title,$message,$cc,$send='',$loginame='',$passwd='') { vendor('phpMail.mailer'); $mail = new Mailer(); $mail->mailServer = C('MAIL_SERVER'); $mail->mailPort = C('MAIL_PORT'); if(empty($send))$send=C('MAIL_ADDRESS'); $mail->mailSender = $send; if(empty($loginame))$loginame=C('MAIL_LOGINNAME'); $mail->mailUser = $loginame; if(empty($passwd))$passwd=C('MAIL_PASSWORD'); $mail->mailPwd = $passwd; $title = iconv('utf-8','gb2312',$title); $message = iconv('utf-8','gb2312',$message); if($mail->connect()){ $dd = date('Y-m-d H:i:s'); error_log($dd.'---'.$message.$address."\n",3,WEB_PATH.'/cc.log'); return ($mail->send($address,$title,$message,'',$cc)); } return false; } function fileext($file) { return pathinfo($file, PATHINFO_EXTENSION); } function img2thumb($src_img, $dst_img, $width = 75, $height = 75, $cut = 0, $proportion = 0) { if(!is_file($src_img)) { return false; } $ot = fileext($dst_img); $otfunc = 'image' . ($ot == 'jpg' ? 'jpeg' : $ot); $srcinfo = getimagesize($src_img); $src_w = $srcinfo[0]; $src_h = $srcinfo[1]; $type = strtolower(substr(image_type_to_extension($srcinfo[2]), 1)); $createfun = 'imagecreatefrom' . ($type == 'jpg' ? 'jpeg' : $type); $dst_h = $height; $dst_w = $width; $x = $y = 0; if(($width> $src_w && $height> $src_h) || ($height> $src_h && $width == 0) || ($width> $src_w && $height == 0)) { $proportion = 1; } if($width> $src_w) { $dst_w = $width = $src_w; } if($height> $src_h) { $dst_h = $height = $src_h; } if(!$width && !$height && !$proportion) { return false; } if(!$proportion) { if($cut == 0) { if($dst_w && $dst_h) { if($dst_w/$src_w> $dst_h/$src_h) { $dst_w = $src_w * ($dst_h / $src_h); $x = 0 - ($dst_w - $width) / 2; } else { $dst_h = $src_h * ($dst_w / $src_w); $y = 0 - ($dst_h - $height) / 2; } } else if($dst_w xor $dst_h) { if($dst_w && !$dst_h) { $propor = $dst_w / $src_w; $height = $dst_h = $src_h * $propor; } else if(!$dst_w && $dst_h) { $propor = $dst_h / $src_h; $width = $dst_w = $src_w * $propor; } } } else { if(!$dst_h) { $height = $dst_h = $dst_w; } if(!$dst_w) { $width = $dst_w = $dst_h; } $propor = min(max($dst_w / $src_w, $dst_h / $src_h), 1); $dst_w = (int)round($src_w * $propor); $dst_h = (int)round($src_h * $propor); $x = ($width - $dst_w) / 2; $y = ($height - $dst_h) / 2; } } else { $proportion = min($proportion, 1); $height = $dst_h = $src_h * $proportion; $width = $dst_w = $src_w * $proportion; } $src = $createfun($src_img); $dst = imagecreatetruecolor($width ? $width : $dst_w, $height ? $height : $dst_h); $white = imagecolorallocate($dst, 255, 255, 255); imagefill($dst, 0, 0, $white); if(function_exists('imagecopyresampled')) { imagecopyresampled($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h); } else { imagecopyresized($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h); } $otfunc($dst, $dst_img,100); imagedestroy($dst); imagedestroy($src); return true; } function get_thumb($id,$width=600,$height=600,$s='t_',$is_path=false,$nothumb=false,$isrui=false){ if(!$is_path){ $imgurl=M('Picture')->where("id=$id")->getField('path'); $imgurl = WEB_PATH.$imgurl; } else $imgurl = $id; if(empty($imgurl))return false; $info = pathinfo($imgurl); if(!in_array(strtolower($info['extension']), array('jpg','jpeg','png'))){ return $imgurl; } $src = $imgurl; $image = new \Think\Image(); $image->open($imgurl); $name = basename($imgurl); $imgurl = str_replace($name,$s.$name,$imgurl); if(!$nothumb){ $name = basename($imgurl); $imgurl1 = '/Uploads/avatar/thumb/'.$name; }else $imgurl1=$imgurl; if(empty($width) ) $rs = $image->thumb(2000, $height,1,$isrui)->save($imgurl1); else if(empty($height)) $rs = $image->thumb($width, 2000,1,$isrui)->save($imgurl1); else $rs = $image->thumb($width, $height,2,$isrui)->save($imgurl1); if($rs)return $imgurl1;else return $imgurl; } function get_crop($imgurl,$width=600,$height=600,$s='q_',$x,$y,$w1,$h1){ $image = new \Think\Image(); $image->open($imgurl); $name = basename($imgurl); $imgurl = str_replace($name,$s.$name,$imgurl); $imgurl1=$imgurl; $rs = $image->crop($width, $height,$x,$y,$w1,$h1)->save($imgurl1); if($rs)return $imgurl1;else return $imgurl; } function get_thumbimg($imgurl,$width=600,$height=600,$s='t_',$scale_type=2,$isrui=false){ if(empty($imgurl))return false; $info = pathinfo($imgurl); if(!in_array(strtolower($info['extension']), array('jpg','jpeg','png','gif'))){ return $imgurl; } $src = $imgurl; $image = new \Think\Image(2); $image->open($imgurl); $name = basename($imgurl); $imgurl1 = str_replace($name,$s.$name,$imgurl); if(empty($width) ) $rs = $image->thumb(2000, $height,1,$isrui)->save($imgurl1); else if(empty($height)) $rs = $image->thumb($width, 2000,1,$isrui)->save($imgurl1); else $rs = $image->thumb($width, $height,$scale_type,$isrui)->save($imgurl1); if($rs)return $imgurl1;else return $imgurl; } function get_avatar($pic,$dir='t1'){ $default = '/Uploads/avatar/default.png'; if(empty($pic))return $default; if($dir == 'm')$path = 'mid'; else if(substr($dir, 0,1) == 's')$path = 'src'; else if(substr($dir, 0,1) == 't')$path = 'thumb'; else $path = $dir; $file = '/Uploads/avatar/'.$path.'/'.$pic; if($dir){ $name = basename($file); $file = str_replace($name,$dir.'_'.$name,$file); } if(!file_exists(WEB_PATH.$file))return $default; return $file; } function get_avatar_user($uid,$dir=''){ $role = get_user_info($uid,'role'); if(4 <= $role){ $url = get_avatar_worker($uid,$dir); }elseif(2 == $role){ $url = get_avatar_kefu($uid,$dir); }else{ $url = get_avatar_des($uid,$dir); } return $url; } function get_avatar_des($id,$dir=''){ $default = '/Uploads/avatar/default.png'; if(empty($id))return $default; if(empty($dir))$dir = '84_100'; $info = get_des_info($id); $sex = intval($info['sex'])==1?1:2; $arr_dir = explode('_', $dir); $dir = $arr_dir[0].'_'.$arr_dir[1]; $path = '1_'.$id.'.jpg@!'.$dir; $url = '//imgs.93jiang.com/avatar/rea/'.$path; $info['avatar'] = intval($info['avatar']); if($info['avatar']>0){ $v = substr($info['avatar'], -5,5); $url = $url.'?v='.$v; } return $url; } function get_avatar_kefu($id,$dir=''){ $default = '/Uploads/avatar/default.png'; if(empty($id)) return $default; if(empty($dir))$dir = '84_100'; $info = get_kefu_info($id); $sex = intval($info['sex'])==1?1:2; $arr_dir = explode('_', $dir); $dir = $arr_dir[0].'_'.$arr_dir[1]; if($arr_dir[2]){ $top = $arr_dir[2]; $path = '2_'.$id.'_'.$dir.'_'.$sex.'_'.$top; }else $path = '2_'.$id.'_'.$dir.'_'.$sex; $info['avatar'] = S('avatar_uptime_2_'.$id)?:''; return '//'.DJ_URL_IMAGE.'/'.$path.'/'.'?v='.$info['avatar']; } function get_avatar_worker($id,$dir=''){ $default = '/Uploads/avatar/default.png'; if(empty($id)) return $default; if(empty($dir))$dir = '84_100'; $role = get_user_info($id,'role'); if(empty($role)) return $default; $info = get_user_info($id); $sex = intval($info['sex'])==1?1:2; $arr_dir = explode('_', $dir); $dir = $arr_dir[0].'_'.$arr_dir[1]; if($arr_dir[2]){ $top = $arr_dir[2]; $path = $role.'_'.$id.'_'.$dir.'_'.$sex.'_'.$top; }else $path = $role.'_'.$id.'_'.$dir.'_'.$sex; $info['avatar'] = S('avatar_uptime_'.$role.'_'.$id)?:''; return '//'.DJ_URL_IMAGE.'/'.$path.'/'.'?v='.$info['avatar']; } function get_avatar_sell($id,$dir=''){ $default = '/Uploads/avatar/default.png'; if(empty($id))return $default; if(empty($dir))$dir = '84_100'; $info = get_sell_info($id); $sex = intval($info['sex'])==2?2:1; $arr_dir = explode('_', $dir); $dir = $arr_dir[0].'_'.$arr_dir[1]; if($arr_dir[2]){ $top = $arr_dir[2]; $path = '3_'.$id.'_'.$dir.'_'.$sex.'_'.$top; }else $path = '3_'.$id.'_'.$dir.'_'.$sex; return '//'.DJ_URL_IMAGE.'/'.$path.'/?v='.$info['avatar']; } function get_dqa($id){ if(empty($id))return ''; $info = M('Dqa')->where('note_id='.$id)->find(); if(empty($info) || $info['status']!=1)return ''; $avatar = get_avatar($info['uid']); if($info['rpic']){ $str .= ''; $path = get_cover($info['rpic'],'t_'); $str .= ''; } return $str; } function getPicUrl($path){ if(empty($path))return ''; return U('Resources/get/spic',array('u'=>crypt_str($path))); } function getFileUrl($path){ if(empty($path))return ''; return U('Resources/get/sfile',array('u'=>crypt_str($path))); } function get_file_arr($ids,$title='下载'){ if(empty($ids))return ''; $picture = M('File')->where('id IN('.$ids.')')->field('path')->select(); $str = ''; if($picture){ foreach($picture as $uu){ if($uu['path']){ $path = $uu['path']; $name = basename($path); $u_path = getFileUrl($path); $str .= ''.$title.''; } } } return $str; } function get_pic_arr($ids,$title=null){ if(empty($ids))return ''; $picture = M('Picture')->where('status=1 AND id IN('.$ids.')')->field('path')->select(); $str = ''; $_title = $title; if($picture){ foreach($picture as $key=>$uu){ if($uu['path']){ $path = $uu['path']; $name = basename($path); if(strpos($path, 'jiangcdn.com')){ $u_path2 = $path.'@!resources700'; if(!isset($_title)){ $path .= '@!resources150'; $title = ''; } $uu['path'] .= '@!wt'; $str .= ''.$title.''; }else{ $imgurl1 = str_replace($name,'t1_'.$name,$path); $u_path = getPicUrl($imgurl1); if(time()>strtotime('2014-05-11')){ $imgurl2 = str_replace($name,'t2_'.$name,$path); $u_path2 = getPicUrl($imgurl2); }else $u_path2 = getPicUrl($uu['path']); if(!isset($_title)){ $title = ''; } $str .= ''.$title.''; } } } } return $str; } function setHide($str,$start,$len){ if(empty($str))return $str; $len = intval($len); if(empty($len))$len=strlen($str)-$start; $rep = sprintf("%'*".$len."s",'*'); return substr_replace($str,$rep,$start,$len); } function setcnHide($str,$start=1,$len=10){ $length = mb_strlen($str); if(!isset($start) && !isset($len)){ $start = 1; $len = mb_strlen($str,'utf-8')-1; } $rstr = ''; for($i=0;$i<$length;$i++){ $n = msubstr($str,$i,1,'utf-8',false); if($start<=$i && ($start+$len)>$i){ $rstr .= '*'; }else $rstr .= $n; } return $rstr; } function getRandPwd($type=1,$num1=4){ if($type==2) $arrLetter = 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","y"); else if($type==2) $arrLetter = 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"); else $arrLetter = array('1','2','3','4','5','6','7','8','9'); for($i=0;$i<2;$i++){ shuffle($arrLetter); } $arrLKey = array_rand($arrLetter,$num1); $arrKey = array(); for($i=0;$i<$num1;$i++){ $arrKey[] = $arrLetter[$arrLKey[$i]]; } shuffle($arrKey); return implode('',$arrKey); } function sendMessage($uid='',$contents='',$role=1,$arr){ if(empty($uid) || empty($role) || empty($contents))return false; $data['role'] = $role; $data['ctype'] = $arr['ctype']; $data['uid'] = $uid; $srole = isset($arr['srole'])?$arr['srole']:PE_ROLE; $data['srole'] = $srole; $did = $arr['send']; if(empty($did)){ if($srole == 1) $did = DUID; elseif($srole == 2) $did = CUID; elseif($srole == 3) $did = BUID; elseif($srole == 4) $did = WUID; } if(empty($did)){ $data['srole'] = 0; $did = 1; } $data['send'] = $did; $data['title'] = $arr['title']; $data['url'] = $arr['url']; $data['contents'] = $contents; return D('Home/Message')->add($data); } function sendTMessage($arr){ if(empty($arr['uid']) || empty($arr['fid']) || empty($arr['role']) || empty($arr['ctype'])){ return false; } return D('Home/Msgtop')->tadd($arr); } function reTMessage($role,$uid){ $tmessage = C('TOP_MESSAGE'); $key = 'msgtop_'.$role.'_'.$uid.'_list'; $res = S($key); if(empty($res)){ $list = D('Home/Msgtop')->lists(array('role'=>$role,'uid'=>$uid,'status'=>1)); $res = array(); if(count($list)>0){ foreach($list as $k=>$u){ $contents = $tmessage[$u['ctype']]; if(3 == PE_ROLE){ $fname = get_des_info($u['fid'],'nickname'); } else { $fname = get_sell_info($u['fid'],'nickname'); } $contents = str_replace('[fid]', $fname, $contents); $contents = str_replace('[num]', ''.$u['num'].'', $contents); $contents = str_replace('[rid]', $u['rid'], $contents); $contents = str_replace('[rid1]', $u['rid1'], $contents); $contents = str_replace('[id]', $u['id'], $contents); $res[$k]['contents'] = $contents; } } S($key,$res); } return $res; } function numToImage($str,$w=130,$h=28,$rand=true,$fontsize=20,$pfonts=16) { Header("Content-type:image/png"); $nwidth=strlen($str)*$pfonts+10; $nheight=$h; $font = DJ_IMGPATH.'/font/brushsci.ttf'; $randval=$str; $im=@imagecreate($nwidth,$nheight) or die("error"); $background_color=imagecolorallocate($im,255,255,255); $text_color=imagecolorallocate($im,0,0,0); imagefilledrectangle($im,0,0,$nwidth-1,$nheight-1,$background); imagerectangle($im,0,0,$nwidth-1,$nheight-1,$background_color); $left = 5;$top = 23; for($i=0;$i=$pe_time){ $pe_time = $btime; } if($time>$pe_time){ $tt = $time - $pe_time ; return get_etime($tt,3); } else return '已过期'; } function get_endtime($begin,$month=1){ $month = intval($month); $time = date('Y-m-d',$begin); $timem = date('m',$begin); $timed = date('d',$begin); if($timem == '01' && ($timed>=28 && $timed<=31) && $month==1){ $et = strtotime(date('Y',$begin).'-03-01')-3600*24; }else{ $et = strtotime(date('Y-m-d', strtotime($time.$month.' month'))); } return $et-1; } function get_lctime ($time,$ltime=86400){ $time = $time+$ltime; if(empty($time))return '已到期'; $tt = $time - time() ; return get_etime($tt,2); } function get_etime($etime=0,$type=1){ if($etime){ $day = intval($etime/(3600*24)); $str = ''; if($day){ $str = $day.'天'; } $etime = $etime - ($day)*3600*24; $mm = intval($etime/(3600)); if($mm || $str){ if(1==$type || $type==3){ if($mm)return $str.$mm.'小时'; else return $str; } $str = $str.$mm.'小时'; } $etime = $etime - ($mm)*3600; $fff = intval($etime/(60)); if(2==$type || $type==3){ if($fff)return $str.$fff.'分钟'; else return $str; } $etime = $etime - ($fff)*60; return $etime.'秒'; } } function get_stop_info($id=0){ if(empty($id))return '无'; $petime = M('Prostop')->where('pid='.$id.' AND status=1')->getField('petime'); if(empty($petime))return '无'; $str = date('Y-m-d',$petime); $str .= '暂停记录'; return $str; } function get_checkin_info($id=0){ if(empty($id))return '无'; $checktime = M('Checkin')->where('uid='.$id)->order('id DESC')->getField('cdate'); if(empty($checktime))return '未签到'; return date('m.d',strtotime($checktime)).' 签到'; } function getDiffDay($time1,$time2=0,$type=1){ $time2 = empty($time2)?time():$time2; if(2 == $type){ return intval(abs($time1-$time2)/(3600*24)); }else return ceil(($time1-$time2)/(3600*24)); } function setSelAccount($uid,$arr,$type){ $rs = D('Business/Saccount') -> setAccount($uid,$arr,$type); $key = C('seller_account_key').'_'.$uid; if($rs)S($key,null); return $rs; } function setDesAccount($uid,$arr,$type,$contents=array()){ $rs = D('Designer/Daccount') -> setAccount($uid,$arr,$type,$contents); $key = C('des_account_key').'_'.$uid; if($rs)S($key,null); return $rs; } function setKeAccount($uid,$arr,$type){ $rs = D('Ke/Kaccount') -> setAccount($uid,$arr,$type); $key = C('jiangke_account_key').'_'.$uid; if($rs)S($key,null); return $rs; } function setJAccount($uid,$arr,$type){ $rs = D('Crm/Jaccount') -> setAccount($uid,$arr,$type); $key = C('jingjiren_account_key').'_'.$uid; if($rs)S($key,null); return $rs; } function getSelAccount($uid,$field='usery',$cache=true){ $key = C('seller_account_key').'_'.$uid; if($cache)$arr = S($key); if(empty($arr)){ $arr = D('Business/Saccount') -> getAccount($uid); S($key,$arr); } $upvalue = C('ACCOUNT_UP_VALUE')?C('ACCOUNT_UP_VALUE'):500000; if(($arr['userb']+$arr['usery'])>$upvalue){ D('Business/Seller')->logout(); redirect('http://www'.DOMAIN.'/Index/serror/');die(); } if($field){ $r = intval($arr[$field]); $r = $r<=0?0:$r; return $r; } return $arr; } function getDesAccount($uid,$field='usera'){ $key = C('des_account_key').'_'.$uid; $arr = S($key); if(empty($arr)){ $arr = D('Designer/Daccount') -> getAccount($uid); S($key,$arr); } $upvalue = C('ACCOUNT_UP_VALUE')?C('ACCOUNT_UP_VALUE'):500000; $selfmaster = C('SELF_MASTER')?C('SELF_MASTER'):''; if(($arr['userb']+$arr['usery'])>$upvalue && $uid!=10004 && !in_array($uid, $selfmaster)){ D('Designer/Designer')->logout(); redirect('http://www'.DOMAIN.'/Index/serror/');die(); } if($field){ $r = intval($arr[$field]); $r = $r<=0?0:$r; return $r; } return $arr; } function getKeAccount($uid,$field='usery',$cache=true){ $key = C('jiangke_account_key').'_'.$uid; if($cache)$arr = S($key); if(empty($arr)){ $arr = D('Ke/Kaccount') -> getAccount($uid); S($key,$arr); } $upvalue = C('ACCOUNT_UP_VALUE')?C('ACCOUNT_UP_VALUE'):500000; if(($arr['userb']+$arr['usery'])>$upvalue){ D('Ke/Jiangke')->logout(); redirect('http://www'.DOMAIN.'/Index/serror/');die(); } if($field){ $r = intval($arr[$field]); $r = $r<=0?0:$r; return $r; } return $arr; } function getJAccount($uid,$field='usery',$cache=true){ $key = C('jingjiren_account_key').'_'.$uid; if($cache)$arr = S($key); if(empty($arr)){ $arr = D('Crm/Jaccount') -> getAccount($uid); S($key,$arr); } $upvalue = C('ACCOUNT_UP_VALUE')?C('ACCOUNT_UP_VALUE'):500000; if(($arr['userb']+$arr['usery'])>$upvalue){ redirect('http://www'.DOMAIN.'/Index/serror/');die(); } if($field){ $r = intval($arr[$field]); $r = $r<=0?0:$r; return $r; } return $arr; } function getExpByLevel($point=0,$level=1){ $explevel = C('DES_EXP_LEVEL'); $exp = C('DES_EXP_POINT'); $upoint = $explevel[$level]; $area = $exp[$level]; $value = $point-$area[0]; $value = $value>=$upoint?$upoint:$value; return $value>0?$value:0; } function getDesExp($level=1){ $explevel = C('DES_EXP_LEVEL'); return $explevel[$level]; } function getDesPOINT($ctype=null){ $explevel = C('DES_POINT'); foreach ($explevel as $key => $value) { if($ctype == $key){ return $value; } } } function getErrorMsg($type=''){ $arr['value_less'] = '您的冻结余额不足'; $arr['value_unexist'] = '不存在该帐户信息'; $arr['value_nochange'] = '没有需要更新的数据'; return $arr[$type]?$arr[$type]:'未知错误'; } function Paging($mod,$map,$field=true,$limit='10',$order='id desc',$pamap) { $model=M($mod); $count = $model->where($map)->count(); $Page = new \Think\Page($count,$limit); $Page->setConfig('next', '下一页'); $Page->setConfig('prev', '上一页'); if(empty($pamap)) {$pamap = $map ;} foreach($pamap as $key=>$val){ $Page->parameter[$key] = urlencode($val); } $show = $Page->show(); $list = $model->field($field)->where($map)->order($order)->limit($Page->firstRow.','.$Page->listRows)->select(); $arr=array(); $arr['list']=$list; $arr['show']=$show; $arr['tolnum'] = $count; return $arr; } function pages($count,$limit=15,$pamap=array(),$style=array(),$yu){ $Page = new \Think\Page($count,$limit); $Page->setConfig('next', '下一页'); $Page->setConfig('prev', '上一页'); if($style){ foreach($style as $key=>$value){ $Page->setConfig($key,$value); } } foreach($pamap as $key=>$val){ $Page->parameter[$key] = urlencode($val); } $show = $Page->show(); if($yu){ $show = str_replace('www',$yu,$show); } $arr=array(); $arr['first']=$Page->firstRow; $arr['lim']=$Page->listRows; $arr['show']=$show; $arr['tolnum'] = intval($Page->totalPages); $arr['allnum'] = $count; return $arr; } function _pages($model,$map,$limit=20,$style,$_search,$field = true,$order = '`id` DESC'){ $count = M($model)->where($map)->count(); $arr_pages = pages($count,$limit,$_search,$style); $list = M($model)->field($field)->where($map)->order($order)->limit($arr_pages['first'],$arr_pages['lim'])->select(); $data['pages'] = $arr_pages; $data['list'] = $list; return $data; } function getShopInfo($sid,$field='',$default=''){ if(empty($sid))return false; $key = C('shop_info_key').'_'.$sid; $info = S($key); if(empty($info)){ $info = D('Business/Shopinfo')->detail($sid); S($key ,$info); } if($info['htype']) $info['htype_name'] = get_ht_type($info['htype']); else $info['htype_name'] = get_ht_type($info['htype']); if($field){ if(empty($info[$field]))return $default;else return $info[$field]; } return $info; } function setArrToShop(&$arr= array(),$id='shopid',$comp=true){ if(empty($arr))return $arr; foreach($arr as $key=>$uu){ if(empty($uu[$id])){ $arr_info = get_sell_first_shop($uu['sid']); }else{ $arr_info = getShopInfo($uu[$id]); } $arr[$key]['shopname'] = $arr_info['shopname']; $arr[$key]['htype_name'] =$arr_info['htype_name']; $arr[$key]['fname'] = $arr_info['fname']; $arr[$key]['mobile'] = $arr_info['mobile']; $arr[$key]['tel'] = $arr_info['tel']; $arr[$key]['url'] = $arr_info['url']; $arr[$key]['qq'] = $arr_info['qq']; $arr[$key]['auth_type'] = $compinfo['auth_type']; if($comp){ $compinfo = get_sell_info($uu['sid']); $arr[$key]['company'] = $compinfo['company']; $arr[$key]['lxtel'] = $compinfo['lxtel']; $arr[$key]['lxname'] = $compinfo['lxname']; $arr[$key]['nickname'] = $compinfo['nickname']; $arr[$key]['address'] = get_city($compinfo['area'],'joinname'); } } return $arr; } function get_sell_first_shop($sid){ if(empty($sid)) return false; $key = 'sell_first_shop_'.$sid; $shop = S($key); if(empty($shop)){ $shop = M('shopinfo')->where('sid ='.$sid.' and status = 1')->order('id ASC')->find(); if($shop['htype']) $shop['htype_name'] = get_ht_type($shop['htype']); S($key,$shop); } return $shop; } function doreg($content,$type){ $reg=''; $content = trim($content); if($type=='id') $reg ='/(^\d{18}$)|(^\d{17}(\d|X|x)$)|(^[A-Z]{1,2}[0-9]{6}\([0-9A]\)$)/'; else if($type=='email') $reg = '/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/'; else if($type=='cell') $reg = '/^1[3|4|5|8|7|6|9][0-9]\d{4,8}$/'; else if($type=='area') $reg = '/(0[1-9]{2,3})/'; else if($type=='tel') $reg = '/^(1(([3578][0-9])|(47)|[8][0126789]))\d{8}$/'; else if($type=='isnum') $reg = '/^[0-9]*$/'; else if($type=='url') $reg = '/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/'; else if($type=='letl') $reg = '/(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}/'; else if($type=='username'){ $reg = '/^[0-9a-zA-Z]{4,20}$/'; }else if($type == 'nickname'){ $num = (strlen($content) + mb_strlen($content,'UTF8')) / 4; if($num <0 || $num >6) return true; return false; }else if($type == 'truename'){ $num = (strlen($content) + mb_strlen($content,'UTF8')) / 4; if($num <0 || $num >15) return true; return false; }else if($type == 'hkmactw_tel'){ $reg = '/^\d{3,4}-\d{8,9}$/'; } $res = preg_match($reg,$content); return empty($res)?true:false; } function trim_all($str){ $qian=array(" "," ","\t","\n","\r"); $hou=array("","","","",""); return str_replace($qian,$hou,$str); } function check_empty_char(&$content){ if(empty($content)) return false; $before = strlen($content); $content = trim_all($content); $after = strlen($content); if($before == $after){ return $content; } return false; } function canCheckin($id=''){ $petime = time(); $cando = false;$tt = 0; if($petime>=(TODAY_TIME+5*3600) && $petime<=(TODAY_TIME+10*3600)){ $cando = true; $tt = 1; } if($petime>=(TODAY_TIME+17*3600+1800) && $petime<=(TODAY_TIME+24*3600)){ $cando = true; $tt = 2; } $res=array( 'cando'=>$cando, 'tt'=>$tt, 'am'=>false, 'pm'=>false, ); if($id){ $dd = date('Y-m-d'); $info = M('Checkin')->where('uid='.$id.' AND role=1 AND cdate="'.$dd.'"')->field('ctime,etime')->find(); if($info['ctime'])$res['am'] = true; if($info['etime'])$res['pm'] = true; } return $res; } function get_checkin_status($type=null){ if(!isset($type)) return false; $arr=array( 'yes'=>'已签到', 'am'=>'上午签到', 'pm'=>'下午签到', 'no'=>'未签到', ); return $arr[$type]; } function getMeans($type){ if(empty($type))return false; $str = '无|产品照片|产品参数|产品介绍文字'; $arr_str = explode('|',$str); return $arr_str[$type]; } function get_needs_means($str){ $arr = explode(',',$str); $rstr=''; foreach($arr as $value){ $rstr.=getMeans($value).' '; } return $rstr; } function greeting($type=null){ $h=date('G'); if ($h<11){$m='早上好';$n=',新的一天开始了,好好工作~';} else if ($h<13) {$m='中午好';$n=',该吃午饭了哦~';} else if ($h<18) {$m='下午好';$n=',带着满满的期待,发挥创意工作吧~';} else {$m='晚上好';$n=',下班啦,要注意休息哦!';} if(isset($type)) return $m; return $m.$n; } function isfull($means=null){ $means=explode(',',$value['means']); if(count($means)==3) return '完整'; return '不完整'; } function get_field_distinct($model,$map,$field){ if(empty($model) || empty($field)) return false; $r=M($model)->distinct(true)->where($map)->getField($field,true); return $r; } function getMonthLastDay($time) { $month = date('m',$time); $year = date('Y',$time); switch ($month) { case 4 : case 6 : case 9 : case 11 : $days = 30; break; case 2 : if ($year % 4 == 0) { if ($year % 100 == 0) { $days = $year % 400 == 0 ? 29 : 28; } else { $days = 29; } } else { $days = 28; } break; default : $days = 31; break; } return $days; } function getPeendTime($begin){ $days = getMonthLastDay($begin); return strtotime(date('Y-m-d',$begin+($days-1)*3600*24))+(3600*24-1); } function getLevelStyle($c,$style,$type='id'){ if($type=='id'){ $level=get_des_info($c,'level'); if(empty($level)) $level=0; }else{ $level=$c; } return strtolower($style.'_'.get_des_level($level)); } function setPrice($p){ return '¥'.$p.'元'; } function getCityByIP($ip){ if(empty($ip))return ''; $json = ''; if(empty($json)){ $address = new Org\Net\IpLocation('qqwry_lastest.dat'); $area = $address->getlocation(long2ip($ip)); if($area){ $area['country'] = iconv('gb2312','UTF-8',$area['country']); } $areaname = $area['country']; }else{ $areaname = ''; } return $areaname; } function sendCellTemp($tel,$contents,$params=array()){ if(empty($tel) || empty($contents))return false; $ctype = $params['ctype']; $gateway = $params['gateway']; if(is_array($contents) && $ctype){ $gateway = $gateway?$gateway:'alisms'; $extdata = $contents; $rsdata = D('Home/Sms')->getTempContent($ctype,$contents); $contents = $rsdata['contents']; if(1 != $rsdata['status']) return false; }else{ $extdata = array(); } $data = array('tel'=>$tel,'contents'=>$contents,'ctime'=>time(),'extdata'=>serialize($extdata)); if($gateway) $data['gateway'] = $gateway; if($params['ctype']){ $data['ctype'] = $params['ctype']; $data['cid'] = $params['cid']?$params['cid']:0 ; } if($params['rid']) $data['rid'] = $params['rid']; M('CellTemp')->add($data); } function sendLogsTemp($sid,$des_id,$ctype,$cvalue=0,$profession=1,$param){ if(empty($des_id) || empty($ctype) || empty($sid))return false; if(in_array($sid,array(80020,80001,80002,80003,80004,80005,101944,101946)))return false; $tdata = array('sid'=>$sid,'des_id'=>$des_id,'ctype'=>$ctype,'ctime'=>time(),'cvalue'=>$cvalue,'profession'=>$profession); if(BROKER) $tdata['broker'] = BROKER; if(defined('ORIGIN')) $tdata['origin'] = ORIGIN; if($param['cid']) $tdata['cid'] = intval($param['cid']); if($param['begintime']) $tdata['btime'] = intval($param['begintime']); if($param['endtime']) $tdata['etime'] = intval($param['endtime']); $uinfo = get_user_info($des_id); if($uinfo['tid']) $tdata['mid'] = $uinfo['tid']; $rs = M('temp_logs')->add($tdata); $key = 'templog_info_key'; S($key,null); S($key.'_'.$ctype,null); S($key.'_shou',null); return $rs; } function sendCell1($tel,$content){ if($tel == '13869169930')return false; $gtel = substr($tel,0,2); if($gtel=='17' || $gtel=='16')return false; $time = date('YmdHis'); $uri = "http://183.129.206.158:8092/ums/no"; $account = 'admin@16586'; $rece = 'b14153bf58f64efb94e4f73aa9c96f1d'; $data = " SEND ".$time." ".$account." ".$rece."
".$tel." ".$content."
"; $data = base64_encode($data); $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $uri ); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ($ch, CURLOPT_TIMEOUT,20); curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data ); $return = curl_exec ( $ch ); $return = base64_decode($return); preg_match_all("/\d+/", $return, $status); curl_close ( $ch ); $ip = getIP(); $add = array(); $add['tel'] = $tel; $add['contents'] = $content; $add['cip'] = $ip; $add['ctime'] = time(); if($status[0][0]=="1") $add['status'] = 1; else $add['status'] = 0; M('TelMessage')->add($add); return $status[0][0]=="1"?true:false; } function esoftsms_v2($send_tel, $send_str) { $url = 'https://web.esoftsms.com/v2sms.aspx'; $userid = '752'; $account = 'RHSDK23'; $passwd = 'RHSdk23@'; $signName = '【杭州佰迎网络科技有限公司】'; $send_str = $signName . $send_str; $data = [ 'userid' => $userid, 'timestamp' => date('YmdHis'), 'mobile' => $send_tel, 'content' => $send_str, 'sendTime' => '', 'action' => 'send', 'extno' => '', ]; $data['sign'] = md5($account . $passwd . $data['timestamp']); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $result = curl_exec($ch); if (curl_errno($ch)) { $rdata = ['status' => 0, 'msg' => 'cURL 错误: ' . curl_error($ch)]; curl_close($ch); return $rdata; } else { curl_close($ch); } $xml = $result ? simplexml_load_string($result) : ''; if (empty($xml)) { $rdata = ['status' => 0, 'msg' => '发送失败']; return $rdata; } $returnstatus = $xml ? (string)$xml->returnstatus : 'Faild'; if ($returnstatus === 'Success') { $rdata['status'] = 1; $rdata['task_id'] = (string)$xml->taskID;; $rdata['msg'] = '发送成功'; } else { $rdata['msg'] = (string)$xml->message; $rdata['status'] = 0; } $ip = getIP(); $add = array(); $add['tel'] = $send_tel; $add['contents'] = $send_str; $add['request'] = $result; $add['ctime'] = time(); $add['cip'] = $ip; if($result1>0) $add['status'] = 0; else $add['status'] = 1; M('TelMessage')->add($add); return $rdata; } function sendCell($send_tel,$send_str) { if($send_tel == '13869169930')return false; $gtel = substr($send_tel,0,2); if(!function_exists('curl_init')) return 'error1'; if(!function_exists('mb_convert_encoding')) return 'error2'; return esoftsms_v2($send_tel, $send_str); $config = api('Config/lists'); C($config); $all_menpai = C('MENPAI_YYTEL'); if($all_menpai[$send_tel]){ $send_tel = $all_menpai[$send_tel]; } $url = 'http://api.esoftsms.com/msg/HttpBatchSendSM'; $post_data = array(); $post_data['account'] = 'SDK0176'; $post_data['pswd'] = 'SDKchina@123'; $post_data['mobile'] = $send_tel; $message = '【杭州佰迎网络科技有限公司】'.$send_str; $post_data['msg'] = rawurlencode($message); $post_data['needstatus'] = 'false'; $post_data['product'] = ''; $post_data['extno'] = ''; $o = ""; foreach ($post_data as $k => $v) { if ($k == 'msg') $o .= "$k=" . urlencode($v) . "&"; else $o .= "$k=" . ($v) . "&"; } $post_data = substr($o, 0, -1); $twoLetter = substr($send_tel,0,2); if('11' == $twoLetter || '12' == $twoLetter){ $rightTel = false; }else{ $rightTel = true; } if(DOMAIN == '.93jiang.com' && $rightTel){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $result = curl_exec($ch); curl_close($ch); }elseif(false == $rightTel){ $result = '0,1'; }else{ $result = '1,0'; } $arrret = explode(',', $result); $result1 = $arrret[1]; $ip = getIP(); $add = array(); $add['tel'] = $send_tel; $add['contents'] = $message; $add['request'] = $result; $add['ctime'] = time(); $add['cip'] = $ip; if($result1>0) $add['status'] = 0; else $add['status'] = 1; M('TelMessage')->add($add); if($result1>0) return false; else return true; } function _en_de_str($Str_Message) { $Len_Str_Message=STRLEN($Str_Message); $Str_Encrypted_Message=""; FOR ($Position = 0;$Position<$Len_Str_Message;$Position++){ $Key_To_Use = (($Len_Str_Message+$Position)+1); $Key_To_Use = (255+$Key_To_Use) % 255; $Byte_To_Be_Encrypted = SUBSTR($Str_Message, $Position, 1); $Ascii_Num_Byte_To_Encrypt = ORD($Byte_To_Be_Encrypted); $Xored_Byte = $Ascii_Num_Byte_To_Encrypt ^ $Key_To_Use; $Encrypted_Byte = CHR($Xored_Byte); $Str_Encrypted_Message .= $Encrypted_Byte; } RETURN $Str_Encrypted_Message; } function crypt_str($code){ $code = trim($code); if(empty($code))return ''; $code .= '-'.'$%$#%^%&**####@@'; $res = base64_encode(_en_de_str($code)).'+'; $res = str_replace('/', '[]', $res); return $res; } function uncrypt_str($code){ $code = trim($code); if(empty($code))return ''; $code = str_replace('[]', '/', $code); $code = base64_decode(substr($code,0,strlen($code)-1)); $code = _en_de_str($code); if(strpos($code, '$%$#%^%&**####@@') === false) return ''; return str_replace('-'.'$%$#%^%&**####@@','',$code); } function get_admin_name($id = null){ if(empty($id)){ return ""; } $list = M('Member')->where('uid='.$id.' AND status=1')->field('qq,nickname')->find(); $res['nickname'] = $list['nickname']; $res['qq'] = $list['qq']; $res['qqm']='点击这里给我发消息 '; return $res; } function get_help_cate($id=0,$field='',$default='',$upcate = false,$linkstr = '-'){ $id = intval($id); if(empty($id))return $default; $key = 'helpcate_detail_'.$id; $info = S($key); if(empty($info)){ $info = D('Service/HelpCate')->detail($id); S($key,$info); } if($field){ if(empty($info[$field])) $res = $default;else $res = $info[$field]; if($upcate){ $res = get_help_cate($info['upid'],'title').$linkstr.$res; } return $res; } return $info; } function get_help_role($type = null){ $arr_str = array(1=>'设计师',2=>'商家'); if(!isset($type)) return $arr_str; foreach($arr_str as $key=>$value){ if(check_document_position($type,$key)) $str .= $value.' '; } return $str; } function get_help_position($type = null){ $arr_str = array(1=>'首页',2=>'设计师首页',4=>'商家首页'); if(!isset($type)) return $arr_str; foreach($arr_str as $key=>$value){ if(check_document_position($type,$key)) $str .= $value.' '; } return $str; } function rDomain(){ return DOMAIN; } function get_bank($type = null){ $arr = array( 'ALIPAY'=>'支付宝', 'WXPAY'=>'微信', 'ICBC' => '中国工商银行', 'ABC' => '中国农业银行', 'CBC' => '中国建设银行', 'CMB' => '中国招商银行', 'BC' => '中国银行', 'HZBANK' => '杭州银行', 'SPDB' => '上海浦发银行', 'URCB' => '杭州联合农村商业银行', 'CMBC' => '中国民生银行', 'RCB' => '农村商业银行', 'CDB'=>'国家开发银行','ICBC'=>'中国工商银行','ABC'=>'中国农业银行','BOC'=>'中国银行','CCB'=>'中国建设银行','PSBC'=>'中国邮政储蓄银行','COMM'=>'交通银行','CMB'=>'招商银行','SPDB'=>'上海浦东发展银行','CIB'=>'兴业银行','HXBANK'=>'华夏银行','GDB'=>'广东发展银行','CMBC'=>'中国民生银行','CITIC'=>'中信银行','CEB'=>'中国光大银行','EGBANK'=>'恒丰银行','CZBANK'=>'浙商银行','BOHAIB'=>'渤海银行','SPABANK'=>'平安银行','SHRCB'=>'上海农村商业银行','YXCCB'=>'玉溪市商业银行','YDRCB'=>'尧都农商行','BJBANK'=>'北京银行','SHBANK'=>'上海银行','JSBANK'=>'江苏银行','HZCB'=>'杭州银行','NJCB'=>'南京银行','NBBANK'=>'宁波银行','HSBANK'=>'徽商银行','CSCB'=>'长沙银行','CDCB'=>'成都银行','CQBANK'=>'重庆银行','DLB'=>'大连银行','NCB'=>'南昌银行','FJHXBC'=>'福建海峡银行','HKB'=>'汉口银行','WZCB'=>'温州银行','QDCCB'=>'青岛银行','TZCB'=>'台州银行','JXBANK'=>'嘉兴银行','CSRCB'=>'常熟农村商业银行','NHB'=>'南海农村信用联社','CZRCB'=>'常州农村信用联社','H3CB'=>'内蒙古银行','SXCB'=>'绍兴银行','SDEB'=>'顺德农商银行','WJRCB'=>'吴江农商银行','ZBCB'=>'齐商银行','GYCB'=>'贵阳市商业银行','ZYCBANK'=>'遵义市商业银行','HZCCB'=>'湖州市商业银行','DAQINGB'=>'龙江银行','JINCHB'=>'晋城银行JCBANK','ZJTLCB'=>'浙江泰隆商业银行','GDRCC'=>'广东省农村信用社联合社','DRCBCL'=>'东莞农村商业银行','MTBANK'=>'浙江民泰商业银行','GCB'=>'广州银行','LYCB'=>'辽阳市商业银行','JSRCU'=>'江苏省农村信用联合社','LANGFB'=>'廊坊银行','CZCB'=>'浙江稠州商业银行','DYCB'=>'德阳商业银行','JZBANK'=>'晋中市商业银行','BOSZ'=>'苏州银行','GLBANK'=>'桂林银行','URMQCCB'=>'乌鲁木齐市商业银行','CDRCB'=>'成都农商银行','ZRCBANK'=>'张家港农村商业银行','BOD'=>'东莞银行','LSBANK'=>'莱商银行','BJRCB'=>'北京农村商业银行','TRCB'=>'天津农商银行','SRBANK'=>'上饶银行','FDB'=>'富滇银行','CRCBANK'=>'重庆农村商业银行','ASCB'=>'鞍山银行','NXBANK'=>'宁夏银行','BHB'=>'河北银行','HRXJB'=>'华融湘江银行','ZGCCB'=>'自贡市商业银行','YNRCC'=>'云南省农村信用社','JLBANK'=>'吉林银行','DYCCB'=>'东营市商业银行','KLB'=>'昆仑银行','ORBANK'=>'鄂尔多斯银行','XTB'=>'邢台银行','JSB'=>'晋商银行','TCCB'=>'天津银行','BOYK'=>'营口银行','JLRCU'=>'吉林农信','SDRCU'=>'山东农信','XABANK'=>'西安银行','HBRCU'=>'河北省农村信用社','NXRCU'=>'宁夏黄河农村商业银行','GZRCU'=>'贵州省农村信用社','FXCB'=>'阜新银行','HBHSBANK'=>'湖北银行黄石分行','ZJNX'=>'浙江省农村信用社联合社','XXBANK'=>'新乡银行','HBYCBANK'=>'湖北银行宜昌分行','LSCCB'=>'乐山市商业银行','TCRCB'=>'江苏太仓农村商业银行','BZMD'=>'驻马店银行','GZB'=>'赣州银行','WRCB'=>'无锡农村商业银行','BGB'=>'广西北部湾银行','GRCB'=>'广州农商银行','JRCB'=>'江苏江阴农村商业银行','BOP'=>'平顶山银行','TACCB'=>'泰安市商业银行','CGNB'=>'南充市商业银行','CCQTGB'=>'重庆三峡银行','XLBANK'=>'中山小榄村镇银行','HDBANK'=>'邯郸银行','KORLABANK'=>'库尔勒市商业银行','BOJZ'=>'锦州银行','QLBANK'=>'齐鲁银行','BOQH'=>'青海银行','YQCCB'=>'阳泉银行','SJBANK'=>'盛京银行','FSCB'=>'抚顺银行','ZZBANK'=>'郑州银行','SRCB'=>'深圳农村商业银行','BANKWF'=>'潍坊银行','JJBANK'=>'九江银行','JXRCU'=>'江西省农村信用','HNRCU'=>'河南省农村信用','GSRCU'=>'甘肃省农村信用','SCRCU'=>'四川省农村信用','GXRCU'=>'广西省农村信用','SXRCCU'=>'陕西信合','WHRCB'=>'武汉农村商业银行','YBCCB'=>'宜宾市商业银行','KSRB'=>'昆山农村商业银行','SZSBK'=>'石嘴山银行','HSBK'=>'衡水银行','XYBANK'=>'信阳银行','NBYZ'=>'鄞州银行','ZJKCCB'=>'张家口市商业银行','XCYH'=>'许昌银行','JNBANK'=>'济宁银行','CBKF'=>'开封市商业银行','WHCCB'=>'威海市商业银行','HBC'=>'湖北银行','BOCD'=>'承德银行','BODD'=>'丹东银行','JHBANK'=>'金华银行','BOCY'=>'朝阳银行','LSBC'=>'临商银行','BSB'=>'包商银行','LZYH'=>'兰州银行','BOZK'=>'周口银行','DZBANK'=>'德州银行','SCCB'=>'三门峡银行','AYCB'=>'安阳银行','ARCU'=>'安徽省农村信用社','HURCB'=>'湖北省农村信用社','HNRCC'=>'湖南省农村信用社','NYNB'=>'广东南粤银行','LYBANK'=>'洛阳银行','NHQS'=>'农信银清算中心','CBBQS'=>'城市商业银行资金清算中心', ); if(!isset($type)) return $arr; return $arr[$type]; } function get_rtype($type = null){ $arr = array( '1'=>'支付宝', '2' => '快捷支付', '3' => '网银支付', '4' => '余额充值', '5' => '微信APP支付', '6' => '微信PC支付', '7' => '线下充值', ); if(!isset($type)) return $arr; return $arr[$type]; } function get_draw_fee($userb,$role=0){ if(3 != $role){ return 0; } $ydrawfee = $drawfee = $userb*0.006; $pos = strpos($drawfee,'.'); if(false !== $pos && $drawfee>intval($drawfee)){ $dotfee = '0'.substr($drawfee,$pos,2); $dotfee = (float)$dotfee; $drawfee = intval($drawfee)+$dotfee; } if($drawfee>$ydrawfee){ return false; } $drawfee = min($drawfee,25); return $drawfee; } function getHtype($arr){ if(!is_array($arr)){ return 0; }else{ $pos = 0; foreach ($arr as $key=>$value){ $pos += $value; } return $pos; } } function clearCache($role,$uid) { $url = DJ_URL_IMAGE.'/'; $path = '/tmp/fcgi_cache/'; $arr = array('50_60','100_100','88_88','120_120','135_135','200_200','121_145','145_174','138_165','72_86','84_100','74_74','48_50','67_84','108_130','168_216','140_169','80_96','168_200','168_168'); $tarr = array('','1','5','10','20'); foreach($arr as $u){ $md5 = md5($url.$role.'_'.$uid.'_'.$u.'/'); $cache = $path . substr($md5, -1, 1) . '/' . substr($md5, -3, 2) . '/' . $md5; if (file_exists($cache)) { @unlink($cache); } foreach($tarr as $uu){ if(empty($uu)){ $ukey = ($url.$role.'_'.$uid.'_'.$u.'_1/'); }else $ukey = ($url.$role.'_'.$uid.'_'.$u.'_1_'.$uu.'/'); $md5 = md5($ukey); $cache = $path . substr($md5, -1, 1) . '/' . substr($md5, -3, 2) . '/' . $md5; if (file_exists($cache)) { @unlink($cache); } if(empty($uu)){ $ukey = ($url.$role.'_'.$uid.'_'.$u.'_2/'); }else $ukey = ($url.$role.'_'.$uid.'_'.$u.'_2_'.$uu.'/'); $md5 = md5($ukey); $cache = $path . substr($md5, -1, 1) . '/' . substr($md5, -3, 2) . '/' . $md5; if (file_exists($cache)) { @unlink($cache); } } } } function get_shopurl_str($title,$url,$cls){ $str = ''; if(empty($url)){ $url = 'javascript:void(0)'; }else{ $target = 'target = "_blank"'; } if($cls){ $cls = 'class = "'.$cls.'"'; } $str .= ''; $str .=$title; $str .= ''; return $str; } function addDesPoint($uid,$point,$type,$rid=0){ if(empty($uid) || empty($point))return false; $myusera = getDesAccount($uid,'usera'); $level = get_des_info($uid,'level'); $arr_exp = C('DES_EXP_POINT'); $level_exp = $arr_exp[$level]; $min = $level_exp[0]; $max = $level_exp[1]; $point1 = $point; if($point<0){ if(($myusera-$min)$max){ $point = $max-$myusera; } } if($type != 'xiugai_dj'){ if($myusera<=0){ $point = $point+$min; } } if($point<=0){ $arr = array(); $arr['uid'] = $uid; $arr['role'] = 1; $arr['avalue'] = $point1; $arr['ctype'] = $type; $arr['cdate'] = time(); if($rid){ $arr['rid'] = $rid; } M('DesPointTemp') -> add($arr); } $arr = array(); $arr['usera'] = $point; $rs = setDesAccount($uid,$arr,$type); if($rs){ $arr = array(); $arr['uid'] = $uid; $arr['role'] = 1; $arr['avalue'] = $point; $arr['ctype'] = $type; $arr['cdate'] = time(); if($rid){ $arr['rid'] = $rid; } M('DesPoint') -> add($arr); $desusea = getDesAccount($uid,'usera'); M('Designer')->where('uid='.$uid)->save(array('usera'=>$desusea)); } return $rs; } function getDesPointNum($uid,$type,$arr=array()){ if(empty($uid) || empty($type))return false; $arr['uid'] = $uid; $arr['ctype'] = $type; $num = M('DesPoint') -> where($arr)->count(); return $num; } function getDesPointSum($uid,$type,$arr=array()){ if(empty($uid) || empty($type))return false; $arr['uid'] = $uid; $arr['ctype'] = $type; $num = M('DesPoint') -> where($arr)->sum('avalue'); return $num; } function get_sex_str($sex=0){ if($sex === 'all'){ $str = [1=>'男',2=>'女']; }elseif($sex == 1){ $str = '男'; }elseif($sex == 2){ $str = '女'; }else{ $str = '未设置'; } return $str; } function get_age($birthday = null,$unit = '岁'){ if(is_integer($birthday)){ $birthday = date('Y-m-d',$birthday); }else{ $utime = strtotime($birthday); if(false === $utime){ $birthday = date('Y-m-d',intval($birthday)); } } $arr = explode('-', $birthday); $ag = (int)date('Y')-(int)$arr[0]; if($ag < 0 || $ag >=120) return '未设置'; else return $ag.$unit; } function get_case_tags($case_id){ if(empty($case_id)) return ; $_tags = S($case_id.'_tags'); $tags = array_filter(unserialize($_tags)); if($_tags === false){ $tids = M('TagsCase')->where('case_id = '.$case_id)->getField('tag_id',true); $ids_str = implode(',', $tids); $tags = M('Tags')->where(array('id'=>array('IN',$ids_str)))->getField('id,name'); $tags = array_filter($tags); $_tags = empty($tags)?'':serialize($tags); S($case_id.'_tags',$_tags); } return $tags; } function show_case_tags($case_id=0,$str = ',',$htype_name='',$cls = ''){ $_tags = get_case_tags($case_id); $cls && $class = 'class = "'.$cls.'"'; if($htype_name && $_tags) $s = $str; if($htype_name){ $rs = ''.$htype_name.''.$s; } $num = count($_tags); $i = 1; foreach($_tags as $key=>$value){ $t = ''; if($i < $num) $t = $str; $rs.= ''.$value.''.$t; $i ++ ; } return $rs; } function get_tags($name){ if(empty($name)) return $name; return M('tags')->where('name = "'.$name.'"')->find(); } function get_case_season($type,$s=false){ if(!isset($type)) return ; $str = '|春季|夏季|秋季|冬季'; $arr_str = explode('|',$str); unset($arr_str[0]); if($s) return $arr_str; return $arr_str[$type]; } function get_case_color_class($type,$s=false){ if(!isset($type)) return ; $str = '|all|red|orange|yellow|green|light_blue|deep_blue|purple|brown|black|gray'; $arr_str = explode('|',$str); unset($arr_str[0]); if($s) return $arr_str; return $arr_str[$type]; } function get_case_color($type){ if(empty($type)) return ; $str = '|白|红|橙|黄|绿|青|蓝|紫|棕|黑|灰'; $arr_str = explode('|',$str); return $arr_str[$type].'色'; } function set_price($price){ return sprintf('%.2f',$price); } function get_report_reason($id = null,$all = false){ $id = intval($id); if($id < 0 || $id >4) return ; $str = '|在法定工作时间(9:00-18:00)联系不上设计师.|该设计师拒绝被雇佣但事先未表明.|该设计师言辞粗鲁.|作品非该设计师制作,而另有出处.'; $arr = explode('|', $str); if($all){ unset($arr[0]); return $arr; } return $arr[$id]; } function sendCellCode($tel,$skey,$str,$username='',$isstr=false){ if(empty($tel))return false; if(in_array($tel,array('13677653853')))return false; if(in_array($tel,C('AUTH_DENY_TEL')))return false; $ip = getIP(); if(!in_array($ip, C('OWN_IP'))){ $key = $ip.'_vsendmobile'; $ipk = intval(S($key)); if($ipk >20 )return false; } $key1 = $tel.'_vsendmobile'; $ipk1 = intval(S($key1)); if($ipk1 >10 )return false; $ipk++; $ipk1++; S($key,$ipk,array('expire'=>3*30*60)); S($key1,$ipk1,array('expire'=>6*30*60)); $k = getRandPwd(1,6); $vkey = $tel.'_'.$skey.'_cellkey'; S($vkey,$k,array('expire'=>600)); $subtel = substr($tel, 0,3); $usersz = false; if($subtel == '199' )$usersz = true; if($usersz)$func = 'sendCell';else $func = 'sendCell'; errorLog($tel.'|'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"],'_tel_m'.date('Ymd')); if($isstr){ $rs = $func($tel,$str); }else{ if($username && $str) $rs = $func($tel,'您正在对帐号('.$username.')进行'.$str.'操作,验证码为:'.$k.'(请勿向任何人提供短信验证码)'); elseif($username) $rs = $func($tel,$username.',您的短信验证码为:'.$k.'(请勿向任何人提供短信验证码)'); elseif($str && empty($username)) $rs = $func($tel,'您正在进行'.$str.',您的短信验证码为:'.$k.'(请勿向任何人提供短信验证码)'); else{ if(false){ $rsdata = D('Home/Sms')->sendCellTpl('regyzcode',$tel,array('number'=>$k)); $rs = $rsdata['status']; }else{ $rs = $func($tel,'您的短信验证码为:'.$k.'(请勿向任何人提供短信验证码)'); } } } if($rs){ $vkey = $tel.'_'.$skey.'_issend'; S($vkey,$k,array('expire'=>60)); return true; }else{ return false; } } function checkCellSend($tel,$skey){ if(empty($tel) || empty($skey))return ''; $vkey = $tel.'_'.$skey.'_issend'; $info = S($vkey); if($info)return true;else return false; } function sendCell2($send_tel,$send_str) { if($send_tel == '13869169930')return false; $cust_code = '900017'; $password = 'W7MMOAUG5J'; $sp_code = ''; $content = '【开三云匠】'.$send_str; $url='http://115.29.37.184:8860/'; if(!function_exists('curl_init')) return 'error1'; if(!function_exists('mb_convert_encoding')) return 'error2'; $post_data = array(); $post_data['cust_code'] = $cust_code; $post_data['destMobiles'] = $send_tel; $post_data['content'] = $content; $post_data['sign'] = md5(urlencode($content.$password)); $post_data['sp_code'] = $sp_code; $o=""; foreach ($post_data as $k=>$v) { if($k =='content') $o.= "$k=".urlencode($v)."&"; else $o.= "$k=".($v)."&"; } $post_data=substr($o,0,-1); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $result = curl_exec($ch); $result = urldecode($result); $arr_result = explode(':', $result); $result1 = $arr_result[3]; $ip = getIP(); $add = array(); $add['tel'] = $send_tel; $add['contents'] = $content; $add['request'] = $arr_result[1].$arr_result[2]; $add['ctime'] = time(); $add['cip'] = $ip; if($result1>0) $add['status'] = 0; else $add['status'] = 1; M('TelMessage')->add($add); if($result1>0) return false; else return true; die(); $mm_sms_system_id="SDK2611"; $mm_sms_system_pass="jiang1246"; $mm_sms_tel="开三云匠"; if(!function_exists('curl_init')) return 'error1'; if(!function_exists('mb_convert_encoding')) return 'error2'; $send_str=trim($send_str); if(!$send_str) return '请填写短信发送内容'; $send_str.="【{$mm_sms_tel}】"; $send_str=rawurlencode($send_str); $host='api.bjszrk.com'; $path="/sdk/batchsend.aspx"; $post_fields=array( 'CorpID'=>$mm_sms_system_id, 'Pwd'=>$mm_sms_system_pass, 'Mobile'=>$send_tel, 'Content'=>$send_str, 'Cell'=>'', 'SendTime'=>'', 'Encode'=>'UTF-8' ); $str_rec = ''; $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://'.$host.$path); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields); $str_rec = curl_exec($ch); curl_close($ch); if($str_rec<0) return false; else return true; } function sendCellCode1($tel,$code='',$price){ if(empty($tel) )return false; $ip = getIP(); $key = $ip.'_vsendmobile_pay'; $ipk = intval(S($key)); if($ipk >30 )return false; $ipk++; S($key,$ipk,array('expire'=>30*60)); $k = getRandPwd(1,6); $vkey = $tel.'_paycell_cellkey'; $t = S($vkey,$k,array('expire'=>300)); $rs = sendCell($tel,'支付验证码为:'.$k.',您正在使用(尾号'.$code.')银行卡付款'.$price.'.00元.任何人向您索取验证码均为诈骗(请勿向任何人提供短信验证码)'); if($rs){ return true; }else{ return false; } } function get_education($id = null,$s = false){ $id = intval($id); if(empty($id)) return ; $str = '|小学及以下|初中|高中|大专|本科|研究生|博士及以上'; $arr = explode('|', $str); if($s){ unset($arr[0]); return $arr; } return $arr[$id]; } function cashShift1($uid,$rid,$value,$ctype,$sn,$role=1,$pay=0){ $arr = array(); $arr['uid'] = $uid; $arr['rid'] = $rid; $arr['avalue'] = $value; $separate = get_des_info($uid,'separate'); $separate = intval($separate); if($separate<10 && $separate>100){ $separate = 70; } $gvalue = ceil($value*$separate/100); $arr['actual'] = $gvalue; $arr['role'] = $role; $arr['ctype'] = $ctype; $arr['ordersn'] = $sn; $arr['ctime'] = time(); if($pay){ $arr['stime'] = time(); } return M('CashShift')->add($arr); } function cashShift($uid,$rid,$value,$ctype,$sn,$role=1,$pay=0,$params){ $arr = array(); $arr['uid'] = $uid; $arr['rid'] = $rid; $arr['avalue'] = $value; if($value<=0)return false; $pinfo = M('project')->where('ordersn = "'.$sn.'"')->find(); if(empty($pinfo)){ $pid = M('order')->where('status = 1 AND ordersn = "'.$sn.'"')->getField('pid'); if(empty($pid)){ $pid = M('order_all')->where('ctype = "xuqian" AND xqstatus = 1 AND status = 1 AND ordersn = "'.$sn.'"')->getField('pid'); } $pinfo = M('project')->where('pid = '.$pid)->find(); } $pid = $pinfo['id']; $uinfo = get_user_info($uid); $separate = get_user_info($uid,'separate'); $role = get_user_info($uid,'role'); if($role == 1) $wstyle = get_des_info($uid,'wstyle'); $separate = $yseparate = intval($separate); if($separate<10 && $separate>100){ $separate = 70; } if(0 == $pinfo['is_turn']){ $getseparate = getDesSeparate($uid,$rid); }else{ $getseparate = false; } if($wstyle == 2 && $getseparate){ $getseparate = $getseparate<10?10:$getseparate; } if($getseparate){ $separate = 100-$getseparate; if($separate<$yseparate) $separate = $yseparate; } if(1 == $pinfo['profession']){ $match = macthThreeSeven($pinfo); if(1 == $match['is_match']){ $before_separate = $separate; $separate = 70; errorLog($pid.'|'.$pinfo['mid'].'|'.$pinfo['uid'].'|'.$separate.'|'.$before_separate.'|'.$match['accept_time'],'push_three-seven'); } } $disvalue = intval($params['disvalue']); if($disvalue){ $cashnum = M('cash_shift')->where('ctype != "paytc" AND pid = '.$pid)->count(); $cashnum ++; $btjc = M('discount')->where('hbtype = "butiejin" AND kou_month = '.$cashnum.' AND pid = '.$pid)->count(); $isbtj = 1 == $btjc?true:false; $arr['distype'] = $isbtj?1:0; }else{ $isbtj = false; } if($disvalue && ($value-$disvalue>=0)){ $arr['disvalue'] = $disvalue; if(empty($isbtj)) $value = $value-$disvalue; } $jiangke = doKeJieSuan($pinfo,$value,$ctype); if($jiangke['status'] == true){ $keseparate = $jiangke['keseparate']; $arr['kactual'] = intval($jiangke['kemoney']); }else{ $keseparate = 0; } if($keseparate>0 && D('Designer/Project')->is_paidan($pid)){ $arr['is_sale'] = 1; } if($pinfo['kid']>0){ D('Business/Keseller')->upDzValue(array('ctype'=>'emp','pid'=>$pid,'dzvalue'=>$value)); } if(1 == $uinfo['ismember']){ $arr['pu'] = 1; } if($keseparate>0 && $keseparate<=$separate){ $separate = $separate-$keseparate; } $gvalue = intval($value*$separate/100); $arr['actual'] = $gvalue; $arr['role'] = $role; $arr['ctype'] = $ctype; $arr['ordersn'] = $sn; $arr['pid'] = $pid; $arr['ctime'] = time(); $arr['btime'] = empty($params['btime'])?0:$params['btime']; $arr['etime'] = empty($params['etime'])?0:$params['etime']; if($pinfo['is_turn']){ $arr['is_qr'] = 0; } if($pay){ $arr['stime'] = time(); } $arr['mid'] = get_user_info($uid,'tid'); return M('CashShift')->add($arr); } function macthThreeSeven($pro=array()){ $pid = intval($pro['id']); $mid = intval($pro['mid']); $uid = intval($pro['uid']); $sid = intval($pro['sid']); if(empty($pid) || empty($sid) || empty($uid) || !isset($pro['mid']) || 1 != $pro['profession']){ return array('is_match'=>0,'accept_time'=>0); } $is_match = 0; $uinfo = get_user_info($uid); $accept_time = D('Crm/CrmDemand')->crmqd($uid,$sid); if($accept_time>0){ $arr_master = array(10051,10052); if(1 == $uinfo['dtype']){ $master = $uid; }elseif($uinfo['dtype']>1){ $master = $uinfo['master']; } $condition = in_array($master,$arr_master) || 0 == $uinfo['dtype']; if($condition){ $basewhere = 'is_tuog = 1 AND status>0 AND sid = '.$sid.' AND uid = '.$uid; $qwhere = $basewhere.' AND ctime<='.$accept_time; $hwhere = $basewhere.' AND ctime>'.$accept_time; $count = M('Project')->where($qwhere)->count(); if($count<=0){ $firstpro = M('Project')->where($hwhere)->order('ctime ASC')->find(); $omonth = M('Order')->where('pid = '.$pid)->getField('month'); $cashnum = M('cash_shift')->where('pid = '.$pid)->count(); $omonth = intval($omonth); $cashnum = intval($cashnum); if($firstpro && $firstpro['id'] == $pid && $omonth>$cashnum){ $is_match = 1; } } } } $rarr['is_match'] = $is_match; $rarr['accept_time'] = $accept_time; return $rarr; } function getDesSeparate($des_id,$sid){ if(empty($des_id) || empty($sid))return false; $time = time()-60*3600*24; $betime = strtotime('2015-08-26'); $betime1 = time()-366*3600*24; $betime = $betime>=$betime1?$betime:$betime1; $avalue = M('cash_shift')->where('uid='.$des_id.' AND rid='.$sid.' AND ctime>='.$time)->order('avalue DESC')->getField('avalue'); $avalue = intval($avalue); $suma = M('cash_shift')->where('mid!=12 AND uid='.$des_id.' AND rid='.$sid.' AND ctime>='.$betime )->sum('avalue'); $suma = intval($suma); $role = get_user_info($des_id,'role'); if($role != 1)return false; if($role == 1) $price = get_des_bond($des_id); elseif ($role == 2) $price = get_kefu_bond($des_id); elseif ($role == 4) $price = get_worker_bond($des_id); if(empty($price) || $price<1000)return false; if($suma>=$price*5){ return 10; } if($avalue>($price/2)){ return 10; } return false; } function doKeJieSuan($pinfo,$getPrices,$ctype){ $keseparate = getKeProSep($pinfo,$ctype); $kemoney = round($getPrices*$keseparate/100); $ret['status'] = false; $ret['keseparate'] = $keseparate; if(($kemoney>0) && ($kemoney<=$getPrices)){ $arr['userb'] = $kemoney; $ret['kemoney'] = $kemoney; $krs = setKeAccount($pinfo['kid'],$arr,'wages1'); if($krs === false){ $error = D('Ke/Kaccount') -> getError(); $str = array('userb'=>$kemoney,'kid'=>$pinfo['kid'],'pid'=>$pinfo['id'],'ttype'=>'setKeAccount_error'); errorLog($str,'jiangke_error'); $ret['info'] = getErrorMsg($error); return $ret; } $krs2 = D('Designer/Daccount')->addRecord(array('sid'=>$pinfo['kid'],'userb'=>-$kemoney,'uid'=>$pinfo['uid'],'role'=>5,'rtype'=>3,'ctype'=>$ctype)); if($krs2 == false){ $str = array('sid'=>$pinfo['kid'],'userb'=>-$kemoney,'uid'=>$pinfo['uid'],'role'=>5,'rtype'=>3,'ctype'=>$ctype,'pid'=>$pinfo['id'],'ttype'=>'desrecord_error'); errorLog($str,'jiangke_error'); $ret['info'] = '生成云匠客交易记录失败2'; return $ret; } $krs1 = D('Ke/Kaccount')->addRecord(array('kid'=>$pinfo['kid'],'userb'=>$kemoney,'uid'=>$pinfo['uid'],'role'=>1,'rtype'=>3,'ctype'=>$ctype,'pid'=>$pinfo['id'],'ordersn'=>$pinfo['ordersn'])); if($krs1 == false){ $str = array('kid'=>$pinfo['kid'],'userb'=>$kemoney,'uid'=>$pinfo['uid'],'role'=>1,'rtype'=>3,'ctype'=>$ctype,'pid'=>$pinfo['id'],'ttype'=>'kerecord_error'); errorLog($str,'jiangke_error'); $ret['info'] = '生成云匠客交易记录失败1'; return $ret; } } if($pinfo['kid']>0 && $pinfo['kestatus'] == 1 && 'paytc' != $ctype){ if($ctype == 'paymoney' || $ctype == 'autocash'){ if(canKeNextSep($pinfo['id']) == false) $pdata['kestatus'] = 2; }else{ $pdata['kestatus'] = 3; } if($pdata) M('Project')->where('id='.$pinfo['id'])->limit(1)->save($pdata); } $ret['status'] = true; return $ret; } function get_des_auth($step = null , $all){ if(!isset($step)) return false; $str = '完成|注册ID|填写个人资料|选择工种|等级认证|缴纳会费|完成'; $arr = explode('|', $str); if($all){ return $arr; }else{ return $arr[$step]; } } function birth_ym($birthday){ $arr_time = explode('-', $birthday); return $arr_time[0].'年'.$arr_time['1'].'月'; } function check_cell_only($lxtel,$uid,$role){ if(empty($lxtel)&&empty($uid)&&empty($role)) return false; $query_id = 0; if($role==1){ $query_id = M('designer')->where('lxtel='.$lxtel)->getField('uid'); }elseif($role == 3){ $query_id = M('seller')->where('lxtel='.$lxtel)->getField('id'); }else return false; if(empty($query_id) || $query_id == $uid){ return true; } return false; } function create_str( $length = 8 ) { $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $str = ''; for ( $i = 0; $i < $length; $i++ ) { $str .= $chars[ mt_rand(0, strlen($chars) - 1) ]; } return $str; } function getDesAndSell($sid,$des_id,$cache=true){ if(empty($sid) || empty($des_id)){ return false; } $key = $sid.'_'.$des_id.'_reation'; if($cache)$info = S($key); if(empty($info)){ $role = get_user_info($des_id,'role'); $id = M('Collect')->where('sid='.$sid.' AND des_id='.$des_id.' AND type=1 AND status = 1')->getField('id'); if($id){ $info['collect'] = 'yes'; }else $info['collect'] = 'no'; $pinfo = M('Project')->where('sid='.$sid.' AND uid="'.$des_id.'" AND status<6')->field('uid,is_tuog,status')->limit(1)->find(); if(empty($pinfo)&&$role==2) $pinfo = M('Project')->where('sid='.$sid.' AND auxiliary="'.$des_id.'" AND status<6 and is_dz=0 and profession=2')->field('auxiliary as uid,is_tuog,status')->limit(1)->find(); if($pinfo && empty($pinfo['is_tuog'])){ $info['isemploy'] = 'yx'; }elseif($pinfo && 0 == $pinfo['status']){ $info['isemploy'] = 'norz'; }else if($pinfo){ $info['isemploy'] = 'my'; }else{ $wjinfo = M('ProjectWj')->where('sid='.$sid.' AND uid="'.$des_id.'" AND is_tuog=1')->field('id')->limit(1)->find(); if($wjinfo){ $info['isemploy'] = 'his'; }else $info['isemploy'] = 'no'; } S($key,$info,array('expire'=>3600*3)); } return $info; } function mvar_dump($o){ $ip = getIP(); if($ip == '3078736723'){ var_dump($o); } } function generate_question($level,$htype){ if(empty($level) || empty($htype)) return false; $map['status'] = array('GT',0); $arr_htype = get_ht_type(true,true); foreach ($arr_htype as $key => $value) { if(check_document_position($key,$htype)){ $wh[]=$key; } } $arr_htype = array('IN',implode(',', $wh)); for($i=1;$i<=3;$i++){ if($i >1) $map['htype'] = $arr_htype; $map['module_id'] = $i; $qm = M('questions')->where($map)->getField('id',true); if(empty($qm)) return false; $rs[$i] = $qm[array_rand($qm)]; } return $rs; } function get_exam_ques($des_id,$test_id,$status=1){ return D('Designer/DesExamina')->get_exam_ques($des_id,$test_id,$status); } function get_ques_module($id,$all){ $key = 'ques_module_list'; $module = S($key); if(empty($module)){ $module = M('ques_module')->order('id ASC')->getField('id,name'); S($key,$module); } if($all) return $module; if($id) return $module[$id]; } function get_des_bond($des_id){ $arr = C('DES_PRICE_DEFAULT'); $dinfo = get_des_info($des_id); if($dinfo['bond']){ $level = $dinfo['level']; return $arr[$level]; }else{ return '暂未缴纳保证金'; } } function get_kefu_bond($uid){ $arr = C('KEFU_PRICE_BOND'); $kinfo = get_kefu_info($uid); if($kinfo['bond']){ $level = $kinfo['level']; return $arr[$level]; }else{ return 0; } } function get_worker_bond($uid){ $role = get_user_info($uid,'role'); if($role == 4) $arr = C('YY_PRICE_BOND'); else return 0; $winfo = get_user_info($uid); if($winfo['bond']){ $level = $winfo['level']; return $arr[$level]; }else{ return 0; } } function greate_res($str){ if(empty($str))return ''; $array = explode(',', $str); $re = ''; if(DJ_CONCAT_OPEN){ $re .= ''; }else{ foreach ($array as $key => $value) { if($value){ $re .= ''; } } } return $re; } function get_cash_type($str){ if($str == 'paymoney'){ return '支付工资'; }elseif($str == 'autocash'){ return '自动结算'; }elseif($str == 'doFire'){ return '解雇支付工资'; }elseif($str == 'dostop'){ return '项目暂停支付工资'; }elseif($str == 'docomplaint'){ return '项目投诉支付工资'; }else{ return ''; } } function show_sell_name($sid,$name){ if(empty($sid)) return ''; $sinfo = get_sell_info($sid); if($sinfo['auth_type'] == 1 && $sinfo['company']) return $sinfo['company']; if($name) return $sinfo[$name]; return $sinfo['lxname']; } function isMobile() { $mobile = array(); static $mobilebrowser_list ='Mobile|iPhone|Android|WAP|NetFront|JAVA|OperasMini|UCWEB|WindowssCE|Symbian|Series|webOS|SonyEricsson|Sony|BlackBerry|Cellphone|dopod|Nokia|samsung|PalmSource|Xphone|Xda|Smartphone|PIEPlus|MEIZU|MIDP|CLDC'; if(preg_match("/$mobilebrowser_list/i", $_SERVER['HTTP_USER_AGENT'], $mobile)) { return true; }else{ if(preg_match('/(mozilla|chrome|safari|opera|m3gate|winwap|openwave)/i', $_SERVER['HTTP_USER_AGENT'])) { return false; }else{ if($_GET['mobile'] === 'yes') { return true; }else{ return false; } } } } function getUserAgent(){ $t = ''; if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 10.0")) $t = "Internet Explorer 10.0"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 9.0")) $t = "Internet Explorer 9.0"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0")) $t = "Internet Explorer 8.0"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0")) $t = "Internet Explorer 7.0"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 6.0")) $t = "Internet Explorer 6.0"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/3")) $t = "Firefox 3"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/2")) $t = "Firefox 2"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"Chrome")) $t = "Google Chrome"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"Safari")) $t = "Safari"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera")) $t = "Opera"; return $t; } function tempLogs($info,$type=NULL) { if(empty($info))return ''; $tmessage = C('TEMP_LOG_INFO'); $contents = $tmessage[$info['ctype']]; if($info['sname']){ $fname =$info['sname']; }else{ $fname = get_sell_info($info['sid'], 'nickname'); } $fname = setcnHide($fname); $fnames = get_des_info($info['des_id'], 'nickname'); $contents = str_replace('[sid]', $fname, $contents); $contents = str_replace('[des_id]', ''.$fnames.'', $contents); $time = time(); $difference = $time - $info['ctime']+60; $x = get_etime($difference,2); if($type == 1){ return $contents; }else{ return $x."前,".$contents; } } function get_dz_price($level){ switch ($level) { case 1: return 50; break; case 2: return 100; break; case 3: return 120; break; case 4: return 180; break; case 5: return 300; break; default: return false; break; } } function clear_case_cache($des_id){ if(empty($des_id)) return false; $case_num = get_user_info($des_id,'casenum',1); $page_num = $case_num?ceil($case_num/6):0; $order = 'myorder DESC,level ASC,id DESC'; for($i=1;$i<=$page_num;$i++){ $key1 = C('des_case_list').'_9_'.$des_id.'_'.$order.'_'.$i; $key2 = C('des_case_list').'_6_'.$des_id.'_'.$order.'_'.$i; S($key1,null); S($key2,null); } $key3 = C('des_case_list').'_5_'.$des_id.'_'.$order.'_1'; S($key3,null); $page_num2 = $case_num?ceil($case_num/12):0; for($i=1;$i<=$page_num2;$i++){ $key4 = C('des_case_list').'_12_'.$des_id.'_'.$order.'_'.$i; S($key4,null); } D('Designer/Case')->flushCache($des_id); } function clear_des_cache($des_id){ if($des_id){ $key = C('des_info_key').'_'.$des_id; S($key,null); } S('resume_autoIntroduction_'.$des_id,null); $key1 = 'viewdata_index_deslist'; $key2 = 'viewdata_index_new_deslist'; S($key1,null);S($key2,null); } function get_lastneed($pid){ if(empty($pid)) return false; $lastneed = D('Business/Needs')->lastneed($pid); return $lastneed['id']; } function get_case_status($status=null){ if(!isset($status)) return false; if($status == -1) $str = '不显示'; elseif($status == 1) $str = '显示'; elseif($status == 0) $str = '删除'; return $str; } function PickUpimgs($contents){ if(empty($contents)) return false; preg_match_all("/]+>/isU",$contents,$matches); if(!empty($matches)){ return array_filter($matches[2]); } return false; } function get_fire_status($status,$s){ $str = '已取消|已解雇|申请解雇'; $arr_str = explode('|',$str); if($s) return $arr_str; return $arr_str[$status]; } function get_price_range($type = null,$s=false){ $type = intval($type); if(!isset($type)) return ''; $arr[0] = ''; $arr[1] = '面议'; $arr[2] = '1000元以下'; $arr[3] = '1000-2000元'; $arr[4] = '2000-3000元'; $arr[5] = '3000-5000元'; $arr[6] = '5000-8000元'; $arr[7] = '8000-12000元'; $arr[8] = '12000-20000元'; $arr[9] = '20000-25000元'; $arr[10] = '25000元以上'; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$type]; } } function getDesPointType($type,$val=null){ if(empty($type)) return ''; $arr = C('DES_POINT'); $path = $arr[$type]; if(isset($val)){ if($type == 'bd_question' || $type == 'de_question'){ $path = $val>0 ? '必答频道发布问题' : '必答频道删除问题'; }elseif($type == 'bd_answer' || $type == 'de_answer'){ $path = $val>0 ? '必答频道提交回答' : '必答频道删除回答'; }elseif($type == 'bd_adopt_ans' || $type == 'de_adopt'){ $path = $val>0 ? '必答频道回答被采纳' : '管理员取消采纳'; } } if(empty($path)) return '其他'; else return $path; } function scwsWord($contents){ $so = scws_new(); $so->set_charset('utf-8'); $so->set_dict(DJ_SCWS_DICT); $so->set_rule(DJ_SCWS_DICT); $so->set_ignore(true); $so->set_multi(true); $so->set_duality(true); $so->send_text($contents); $tmp1 = array(); while ($tmp = $so->get_result()) { foreach($tmp as $u){ if($u['idf']>0 && !in_array($u['attr'], array('m','p','f','i','l','mq','o','r','t','u','z')))$tmp1[] = $u; } } $so->close(); return $tmp1; } function getKeSeparate($des_id,$keseparate){ if(empty($des_id)) return false; if(empty($keseparate)){ $keseparate = D('Designer/keseparate')->detailfdes($des_id,'is_open = 1'); } if(!isset($keseparate['pmodtime']) || !isset($keseparate['separate']) || !isset($keseparate['pseparate'])) return false; if($keseparate['separate']<=0 || $keseparate['separate']>90) return 0; if($keseparate['pmodtime'] == 0) return $keseparate['separate']; $ttime = intval($keseparate['pmodtime']); if($keseparate['separate'] < $keseparate['pseparate']){ $ttime += 72*3600; }else{ $ttime += 15*60; } if(time()>$ttime){ $kesep = $keseparate['separate']; }else{ $kesep = $keseparate['pseparate']; } return $kesep; } function getSellerKid($sid){ if(empty($sid)) return false; $bind = D('Business/Keseller')->checkbind($sid); if(empty($bind['kid'])) return false; return $bind['kid']; } function setKeorder(&$order) { $kid = getSellerKid($order['sid']); $keseparate = getKeSeparate($order['des_id']); if('818' == BROKER) $kid = 0; if($kid) $ktype = get_ke_info($kid,'type'); if($kid && $keseparate){ $order['kid'] = $kid; $order['keseparate'] = $keseparate; }elseif($kid){ $order['kid'] = $kid; $order['keseparate'] = 0; } } function authErrorTips($verify,$times,$arr){ $key = $arr['key']; $expire = $arr['expire']; $tips = $arr['tips']; $errors = intval(S($key)); $msg = '密码已经错误'.$times.'次,'.$tips; if($errors>=$times){ return $msg; } if($verify == false){ $errors ++ ; S($key,$errors,$expire); $msg1 = $errors>=$times ? $msg : '验证出错:密码不正确!您还有'.($times-$errors).'次机会'; return $msg1; }else{ S($key,null); return false; } } function getKeProSep($pinfo,$ctype){ if('paytc' == $ctype){ return 0; }else{ if(empty($pinfo['kid']) || empty($pinfo['keseparate'])) return 0; } return $pinfo['keseparate']; } function canKeNextSep($pid,$ctype){ $cashnum = M('cash_shift')->where('ctype != "paytc" AND pid = '.$pid)->count(); $pinfo = M('Project')->where(['id'=>$pid])->field('allmonth')->find(); $oinfo['month'] = $pinfo['allmonth']; $nowtime = time(); $condition = $oinfo['month'] && $cashnum<($oinfo['month']-1); if($condition){ return true; }else{ return false; } } function get_case_cate($cate = null,$s=false){ if(empty($cate)) return false; switch ($cate) { case '1': $list = array('1' => '女式上装', '2' => '女式裤子', '4' => '女式裙子', '8' => '大码女装', '16' => '男式裤子', '32' => '男式上装','64' => '中老年服装', '128' => '其他男装', '256' => '文胸', '512' => '内裤', '1024' => '保暖内衣','2048' => '居家睡衣','4096' => '袜子','8192' => '其他');break; case '2': $list = array('1' => '童装', '2' => '孕妇用品', '4' => '新生儿', '8' => '宝宝食品', '16' => '宝宝用品', '32' => '儿童玩具','64' => '其他');break; case '4': $list = array('1' => '春秋女鞋', '2' => '夏季女鞋', '4' => '春秋男鞋', '8' => '夏季男鞋', '16' => '大\小码女鞋', '32' => '精品女包','64' => '精品男包', '128' => '功能箱包', '256' => '服装配饰', '512' => '帽子','1024' => '其他');break; case '8': $list = array('1' => '收纳整理', '2' => '居家日用', '4' => '餐饮用具', '8' => '洗护清洁', '16' => '成人用品', '32' => '爱好收藏','64' => '书籍杂志', '128' => '音像影视', '256' => '乐器', '512' => '鲜花园艺', '1024' => '宠物','2048' => '网络服务','4096' => '其他');break; case '16': $list = array('1' => '手机', '2' => '相机/DV', '4' => '笔记本', '8' => '平板电脑', '16' => '电脑周边', '32' => '办公设备','64' => '网络存储', '128' => '数码配件','256' => '其他');break; case '32': $list = array('1' => '大家电', '2' => '厨房电器', '4' => '生活电器', '8' => '影音电器', '16' => '护理按摩', '32' => '家电配件','64' => '其他');break; case '64': $list = array('1' => '身体护理', '2' => '香水', '4' => '洗发水', '8' => 'other/其他');break; case '128': $list = array('1' => '家装主材', '2' => '住宅家具', '4' => '家居饰品', '8' => '家纺布艺', '16' => '五金电工','32' => '其他');break; case '256': $list = array('1' => '珠宝钻石', '2' => '品牌手表', '4' => '流行首饰', '8' => '其他配饰','16' => '其他');break; case '512': $list = array('1' => '休闲零食', '2' => '营养品', '4' => '有机食品', '8' => '粮油米面', '16' => '茶/饮料', '32' => '水果蔬菜','64' => '其他');break; case '1024': $list = array('1' => '汽车用品', '2' => '摩托车','4' => '其他');break; case '2048': $list = array('1' => '运动户外', '2' => '运动服', '4' => '运动包', '8' => '户外运动用品', '16' => '瑜伽/健身', '32' => '球迷用品','64' => '其他');break; } if($s){ return $list[$s]; }else{ return $list; } } function get_gztime($v = null,$s=false){ $v = intval($v); if(!isset($v)) return ''; $arr[0] = ''; $arr[1] = '1小时以内'; $arr[2] = '1-2小时'; $arr[3] = '2-3小时'; $arr[4] = '3-5小时'; $arr[5] = '5小时以上'; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$v]; } } function get_des_gzage($type = null,$s=false){ $v = intval($type); if(!isset($v)) return ''; $arr[0] = ''; $arr[1] = '0.5-1年'; $arr[2] = '1-1.5年'; $arr[3] = '1.5-2年'; $arr[4] = '2-3年'; $arr[5] = '3年以上'; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$v]; } } function get_coage($type = null,$s=false){ $v = intval($type); if(!isset($v)) return ''; $arr[0] = ''; $arr[1] = '半年'; $arr[2] = '1年'; $arr[3] = '1.5年'; $arr[4] = '2年'; $arr[5] = '2年以上'; if($s){ unset($arr[0]); return $arr; }else{ return $arr[$v]; } } function get_kefu_gzage($type = null,$s=false,$showtype=0){ $v = intval($type); if(!isset($v)) return ''; $arr[0] = ''; $arr[1] = '0.3-1年'; $arr[2] = '1-2年'; $arr[3] = '2-3年'; $arr[4] = '3-5年'; $arr[5] = '5年以上'; if($s){ unset($arr[0]); return $arr; }else{ $str = $arr[$v]; if(1 == $showtype){ $ar = explode('年', $str); return array('value'=>$ar[0],'unit'=>'年'.$ar[1]); } return $arr[$v]; } } function getCityByLetter($letter=''){ $cities = array('hz'=>'杭州','gz'=>'广州','sz'=>'深圳','bj'=>'北京','sh'=>'上海','nb'=>'宁波','su'=>'苏州','cd'=>'成都','jh'=>'金华','cs'=>'长沙','wh'=>'武汉','hf'=>'合肥','nc'=>'南昌'); return $cities[$letter]?$cities[$letter].'市':''; } function get_city_letter($area){ if(empty($area)) return ''; $cities = array('杭州'=>'hz','广州'=>'gz','深圳'=>'sz','北京'=>'bj','上海'=>'sh','宁波'=>'nb','苏州'=>'su','成都'=>'cd','金华'=>'jh','长沙'=>'cs','武汉'=>'wh','合肥'=>'hf','南昌'=>'nc'); $namelist = array_keys($cities); $name = D('Home/Areas')->getCityName($area); $letter = $cities[$name]; if(empty($letter)) $letter = ''; return $letter; } function sendPushMsg($auid,$ctype,$arole=3,$arr){ $data['arole'] = $arole; $data['auid'] = $auid; $did = $arr['suid']; if(empty($did)){ if(defined("DUID") && DUID)$did = DUID; if(defined("BUID") && BUID)$did = BUID; } $data['suid'] = $did; $srole = $arr['srole']?$arr['srole']:intval(PE_ROLE); $data['srole'] = $srole; if(empty($contents) && $ctype){ $template = D('Home/AppPush')->getTemplate($ctype); if($data['srole'] == 3){ $info = get_sell_info($data['suid']); }else{ $info = get_des_info($data['suid']); } $contents = str_replace('dnickname', $info['nickname'],$template); if(isset($arr['money'])) $contents = str_replace('money', $arr['money'],$contents); if(isset($arr['date'])) $contents = str_replace('date', $arr['date'],$contents); } $data['ctype'] = $ctype; $data['contents'] = $contents; return D('Home/AppPush')->addMessage($data); } function exportExcel($expTitle='',$expCellName,$expTableData){ $xlsTitle = iconv('utf-8', 'gb2312', $expTitle); $fileName = $xlsTitle?$xlsTitle:date('_YmdHis'); $cellNum = count($expCellName); $dataNum = count($expTableData); vendor('PHPExcel.PHPExcel'); $objPHPExcel = new PHPExcel(); $cellName = 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','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); for($i=0;$i<$cellNum;$i++){ $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'1', $expCellName[$i][1]); } for($i=0;$i<$dataNum;$i++){ for($j=0;$j<$cellNum;$j++){ if(strlen($expTableData[$i][$expCellName[$j][0]])>8){ $objPHPExcel->getActiveSheet(0)->setCellValueExplicit($cellName[$j].($i+2), $expTableData[$i][$expCellName[$j][0]],PHPExcel_Cell_DataType::TYPE_STRING); }else{ $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+2), $expTableData[$i][$expCellName[$j][0]]); } } } header('pragma:public'); header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"'); header("Content-Disposition:attachment;filename=$fileName.xls"); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; } function get_format_sinfo($uid,$field=''){ $info = is_array($uid) ? $uid : get_sell_info(intval($uid)); $arr_field = explode(',', $field); $sinfo = array(); foreach ($arr_field as $word) { if($loc = stripos($word,'_raw')){ $vo = substr($word,0,$loc); $sinfo[$word] = $info[$vo]; }elseif('sid' == $word || 'id' == $word){ $sinfo[$word] = convertgs($info['id'],'int'); }elseif('truename' == $word || 'lxname' == $word){ $sinfo[$word] = $info['lxname']; }elseif('wanzdu' == $word){ $sinfo[$word] = D('Business/Seller')->checkWanzdu($info['id']); }elseif('ismodnick' == $word){ if(empty($info['lxname']) && $info['username'] == $info['nickname']){ $ismodnick = 1; }else{ $ismodnick = 0; } $sinfo[$word] = $ismodnick; }else{ $sinfo[$word] = $info[$word]; } } return $sinfo; } function get_prostate($prostatus){ $arr = array( 'nopay'=>'未付款','noconfirm'=>'未确认','normal'=>'正常','pausing'=>'暂停中', 'complaining'=>'投诉中','leave'=>'请假申请','leaving'=>'请假中','firing'=>'解雇中', 'daiwj'=>'待完结','trial'=>'三天试用','end'=>'已完结','renewing'=>'续签中','nobegin'=>'未开始', 'end_nopay'=>'未付提成','nopay_tc'=>'未付提成','end_wait'=>'待完结' ); return $arr[$prostatus]; } function count_mix_word($introduction){ return (strlen($introduction) + mb_strlen($introduction,'UTF8'))/4; } function get_xingqi($time){ if(empty($time)) return ''; $arr_xq = array("日","一","二","三","四","五","六"); $w = date('w',$time); return '星期'.$arr_xq[$w]; } function get_month($time){ if(empty($time)) return ''; $arr_yue = array('','一','二','三','四','五','六','七','八','九','十','十一','十二'); $w = date('n',$time); return $arr_yue[$w].'月'; } function check_forbid_word($content = ''){ if(!empty($content)){ if(preg_match("/(".file_get_contents('Resources/forbid.txt').")/i",$content,$match)==1) return false; } return true; } function number_convert($number){ $arr = array('零','一','二','三','四','五','六','七','八','九','十'); if($number<=10){ return $arr[$number]; }elseif($number<20){ $ge = $number-10; return '十'.$arr[$ge]; }else{ return $number; } } function urlshorten($link=''){ if(empty($link)) return false; if(false){ $url = 'https://api.weibo.com/2/short_url/shorten.json'; $url.= '?source=1681459862&url_long='.$link; $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ($ch, CURLOPT_TIMEOUT,20); $data = curl_exec ( $ch ); curl_close ( $ch ); $data = json_decode($data); if(empty($data)) return false; $urls = $data->urls; if(empty($urls)) return false; $short_url = $urls[0]->url_short; }else{ $short_url = D('Home/Shorturl')->shortUrl($link); if(false == $short_url) return $link; } return $short_url; } function cal_chain_ratio($benqi,$shangqi){ if(0 == $shangqi && 0 == $benqi){ $ratio = 0; }elseif(0 == $shangqi){ $ratio = 100; }else{ $ratio = round((($benqi-$shangqi)*100)/$shangqi,2); } return $ratio; } function get_sub_work_type($role=0,$all=false,$version = 1){ $conf = [ 1=>[ 1=>'电商美工',2=>'网页设计',4=>'平面设计',8=>'UI设计',16=>'插画',32=>'动漫设计',128=>'产品设计',256=>'其他' ], 2=>[ 1=>'网店售前客服',2=>'网店售后客服',4=>'网店新店客服',8=>'网店临时客服',16=>'其他客服' ], 4=>[ 1=>'网店运营',2=>'文案编辑' ], 6=>[ 1=>'摄影师',2=>'摄像师',4=>'电商模特',8=>'视频修片',16=>'网红直播',32=>'视频策划',64=>'视频后期',128=>'其他' ], 7=>[ 1=>'产品经理',2=>'前端开发',4=>'后端开发',8=>'测试工程师',16=>'运维/技术支持',32=>'移动开发',64=>'硬件开发',128=>'其他' ], 8=>[ 1=>'其他' ], 9=>[ 1=>'采编/写作/出版',2=>'广告',4=>'公关媒介',8=>'会务会展' ], 10=>[ 1=>'网络推广',2=>'市场推广',4=>'APP推广',8=>'小程序推广' ], 11=>[ 1=>'教师',2=>'教育行政',4=>'教育产品研发',8=>'教练',16=>'职业培训',32=>'招生',64=>'IT培训' ], 12=>[ 1=>'人力资源',2=>'招聘',4=>'绩效考核',8=>'司机',16=>'会计',32=>'出纳',64=>'审计',128=>'结算',256=>'风控',512=>'税务' ], 13=>[ 1=>'翻译',2=>'律师',4=>'咨询/调研' ], ]; $confnew = [ 1=>[ 1=>'电商美工',2=>'网页设计师',4=>'平面设计师',8=>'UI设计师',16=>'插画设计师',32=>'动漫设计师',128=>'工业设计师',256=>'交互设计师' ], 2=>[ 1=>'网店售前客服',2=>'网店售后客服',4=>'网店新店客服',8=>'网店临时客服',16=>'其他客服' ], 4=>[ 1=>'网店运营',2=>'文案编辑',4=>'网店推广',8=>'微商运营',16=>'新媒体运营',32=>'用户运营',64=>'产品运营',128=>'活动运营', ], 6=>[ 1=>'摄影师',2=>'摄像师',4=>'电商模特',16=>'网红直播',64=>'影视后期' ], 7=>[ 1=>'产品经理',2=>'前端开发',4=>'后端开发',8=>'测试工程师',16=>'运维/技术支持',32=>'移动开发',64=>'硬件开发',128=>'其他' ], 8=>[ 1=>'其他' ], 9=>[ 1=>'采编/写作/出版',2=>'广告',4=>'公关媒介',8=>'会务会展' ], 10=>[ 1=>'网络推广',2=>'市场推广',4=>'APP推广',8=>'小程序推广' ], 11=>[ 1=>'教师',2=>'教育行政',4=>'教育产品研发',8=>'教练',16=>'职业培训',32=>'招生',64=>'IT培训' ], 12=>[ 1=>'人力资源',2=>'招聘',4=>'绩效考核',8=>'司机',16=>'会计',32=>'出纳',64=>'审计',128=>'结算',256=>'风控',512=>'税务' ], 13=>[ 1=>'翻译',2=>'律师',4=>'咨询/调研' ], ]; if($version == 1){ $conf = $confnew; } $conf1 = get_worker_conf($version); foreach($conf1 as $key => $value){ if($key<=4) continue; foreach($value['sub'] as $kk=>$vo){ $conf[$key][$kk] = $vo['name']; } } if($all) return $conf; elseif(isset($conf[$role])) return $conf[$role]; else return []; } function get_type_work_arr($role=1,$type=1,$showType=1){ $arr_str = get_sub_work_type($role); foreach($arr_str as $key=>$value){ if(check_document_position($key,$type)){ if(1 == $showType){ $arr[] = ['val'=>$key,'name'=>$value]; }elseif(2 == $showType){ $arr[] = $value; } } } return $arr?$arr:[]; } function get_type_work_name($role=1,$type=1,$all=false,$showType=1){ $arr_str = get_sub_work_type($role); if($all){ if(2 == $showType){ return $arr_str; }else{ foreach($arr_str as $key=>$value){ $arr[] = ['val'=>$key,'name'=>$value]; } return $arr?$arr:[]; } } $str = isset($arr_str[$type])?$arr_str[$type]:''; return $str; } function get_sub_work_tags($role=1,$subtype=1,$version=1){ $conf = [ 1=>[ 1=>['主图设计','无线端设计','首页设计','详情页设计','活动页设计','整店装修','H5页面'], 2=>['网站设计','活动设计','手机网站'], 4=>['易拉宝','大屏','宣传单','logo设计','名片设计','包装','印刷物'], 8=>['移动应用ui','网站ui','软件界面'], 16=>['商业插画','儿童插画','广告插画','杂志插画','人物形象','角色原画'], 32=>['人物设计','漫画设计','动画flash',' ae动画','飞碟说动画'], 64=>['装修设计','效果图设计','全案设计','店面设计','空间设计','新房装修','办公室设计','装修施工'], 128=>['结构设计','造型设计','外观设计','产品拍摄','产品摄影','mg动画'], ], 4=>[ 1=>['内容营销','站内引流','站外引流','竞品分析','爆款打造','活动大促'], 2=>['内容营销','站内引流','站外引流','竞品分析','爆款打造','活动大促'], 4=>['内容营销','站内引流','站外引流','竞品分析','爆款打造','活动大促'], 8=>['内容营销','站内引流','站外引流','竞品分析','爆款打造','活动大促'], 16=>['内容营销','站内引流','站外引流','竞品分析','爆款打造','活动大促'], 32=>['内容营销','站内引流','站外引流','竞品分析','爆款打造','活动大促'], 64=>['内容营销','站内引流','站外引流','竞品分析','爆款打造','活动大促'], 128=>['内容营销','站内引流','站外引流','竞品分析','爆款打造','活动大促'], ], 6=>[ 1=>['图片后期','人像摄影','艺术摄影','风景摄影','广告摄影','电商摄影'], 2=>['宣传片',' 微电影',' 广告片','短视频'], 4=>['外籍模特','样片麻豆','商拍模特','会展美女','影视达人','网络红人','时尚型男'], 8=>['人像修片','产品修片','珠宝修片','数码修片'], 16=>['抖音','映客','花椒','虎牙','YY直播','淘宝直播','一直播'], 32=>['广告片策划','淘宝视频','电商视频','动画视频','宣传推广'], 64=>['剪辑','配音','3D特效','音乐制作','全息投影','字幕制作'], ], 7=>[ 1=>['淘宝','京东','天猫','1688','今日头条','拼多多'], 2=>['淘宝','京东','天猫','1688','今日头条','拼多多'], 4=>['淘宝','京东','天猫','1688','今日头条','拼多多'], 8=>['淘宝','京东','天猫','1688','今日头条','拼多多'], 16=>['公众号推广','微信群推广','小程序推广'], ] ]; $confnew = [ 1=>[ 1=>['淘宝美工','主图设计师','无线端设计师','网店设计师','详情页设计师','大促活动设计师','网店整店装修','钻展设计师','爆款设计师','商品精修美工'], 2=>['网站界面设计师','banner设计师','落地页设计师','企业官网设计师','后台系统设计师','登录/注册设计师'], 4=>['易拉宝设计师','宣传单设计师','海报设计师','LOGO设计师','名片设计师','包装设计师','物料设计师','画册设计师','VI设计师','视觉设计师'], 8=>['引导页UI设计师','手机端UI设计师','UI界面设计师','GUI规范设计师','图标设计师','PC软件设计师'], 16=>['商业插画师','卡通插画师','人物插画师','角色原画师','杂志插画师','游戏插画师'], 32=>['人物设计师','漫画设计师','动画设计师','飞碟说设计师','ae动画后期'], 64=>['装修设计','效果图设计','全案设计','店面设计','空间设计','新房装修','办公室设计','装修施工'], 128=>['结构设计师','造型设计师','外观设计师','服装设计师','珠宝设计师','景观设计师','家具设计师','家居设计师','陈列设计师'], 256=>['UE设计师','无线交互设计师','网页交互设计师','硬件交互设计师'], ], ]; if($version == 1){ foreach ($confnew as $key => $value) { $conf[$key] = $value; } } $conf1 = get_worker_conf($version); foreach($conf1 as $key => $value){ if($key<=1) continue; foreach($value['sub'] as $kk=>$vo){ $conf[$key][$kk] = $vo['sub']; } } if($subtype){ $ret = isset($conf[$role][$subtype])?$conf[$role][$subtype]:[]; } else{ $ret = isset($conf[$role])?$conf[$role]:[]; } return $ret; } function deal_limit($limit=1,$default=5,$max=20){ if(isset($limit['limit'])){ $limit = $limit['limit']; } $limit = intval($limit); return max($default,min($max,$limit)); } function deal_page($page=1,$field='p'){ if(isset($page[$field])){ $page = $page[$field]; } $page = intval($page); return max(1,$page); } function getModel($uid){ $role = get_user_info($uid,'role'); if ($role == 1) { $model = 'designer'; }elseif ($role == 2) { $model = 'kefu'; }else{ $model = 'worker'; } return $model; } function role2Ads($gtype,$type = 1){ $config = array( 1=>[117,118,119,120,121,122,123,124,125,155,156,157,158,159,160,161,162,163,194,217], 2=>[126,127,128,129,130,164,165,166,167,168,195], 4=>[131,132,133,134,135,136,137,138,169,170,171,172,173,174,175,176,196], 6=>[139,140,141,142,143,144,145,146,177,178,179,180,181,182,183,184,197], 7=>[147,148,149,150,151,152,153,154,185,186,187,188,189,190,191,192,198], ); foreach ($config as $u => $uu) { if (in_array($gtype, $uu)) { $role = $u; } } if ($type == 0) { return $role; } if ($role == 1) { $model = 'designer'; }elseif ($role == 2) { $model = 'kefu'; }else{ $model = 'worker'; } return $model; } function gid2Ads($type){ $res = array( 1=>[26,105,110,111,112,193,194,195,196,197,198,199,200,201,202], 2=>[83,85,47,34,89,117,162,163,164,165,166,175,176,177,178], ); if (!in_array($type,array_keys($res))) return []; return $res[$type]; } function getTagsByRole($role){ $subWork = get_sub_work_type($role); $res = array(); foreach ($subWork as $u => $uu) { $res[$u] = get_sub_work_tags($role,$u); } return $res; } function get_role_table($role=0){ if(1 == $role){ $table = 'Designer'; }elseif(2 == $role){ $table = 'Kefu'; }elseif(3 == $role){ $table = 'Seller'; }elseif(5 == $role){ $table = 'Jiangke'; }else{ $table = 'Worker'; } return $table; } function isvtel($lxtel = ''){ $isvirtual = 0; $ownIP = C('OWN_IP'); if(substr($lxtel,0,2) == '10' && in_array(getIP(),$ownIP)){ $isvirtual = 1; } return $isvirtual; } function get_day_zero($time=0){ if(is_numeric($time)){ $time = intval($time); }elseif(is_string($time)){ $time = strtotime($time); }else{ $time = 0; } return strtotime(date('Y-m-d',$time)); } function get_day_end($time=0){ $time = get_day_zero($time); return $time+24*3600-1; } function get_xcx_qrcode($data = array()){ $url = 'http://app1'.DOMAIN.'/h/public/get_qrcode'; $skey = 'xcx_qrcodeurl_new_'.$data['uid']; $imgurl = S($skey); if($imgurl){ return $imgurl; } if(DOMAIN == '.93jiang.com' || DOMAIN == '.ksanl.com'){ $nameKey = 'pcresumeuid_'.$data['uid'].'_new'; $imgname = think_encrypt($nameKey); $imguri = 'ygqrcode/'.$data['scene'].'/'.$imgname.'.png'; $imgLink = 'https://www.'.OSS_URL_IMAGE.'/'.$imguri; S($skey,$imgLink,7*24*3600); $isExit = @getimagesize($imgLink); if($isExit){ return $imgLink; } $data['is_new'] = 1; $res = httpRequest('http','post',$url,$data); } else{ $res = '{"url":"http:\/\/img.jiangcdn.com\/ygqrcode\/pcresume\/MDAwMDAwMDAwMJqAgbCKvIRpkoiKlJGQhcd-uHbYhIy9dg.png","status":1,"info":"\u6210\u529f~"}'; } $res = json_decode($res,true); if($res['status'] == 0){ return false; } return $res['url']; } function send_tempmsg($uid = 0,$role = 0,$scene = '',$param = array()){ if(empty($uid) || empty($role) || empty($scene)){ return false; } $url = 'http://app1'.DOMAIN.'/h/public/send_wxmsg'; $skey = '9e50d1eda1beac85'; $data = array('skey'=>$skey,'uid'=>$uid,'role'=>$role,'scene'=>$scene,'param'=>$param); $data = json_encode($data); $res = httpRequest('http','post',$url,$data); $res = json_decode($res,true); if($res['status'] == 0 || isset($res['ret']) && $res['ret'] == 0){ $log = $res['info']?$res['info']:'请求失败'; errorLog($log,'msgpush'); return false; } return true; } function httpRequest($http_type, $method, $url, $data,$headers = '') { $ch = curl_init(); if (strstr($http_type, 'https')) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); } if ($method == 'post') { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } else { $url = $url . '?' . $data; } if($headers){ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT,100000); try { $ret=curl_exec($ch); }catch(Exception $e) { curl_close($ch); return json_encode(array('ret'=>0,'msg'=>'failure')); } curl_close($ch); return $ret; } function get_finance_stage_name($id=0,$all=false){ $conf = [0=>'不限',1=>'未融资',2=>'天使轮',3=>'A轮',4=>'B轮',5=>'C轮',6=>'D轮及以上',7=>'已上市',8=>'不需要融资']; if($all){ return $conf; } return isset($conf[$id])?$conf[$id]:''; } function get_staff_size_name($id=0,$all=false){ $conf = [0=>'不限',1=>'0-20人',2=>'20-99人',3=>'100-499人',4=>'500-999人',5=>'1000-9999人',6=>'1000人以上']; if($all){ return $conf; } return isset($conf[$id])?$conf[$id]:''; } function getAuthStatus($sid){ $res = array(); $res['pr_rz'] = 0; $res['sp_rz'] = 0; $res['cp_rz'] = 0; $auth = M('seller_auth')->where('sid = '.$sid)->limit(1)->find(); if (!empty($auth)) { $res['pr_rz'] = $auth['identity_type']==2?1:0; $res['sp_rz'] = $auth['sp_rz']; $res['cp_rz'] = $auth['cp_rz']; } $res['pr_rz'] = 0; if(time()where('status = 1 and parentid ='.$cateid)->select(); }else{ $rs = M('comp_cate')->where('catid = '.$cateid)->getField('name'); } return $rs; } function validate($data = [], $rule = [],$msg = [],$must = '') { if($must){ $arrBu = []; $mustArr = explode(',',$must); foreach($rule as $key=>&$value){ $arr = explode('|',$key); $rname = $arr[0]; if(in_array($rname,$mustArr)){ $value = 'require|'.$value; $arrBu[] = $value; } } $arr1 = array_diff($mustArr,$arrBu); if($arr1){ $rule = $rule+array_fill_keys($arr1,'require');; } } $inst = new \tp5\Validate(); $validate = $inst->make($rule, $msg, $field); $result = $validate->check($data); if (!$result) { return $validate->getError(); } return ''; } function halt($var1,$var2){ $args = func_get_args(); foreach($args as $value){ dump($value); } die; } function get_dream_price($type = null,$s=false){ if(!isset($type)) return ''; else $type = intval($type); $str = '|不限|2k以下|2k-5k|5k-10k|10k-15k|15k-25k|25k-50k|50k以上'; $arr_str = explode('|',$str); if($s){ unset($arr_str[0]); return $arr_str; } return $arr_str[$type] ; } function get_worker_conf($version = 1){ $arr = [ 1 => [ "name" => "艺术设计", "sub" => [ 1 => [ "name" => "视觉设计", "sub" => ["视觉设计师", "网页设计师", "Flash设计师", "APP设计师", "UI设计师", "平面设计师", "美术设计师(2D/3D)", "广告设计师", "多媒体设计师", "原画师", "游戏特效", "游戏界面设计师", "游戏场景", "游戏角色", "游戏动作", "三位/CAD/制图", "美工", "包装设计", "电商设计", "动画设计师", "插画师"] ], 2 => [ "name" => "交互设计", "sub" => ["交互设计师", "无线交互设计师", "网页交互设计师", "硬件交互设计师"] ], 4 => [ "name" => "用户研究", "sub" => ["数据分析师", "用户研究员", "游戏数值策划", "UX设计师", "用户研究经理", "用户研究总监"] ], 8 => [ "name" => "非视觉设计", "sub" => ["服装设计", "工业设计", "橱柜设计", "家具设计", "家居设计", "珠宝设计", "室内设计", "陈列设计", "景观设计"] ] ] ], 2 => [ "name" => "客服", "sub" => [ 1 => [ "name" => "售前", "sub" => ["电商销售", "市场调研", "用户拉新", "产品咨询"] ], 2 => [ "name" => "售后", "sub" => ["电商售后", "产品解说", "客户回访"] ], 4 => [ "name" => "临时", "sub" => ["活动客服", "新店客服"] ] ] ], 4 => [ "name" => "运营文案", "sub" => [ 1 => [ "name" => "运营", "sub" => ["用户运营", "产品运营", "数据运营", "内容运营", "活动运营", "商家运营", "品类运营", "游戏运营", "网络推广", "网站运营", "新媒体运营", "社区运营", "微信运营", "微博运营", "策略运营", "线下拓展运营", "运营助理/专员", "内容审核", "销售运营"] ], 2 => [ "name" => "编辑", "sub" => ["内容编辑", "文案策划", "网站编辑", "记者", "采编"] ], ] ], 6 => [ "name" => "摄影摄像", "sub" => [ 1 => [ "name" => "摄影/摄像", "sub" => ["视频/音频剪辑优化", "特效/后期制作", "摄影师", "摄像师"] ], 2 => [ "name" => "导演编剧", "sub" => ["制片", "影视发行", "影视策划", "编剧", "导演", "编导"] ], 4 => [ "name" => "模特资源", "sub" => ["经纪人", "网红", "明星", "模特", "主持人", "主播", "DJ", "配音"] ], ] ], 7 => [ "name" => "产品技术", "sub" => [ 1 => [ "name" => "产品经理", "sub" => ["产品经理", "网页产品经理", "移动产品经理", "产品助理", "数据产品经理", "电商产品经理", "游戏策划", "产品专员"] ], 2 => [ "name" => "前端开发", "sub" => ["WEB前端", "HTML5", "Javacript", "Flash"] ], 4 => [ "name" => "后端开发", "sub" => ["Java", "PHP", "C++", "Python", ".NET", "C", "C#", "数据挖掘", "算法工程师", "Hadoop", "Node.js", "Golang", "自然语言处理", "语音/视频/图形开发", "数据采集", "Delphi", "Ruby", "推荐算法", "搜索算法", "VB", "Perl", "Erlang"] ], 8 => [ "name" => "测试", "sub" => ["测试工程师", "软件测试", "游戏测试", "功能测试", "测试开发", "自动化测试", "硬件测试", "性能测试", "移动端测试"] ], 16 => [ "name" => "运维/技术支持", "sub" => ["运维工程师", "IT技术支持", "网络工程师", "DBA", "网络安全", "运维开发工程师", "系统工程师", "系统管理员", "系统安全"] ], 32 => [ "name" => "移动开发", "sub" => ["Android", "IOS", "WEB前端", "U3D", "HTML5", "COCOS2DX", "JavaScript", "Flash", "WP"] ], 64 => [ "name" => "硬件开发", "sub" => ["嵌入式", "自动化", "单片机", "电路设计", "驱动开发", "系统集成", "FPGA开发", "DSP开发", "ARM开发", "PCB工艺", "模具设计", "热传导", "材料工程师", "精益工程师", "射频工程师"] ], 128 => [ "name" => "人工智能", "sub" => ["机器学习", "深度学习", "图像算法", "图像处理", "语音识别", "图像识别", "算法研究员"] ], 256 => [ "name" => "数据", "sub" => ["数据分析师", "数据挖掘", "数据开发", "数据仓库", "ETL工程师", "数据架构师", "算法研究员"] ], 512 => [ "name" => "通信", "sub" => ["通信技术工程师", "通信研发工程师", "数据通信工程师", "移动通信工程师", "电信网络工程师", "电信交换工程师", "有线传输工程师", "无限射频工程师", "通信电源工程师", "通信标准化工程师", "通信项目专员", "通信项目经理"] ], ] ], 8 => [ "name" => "其他", "sub" => [ 1 => [ "name" => "其他", "sub" => ["其他"] ], ] ], 9 => [ "name" => "传媒公关", "sub" => [ 1 => [ "name" => "采编/写作/出版", "sub" => ["记者", "编辑", "采编撰稿人", "出版发行", "校对录入", "总编", "自媒体"] ], 2 => [ "name" => "公关媒介", "sub" => ["媒介经理", "媒介专员", "广告协调", "品牌公关", "活动策划执行", "媒介策划"] ], 4 => [ "name" => "会务会展", "sub" => ["会议活动销售", "会议活动策划", "会议活动执行", "会展活动销售", "会展活动策划", "会展活动执行"] ], 8 => [ "name" => "影视传媒", "sub" => ["助理", "统筹制片人", "执行制片人", "导演/编导", "摄影/影像师", "视频编辑", "音频编辑", "经纪人", "后期制作", "影视发行", "影视策划", "主持人/主播/DJ", "演员/配音/模特", "化妆/造型/服装", "放映管理", "录音/音效", "制片人", "编剧", "网红"] ], ] ], 10 => [ "name" => "市场营销", "sub" => [ 1 => [ "name" => "市场推广营销", "sub" => ["市场营销", "市场策划", "市场顾问", "市场推广", "SEO", "SEM", "商务渠道", "商业数据分析", "活动策划", "网络营销", "海外市场", "APP推广"] ], 2 => [ "name" => "电商广告投放", "sub" => ["广告创意", "美术指导", "广告设计师", "策划经理", "文案", "广告制作", "媒介投放", "媒介顾问", "媒介合作", "广告审核"] ], 4 => [ "name" => "网络销售", "sub" => ["商品经理", "广告销售", "网络营销", "销售工程师", "客户经理", "销售专员", "销售经理", "客户代表", "大客户代表", "BD经理", "商务渠道", "渠道销售", "代理商销售", "销售助理", "电话销售", "销售顾问"] ] ] ], 11 => [ "name" => "教育培训", "sub" => [ 1 => [ "name" => "教育产品研发", "sub" => ["课程设计", "课程编辑", "教师", "培训研究", "培训师", "培训策划", "其他教育产品研发"] ], 2 => [ "name" => "教练", "sub" => ["舞蹈教练", "瑜伽教练", "瘦身顾问", "游泳教练", "篮球/羽毛球教练", "跆拳道教练"] ], 4 => [ "name" => "职业培训", "sub" => ["财会培训讲师", "HR培训讲师", "培训师", "拓展培训"] ], 8 => [ "name" => "招生", "sub" => ["课程顾问", "招生顾问", "留学顾问"] ], 16 => [ "name" => "IT培训", "sub" => ["JAVA培训讲师", "Android培训讲师", "ios培训讲师", "PHP培训讲师", ".NET培训讲师", "C++培训讲师", "Unity 3D培训讲师", "Web前端培训讲师", "软件测试培训讲师", "动漫培训讲师", "UI设计培训讲师"] ] ] ], 12 => [ "name" => "HR/财务", "sub" => [ 1 => [ "name" => "人力资源", "sub" => ["人力资源主管", "招聘", "HRBP", "人力资源专员/助理", "培训", "薪资福利", "绩效考核", "人力资源经理", "员工关系", "组织发展"] ], 2 => [ "name" => "财务", "sub" => ["会计", "出纳", "财务顾问", "结算", "税务", "审计", "风控"] ] ] ], 13 => [ "name" => "咨询/翻译/法律", "sub" => [ 1 => [ "name" => "翻译", "sub" => ["英语翻译", "日语翻译", "韩语/朝鲜语翻译", "法语翻译", "德语翻译", "俄语翻译", "西班牙语翻译", "其他语种翻译"] ], 2 => [ "name" => "律师", "sub" => ["事务所律师", "公司法务"] ], 4 => [ "name" => "咨询/调研", "sub" => ["企业管理咨询", "数据分析师", "财务咨询顾问", "IT咨询顾问", "人力资源顾问", "咨询项目管理", "战略咨询", "猎头顾问", "市场调研", "其他咨询顾问"] ], 8 => [ "name" => "高端咨询类职位", "sub" => ["咨询总监", "咨询经理", "高级翻译", "同声传译"] ], 16 => [ "name" => "法务", "sub" => ["法务专员/助理", "律师", "专利", "法律顾问", "法务主管", "法务经理", "法务总监"] ] ] ], ]; $arrnew = array( 4 => [ "name" => "电商运营", "sub" => [ 1 => [ "name" => "网店运营", "sub" => ["店长/运营主管", "商品运营", "活动策划", "文案编辑", "数据运营", "店铺运营", "渠道分销运营", "运营专员", "物流专员"] ], 2 => [ "name" => "文案编辑", "sub" => ["文案策划", "内容运营", "运营实习生", "网站编辑", "文案撰写", "文案编辑"] ], 4 => [ "name" => "网店推广", "sub" => ["直通车手", "钻展专员", "淘宝客专员", "爆款宝贝运营", "微信广告专员", "抖音广告专员"] ], 8 => [ "name" => "微商运营", "sub" => ["微信粉丝运营", "微商城运营", "分销代理", "朋友圈运营", "粉丝裂变运营"] ], 16 => [ "name" => "新媒体运营", "sub" => ["微信运营", "微博运营", "头条运营", "抖音运营", "短视频运营", "公众号运营", "达人运营", "自媒体运营"] ], 32 => [ "name" => "用户运营", "sub" => ["用户研究运营", "效果跟踪运营", "用户画像运营", "用户留存运营", "用户拉新运营"] ], 64 => [ "name" => "产品运营", "sub" => ["运营专员", "数据运营", "数据分析师", "数据挖掘师", "运营助理", "策略运营", "商家运营", "品类运营", "推广运营", "网站运营", "社区运营"] ], 128 => [ "name" => "活动运营", "sub" => ["活动执行运营", "线下运营", "线上运营"] ], ] ], 6 => [ "name" => "电商摄影", "sub" => [ 1 => [ "name" => "摄影/摄像", "sub" => ["摄影师", "摄像师"] ], 2 => [ "name" => "网店摄影", "sub" => ["商品摄影师", "人像摄影师", "短视频剪辑", "主图摄影师", "商品宣传摄像师", "商品精修美工"] ], 4 => [ "name" => "电商模特", "sub" => ["内衣模特", "女装模特", "男装模特", "儿童模特", "商品模特"] ], 16 => [ "name" => "网红直播", "sub" => ["淘宝直播达人", "游戏网红", "颜值网红", "语音网红", "美食网红", "游戏代练", "电子竞技选手", "户外娱乐网红", "音乐网红歌手"] ], 64 => [ "name" => "影视后期", "sub" => ["视频剪辑师", "音频剪辑师", "3D特效师"] ], ] ], 7 => [ "name" => "IT技术", "sub" => [ 1 => [ "name" => "产品经理", "sub" => ["网页产品经理", "移动产品经理", "产品助理", "数据产品经理", "电商产品经理", "产品专员"] ], 2 => [ "name" => "前端开发工程师", "sub" => ["WEB前端工程师", "HTML5工程师", "Javacript工程师", "Flash工程师"] ], 4 => [ "name" => "后端开发工程师", "sub" => ["Java工程师", "PHP工程师", "C++工程师", "Python工程师", ".NET工程师", "C工程师", "C#工程师", "数据挖掘工程师", "算法工程师", "Hadoop工程师", "Node.js工程师", "Golang工程师", "自然语言处理工程师", "语音开发工程师", "视频开发工程师", "图形开发工程师", "数据采集工程师", "Delphi工程师", "Ruby工程师", "推荐算法工程师", "搜索算法工程师", "VB工程师", "Perl工程师", "Erlang工程师"] ], 8 => [ "name" => "测试工程师", "sub" => ["软件测试", "游戏测试", "功能测试", "测试开发", "自动化测试", "硬件测试", "性能测试", "移动端测试"] ], 16 => [ "name" => "运维/技术支持", "sub" => ["运维工程师", "IT技术支持", "网络工程师", "DBA", "网络安全", "运维开发工程师", "系统工程师", "系统管理员", "系统安全工程师"] ], 32 => [ "name" => "移动开发工程师", "sub" => ["Android工程师", "IOS工程师", "WEB前端工程师", "U3D工程师", "HTML5工程师", "COCOS2DX工程师", "JavaScript工程师", "wordpress工程师", "Flash工程师"] ], 64 => [ "name" => "硬件开发工程师", "sub" => ["嵌入式开发工程师", "自动化开发工程师", "单片机开发工程师", "电路设计员", "驱动开发工程师", "系统集成工程师", "FPGA开发工程师", "DSP开发工程师", "ARM开发工程师", "PCB工艺", "模具设计师", "热传导工程师", "材料工程师", "精益工程师", "射频工程师"] ], 128 => [ "name" => "人工智能工程师", "sub" => ["机器学习工程师", "深度学习工程师", "图像算法工程师", "图像处理工程师", "语音识别工程师", "图像识别工程师", "算法研究员"] ], 256 => [ "name" => "数据工程师", "sub" => ["数据分析师", "数据挖掘工程师", "数据开发工程师", "数据仓库工程师", "ETL工程师", "数据架构师", "算法研究员"] ], 512 => [ "name" => "通信工程师", "sub" => ["通信技术工程师", "通信研发工程师", "数据通信工程师", "移动通信工程师", "电信网络工程师", "电信交换工程师", "有线传输工程师", "无限射频工程师", "通信电源工程师", "通信标准化工程师", "通信项目专员", "通信项目经理"] ], ] ], ); if($version == 1){ foreach ($arrnew as $key => $value) { $arr[$key] = $value; } } return $arr; } function endecodeId($string, $action = 'encode') { $startLen = 13; $endLen = 8; $coderes = ''; if ($action=='encode') { $uidlen = strlen($string); $salt = 'employ'; $codestr = $string.$salt; $encodestr = hash('md4', $codestr); $coderes = $uidlen.substr($encodestr, 5,$startLen-$uidlen).$string.substr($encodestr, -12,$endLen); $coderes = strtoupper($coderes); }elseif($action=='decode'){ $strlen = strlen($string); $uidlen = $string[0]; $coderes = substr($string, $startLen-$uidlen+1,$uidlen); } return $coderes; } function sercetShopInfo($platform,$shopname){ if (empty($platform) || empty($shopname)) return '*****'; switch ($platform) { case '1': $sercet_name = msubstr($shopname,0,1,$charset="utf-8",false).'***淘宝店'; break; case '2': $config = array('专营店','旗舰店'); $sercet_name = msubstr($shopname,0,1,$charset="utf-8",false).'***'.$config[array_rand($config)]; break; case '3': $sercet_name = msubstr($shopname,0,1,$charset="utf-8",false).'***工厂店'; break; case '4': $sercet_name = msubstr($shopname,0,1,$charset="utf-8",false).'***旗舰店'; break; default: $sercet_name = msubstr($shopname,0,1,$charset="utf-8",false).'***专卖店'; break; } return $sercet_name; } function isIntegerArr($arr=[]){ if(empty($arr)) return false; foreach($arr as $value){ if(!is_numeric($value)) return false; if(intval($value) != $value) return false; } return true; } function replace_http(&$url='',$type = 1){ if(empty($url)) return $url; if(DOMAIN != '.93jiang.com' && 2 == $type){ return $url; } $replace = (1 == $type)?'//':'https://'; $url = str_replace('http://',$replace,$url); return $url; } function mcache($key = '',$value = '',$time = 3600){ if(DOMAIN == '.93jiang.com'){ $service = '127.0.0.1'; } else{ $service = 'localhost'; } $mycache = new \Memcache; $mycache->connect($service,11211); if($value === ''){ $res = $mycache->get($key); } elseif(is_null($value)){ $res = $mycache->delete($key); } else{ $res = $mycache->set($key,$value,0,$time); } return $res; } function get_user_right($uid=0){ if(empty($uid)) return 1; $uinfo = get_user_info($uid); if(empty($uinfo['id'])) return 1; if(1 == $uinfo['ismember'] || $uinfo['dtype']>0){ return 3; }else{ return 2; } } function getCityIdByIP($ip){ $ipstr = long2ip($ip); if(empty($ipstr))return 0; Vendor('Ipsource.Ip'); $ipclasa = new \Ip(); $ipArr = $ipclasa::find($ipstr); if(empty($ipArr)){ return 0; } else{ return $ipArr[4]; } } function getDesManager($uid = 0){ $map = $data = array(); if(is_array($uid)){ $map['des_id'] = array('in',$uid); } else{ $map['des_id'] = $uid; } $list = M('des_crm')->field('des_id,mid,sz_mid,status,sea_type')->where($map)->select(); if(empty($list)){ return $data; } $midList = array_column($list,'mid'); $szmidList = array_column($list,'sz_mid'); $manlist = array_unique(array_merge($midList,$szmidList)); $manager = M('member')->where(array('uid'=>array('in',$manlist)))->getField('uid,nickname',true); foreach ($list as $key => $value) { $des_id = $value['des_id']; $sz_mid = $value['sz_mid']; $mid = $value['mid']; $data[$des_id]['szyy'][$sz_mid] = isset($manager[$sz_mid])?$manager[$sz_mid]:''; $data[$des_id]['yy'][$mid] = isset($manager[$mid])?$manager[$mid]:''; } if(!is_array($uid)){ return $data[$uid]; } return $data; } function getSellManager($sid = 0){ $map = $data = array(); if(is_array($sid)){ $map['sid'] = array('in',$sid); } else{ $map['sid'] = $sid; } if(empty($sid)){ return $data; } $list = M('crm_seller')->field('sid,mid,status')->where($map)->select(); if(empty($list)){ return $data; } $midList = array_unique(array_column($list,'mid')); $manager = M('member')->where(array('uid'=>array('in',$midList)))->getField('uid,nickname',true); foreach ($list as $key => $value) { $sell_id = $value['sid']; $mid = $value['mid']; $data[$sell_id][$mid] = isset($manager[$mid])?$manager[$mid]:''; } if(!is_array($sid)){ return $data[$sid]; } return $data; } function is_flush_cache($skey='',$scene='',$param=[]){ if(empty($param) || empty($skey)) return false; if(is_array($param)){ $param = md5(http_build_query($param)); } $upkey = 'flush_hx9mr_uptime_'.$scene.'_'.$param; $uptime = intval(S($upkey)); if($uptime<=0){ $uptime = time(); S($upkey,$uptime,1800); } $skey .= '_hx9mr_uptime'; $rtime = intval(S($skey)); return $rtime<$uptime?true:false; } function cache_with_time($name='',$value=''){ if(empty($name) || empty($value)){ return false; } $expire = 3600; S($name,$value,$expire); $tname = $name.'_hx9mr_uptime'; S($tname,time(),$expire-60); return true; } function get_memberlevel_name($type){ $member_conf = array( 'memtype_1'=>'云匠会员基础版', 'memtype_2'=>'云匠会员高级版', 'memtype_3'=>'云匠会员至尊版', ); return isset($member_conf[$type])?$member_conf[$type]:'云匠会员'; } function get_front_cate(){ $skey = 'front_cate_list'; $arrrole = S($skey); $arrrole = []; if(empty($arrrole)){ $arrrole = array(); $allRole = get_role(1,1); $allSubType = get_sub_work_type(1,1); $allRole[1] = '设计招聘'; $allRole[2] = '客服招聘'; $allRole[4] = '运营招聘'; $allRole[6] = '摄影招聘'; $linkConf = array(1=>'sheji',2=>'kfzp',4=>'yunying',6=>'sheying'); $cklist = S('cklist_screen_map'); if(empty($cklist)){ A('Home/Tool')->runcklistmap(); $cklist = S('cklist_screen_map'); } foreach ($cklist[2] as $key => $value) { if($key == 0 || $key == 3 || $key == 5 || $key >= 8 || $key == 7){ continue; } $roleNum = array_sum($value); $arrrole[$key]['name'] = $allRole[$key]; $arrrole[$key]['role'] = $key; $arrrole[$key]['base_link'] = $linkConf[$key]; $secondt = $allSubType[$key]; $allSubTags = get_sub_work_tags($key,0); ksort($value); foreach ($value as $k => $v) { $tlist = $cklist[3][$key][$k]; if(empty($tlist) && !($key == 2 && $k < 4) ){ continue; } $subRoleNum = $v; $subType = ($roleNum/$subRoleNum)<3.3?2:1; $arrrole[$key]['secondt'][$k] = array('name'=>$secondt[$k],'kftype'=>$k,'type'=>$subType); $tlist = $tlist?$tlist:array(); $curtSubTags = $allSubTags[$k]; foreach ($tlist as $tk => $tv) { $tag_id = array_search($tk,$curtSubTags); $tag_id = $tag_id===false?0:$tag_id+1; $thirdType = ($subRoleNum/$tv)<2.5?2:1; $arrrole[$key]['secondt'][$k]['secondt'][] = array('name'=>$tk,'type'=>$thirdType,'tag_id'=>$tag_id); } } ksort($arrrole); } S($skey,$arrrole); } return $arrrole; } function head_navigation(){ $navList = S('head_navigate_list'); if(empty($navList)){ $navConf = C('HEAD_NAVIGATE'); foreach ($navConf as $key => $value) { $navigate = explode('|',$value); if(sizeof($navigate) < 4){ continue; } $url = strpos($navigate[1],'www')===false?'//www'.DOMAIN.'/'.$navigate[1]:'//'.$navigate[1]; $navList[] = array('name'=>$navigate[0],'url'=>$url,'is_tj'=>$navigate[2],'is_hot'=>$navigate[3]); } S('head_navigate_list',$navList); } $hotWords = S('hot_words_list'); if(empty($hotWords)){ $hotWords = M('hot_words')->field('id,name,link,color')->where('status = 1')->order('level ASC,id DESC')->limit(10)->select(); S('hot_words_list',$hotWords); } return array($navList,$hotWords); } function replaceCkListUrl($gets=[],$field='',$val=0,$remove='',$yu='www'){ $skey = $yu.'_'.md5('rpkey2_'.http_build_query(func_get_args())); $pageUrl = S($skey); $pageUrl = false; if(false !== $pageUrl) return $pageUrl; if($field){ if(is_string($field)){ $fldArr[$field] = $val; }else{ $fldArr = $field; } $gets = array_merge($gets,$fldArr); }else{ $fldArr = []; } if(!array_key_exists('p',$fldArr)){ unset($gets['p']); } unset($gets['keyword']); if($remove){ $removeArr = explode(',',$remove); foreach ($removeArr as $uk) { unset($gets[$uk]); } } $role = $gets['role']; $domConf = [1=>'sheji',2=>'kfzp',4=>'yunying',6=>'sheying']; $domUrl = '//'.$yu.DOMAIN.'/'.$domConf[$role]; if($domConf[$role]){ $pageUrl = ''; $urlConf = ['keyword'=>'','kftype'=>'z','cate'=>'l','nengli'=>'n','city'=>'d','p'=>'p']; $urlQuery = array_filter($gets); unset($urlQuery['role']); $plusKw = false; foreach ($urlConf as $kk => $val) { if(!empty($gets[$kk])){ if($kk != 'keyword' && $kk != 'p'){ $plusKw = true; } $kval = $gets[$kk]; $pageUrl.='-'.$val.$kval; } unset($urlQuery[$kk]); } if($plusKw) $pageUrl = '-0'.$pageUrl; $pageUrl = $domUrl.$pageUrl.'.html'; if($urlQuery) $pageUrl .= '?'.http_build_query($urlQuery); }else{ $pageUrl = $domUrl.('m' == $yu?'worker':'wlist').'?'.http_build_query($gets); } S($skey,$pageUrl); return $pageUrl; } function get_vip_conf(){ $conf = array( 1=>['memtype'=>'1','yearPrice'=>4800,'name'=>'VIP年费会员'], 2=>['memtype'=>'2','yearPrice'=>19800,'name'=>'企业VIP'], 3=>['memtype'=>'3','yearPrice'=>49800,'name'=>'企业至尊VIP'] ); return $conf; } function check_imforbid_word($content = ''){ if(!empty($content)){ if(preg_match("/".file_get_contents('Resources/imforbid.txt')."/i",$content,$match)==1) return false; } return true; } function make_contract_no($pid = 0,$paytime = 0){ $randstr = rand(1000,9999); $str = 'YJFW'.date('Ymd',$paytime).$randstr.$pid; return $str; } function getArrCate($t=false,$cate1=0){ $arr[1] = ['title'=>'电商设计订单','child'=>[1=>'详情页',2=>'主图',4=>'活动页',8=>'海报',16=>'3D建模',32=>'直播间贴片',64=>'直播间背景',128=>'抠图',256=>'套版',512=>'修片',1024=>'拍摄',2048=>'短视频']]; $arr[2] = ['title'=>'平面设计订单','child'=>[1=>'背景文化墙',2=>'画册',4=>'Logo',8=>'包装',16=>'VI',32=>'折页',64=>'易拉宝',128=>'印刷',256=>'名片',512=>'x展架',1024=>'单页',2048=>'传单']]; $arr[3] = ['title'=>'UI设计订单','child'=>[1=>'APP',2=>'小程序',4=>'网站',8=>'数据大屏',16=>'图标',32=>'交互设计',64=>'产品原型',128=>'H5',256=>'落地页',512=>'前端开发']]; $arr[4] = ['title'=>'美工外包订单','child'=>[1=>'抠图',2=>'套版',4=>'修片',8=>'花字']]; $arr[5] = ['title'=>'其他','child'=>[1=>'拍摄',2=>'短视频',4=>'其他']]; if($t && $cate1){ return $arr[$cate1]['child']; }else return $arr; } function getdifftime($time){ $ntime = time(); if(empty($time)) return '1天前'; $cha = intval($ntime - $time); if($cha>86400) $str = '1天前'; elseif($cha<300) $str = '刚刚'; elseif($cha<3600){ $hh = floor($cha/60); $str = $hh.'分钟前'; }else{ $hh = floor($cha/3600); $str = $hh.'小时前'; } return $str; } function get_des_cate2($cate1,$cate2,$glue=' | '){ $arr_htype = getArrCate(true,$cate1); foreach($arr_htype as $key=>$value){ if(check_document_position($key,$cate2)){ $ht[$key] = $value; } } return implode($glue, $ht); } function getTaglists(){ $taglist[] = ['title'=>'详情页','url'=>'/demand/dlist/?cate1=1&cate2=1','cate1'=>1,'cate2'=>1]; $taglist[] = ['title'=>'主图','url'=>'/demand/dlist/?cate1=1&cate2=2','cate1'=>1,'cate2'=>2]; $taglist[] = ['title'=>'活动页','url'=>'/demand/dlist/?cate1=1&cate2=4','cate1'=>1,'cate2'=>4]; $taglist[] = ['title'=>'海报','url'=>'/demand/dlist/?cate1=1&cate2=8','cate1'=>1,'cate2'=>8]; $taglist[] = ['title'=>'3D建模','url'=>'/demand/dlist/?cate1=1&cate2=16','cate1'=>1,'cate2'=>16]; $taglist[] = ['title'=>'背景文化墙','url'=>'/demand/dlist/?cate1=2&cate2=1','cate1'=>2,'cate2'=>1]; $taglist[] = ['title'=>'画册','url'=>'/demand/dlist/?cate1=2&cate2=2','cate1'=>2,'cate2'=>2]; $taglist[] = ['title'=>'Logo','url'=>'/demand/dlist/?cate1=2&cate2=4','cate1'=>2,'cate2'=>4]; $taglist[] = ['title'=>'包装','url'=>'/demand/dlist/?cate1=2&cate2=8','cate1'=>2,'cate2'=>8]; $taglist[] = ['title'=>'抠图','url'=>'/demand/dlist/?cate1=1&cate2=128','cate1'=>1,'cate2'=>128]; $taglist[] = ['title'=>'套版','url'=>'/demand/dlist/?cate1=1&cate2=256','cate1'=>1,'cate2'=>256]; $taglist[] = ['title'=>'修片','url'=>'/demand/dlist/?cate1=4&cate2=4','cate1'=>4,'cate2'=>4]; $taglist[] = ['title'=>'其他','url'=>'/demand/dlist/?cate1=5&cate2=4','cate1'=>5,'cate2'=>4]; return $taglist; } function getTaglistsM($t=0){ if($t==1)$u = '/des/delist';else $u = '/index/desindex'; $taglist[] = ['title'=>'详情页','url'=>$u.'/?cate1=1&cate2=1','cate1'=>1,'cate2'=>1]; $taglist[] = ['title'=>'主图','url'=>$u.'/?cate1=1&cate2=2','cate1'=>1,'cate2'=>2]; $taglist[] = ['title'=>'活动页','url'=>$u.'/?cate1=1&cate2=4','cate1'=>1,'cate2'=>4]; $taglist[] = ['title'=>'海报','url'=>$u.'/?cate1=1&cate2=8','cate1'=>1,'cate2'=>8]; $taglist[] = ['title'=>'3D建模','url'=>$u.'/?cate1=1&cate2=16','cate1'=>1,'cate2'=>16]; $taglist[] = ['title'=>'背景文化墙','url'=>$u.'/?cate1=2&cate2=1','cate1'=>2,'cate2'=>1]; $taglist[] = ['title'=>'画册','url'=>$u.'/?cate1=2&cate2=2','cate1'=>2,'cate2'=>2]; $taglist[] = ['title'=>'Logo','url'=>$u.'/?cate1=2&cate2=4','cate1'=>2,'cate2'=>4]; $taglist[] = ['title'=>'包装','url'=>$u.'/?cate1=2&cate2=8','cate1'=>2,'cate2'=>8]; $taglist[] = ['title'=>'抠图','url'=>$u.'/?cate1=1&cate2=128','cate1'=>1,'cate2'=>128]; $taglist[] = ['title'=>'套版','url'=>$u.'/?cate1=1&cate2=256','cate1'=>1,'cate2'=>256]; $taglist[] = ['title'=>'修片','url'=>$u.'/?cate1=4&cate2=4','cate1'=>4,'cate2'=>4]; $taglist[] = ['title'=>'其他','url'=>$u.'/?cate1=5&cate2=4','cate1'=>5,'cate2'=>4]; return $taglist; } function get_www_name(){ $www = DOMAIN == '.xiaozaoyun.com'?'jiang':'www'; return $www; }}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 exec($name, $tag,&$params=NULL) { if(false === strpos($name,'\\')) { $class = "Addons\\{$name}\\{$name}Addon"; }else{ $class = $name.'Behavior'; $tag = 'run'; } if($class == 'Addons\FireShowPageTrace\FireShowPageTraceAddon')return ; $addon = new $class(); return $addon->$tag($params); } }}namespace Think{ class App { static public function init() { load_ext_file(COMMON_PATH); Dispatcher::dispatch(); 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); 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); Hook::listen('url_dispatch'); C('LOG_PATH',realpath(LOG_PATH).'/'); 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; }else{ $module = A(CONTROLLER_NAME); } 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); } } $action = C('ACTION_NAME')?C('ACTION_NAME'):ACTION_NAME; $action .= C('ACTION_SUFFIX'); try{ 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(C('URL_PARAMS_BIND') && $method->getNumberOfParameters()>0){ 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); } } $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(); } } catch (\ReflectionException $e) { $method = new \ReflectionMethod($module,'__call'); $method->invokeArgs($module,array($action,'')); } return ; } 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'); $varModule = C('VAR_MODULE'); $varController = C('VAR_CONTROLLER'); $varAction = C('VAR_ACTION'); 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); $_GET[$varModule] = array_shift($array); define('BIND_MODULE',$_GET[$varModule]); $domainModule = true; if(!empty($array)) { $controller = array_shift($array); if($controller){ $_GET[$varController] = $controller; $domainController = true; } } 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); } } }elseif(isset($_GET[$varModule])){ define('BIND_MODULE',$_GET[$varModule]); } 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; } } } if(empty($_SERVER['PATH_INFO'])) { $_SERVER['PATH_INFO'] = ''; } $depr = C('URL_PATHINFO_DEPR'); define('MODULE_PATHINFO_DEPR', $depr); define('__INFO__', trim($_SERVER['PATH_INFO'],'/')); define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'],PATHINFO_EXTENSION))); if (__INFO__ && C('MULTI_MODULE') && !isset($_GET[$varModule])){ $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]:''; }else{ $_SERVER['PATH_INFO'] = __INFO__; } }else{ $_SERVER['PATH_INFO'] = __INFO__; } define('__SELF__',strip_tags($_SERVER[C('URL_REQUEST_URI')])); define('MODULE_NAME', self::getModule($varModule)); if( MODULE_NAME && (!in_array_case(MODULE_NAME,C('MODULE_DENY_LIST')) || $domainModule ) && is_dir(APP_PATH.MODULE_NAME)){ define('MODULE_PATH', APP_PATH.MODULE_NAME.'/'); C('CACHE_PATH',CACHE_PATH.MODULE_NAME.'/'); if(is_file(MODULE_PATH.'Conf/config.php')) C(include MODULE_PATH.'Conf/config.php'); if('common' != APP_MODE && is_file(MODULE_PATH.'Conf/config_'.APP_MODE.'.php')) C(include MODULE_PATH.'Conf/config_'.APP_MODE.'.php'); 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'; load_ext_file(MODULE_PATH); }else{ E(L('_MODULE_NOT_EXIST_').':'.MODULE_NAME); } if(!IS_CLI){ $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__',(!empty($domainModule) || !C('MULTI_MODULE'))?__APP__ : __APP__.'/'.(C('URL_CASE_INSENSITIVE') ? 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; } if(C('URL_HTML_SUFFIX')) { $_SERVER['PATH_INFO'] = preg_replace('/\.('.trim(C('URL_HTML_SUFFIX'),'.').')$/i', '', $_SERVER['PATH_INFO']); }else{ $_SERVER['PATH_INFO'] = preg_replace('/\.'.__EXT__.'$/i','',$_SERVER['PATH_INFO']); } $depr = C('URL_PATHINFO_DEPR'); $paths = explode($depr,trim($_SERVER['PATH_INFO'],$depr)); if(!isset($_GET[$varController])) { 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); } } $_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_NAME', self::getController($varController)); define('ACTION_NAME', self::getAction($varAction)); if(!IS_CLI){ $controllerName = defined('CONTROLLER_ALIAS')?CONTROLLER_ALIAS:CONTROLLER_NAME; define('__CONTROLLER__',!empty($domainController)?__MODULE__.$depr : __MODULE__.$depr.( C('URL_CASE_INSENSITIVE') ? strtolower($controllerName) : $controllerName ) ); define('__ACTION__',__CONTROLLER__.$depr.(defined('ACTION_ALIAS')?ACTION_ALIAS:ACTION_NAME)); } $_REQUEST = array_merge($_POST,$_GET); } static private function getController($var) { $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 $maps[CONTROLLER_ALIAS]; }elseif(array_search(strtolower($controller),$maps)){ return ''; } } if(C('URL_CASE_INSENSITIVE')) { $controller = ucfirst(parse_name($controller,1)); } return strip_tags($controller); } static private function getAction($var) { $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(C('URL_CASE_INSENSITIVE')?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(C('URL_CASE_INSENSITIVE') ?ucfirst(strtolower($module)):$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 != $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) { self::invokeRegx($route, $matches); exit; } 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) { self::invokeRule($route, $match); exit; } 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])) { 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); $regx = substr_replace($regx,'',0,strlen($matches[0])); if($regx) { preg_replace_callback('/(\w+)\/([^\/]+)/', function($match) use(&$var){ if(strpos($match[2],'|')){ list($val,$fun) = explode('|',$match[2]); $val = $fun($val); }else{ $val = $match[2]; } $var[strtolower($match[1])] = strip_tags($val); }, $regx); } if(is_array($route) && isset($route[1])) { 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(); } } $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(); } } $reflect->invokeArgs($args); } }}namespace Think{ abstract class Controller { protected $view = null; protected $mid = 0; protected $uid = 0; protected $user = array (); 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 (); } private function initSite() { if ($this->mid) { $member_public_list = M ( 'member_public' )->where ( 'uid=' . $this->mid )->order ( 'is_use desc' )->select (); $this->assign ( 'member_public', $member_public_list [0] ); unset ( $member_public_list [0] ); $this->assign ( 'member_public_list', $member_public_list ); } $this->assign ( 'add_button', true ); $this->assign ( 'del_button', true ); $this->assign ( 'search_button', true ); $this->assign ( 'check_all', true ); if (APP_DEBUG) { define ( 'SITE_VERSION', time () ); } else { define ( 'SITE_VERSION', C ( 'SYSTEM_UPDATRE_VERSION' ) ); } } private function initUser() { $index_1 = strtolower ( MODULE_NAME . '/*/*' ); $index_2 = strtolower ( MODULE_NAME . '/' . CONTROLLER_NAME . '/*' ); $index_3 = strtolower ( MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME ); if ($index_1 == 'install/*/*') { return true; } $access = array_map ( 'trim', explode ( "\n", C ( 'access' ) ) ); $access = array_map ( 'strtolower', $access ); $access = array_flip ( $access ); $guest_login = isset ( $access [$index_1] ) || isset ( $access [$index_2] ) || isset ( $access [$index_3] ) || $index_1 == 'admin/*/*'; $GLOBALS ['mid'] = $this->mid = intval ( $user ['uid'] ); $GLOBALS ['user'] = $user; $GLOBALS ['uid'] = $this->uid = intval ( $_REQUEST ['uid'] == 0 ? $this->mid : $_REQUEST ['uid'] ); $this->assign ( 'mid', $this->mid ); $this->assign ( 'uid', $this->uid ); } 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 = '') { $content = $this->fetch ( $templateFile ); $htmlpath = ! empty ( $htmlpath ) ? $htmlpath : HTML_PATH; $htmlfile = $htmlpath . $htmlfile . C ( 'HTML_FILE_SUFFIX' ); Storage::put ( $htmlfile, $content, 'html' ); return $content; } protected function theme($theme) { $this->view->theme ( $theme ); return $this; } protected 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 = '') { 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 ) ); 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 ) . ');' ); 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' ); } public function getModel($model = null) { $model || $model = $_REQUEST ['_addons']; $model || $model = $_REQUEST ['model']; $model || $this->error ( '模型名标识必须!' ); if (is_numeric ( $model )) { $model = M ( 'Model' )->find ( $model ); } else { $model = M ( 'Model' )->getByName ( $model ); } $this->assign ( 'model', $model ); return $model; } public function common_lists($model = null, $page = 0, $templateFile = '') { is_array ( $model ) || $model = $this->getModel ( $model ); $list_data = $this->_get_model_list ( $model, $page ); $this->assign ( $list_data ); $templateFile || $templateFile = $model ['template_list'] ? $model ['template_list'] : ''; $this->display ( $templateFile ); } public function common_del($model = null, $ids = null) { is_array ( $model ) || $model = $this->getModel ( $model ); ! empty ( $ids ) || $ids = I ( 'id' ); ! empty ( $ids ) || $ids = array_unique ( ( array ) I ( 'ids', 0 ) ); ! empty ( $ids ) || $this->error ( '请选择要操作的数据!' ); $Model = M ( get_table_name ( $model ['id'] ) ); $map ['id'] = array ( 'in', $ids ); if ($Model->where ( $map )->delete ()) { $this->success ( '删除成功' ); } else { $this->error ( '删除失败!' ); } } public function common_edit($model = null, $id = 0, $templateFile = '') { is_array ( $model ) || $model = $this->getModel ( $model ); $id || $id = I ( 'id' ); if (IS_POST) { $Model = D ( parse_name ( get_table_name ( $model ['id'] ), 1 ) ); $Model = $this->checkAttr ( $Model, $model ['id'] ); if ($Model->create () && $Model->save ()) { $this->_saveKeyword ( $model, $id ); $this->success ( '保存' . $model ['title'] . '成功!', U ( 'lists?model=' . $model ['name'] ) ); } else { $this->error ( $Model->getError () ); } } else { $fields = get_model_attribute ( $model ['id'] ); $data = M ( get_table_name ( $model ['id'] ) )->find ( $id ); $data || $this->error ( '数据不存在!' ); $this->assign ( 'fields', $fields ); $this->assign ( 'data', $data ); $this->meta_title = '编辑' . $model ['title']; $templateFile || $templateFile = $model ['template_edit'] ? $model ['template_edit'] : ''; $this->display ( $templateFile ); } } public function common_add($model = null, $templateFile = '') { is_array ( $model ) || $model = $this->getModel ( $model ); if (IS_POST) { $Model = D ( parse_name ( get_table_name ( $model ['id'] ), 1 ) ); $Model = $this->checkAttr ( $Model, $model ['id'] ); if ($Model->create () && $id = $Model->add ()) { $this->_saveKeyword ( $model, $id ); $this->success ( '添加' . $model ['title'] . '成功!', U ( 'lists?model=' . $model ['name'] ) ); } else { $this->error ( $Model->getError () ); } } else { $fields = get_model_attribute ( $model ['id'] ); $this->assign ( 'fields', $fields ); $this->meta_title = '新增' . $model ['title']; $templateFile || $templateFile = $model ['template_add'] ? $model ['template_add'] : ''; $this->display ( $templateFile ); } } public function _saveKeyword($model, $id) { if (isset ( $_POST ['keyword'] ) && $model ['name'] != 'keyword' && defined ( '_ADDONS' ) && ! isset ( $_REQUEST ['keyword_no_deal'] )) { D ( 'Common/Keyword' )->set ( $_POST ['keyword'], _ADDONS, $id, $_POST ['keyword_type'] ); } } protected function checkAttr($Model, $model_id) { $fields = get_model_attribute ( $model_id, false ); $validate = $auto = array (); foreach ( $fields as $key => $attr ) { if ($attr ['is_must']) { $validate [] = array ( $attr ['name'], 'require', $attr ['title'] . '必须!' ); } if (! empty ( $attr ['validate_rule'] )) { $validate [] = array ( $attr ['name'], $attr ['validate_rule'], $attr ['error_info'] ? $attr ['error_info'] : $attr ['title'] . '验证错误', 0, $attr ['validate_type'], $attr ['validate_time'] ); } if (! empty ( $attr ['auto_rule'] )) { $auto [] = array ( $attr ['name'], $attr ['auto_rule'], $attr ['auto_time'], $attr ['auto_type'] ); } elseif ('checkbox' == $attr ['type']) { $auto [] = array ( $attr ['name'], 'arr2str', 3, 'function' ); } elseif ('datetime' == $attr ['type']) { $auto [] = array ( $attr ['name'], 'strtotime', 3, 'function' ); } } return $Model->validate ( $validate )->auto ( $auto ); } public function _get_model_list($model = null, $page = 0) { $page || $page = I ( 'p', 1, 'intval' ); $list_data = $this->_list_grid ( $model ); $grids = $list_data ['list_grids']; $fields = $list_data ['fields']; $map = $this->_search_map ( $model, $fields ); $row = empty ( $model ['list_row'] ) ? 20 : $model ['list_row']; if ($model ['extend']) { $name = get_table_name ( $model ['id'] ); $parent = get_table_name ( $model ['extend'] ); $fix = C ( "DB_PREFIX" ); $key = array_search ( 'id', $fields ); if (false === $key) { array_push ( $fields, "{$fix}{$parent}.id as id" ); } else { $fields [$key] = "{$fix}{$parent}.id as id"; } $count = M ( $parent )->join ( "INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id" )->where ( $map )->count (); $data = M ( $parent )->join ( "INNER JOIN {$fix}{$name} ON {$fix}{$parent}.id = {$fix}{$name}.id" )->field ( empty ( $fields ) ? true : $fields )->where ( $map )->order ( "{$fix}{$parent}.id DESC" )->page ( $page, $row )->select (); } else { empty ( $fields ) || in_array ( 'id', $fields ) || array_push ( $fields, 'id' ); $name = parse_name ( get_table_name ( $model ['id'] ), true ); $data = M ( $name )->field ( empty ( $fields ) ? true : $fields )->where ( $map )->order ( 'id DESC' )->page ( $page, $row )->select (); $count = M ( $name )->where ( $map )->count (); } $list_data ['list_data'] = $data; if ($count > $row) { $page = new \Think\Page ( $count, $row ); $page->setConfig ( 'theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%' ); $list_data ['_page'] = $page->show (); } return $list_data; } public function _list_grid($model) { $fields = array (); $grids = preg_split ( '/[;\r\n]+/s', $model ['list_grid'] ); foreach ( $grids as &$value ) { $val = explode ( ':', $value ); $field = explode ( ',', $val [0] ); $value = array ( 'field' => $field, 'title' => $val [1] ); if (isset ( $val [2] )) { $value ['href'] = $val [2]; preg_replace_callback ( '/\[([a-z_]+)\]/', function ($match) use(&$fields) { $fields [] = $match [1]; }, $value ['href'] ); } if (strpos ( $val [1], '|' )) { list ( $value ['title'], $value ['format'] ) = explode ( '|', $val [1] ); } foreach ( $field as $val ) { $array = explode ( '|', $val ); $fields [] = $array [0]; } } $model_fields = M ( 'attribute' )->where ( 'model_id=' . $model ['id'] )->field ( 'name' )->select (); $model_fields = getSubByKey ( $model_fields, 'name' ); in_array ( 'id', $model_fields ) || array_push ( $model_fields, 'id' ); $fields = array_intersect ( $fields, $model_fields ); $res ['fields'] = array_unique ( $fields ); $res ['list_grids'] = $grids; return $res; } public function _search_map($model, $fields) { $map = array (); $key = $model ['search_key'] ? $model ['search_key'] : 'title'; if (isset ( $_REQUEST [$key] )) { $map [$key] = array ( 'like', '%' . htmlspecialchars ( $_REQUEST [$key] ) . '%' ); unset ( $_REQUEST [$key] ); } foreach ( $_REQUEST as $name => $val ) { if (in_array ( $name, $fields )) { $map [$name] = $val; } } return $map; } } 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')); 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); } ob_start(); ob_implicit_flush(0); if('php' == strtolower(C('TMPL_ENGINE_TYPE'))) { 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); $theme = $this->getTemplateTheme(); $module = MODULE_NAME; if(strpos($template,'@')){ list($module,$template) = explode('@',$template); } if(!defined('THEME_PATH')){ if(C('VIEW_PATH')){ define('THEME_PATH', C('VIEW_PATH').$module.'/'.$theme); }else{ define('THEME_PATH', APP_PATH.$module.'/'.C('DEFAULT_V_LAYER').'/'.$theme); } } 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; } 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 Think{ abstract class Behavior { protected $options = array(); public function __construct() { if(!empty($this->options)) { foreach ($this->options as $name=>$val){ if(NULL !== C($name)) { $this->options[$name] = C($name); }else{ C($name,$val); } } array_change_key_case($this->options); } } public function __get($name){ return $this->options[strtolower($name)]; } abstract public function run(&$params); }}namespace Behavior{ use Think\Behavior; use Think\Storage; defined('THINK_PATH') or exit(); class ReadHtmlCacheBehavior extends Behavior { protected $options = array( 'HTML_CACHE_ON' => false, 'HTML_CACHE_TIME' => 60, 'HTML_CACHE_RULES' => array(), 'HTML_FILE_SUFFIX' => '.html', ); public function run(&$params){ if(C('HTML_CACHE_ON')) { $cacheTime = $this->requireHtmlCache(); if( false !== $cacheTime && $this->checkHTMLCache(HTML_FILE_NAME,$cacheTime)) { echo Storage::read(HTML_FILE_NAME,'html'); exit(); } } } static private function requireHtmlCache() { $htmls = C('HTML_CACHE_RULES'); if(!empty($htmls)) { $htmls = array_change_key_case($htmls); $moduleName = strtolower(CONTROLLER_NAME); $actionName = strtolower(ACTION_NAME); if(isset($htmls[$moduleName.':'.$actionName])) { $html = $htmls[$moduleName.':'.$actionName]; }elseif(isset($htmls[$moduleName.':'])){ $html = $htmls[$moduleName.':']; }elseif(isset($htmls[$actionName])){ $html = $htmls[$actionName]; }elseif(isset($htmls['*'])){ $html = $htmls['*']; } if(!empty($html)) { $rule = $html[0]; $callback = function($match){ switch($match[1]){ case "_GET": $var = $_GET[$match[2]]; break; case "_POST": $var = $_POST[$match[2]]; break; case "_REQUEST": $var = $_REQUEST[$match[2]]; break; case "_SERVER": $var = $_SERVER[$match[2]]; break; case "_SESSION": $var = $_SESSION[$match[2]]; break; case "_COOKIE": $var = $_COOKIE[$match[2]]; break; } return (count($match) == 4) ? $match[3]($var) : $var; }; $rule = preg_replace_callback('/{\$(_\w+)\.(\w+)(?:\|(\w+))?}/', $callback, $rule); $rule = preg_replace_callback('/{(\w+)\|(\w+)}/', function($match){return $match[2]($_GET[$match[1]]);}, $rule); $rule = preg_replace_callback('/{(\w+)}/', function($match){return $_GET[$match[1]];}, $rule); $rule = str_ireplace( array('{:controller}','{:action}','{:module}'), array(CONTROLLER_NAME,ACTION_NAME,MODULE_NAME), $rule); $rule = preg_replace_callback('/{|(\w+)}/', function($match){return $match[1]();},$rule); if(!empty($html[2])) $rule = $html[2]($rule); $cacheTime = isset($html[1])?$html[1]:C('HTML_CACHE_TIME'); define('HTML_FILE_NAME',HTML_PATH . $rule.C('HTML_FILE_SUFFIX')); return $cacheTime; } } return false; } static public function checkHTMLCache($cacheFile='',$cacheTime='') { if(!is_file($cacheFile)){ return false; }elseif (filemtime(C('TEMPLATE_NAME')) > Storage::get($cacheFile,'mtime','html')) { return false; }elseif(!is_numeric($cacheTime) && function_exists($cacheTime)){ return $cacheTime($cacheFile); }elseif ($cacheTime != 0 && NOW_TIME > Storage::get($cacheFile,'mtime','html')+$cacheTime) { return false; } return true; } }}namespace Behavior{ use Think\Behavior; use Think\Log; defined('THINK_PATH') or exit(); class ShowPageTraceBehavior extends Behavior { protected $options = array( 'SHOW_PAGE_TRACE' => false, 'TRACE_PAGE_TABS' => array('BASE'=>'基本','FILE'=>'文件','INFO'=>'流程','ERR|NOTIC'=>'错误','SQL'=>'SQL','DEBUG'=>'调试'), 'PAGE_TRACE_SAVE' => false, ); public function run(&$params){ if(!IS_AJAX && C('SHOW_PAGE_TRACE')) { echo $this->showTrace(); } } private function showTrace() { $files = get_included_files(); $info = array(); foreach ($files as $key=>$file){ $info[] = $file.' ( '.number_format(filesize($file)/1024,2).' KB )'; } $trace = array(); $base = array( '请求信息' => date('Y-m-d H:i:s',$_SERVER['REQUEST_TIME']).' '.$_SERVER['SERVER_PROTOCOL'].' '.$_SERVER['REQUEST_METHOD'].' : '.__SELF__, '运行时间' => $this->showTime(), '吞吐率' => number_format(1/G('beginTime','viewEndTime'),2).'req/s', '内存开销' => MEMORY_LIMIT_ON?number_format((memory_get_usage() - $GLOBALS['_startUseMems'])/1024,2).' kb':'不支持', '查询信息' => N('db_query').' queries '.N('db_write').' writes ', '文件加载' => count(get_included_files()), '缓存信息' => N('cache_read').' gets '.N('cache_write').' writes ', '配置加载' => count(c()), '会话信息' => 'SESSION_ID='.session_id(), ); $traceFile = COMMON_PATH.'Conf/trace.php'; if(is_file($traceFile)) { $base = array_merge($base,include $traceFile); } $debug = trace(); $tabs = C('TRACE_PAGE_TABS'); foreach ($tabs as $name=>$title){ switch(strtoupper($name)) { case 'BASE': $trace[$title] = $base; break; case 'FILE': $trace[$title] = $info; break; default: $name = strtoupper($name); if(strpos($name,'|')) { $array = explode('|',$name); $result = array(); foreach($array as $name){ $result += isset($debug[$name])?$debug[$name]:array(); } $trace[$title] = $result; }else{ $trace[$title] = isset($debug[$name])?$debug[$name]:''; } } } if($save = C('PAGE_TRACE_SAVE')) { if(is_array($save)) { $tabs = C('TRACE_PAGE_TABS'); $array = array(); foreach ($save as $tab){ $array[] = $tabs[$tab]; } } $content = date('[ c ]').' '.get_client_ip().' '.$_SERVER['REQUEST_URI']."\r\n"; foreach ($trace as $key=>$val){ if(!isset($array) || in_array($key,$array)) { $content .= '[ '.$key." ]\r\n"; if(is_array($val)) { foreach ($val as $k=>$v){ $content .= (!is_numeric($k)?$k.':':'').print_r($v,true)."\r\n"; } }else{ $content .= print_r($val,true)."\r\n"; } $content .= "\r\n"; } } error_log(str_replace('
',"\r\n",$content), Log::FILE,LOG_PATH.date('y_m_d').'_trace.log'); } unset($files,$info,$base); ob_start(); include C('TMPL_TRACE_FILE')?C('TMPL_TRACE_FILE'):THINK_PATH.'Tpl/page_trace.tpl'; return ob_get_clean(); } private function showTime() { G('beginTime',$GLOBALS['_beginTime']); G('viewEndTime'); return G('beginTime','viewEndTime').'s ( Load:'.G('beginTime','loadTime').'s Init:'.G('loadTime','initTime').'s Exec:'.G('initTime','viewStartTime').'s Template:'.G('viewStartTime','viewEndTime').'s )'; } }}namespace Behavior{ use Think\Behavior; use Think\Storage; use Think\Think; defined('THINK_PATH') or exit(); class ParseTemplateBehavior extends Behavior { protected $options = array( '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' => true, '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', 'TAGLIB_PRE_LOAD' => '', ); 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'],'tpl'); }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_SUPPERT_').': ' . $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,'tpl')){ return false; }elseif (filemtime($tmplTemplateFile) > Storage::get($tmplCacheFile,'mtime','tpl')) { return false; }elseif (C('TMPL_CACHE_TIME') != 0 && time() > Storage::get($tmplCacheFile,'mtime','tpl')+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','tpl')) { return false; } } return true; } protected function checkContentCache($tmplContent,$prefix='') { if(Storage::has(C('CACHE_PATH').$prefix.md5($tmplContent).C('TMPL_CACHFILE_SUFFIX'),'tpl')){ return true; }else{ return false; } } }}namespace Behavior{ use Think\Behavior; defined('THINK_PATH') or exit(); class ContentReplaceBehavior extends Behavior { protected $options = array( 'TMPL_PARSE_STRING' => array(), ); public function run(&$content){ $content = $this->templateContentReplace($content); } protected function templateContentReplace($content) { $replace = array( '__ROOT__' => __ROOT__, '__APP__' => __APP__, '__MODULE__' => __MODULE__, '__ACTION__' => __ACTION__, '__SELF__' => __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 Behavior{ use Think\Behavior; use Think\Storage; defined('THINK_PATH') or exit(); class WriteHtmlCacheBehavior extends Behavior { public function run(&$content){ if(C('HTML_CACHE_ON') && defined('HTML_FILE_NAME')) { Storage::put(HTML_FILE_NAME , $content,'html'); } } }} namespace { Think\Think::addMap(array ( 'Think\\Log' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Log.class.php', 'Think\\Log\\Driver\\File' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Log/Driver/File.class.php', 'Think\\Exception' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Exception.class.php', 'Think\\Model' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Model.class.php', 'Think\\Db' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Db.class.php', 'Think\\Template' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Template.class.php', 'Think\\Cache' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Cache.class.php', 'Think\\Cache\\Driver\\File' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Cache/Driver/File.class.php', 'Think\\Storage' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Library/Think/Storage.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_SUPPERT_' => '系统不支持', '_CACHE_TYPE_INVALID_' => '无法加载缓存类型', '_FILE_NOT_WRITEABLE_' => '目录(文件)不可写', '_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_' => '参数错误或者未定义', )); C(array ( 'app_file_case' => false, 'app_sub_domain_deploy' => 1, 'app_sub_domain_rules' => array ( 'admin-dj' => array ( 0 => 'Admindj/', ), 'b' => array ( 0 => 'Business/', ), 'd' => array ( 0 => 'Designer/', ), 'res' => array ( 0 => 'Resources/', ), 'service' => array ( 0 => 'Service/', ), 'm' => array ( 0 => 'Mobile/', ), 'wd' => array ( 0 => 'Answer/', ), 'crm' => array ( 0 => 'Crm/', ), 'tool' => array ( 0 => 'Tools/', ), 'm1' => array ( 0 => 'Mi/', ), 'kefu' => array ( 0 => 'Kefu/', ), 'w' => array ( 0 => 'Worker/', ), ), 'app_domain_suffix' => '', 'action_suffix' => '', 'multi_module' => true, 'module_deny_list' => array ( 0 => 'Common', 1 => 'User', ), 'controller_level' => 1, 'cookie_expire' => 0, 'cookie_domain' => '.93jiang.com', 'cookie_path' => '/', 'cookie_prefix' => '', 'default_m_layer' => 'Model', 'default_c_layer' => 'Controller', 'default_v_layer' => 'View', 'default_lang' => 'zh-cn', 'default_theme' => '', 'default_module' => 'Home', 'default_controller' => 'Index', 'default_action' => 'index', 'default_charset' => 'utf-8', 'default_timezone' => 'PRC', 'default_ajax_return' => 'JSON', 'default_jsonp_handler' => 'jsonpReturn', 'default_filter' => 'stripslashes,htmlspecialchars', 'db_type' => 'mysql', 'db_host' => '127.0.0.1', 'db_name' => 'sq_jiang', 'db_user' => 'root', 'db_pwd' => '93dbroot#!^', 'db_port' => '3306', 'db_prefix' => 'ks_', 'db_fieldtype_check' => false, 'db_fields_cache' => true, 'db_charset' => 'utf8', 'db_deploy_type' => 0, 'db_rw_separate' => false, 'db_master_num' => 1, 'db_slave_no' => '', 'db_sql_build_cache' => false, 'db_sql_build_queue' => 'file', 'db_sql_build_length' => 20, 'db_sql_log' => false, 'db_bind_param' => false, 'data_cache_time' => 3600, 'data_cache_compress' => false, 'data_cache_check' => false, 'data_cache_prefix' => '', 'data_cache_type' => 'Memcache', 'data_cache_path' => './Runtime/Temp/', 'data_cache_subdir' => false, 'data_path_level' => 1, 'error_message' => '页面错误!请稍后再试~', 'error_page' => '', 'show_error_msg' => false, 'trace_exception' => 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 ( ), 'session_type' => '', 'session_prefix' => '', 'tmpl_content_type' => 'text/html', 'tmpl_action_error' => 'Public:error', 'tmpl_action_success' => 'Public:error', 'tmpl_exception_file' => '/93jiang/www/93jiang/www.93jiang.com/ThinkPHP/Tpl/think_exception.tpl', 'tmpl_detect_theme' => false, 'tmpl_template_suffix' => '.html', 'tmpl_file_depr' => '/', 'url_case_insensitive' => true, 'url_model' => 2, '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_404_redirect' => '', 'url_router_on' => true, 'url_route_rules' => array ( '/^d\\/(\\d+)$/' => 'list/resume?id=:1', '/^w\\/(\\d+)$/' => 'wlist/resume?id=:1', '/^k\\/(\\d+)$/' => 'list/kfresume?id=:1', '/^ms\\/(\\d+)$/' => 'list/ms?id=:1', '/^rz\\/(\\d+)$/' => 'list/rz?id=:1', '/^wkrz\\/(\\d+)$/' => 'wlist/rz?id=:1', '/^kfrz\\/(\\d+)$/' => 'list/kfrz?id=:1', '/^zhaopin\\/(\\d+)$/' => 'zhaopin/detail?id=:1', '/^kfms\\/(\\d+)$/' => 'list/kfms?id=:1', '/^notice\\/(\\d+)$/' => 'notice/index?id=:1', '/^news\\/(\\d+)$/' => 'news/detail?id=:1', '/^news\\/cate/(\\d+)$/' => 'news/nlist?id=:1', '/^case\\/(\\d+)$/' => 'case/info?id=:1', '/^recruit$/' => 'guide/recruit', '/^srecruit$/' => 'guide/srecruit', '/^cp\\/(\\d+)$/' => 'index/cp?id=:1', '/^u\\/(\\w+)$/' => 'index/shorturl?code=:1', '/^question\\/(\\d+)$/' => 'Answer/Question/detail?id=:1', '/^wd\\/(\\d+)$/' => 'wd/index?id=:1', '/^wd\\/detail\\/(\\d+)$/' => 'wd/detail?id=:1', '/^peixun\\/(\\d+)$/' => 'peixun/detail?id=:1', '/^peixun\\/cate/(\\d+)$/' => 'peixun/plist?id=:1', '/^seller\\/interview\\/(\\d+)$/' => 'seller/detail?id=:1', '/^seller\\/guide\\/(\\d+)$/' => 'Home/seller/guide?id=:1', '/^employ\\/interview\\/(\\d+)$/' => 'employ/detail?id=:1', '/^employ\\/guide\\/(\\d+)$/' => 'Home/employ/guide?id=:1', '/^list\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\w+)-(\\d+)$/' => 'list/index?wstyle=:1&cate=:2&level=:3&city=:4&sex=:5&ageb=:6&agee=:7&type=:8&star=:9&cstyle=:10&skill=:11&o=:12&t=:13&gz=:14', '/^list\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\w+)-(\\w+)-(\\d+)$/' => 'list/index?wstyle=:1&cate=:2&level=:3&city=:4&sex=:5&o=:6&t=:7&gz=:8', '/^list\\/indexce\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\w+)-(\\w+)-(\\d+)$/' => 'list/indexce?wstyle=:1&cate=:2&level=:3&city=:4&sex=:5&o=:6&t=:7&gz=:8', '/^list\\/indexce\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\w+)-(\\w+)-(\\d+)[-(\\d+)][-(\\d+)][-(\\d+)][-(\\d+)][-(\\d+)][-(\\d+)]$/' => 'list/indexce?wstyle=:1&cate=:2&level=:3&city=:4&sex=:5&o=:6&t=:7&gz=:8&ageb=:9&agee=:10&type=:11&star=:12&cstyle=:13&skill=:14', '/^list\\/jianzhi\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\w+)-(\\w+)$/' => 'list/jianzhi?wstyle=:1&cate=:2&level=:3&city=:4&sex=:5&o=:6&t=:7', '/^list\\/kefu\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\w+)-(\\w+)-(\\d+)$/' => 'list/kefu?kftype=:1&cate=:2&level=:3&city=:4&sex=:5&o=:6&t=:7&gz=:8', '/^kflist\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\w+)-(\\w+)-(\\d+)$/' => 'list/kefu?kftype=:1&cate=:2&level=:3&city=:4&sex=:5&o=:6&t=:7&gz=:8', '/^wlist\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\w+)-(\\w+)-(\\d+)$/' => 'wlist/index?kftype=:1&cate=:2&level=:3&city=:4&sex=:5&o=:6&t=:7&gz=:8', '/^kflist$/' => 'list/kefu', '/^case\\/(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)$/' => 'case/index?part=:1&cate=:2&htype=:3&ctype=:4&level=:5&ord=:6', '/^demand\\/dlist\\/(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)$/' => 'demand/dlist?dtype=:1&xtype=:2&platform=:3&ord=:4&prib=:5&prie=:6', '/^demand\\/(\\d+)$/' => 'demand/d?xid=:1', '/^service\\/(\\d+)$/' => 'Home/Service/detail?id=:1', '/^jifen\\/(\\d+)$/' => 'Home/Jifen/detail?id=:1', '/^ce\\/resume\\/(\\d+)$/' => 'ce/resume?id=:1', '/^ce\\/rz\\/(\\d+)$/' => 'ce/rz?id=:1', '/^ce\\/dlist\\/(\\d+)-(\\d+)-(\\d+)-(\\w+)-(\\d+)-(\\w+)-(\\w+)-(\\d+)$/' => 'ce/dlist?wstyle=:1&cate=:2&level=:3&city=:4&sex=:5&o=:6&t=:7&gz=:8', '/^sz\\/zwgc\\/(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)\\/*(.*)$/' => 'sz/zwgc?job=:1&gzage=:2&price=:3&school=:4&ord=:5&p=:6&wd=:7', '/^sheji-p(\\d+)$/' => array ( 0 => 'list/index?p=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^sheji(?:-(\\w+))?(?:-z(\\d+))?(?:-l(\\d+))?(?:-n(\\w+))?(?:-d(\\w+))?(?:-p(\\d+))?$/' => array ( 0 => 'list/index?keyword=:1&kftype=:2&cate=:3&nengli=:4&city=:5&p=:6', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^kfzp-p(\\d+)$/' => array ( 0 => 'list/kefu?p=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^kfzp(?:-(\\w+))?(?:-z(\\d+))?(?:-l(\\d+))?(?:-n(\\w+))?(?:-d(\\w+))?(?:-p(\\d+))?$/' => array ( 0 => 'list/kefu?keyword=:1&kftype=:2&cate=:3&nengli=:4&city=:5&p=:6', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^yunying-p(\\d+)$/' => array ( 0 => 'wlist/index?p=:1', 1 => 'role=4', 2 => array ( 'ext' => 'html', ), ), '/^yunying(?:-(\\w+))?(?:-z(\\d+))?(?:-n(\\w+))?(?:-d(\\w+))?(?:-p(\\d+))?$/' => array ( 0 => 'wlist/index?keyword=:1&kftype=:2&nengli=:3&city=:4&p=:5', 1 => 'role=4', 2 => array ( 'ext' => 'html', ), ), '/^sheying-p(\\d+)$/' => array ( 0 => 'wlist/index?p=:1', 1 => 'role=6', 2 => array ( 'ext' => 'html', ), ), '/^sheying(?:-(\\w+))?(?:-z(\\d+))?(?:-n(\\w+))?(?:-d(\\w+))?(?:-p(\\d+))?$/' => array ( 0 => 'wlist/index?keyword=:1&kftype=:2&nengli=:3&city=:4&p=:5', 1 => 'role=6', 2 => array ( 'ext' => 'html', ), ), '/^d\\/(\\d+)-case$/' => array ( 0 => 'case/lists?id=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^d\\/(\\d+)-evaluation$/' => array ( 0 => 'list/evaluation?uid=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^d\\/(\\d+)-data$/' => array ( 0 => 'list/data?uid=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^k\\/(\\d+)-case$/' => array ( 0 => 'case/lists?id=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^k\\/(\\d+)-evaluation$/' => array ( 0 => 'list/evaluation?uid=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^k\\/(\\d+)-data$/' => array ( 0 => 'list/data?uid=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^w\\/(\\d+)-case$/' => array ( 0 => 'case/lists?id=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^w\\/(\\d+)-evaluation$/' => array ( 0 => 'list/evaluation?uid=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^w\\/(\\d+)-data$/' => array ( 0 => 'list/data?uid=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^s-(\\d+)$/' => array ( 0 => 'list/seolist?gongz=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), '/^zhaopin-(\\w+)$/' => array ( 0 => 'channel/index?type=:1', 1 => '', 2 => array ( 'ext' => 'html', ), ), ), 'url_map_rules' => array ( ), 'var_module' => 'm', 'var_controller' => 'c', 'var_action' => 'a', 'var_ajax_submit' => 'ajax', 'var_jsonp_handler' => 'callback', 'var_pathinfo' => 's', 'var_template' => 't', 'var_filters' => 'filter_exp', 'http_cache_control' => 'private', 'check_app_dir' => true, 'file_upload_type' => 'Local', 'data_crypt_type' => 'Think', 'autoload_namespace' => array ( 'Addons' => './Addons/', ), 'app_group_list' => 'Home', 'module_allow_list' => array ( 0 => 'Home', 1 => 'Admindj', 2 => 'Business', 3 => 'Zp', 4 => 'Kefu', 5 => 'Actdata', 6 => 'Worker', ), 'data_auth_key' => 'F5%Jliak,Kw6-$;v!^=I{Wec3p*Tqz9@gD0Ut)Y/', 'show_page_trace' => false, 'user_max_cache' => 1000, 'user_administrator' => 1, 'memcache_host' => 'tcp://127.0.0.1:11211', 'mail_address' => '10000@93jiang.com', 'mail_server' => 'ssl://smtp.exmail.qq.com', 'mail_port' => 465, 'mail_loginname' => '10000@93jiang.com', 'mail_password' => 'Jiang135246ks', 'mail_check_key' => '93jiang!@#youxiang135', 'customer' => 13, 'customer_master' => 11, 'sale_all' => array ( 0 => 5, 1 => 6, 2 => 12, ), 'designer_all' => array ( 0 => 7, 1 => 8, 2 => 9, ), 'customer_all' => array ( 0 => 11, 1 => 13, ), 'designer_master' => 7, 'designer_group' => 8, 'designer_user' => 9, 'fin_all' => array ( 0 => 10, ), 'sale_xuni' => 343, 'manage_user' => 182, 'customerm_user' => 191, 'dqa_uid' => array ( 0 => 182, 1 => 188, 2 => 251, 3 => 356, ), 'stop_days' => 7, 'seller_info_key' => 'sell_info', 'des_info_key' => 'des_info', 'jiangke_info_key' => 'jiangke_info', 'jiang_error_times' => 'jiang_error_times', 'jiangke_account_key' => 'jiangke_account', 'borker_info_key' => 'borker_info', 'des_count_key' => 'des_count', 'shop_info_key' => 'shop_info', 'des_account_key' => 'des_account', 'prod_allcount_key' => 'prod_allcount', 'prod_count_key' => 'prod_count', 'seller_account_key' => 'seller_account', 'des_case_list' => 'des_case_list', 'des_exper_list' => 'des_exper_list', 'des_mark_lv' => 'des_mark_lv', 'des_tags_key' => 'des_tags_list', 'des_mark_list' => 'des_mark_list', 'jingjiren_account_key' => 'jingjiren_account', 'top_message' => array ( 'add_need' => '雇主[fid]提交了[num]个新工作安排,查看', 'add_node' => '雇主[fid]有[num]条工作回复,查看', 'add_tousu' => '雇主[fid]对你发起了[num]条投诉,查看', 'add_servicegen' => '雇主[fid]有[num]条投诉回复,查看', 'add_desneed' => '[fid]提交了[num]个工作内容,查看', 'add_desnode' => '[fid]有[num]条工作回复,查看', 'add_desservicegen' => '[fid]有[num]条投诉回复,查看', 'leave_bh' => '[fid]驳回了您的请假请求,查看', 'qx_need' => '[fid]取消了[num]个工作安排,查看', 'do_order' => '设计师[fid]成功入职,查看', 'tuog_ok' => '恭喜,雇主[fid]已将工资托管,请尽快确认查看', 'bdans_my' => '您的问题新增[num]条回答,查看', 'bdans_att' => '您关注问题新增[num]条回答,查看', 'bdadopt_my' => '您的问题有了最佳回答,查看', 'bdadopt_att' => '您关注的问题有了最佳回答,查看', 'bdadopt_ans' => '您的回答已被采纳,查看', 'bdcomment' => '您的回答新增[num]条评论,查看', 'bdcomment_relpy' => '您的评论新增[num]条回复,查看', 'bd_ispass' => '降低费率申请已通过,查看', 'bd_nopass' => '降低费率申请未通过,查看', ), 'des_point' => array ( 'checkin' => '签到', 'doorder' => '成功雇佣并接单', 'dofinal' => '完成工作', 'addmark' => '得到一个评价', 'addnode' => '雇主回应', 'dostop' => '由于暂停导致完结', 'dowanji' => '正常完结一个项目', 'tousu' => '被投诉', 'cancelts' => '投诉被雇主主动取消', 'dojie' => '被投诉并被客服介入', 'panding' => '投诉被判定设计师责任', 'doend' => '正常完结一个项目,自动发放工资', 'paymoney' => '雇主点击确认发工资', 'identity' => '第一次发布个人简历', 'ruzhu' => '入驻成功', 'fanhui' => '三天无理由试用,返回经验值', 'dingzhi' => '定制项目被投诉,返回经验值', 'bd_question' => '必答频道发布/删除问题', 'bd_answer' => '必答频道提交/删除回答', 'bd_adopt_ans' => '必答频道回答被采纳/管理员取消采纳', 'de_question' => '必答频道发布/删除问题', 'de_answer' => '必答频道提交/删除回答', 'de_adopt' => '必答频道回答被采纳/管理员取消采纳', 'doFire' => '普通解雇成功', 'enter' => '入驻成功', 'refund3day' => '3天无理由退款扣除项目经验值', 'training1' => '参加培训获得', 'bd_question_review' => '必答频道评稿指点', 'xiugai_dj' => '修改设计师等级', 'jzdoorder' => '兼职成功雇佣并接单', 'jzdofire' => '兼职被解雇', ), 'des_exp_point' => array ( 1 => array ( 0 => 0, 1 => 2000, ), 2 => array ( 0 => 2000, 1 => 6000, ), 3 => array ( 0 => 6000, 1 => 14000, ), 4 => array ( 0 => 14000, 1 => 30000, ), 5 => array ( 0 => 30000, 1 => 100000000, ), ), 'des_exp_level' => array ( 1 => 2000, 2 => 4000, 3 => 8000, 4 => 16000, 5 => 100000, ), 'des_price_range' => array ( 1 => array ( 0 => 1500, 1 => 3000, ), 2 => array ( 0 => 3000, 1 => 4000, ), 3 => array ( 0 => 4000, 1 => 6000, ), 4 => array ( 0 => 6000, 1 => 10000, ), 5 => array ( 0 => 10000, 1 => 100000, ), ), 'des_price_default' => array ( 1 => 2500, 2 => 3500, 3 => 5000, 4 => 7000, 5 => 10000, ), 'kefu_price_bond' => array ( 1 => 2000, 2 => 3000, 3 => 4000, ), 'yy_price_bond' => array ( 1 => 2500, 2 => 4500, 3 => 8000, ), 'yy_order_lower_priprice' => array ( 1 => 1000, 2 => 2000, 3 => 3000, ), 'des_part_price_range' => array ( 1 => array ( 0 => 15, 1 => 35, ), 2 => array ( 0 => 30, 1 => 50, ), 3 => array ( 0 => 40, 1 => 70, ), 4 => array ( 0 => 60, 1 => 100, ), 5 => array ( 0 => 100, 1 => 1000, ), ), 'kefu_price_range' => array ( 1 => array ( 0 => 1000, 1 => 2000, ), 2 => array ( 0 => 1600, 1 => 9000, ), 3 => array ( 0 => 2200, 1 => 20000, ), ), 'kefu_aft_price_range' => array ( 1 => array ( 0 => 1000, 1 => 5000, ), 2 => array ( 0 => 1000, 1 => 9000, ), 3 => array ( 0 => 1000, 1 => 20000, ), ), 'yy_price_range' => array ( 1 => array ( 0 => 1000, 1 => 100000, ), 2 => array ( 0 => 1000, 1 => 100000, ), 3 => array ( 0 => 1000, 1 => 100000, ), ), 'member_pay_price' => array ( 'oprice' => 4800, 'nprice' => 3600, ), 'des_test_account' => array ( 0 => 10006, 1 => 10005, 2 => 10003, 3 => 10002, 4 => 10056, 5 => 15326, 6 => 68350, 7 => 10000, 8 => 68756, 9 => 59434, 10 => 65552, 11 => 125848, 12 => 34223, 13 => 109681, 14 => 119975, 15 => 151240, 16 => 151246, 17 => 151243, 18 => 151535, 19 => 151242, 20 => 151238, 21 => 151449, 22 => 150503, 23 => 151458, 24 => 112539, 25 => 138785, 26 => 149417, 27 => 151241, 28 => 151539, 29 => 150103, 30 => 149842, ), 'kefu_test_account' => array ( 0 => 55913, 1 => 59824, ), 'worker_test_account' => array ( 0 => 89780, 1 => 150103, 2 => 150503, 3 => 151449, ), 'des_nocash_account' => array ( 0 => 10004, 1 => 31650, 2 => 31727, 3 => 34952, 4 => 37988, 5 => 37990, 6 => 37997, 7 => 64160, ), 'des_jiang_account' => array ( 0 => 15813, 1 => 16903, 2 => 16917, 3 => 17461, 4 => 17485, 5 => 17450, 6 => 17482, 7 => 17394, 8 => 17481, 9 => 16961, 10 => 16925, 11 => 16924, 12 => 16949, 13 => 16944, 14 => 17899, 15 => 18111, 16 => 15837, 17 => 17539, 18 => 20417, 19 => 20420, 20 => 12093, ), 'account_up_value' => 500000, 'auto_login_key' => '93j135#%&098ks', 'numtoimage_key' => 'ch123eck!@#see', 'own_ip' => array ( 0 => '1019169427', 1 => '3078736723', 2 => '3078736722', 3 => '3078736724', 4 => '2130706433', 5 => '3078736725', 6 => '1031976474', 7 => '1972703425', 8 => '1944869578', 9 => '3078736362', 10 => '1031976476', 11 => '3662367218', 12 => '3747451869', 13 => '1019169430', 14 => '3747449783', 15 => '1880194453', ), 'temp_log_info' => array ( 'ms' => '雇主[sid]面试了设计师[des_id]', 'rz' => '雇主[sid]与设计师[des_id]达成雇佣意向,并已成功下单', 'order' => '雇主[sid]已成功雇佣了设计师[des_id]', 'stop' => '雇主[sid]对项目进行了暂停操作', 'cash' => '雇主[sid]进行了提现', 'paymoney' => '雇主[sid]发放了工资', 'xuqian' => '雇主[sid]续签了设计师[des_id]', ), 'no_check_words' => array ( 0 => '设计', 1 => '设计师', 2 => '美工', 3 => '努力', 4 => '环境', 5 => '事物', 6 => '敢于', 7 => '能力', 8 => '输入', 9 => '打造', 10 => '接受', 11 => '等待', 12 => '可以', 13 => '不同', 14 => '一定', 15 => '拥有', 16 => '从事', 17 => '了解', 18 => '为人', 19 => '所以', 20 => '喜欢', 21 => '认真', 22 => '个人', 23 => '擅长', 24 => '享受', 25 => '入微', 26 => '历经', 27 => '详情', 28 => '宝贝', 29 => '标签', 30 => '项目', 31 => '描述', 32 => '雇佣', 33 => '责任', 34 => '无能', 35 => '数量', 36 => '堪比', 37 => '质量', 38 => '善于', 39 => '进行', 40 => '急事', 41 => '熟悉', 42 => '即将', 43 => '成功', 44 => '人群', 45 => '作品', 46 => '呈现', 47 => '懂得', 48 => '快速', 49 => '丰富', 50 => '希望', 51 => '价值', 52 => '经验', 53 => '电商', 54 => '产品', 55 => '电子', 56 => '工作', 57 => '行业', 58 => '理念', 59 => '能够', 60 => '深度', 61 => '生活', 62 => '操作', 63 => '以及', 64 => '理解', 65 => '需求', 66 => '具有', 67 => '然后', 68 => '要求', 69 => '主要', 70 => '采用', ), 'jubao_ip' => array ( 0 => '2062781666', ), 'jubao_sid' => array ( 0 => '87182', 1 => '87848', 2 => '87871', 3 => '88005', 4 => '88009', ), 'act_tgzdes_banjia1' => array ( 0 => 32978, 1 => 34104, 2 => 34101, 3 => 34286, 4 => 34296, 5 => 25132, 6 => 34327, 7 => 34338, 8 => 33803, 9 => 33990, 10 => 33459, 11 => 34854, ), 'self_master' => array ( 0 => 37997, 1 => 37992, 2 => 37990, 3 => 37988, 4 => 35891, 5 => 31727, 6 => 10181, ), 'web_im_key' => 'webim123', 'kefu_ticheng' => array ( 1 => array ( 0 => array ( 'tc' => 1.5, 'zhekou' => 1, ), 1 => array ( 'tc' => 2, 'zhekou' => 0.69999999999999996, ), 2 => array ( 'tc' => 3, 'zhekou' => 0.59999999999999998, ), ), 2 => array ( 0 => array ( 'tc' => 1.5, 'zhekou' => 1, ), 1 => array ( 'tc' => 2, 'zhekou' => 0.69999999999999996, ), 2 => array ( 'tc' => 2.5, 'zhekou' => 0.59999999999999998, ), ), 3 => array ( 0 => array ( 'tc' => 1.5, 'zhekou' => 1, ), 1 => array ( 'tc' => 2, 'zhekou' => 0.69999999999999996, ), 2 => array ( 'tc' => 2.5, 'zhekou' => 0.59999999999999998, ), ), ), 'data_bk' => array ( 0 => 'pc', 1 => 'login_mobile', 2 => 'login_wechat', 3 => 'mobile', ), 'auth_deny_tel' => array ( 0 => '13220642686', 1 => '13982665750', 2 => '18101529882', 3 => '13705294766', 4 => '18603031124', ), 'pt_des' => 10000, 'im_org_name' => '93jiang', 'im_app_name' => 'jiangapp', 'app_token_key' => '078a73af2b859c8fcd57546cae6a9814', ));Think\Hook::import(array ( 'app_init' => array ( 0 => 'Common\\Behavior\\InitHook', ), 'app_begin' => array ( 0 => 'Behavior\\ReadHtmlCache', ), 'app_end' => array ( 0 => 'Behavior\\ShowPageTrace', 1 => 'FireShowPageTrace', ), 'path_info' => array ( ), 'action_begin' => array ( ), 'action_end' => array ( ), 'view_begin' => array ( ), 'view_parse' => array ( 0 => 'Behavior\\ParseTemplate', ), 'template_filter' => array ( 0 => 'Behavior\\ContentReplace', ), 'view_filter' => array ( 0 => 'Behavior\\WriteHtmlCache', ), 'view_end' => array ( ), ));}Error: in on line