123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233 |
- <?php
- /**
- * 易优CMS
- * ============================================================================
- * 版权所有 2016-2028 海南赞赞网络科技有限公司,并保留所有权利。
- * 网站地址: http://www.eyoucms.com
- * ----------------------------------------------------------------------------
- * 如果商业用途务必到官方购买正版授权, 以免引起不必要的法律纠纷.
- * ============================================================================
- * Author: 小虎哥 <1105415366@qq.com>
- * Date: 2018-4-3
- */
- if (!function_exists('is_adminlogin'))
- {
- /**
- * 检验登陆
- * @param
- * @return bool
- */
- function is_adminlogin(){
- $admin_id = session('admin_id');
- if(isset($admin_id) && $admin_id > 0){
- return $admin_id;
- }else{
- return false;
- }
- }
- }
- if (!function_exists('adminLog'))
- {
- /**
- * 管理员操作记录
- * @param $log_url 操作URL
- * @param $log_info 记录信息
- */
- function adminLog($log_info = ''){
- $admin_id = session('admin_id');
- $admin_id = !empty($admin_id) ? $admin_id : -1;
- $add['log_time'] = getTime();
- $add['admin_id'] = $admin_id;
- $add['log_info'] = $log_info;
- $add['log_ip'] = clientIP();
- $add['log_url'] = request()->baseUrl() ;
- M('admin_log')->add($add);
- }
- }
- if (!function_exists('getAdminInfo'))
- {
- /**
- * 获取管理员登录信息
- */
- function getAdminInfo($admin_id = 0)
- {
- $admin_info = [];
- $admin_id = empty($admin_id) ? session('admin_id') : $admin_id;
- if (0 < intval($admin_id)) {
- $admin_info = \think\Db::name('admin')
- ->field('a.*, b.name AS role_name')
- ->alias('a')
- ->join('__AUTH_ROLE__ b', 'b.id = a.role_id', 'LEFT')
- ->where("a.admin_id", $admin_id)
- ->find();
- if (!empty($admin_info)) {
- // 头像
- empty($admin_info['head_pic']) && $admin_info['head_pic'] = get_head_pic($admin_info['head_pic'], true);
-
- // 权限组
- $admin_info['role_id'] = !empty($admin_info['role_id']) ? $admin_info['role_id'] : -1;
- if (-1 == $admin_info['role_id']) {
- if (!empty($admin_info['parent_id'])) {
- $role_name = '超级管理员';
- } else {
- $role_name = '创始人';
- }
- } else {
- $role_name = $admin_info['role_name'];
- }
- $admin_info['role_name'] = $role_name;
- }
- }
-
- return $admin_info;
- }
- }
- if (!function_exists('get_conf'))
- {
- /**
- * 获取conf配置文件
- */
- function get_conf($name = 'global')
- {
- $arr = include APP_PATH.MODULE_NAME.'/conf/'.$name.'.php';
- return $arr;
- }
- }
- if (!function_exists('get_auth_rule'))
- {
- /**
- * 获取权限列表文件
- */
- function get_auth_rule($where = [])
- {
- $auth_rule = include APP_PATH.MODULE_NAME.'/conf/auth_rule.php';
- // 排序号排序
- // $sort_order_arr = array();
- // foreach($auth_rule as $key => $val){
- // $sort_order_arr[]['sort_order'] = $val['sort_order'];
- // }
- // array_multisort($sort_order_arr,SORT_ASC,$auth_rule);
- if (!empty($where)) {
- foreach ($auth_rule as $k1 => $rules) {
- foreach ($where as $k2 => $v2) {
- if ($rules[$k2] != $v2) {
- unset($auth_rule[$k1]);
- }
- }
- }
- }
- return $auth_rule;
- }
- }
- if (!function_exists('is_check_access'))
- {
- /**
- * 检测是否有该权限
- */
- function is_check_access($str = 'Index@index') {
- $bool_flag = 1;
- $role_id = session('admin_info.role_id');
- if (0 < intval($role_id)) {
- $ctl_act = strtolower($str);
- $arr = explode('@', $ctl_act);
- $ctl = !empty($arr[0]) ? $arr[0] : '';
- $act = !empty($arr[1]) ? $arr[1] : '';
- $ctl_all = $ctl.'@*';
- $auth_role_info = session('admin_info.auth_role_info');
- $permission = $auth_role_info['permission'];
- $permission_rules = !empty($permission['rules']) ? $permission['rules'] : [];
- $auth_rule = get_auth_rule();
- $all_auths = []; // 系统全部权限对应的菜单ID
- $admin_auths = []; // 用户当前拥有权限对应的菜单ID
- $diff_auths = []; // 用户没有被授权的权限对应的菜单ID
- foreach($auth_rule as $key => $val){
- $all_auths = array_merge($all_auths, explode(',', strtolower($val['auths'])));
- if (in_array($val['id'], $permission_rules)) {
- $admin_auths = array_merge($admin_auths, explode(',', strtolower($val['auths'])));
- }
- }
- $all_auths = array_unique($all_auths);
- $admin_auths = array_unique($admin_auths);
- $diff_auths = array_diff($all_auths, $admin_auths);
- if (in_array($ctl_act, $diff_auths) || in_array($ctl_all, $diff_auths)) {
- $bool_flag = false;
- }
- }
- return $bool_flag;
- }
- }
- if (!function_exists('getMenuList'))
- {
- /**
- * 根据角色权限过滤菜单
- */
- function getMenuList() {
- $menuArr = getAllMenu();
- // return $menuArr;
- $role_id = session('admin_info.role_id');
- if (0 < intval($role_id)) {
- $auth_role_info = session('admin_info.auth_role_info');
- $permission = $auth_role_info['permission'];
- $permission_rules = !empty($permission['rules']) ? $permission['rules'] : [];
- $auth_rule = get_auth_rule();
- $all_auths = []; // 系统全部权限对应的菜单ID
- $admin_auths = []; // 用户当前拥有权限对应的菜单ID
- $diff_auths = []; // 用户没有被授权的权限对应的菜单ID
- foreach($auth_rule as $key => $val){
- $all_auths = array_merge($all_auths, explode(',', $val['menu_id']), explode(',', $val['menu_id2']));
- if (in_array($val['id'], $permission_rules)) {
- $admin_auths = array_merge($admin_auths, explode(',', $val['menu_id']), explode(',', $val['menu_id2']));
- }
- }
- $all_auths = array_unique($all_auths);
- $admin_auths = array_unique($admin_auths);
- $diff_auths = array_diff($all_auths, $admin_auths);
- /*过滤三级数组菜单*/
- foreach($menuArr as $k=>$val){
- foreach ($val['child'] as $j=>$v){
- foreach ($v['child'] as $s=>$son){
- if (in_array($son['id'], $diff_auths)) {
- unset($menuArr[$k]['child'][$j]['child'][$s]);//过滤菜单
- }
- }
- }
- }
- /*--end*/
- /*过滤二级数组菜单*/
- foreach ($menuArr as $mk=>$mr){
- foreach ($mr['child'] as $nk=>$nrr){
- if (in_array($nrr['id'], $diff_auths)) {
- unset($menuArr[$mk]['child'][$nk]);//过滤菜单
- }
- }
- }
- /*--end*/
- }
- return $menuArr;
- }
- }
- if (!function_exists('getAllMenu'))
- {
- /**
- * 获取左侧菜单
- */
- function getAllMenu() {
- $menuArr = false;//extra_cache('admin_all_menu');
- if (!$menuArr) {
- $menuArr = get_conf('menu');
- extra_cache('admin_all_menu', $menuArr);
- }
- return $menuArr;
- }
- }
- if ( ! function_exists('getChanneltypeList'))
- {
- /**
- * 获取全部的模型
- */
- function getChanneltypeList()
- {
- $result = extra_cache('admin_channeltype_list_logic');
- if ($result == false)
- {
- $result = model('Channeltype')->getAll('*', array(), 'id');
- extra_cache('admin_channeltype_list_logic', $result);
- }
- return $result;
- }
- }
- if (!function_exists('tpversion'))
- {
- function tpversion($timeout = 5)
- {
- if(!empty($_SESSION['isset_push']))
- return false;
- $_SESSION['isset_push'] = 1;
- error_reporting(0);//关闭所有错误报告
- $install_time = DEFAULT_INSTALL_DATE;
- $serial_number = DEFAULT_SERIALNUMBER;
- $constsant_path = APP_PATH.'admin/conf/constant.php';
- if (file_exists($constsant_path)) {
- require_once($constsant_path);
- defined('INSTALL_DATE') && $install_time = INSTALL_DATE;
- defined('SERIALNUMBER') && $serial_number = SERIALNUMBER;
- }
- $curent_version = getCmsVersion();
- $mysqlinfo = \think\Db::query("SELECT VERSION() as version");
- $mysql_version = $mysqlinfo[0]['version'];
- $global_config = tpCache('global');
- $users_config = getUsersConfigData('all');
- $vaules = array(
- 'domain'=>$_SERVER['HTTP_HOST'],
- 'key_num'=>$curent_version,
- 'install_time'=>$install_time,
- 'serial_number'=>$serial_number,
- 'ip' => GetHostByName($_SERVER['SERVER_NAME']),
- 'global_config' => base64_encode(json_encode($global_config)),
- 'users_config' => base64_encode(json_encode($users_config)),
- 'phpv' => urlencode(phpversion()),
- 'mysql_version' => urlencode($mysql_version),
- 'web_server' => urlencode($_SERVER['SERVER_SOFTWARE']),
- 'web_title' => tpCache('web.web_title'),
- );
- // api_Service_user_push
- $service_ey = config('service_ey');
- $tmp_str = 'L2luZGV4LnBocD9tPWFwaSZjPVNlcnZpY2UmYT11c2VyX3B1c2gm';
- $url = base64_decode($service_ey).base64_decode($tmp_str);
- @httpRequest($url, 'POST', $vaules, [], $timeout);
- }
- }
- if (!function_exists('push_zzbaidu'))
- {
- /**
- * 将新链接推送给百度蜘蛛
- */
- function push_zzbaidu($type = 'urls', $aid = '', $typeid = '')
- {
- // 获取token的值:http://ziyuan.baidu.com/linksubmit/index?site=http://www.eyoucms.com/
- $aid = intval($aid);
- $typeid = intval($typeid);
- $sitemap_zzbaidutoken = tpCache('sitemap.sitemap_zzbaidutoken');
- if (empty($sitemap_zzbaidutoken) || (empty($aid) && empty($typeid)) || !function_exists('curl_init')) {
- return '';
- }
- $urlsArr = array();
- $channeltype_list = model('Channeltype')->getAll('id, ctl_name', array(), 'id');
- if ($aid > 0) {
- $res = M('archives')->field('b.*, a.*, a.aid, b.id as typeid')
- ->alias('a')
- ->join('__ARCTYPE__ b', 'b.id = a.typeid', 'LEFT')
- ->find($aid);
- $arcurl = get_arcurl($res, false);
- array_push($urlsArr, $arcurl);
- }
- if (0 < $typeid) {
- $res = M('arctype')->field('a.*')
- ->alias('a')
- ->find($typeid);
- $typeurl = get_typeurl($res, false);
- array_push($urlsArr, $typeurl);
- }
- $type = ('edit' == $type) ? 'update' : 'urls';
- $api = 'http://data.zz.baidu.com/'.$type.'?site='.request()->host(true).'&token='.$sitemap_zzbaidutoken;
- $ch = curl_init();
- $options = array(
- CURLOPT_URL => $api,
- CURLOPT_POST => true,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_POSTFIELDS => implode("\n", $urlsArr),
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- );
- curl_setopt_array($ch, $options);
- $result = curl_exec($ch);
-
- return $result;
- }
- }
- if (!function_exists('sitemap_auto'))
- {
- /**
- * 自动生成引擎sitemap
- */
- function sitemap_auto()
- {
- $sitemap_config = tpCache('sitemap');
- if (isset($sitemap_config['sitemap_auto']) && $sitemap_config['sitemap_auto'] > 0) {
- sitemap_all();
- }
- }
- }
- if (!function_exists('sitemap_all'))
- {
- /**
- * 生成全部引擎sitemap
- */
- function sitemap_all()
- {
- sitemap_xml();
- }
- }
- if (!function_exists('sitemap_xml'))
- {
- /**
- * 生成xml形式的sitemap
- */
- function sitemap_xml()
- {
- $globalConfig = tpCache('global');
- if (!isset($globalConfig['sitemap_xml']) || empty($globalConfig['sitemap_xml'])) {
- return '';
- }
- $modelu_name = 'home';
- $filename = ROOT_PATH . "sitemap.xml";
- $main_lang = get_main_lang();
- /* 分类列表(用于生成列表链接的sitemap) */
- $map = array(
- 'status' => 1,
- 'is_del' => 0,
- 'lang' => $main_lang,
- );
- if (is_array($globalConfig)) {
- // 过滤隐藏栏目
- if (isset($globalConfig['sitemap_not1']) && $globalConfig['sitemap_not1'] > 0) {
- $map['is_hidden'] = 0;
- }
- // 过滤外部模块
- if (isset($globalConfig['sitemap_not2']) && $globalConfig['sitemap_not2'] > 0) {
- $map['is_part'] = 0;
- }
- }
- $result_arctype = M('arctype')->field("*, id AS loc, add_time AS lastmod, 'hourly' AS changefreq, '0.8' AS priority")
- ->where($map)
- ->order('sort_order asc, id asc')
- ->getAllWithIndex('id');
- /* 文章列表(用于生成文章详情链接的sitemap) */
- $map = array(
- 'channel' => ['IN', config('global.allow_release_channel')],
- 'arcrank' => array('gt', -1),
- 'status' => 1,
- 'is_del' => 0,
- 'lang' => $main_lang,
- );
- if (is_array($globalConfig)) {
- // 过滤外部模块
- if (isset($globalConfig['sitemap_not2']) && $globalConfig['sitemap_not2'] > 0) {
- $map['is_jump'] = 0;
- }
- }
- /*定时文档显示插件*/
- if (is_dir('./weapp/TimingTask/')) {
- $TimingTaskRow = model('Weapp')->getWeappList('TimingTask');
- if (!empty($TimingTaskRow['status']) && 1 == $TimingTaskRow['status']) {
- $map['add_time'] = ['elt', getTime()]; // 只显当天或之前的文档
- }
- }
- /*end*/
- if (!isset($globalConfig['sitemap_archives_num']) || $globalConfig['sitemap_archives_num'] == '') {
- $sitemap_archives_num = 100;
- } else {
- $sitemap_archives_num = intval($globalConfig['sitemap_archives_num']);
- }
- $field = "aid, channel, is_jump, jumplinks, add_time, update_time, typeid, aid AS loc, add_time AS lastmod, 'daily' AS changefreq, '0.5' AS priority";
- $result_archives = M('archives')->field($field)
- ->where($map)
- ->order('aid desc')
- ->limit($sitemap_archives_num)
- ->select();
- // header('Content-Type: text/xml');//这行很重要,php默认输出text/html格式的文件,所以这里明确告诉浏览器输出的格式为xml,不然浏览器显示不出xml的格式
- $xml_wrapper = <<<XML
- <?xml version='1.0' encoding='utf-8'?>
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
- </urlset>
- XML;
- if (function_exists('simplexml_load_string')) {
- $xml = @simplexml_load_string($xml_wrapper);
- } else if (class_exists('SimpleXMLElement')) {
- $xml = new SimpleXMLElement($xml_wrapper);
- }
- if (!$xml) {
- return true;
- }
- // 更新频率
- $sitemap_changefreq_index = !empty($globalConfig['sitemap_changefreq_index']) ? $globalConfig['sitemap_changefreq_index'] : 'always';
- $sitemap_changefreq_list = !empty($globalConfig['sitemap_changefreq_list']) ? $globalConfig['sitemap_changefreq_list'] : 'hourly';
- $sitemap_changefreq_view = !empty($globalConfig['sitemap_changefreq_view']) ? $globalConfig['sitemap_changefreq_view'] : 'daily';
- // 优先级别
- $sitemap_priority_index = !empty($globalConfig['sitemap_priority_index']) ? $globalConfig['sitemap_priority_index'] : '1.0';
- $sitemap_priority_list = !empty($globalConfig['sitemap_priority_list']) ? $globalConfig['sitemap_priority_list'] : '0.8';
- $sitemap_priority_view = !empty($globalConfig['sitemap_priority_view']) ? $globalConfig['sitemap_priority_view'] : '0.5';
- $langRow = \think\Db::name('language')
- ->where(['status'=>1])
- ->order('id asc')
- ->cache(true, EYOUCMS_CACHE_TIME, 'language')
- ->select();
- /*去掉入口文件*/
- $inletStr = '/index.php';
- $seo_inlet = config('ey_config.seo_inlet');
- 1 == intval($seo_inlet) && $inletStr = '';
- /*--end*/
- /*首页*/
- foreach ($langRow as $key => $val) {
- /*关闭多语言*/
- if (empty($globalConfig['web_language_switch']) && 1 != $val['is_home_default']) {
- continue;
- }
- /*end*/
- /*单独域名*/
- $mark = $val['mark'];
- $url = $val['url'];
- if (empty($url)) {
- if (1 == $val['is_home_default']) {
- $url = request()->domain().ROOT_DIR.'/'; // 支持子目录
- } else {
- $seoConfig = tpCache('seo', [], $mark);
- $seo_pseudo = !empty($seoConfig['seo_pseudo']) ? $seoConfig['seo_pseudo'] : config('ey_config.seo_pseudo');
- if (1 == $seo_pseudo) {
- $url = request()->domain().ROOT_DIR.$inletStr; // 支持子目录
- if (!empty($inletStr)) {
- $url .= '?';
- } else {
- $url .= '/?';
- }
- $url .= http_build_query(['lang'=>$mark]);
- } else {
- $url = request()->domain().ROOT_DIR.$inletStr.'/'.$mark; // 支持子目录
- }
- }
- }
- /*--end*/
- $item = $xml->addChild('url'); //使用addChild添加节点
- foreach (['loc','lastmod','changefreq','priority'] as $key1) {
- if ('loc' == $key1) {
- $row = $url;
- } else if ('lastmod' == $key1) {
- $row = date('Y-m-d');
- } else if ('changefreq' == $key1) {
- $row = $sitemap_changefreq_index;
- } else if ('priority' == $key1) {
- $row = $sitemap_priority_index;
- }
- try {
- $node = $item->addChild($key1, $row);
- } catch (\Exception $e) {}
- if (isset($attribute_array[$key1]) && is_array($attribute_array[$key1])) {
- foreach ($attribute_array[$key1] as $akey => $aval) {//设置属性值,我这里为空
- $node->addAttribute($akey, $aval);
- }
- }
- }
- }
- /*--end*/
-
- /*所有栏目*/
- foreach ($result_arctype as $sub) {
- if (is_array($sub)) {
- $item = $xml->addChild('url'); //使用addChild添加节点
- foreach ($sub as $key => $row) {
- if (in_array($key, array('loc','lastmod','changefreq','priority'))) {
- if ($key == 'loc') {
- if ($sub['is_part'] == 1) {
- $row = $sub['typelink'];
- } else {
- $row = get_typeurl($sub, false);
- }
- $row = str_replace('&', '&', $row);
- $row = str_replace('&', '&', $row);
- } else if ($key == 'lastmod') {
- $row = date('Y-m-d');
- } else if ($key == 'changefreq') {
- $row = $sitemap_changefreq_list;
- } else if ($key == 'priority') {
- $row = $sitemap_priority_list;
- }
- try {
- $node = $item->addChild($key, $row);
- } catch (\Exception $e) {}
- if (isset($attribute_array[$key]) && is_array($attribute_array[$key])) {
- foreach ($attribute_array[$key] as $akey => $aval) {//设置属性值,我这里为空
- $node->addAttribute($akey, $aval);
- }
- }
- }
- }
- }
- }
- /*--end*/
- /*所有文档*/
- foreach ($result_archives as $val) {
- if (is_array($val) && isset($result_arctype[$val['typeid']])) {
- $item = $xml->addChild('url'); //使用addChild添加节点
- $val = array_merge($result_arctype[$val['typeid']], $val);
- foreach ($val as $key => $row) {
- if (in_array($key, array('loc','lastmod','changefreq','priority'))) {
- if ($key == 'loc') {
- if ($val['is_jump'] == 1) {
- $row = $val['jumplinks'];
- } else {
- $row = get_arcurl($val, false);
- }
- $row = str_replace('&', '&', $row);
- $row = str_replace('&', '&', $row);
- } else if ($key == 'lastmod') {
- $lastmod_time = empty($val['update_time']) ? $val['add_time'] : $val['update_time'];
- $row = date('Y-m-d', $lastmod_time);
- } else if ($key == 'changefreq') {
- $row = $sitemap_changefreq_view;
- } else if ($key == 'priority') {
- $row = $sitemap_priority_view;
- }
- try {
- $node = $item->addChild($key, $row);
- } catch (\Exception $e) {}
- if (isset($attribute_array[$key]) && is_array($attribute_array[$key])) {
- foreach ($attribute_array[$key] as $akey => $aval) {//设置属性值,我这里为空
- $node->addAttribute($akey, $aval);
- }
- }
- }
- }
- }
- }
- /*--end*/
- $content = $xml->asXML(); //用asXML方法输出xml,默认只构造不输出。
- @file_put_contents($filename, $content);
- }
- }
- if (!function_exists('get_typeurl'))
- {
- /**
- * 获取栏目链接
- *
- * @param array $arctype_info 栏目信息
- * @param boolean $admin 后台访问链接,还是前台链接
- */
- function get_typeurl($arctype_info = array(), $admin = true)
- {
- static $domain = null;
- null === $domain && $domain = request()->domain();
- /*兼容采集没有归属栏目的文档*/
- if (empty($arctype_info['current_channel'])) {
- $channelRow = \think\Db::name('channeltype')->field('id as channel')
- ->where('id',1)
- ->find();
- $arctype_info = array_merge($arctype_info, $channelRow);
- }
- /*--end*/
-
- static $result = null;
- null === $result && $result = model('Channeltype')->getAll('id, ctl_name', array(), 'id');
- $ctl_name = '';
- if ($result) {
- $ctl_name = $result[$arctype_info['current_channel']]['ctl_name'];
- }
- static $seo_pseudo = null;
- static $seo_dynamic_format = null;
- if (null === $seo_pseudo || null === $seo_dynamic_format) {
- $seoConfig = tpCache('seo');
- $seo_pseudo = !empty($seoConfig['seo_pseudo']) ? $seoConfig['seo_pseudo'] : config('ey_config.seo_pseudo');
- $seo_dynamic_format = !empty($seoConfig['seo_dynamic_format']) ? $seoConfig['seo_dynamic_format'] : config('ey_config.seo_dynamic_format');
- }
- if (2 == $seo_pseudo && $admin) {
- static $lang = null;
- null === $lang && $lang = input('param.lang/s', 'cn');
- $typeurl = ROOT_DIR."/index.php?m=home&c=Lists&a=index&tid={$arctype_info['id']}&lang={$lang}&t=".getTime();
- } else {
- $typeurl = typeurl("home/{$ctl_name}/lists", $arctype_info, true, $domain, $seo_pseudo, $seo_dynamic_format);
- // 自动隐藏index.php入口文件
- $typeurl = auto_hide_index($typeurl);
- }
- return $typeurl;
- }
- }
- if (!function_exists('get_arcurl'))
- {
- /**
- * 获取文档链接
- *
- * @param array $arctype_info 栏目信息
- * @param boolean $admin 后台访问链接,还是前台链接
- */
- function get_arcurl($arcview_info = array(), $admin = true)
- {
- static $domain = null;
- null === $domain && $domain = request()->domain();
- /*兼容采集没有归属栏目的文档*/
- if (empty($arcview_info['channel'])) {
- $channelRow = \think\Db::name('channeltype')->field('id as channel')
- ->where('id',1)
- ->find();
- $arcview_info = array_merge($arcview_info, $channelRow);
- }
- /*--end*/
- static $result = null;
- null === $result && $result = model('Channeltype')->getAll('id, ctl_name', array(), 'id');
- $ctl_name = '';
- if ($result) {
- $ctl_name = $result[$arcview_info['channel']]['ctl_name'];
- }
- static $seo_pseudo = null;
- static $seo_dynamic_format = null;
- if (null === $seo_pseudo || null === $seo_dynamic_format) {
- $seoConfig = tpCache('seo');
- $seo_pseudo = !empty($seoConfig['seo_pseudo']) ? $seoConfig['seo_pseudo'] : config('ey_config.seo_pseudo');
- $seo_dynamic_format = !empty($seoConfig['seo_dynamic_format']) ? $seoConfig['seo_dynamic_format'] : config('ey_config.seo_dynamic_format');
- }
-
- if ($admin) {
- if (2 == $seo_pseudo) {
- static $lang = null;
- null === $lang && $lang = input('param.lang/s', 'cn');
- $arcurl = ROOT_DIR."/index.php?m=home&c=View&a=index&aid={$arcview_info['aid']}&lang={$lang}&admin_id=".session('admin_id')."&t=".getTime();
- } else {
- $arcurl = arcurl("home/{$ctl_name}/view", $arcview_info, true, $domain, $seo_pseudo, $seo_dynamic_format);
- // 自动隐藏index.php入口文件
- $arcurl = auto_hide_index($arcurl);
- if (stristr($arcurl, '?')) {
- $arcurl .= '&admin_id='.session('admin_id')."&t=".getTime();
- } else {
- $arcurl .= '?admin_id='.session('admin_id')."&t=".getTime();
- }
- }
- } else {
- $arcurl = arcurl("home/{$ctl_name}/view", $arcview_info, true, $domain, $seo_pseudo, $seo_dynamic_format);
- // 自动隐藏index.php入口文件
- $arcurl = auto_hide_index($arcurl);
- }
- return $arcurl;
- }
- }
- if (!function_exists('get_total_arc'))
- {
- /**
- * 获取指定栏目的文档数
- */
- function get_total_arc($typeid)
- {
- $total = 0;
- $current_channel = M('arctype')->where('id', $typeid)->getField('current_channel');
- $allow_release_channel = config('global.allow_release_channel');
- if (in_array($current_channel, $allow_release_channel)) { // 能发布文档的模型
- $result = model('Arctype')->getHasChildren($typeid);
- $typeidArr = get_arr_column($result, 'id');
- $map = array(
- 'typeid' => array('IN', $typeidArr),
- 'channel' => array('eq', $current_channel),
- 'is_del' => 0, // 回收站功能
- );
- /*权限控制 by 小虎哥*/
- $admin_info = session('admin_info');
- if (0 < intval($admin_info['role_id'])) {
- $auth_role_info = $admin_info['auth_role_info'];
- if(! empty($auth_role_info)){
- if(isset($auth_role_info['only_oneself']) && 1 == $auth_role_info['only_oneself']){
- $map['admin_id'] = $admin_info['admin_id'];
- }
- }
- }
- /*--end*/
- $total = M('archives')->where($map)->count();
- } elseif ($current_channel == 8) { // 留言模型
- $total = M('guestbook')->where(array('typeid'=>array('eq', $typeid)))->count();
- }
- return $total;
- }
- }
- if (!function_exists('replace_path'))
- {
- /**
- * 将路径斜杆、反斜杠替换为冒号符,适用于IIS服务器在URL上的双重转义限制
- * @param string $filepath 相对路径
- * @param string $replacement 目标字符
- * @param boolean $is_back false为替换,true为还原
- */
- function replace_path($filepath = '', $replacement = ':', $is_back = false)
- {
- if (false == $is_back) {
- $filepath = str_replace(DIRECTORY_SEPARATOR, $replacement, $filepath);
- $filepath = preg_replace('#\/#', $replacement, $filepath);
- } else {
- $filepath = preg_replace('#'.$replacement.'#', '/', $filepath);
- $filepath = str_replace('//', ':/', $filepath);
- }
- return $filepath;
- }
- }
- if (!function_exists('get_seo_pseudo_list'))
- {
- /**
- * URL模式下拉列表
- */
- function get_seo_pseudo_list($key = '')
- {
- $data = array(
- 1 => '动态URL',
- 3 => '伪静态化',
- 2 => '静态页面',
- );
- return isset($data[$key]) ? $data[$key] : $data;
- }
- }
- if (!function_exists('get_chown_pathinfo'))
- {
- /**
- * 对指定的操作系统获取目录的所有组与所有者
- * @param string $path 目录路径
- * @return array
- */
- function get_chown_pathinfo($path = '')
- {
- $pathinfo = true;
- if (function_exists('stat')) {
- /*指定操作系统,在列表内才进行后续获取*/
- $isValidate = false;
- $os = PHP_OS;
- $osList = array('linux','unix');
- foreach ($osList as $key => $val) {
- if (stristr($os, $val)) {
- $isValidate = true;
- continue;
- }
- }
- /*--end*/
- if (true === $isValidate) {
- $path = !empty($path) ? $path : ROOT_PATH;
- $stat = stat($path);
- if (function_exists('posix_getpwuid')) {
- $pathinfo = posix_getpwuid($stat['uid']);
- } else {
- $pathinfo = array(
- 'name' => (0 == $stat['uid']) ? 'root' : '',
- 'uid' => $stat['uid'],
- 'gid' => $stat['gid'],
- );
- }
- }
- }
- return $pathinfo;
- }
- }
- if (!function_exists('menu_select'))
- {
- /*组装成层级下拉列表框*/
- function menu_select($selected = 0)
- {
- $select_html = '';
- $menuArr = getAllMenu();
- if (!empty($menuArr)) {
- foreach ($menuArr AS $key => $val)
- {
- $select_html .= '<option value="' . $val['id'] . '" data-grade="' . $val['grade'] . '"';
- $select_html .= ($selected == $val['id']) ? ' selected="ture"' : '';
- if (!empty($val['child'])) {
- $select_html .= ' disabled="true" style="background-color:#f5f5f5;"';
- }
- $select_html .= '>';
- if ($val['grade'] > 0)
- {
- $select_html .= str_repeat(' ', $val['grade'] * 4);
- }
- $name = !empty($val['name']) ? $val['name'] : '默认';
- $select_html .= htmlspecialchars(addslashes($name)) . '</option>';
- if (empty($val['child'])) {
- continue;
- }
- foreach ($menuArr[$key]['child'] as $key2 => $val2) {
- $select_html .= '<option value="' . $val2['id'] . '" data-grade="' . $val2['grade'] . '"';
- $select_html .= ($selected == $val2['id']) ? ' selected="ture"' : '';
- if (!empty($val2['child'])) {
- $select_html .= ' disabled="true" style="background-color:#f5f5f5;"';
- }
- $select_html .= '>';
- if ($val2['grade'] > 0)
- {
- $select_html .= str_repeat(' ', $val2['grade'] * 4);
- }
- $select_html .= htmlspecialchars(addslashes($val2['name'])) . '</option>';
- if (empty($val2['child'])) {
- continue;
- }
- foreach ($menuArr[$key]['child'][$key2]['child'] as $key3 => $val3) {
- $select_html .= '<option value="' . $val3['id'] . '" data-grade="' . $val3['grade'] . '"';
- $select_html .= ($selected == $val3['id']) ? ' selected="ture"' : '';
- if (!empty($val3['child'])) {
- $select_html .= ' disabled="true" style="background-color:#f5f5f5;"';
- }
- $select_html .= '>';
- if ($val3['grade'] > 0)
- {
- $select_html .= str_repeat(' ', $val3['grade'] * 4);
- }
- $select_html .= htmlspecialchars(addslashes($val3['name'])) . '</option>';
- }
- }
- }
- }
- return $select_html;
- }
- }
- if (!function_exists('schemaTable'))
- {
- /**
- * 重新生成数据表缓存字段文件
- */
- function schemaTable($name)
- {
- $table = $name;
- $prefix = \think\Config::get('database.prefix');
- if (!preg_match('/^'.$prefix.'/i', $name)) {
- $table = $prefix.$name;
- }
- /*调用命令行的指令*/
- \think\Console::call('optimize:schema', ['--table', $table]);
- /*--end*/
- }
- }
- if (!function_exists('testWriteAble'))
- {
- /**
- * 测试目录路径是否有写入权限
- * @param string $d 目录路劲
- * @return boolean
- */
- function testWriteAble($filepath)
- {
- $tfile = '_eyout.txt';
- $fp = @fopen($filepath.$tfile,'w');
- if(!$fp) {
- return false;
- }
- else {
- fclose($fp);
- $rs = @unlink($filepath.$tfile);
- return true;
- }
- }
- }
- if (!function_exists('getArchivesSortUrl'))
- {
- /**
- * 在文档列表拼接排序URL
- * @param string $orderby 排序字段
- * @param string $orderwayDefault 默认为空时升序
- * @return string
- */
- function getArchivesSortUrl($orderby = '', $orderwayDefault = '')
- {
- $parseArr = parse_url(request()->url());
- $query_str = '';
- if (!empty($parseArr['query'])) {
- parse_str($parseArr['query'], $output);
- $output['orderby'] = $orderby;
- $orderway = input('param.orderway/s', $orderwayDefault);
- $orderway = !empty($orderway) ? $orderway : 'desc';
- if ('desc' == $orderway) {
- $orderway = 'asc';
- } else {
- $orderway = 'desc';
- // 再次点击恢复到默认排序
- // if ('arcrank' == $orderby) {
- // $output['orderby'] = '';
- // }
- }
- $output['orderway'] = $orderway;
- $query_str = http_build_query($output);
- }
- $url = $parseArr['path'];
- !empty($query_str) && $url .= '?'.$query_str;
- return $url;
- }
- }
- if (!function_exists('showArchivesFlagStr'))
- {
- /**
- * 在文档列表显示文档属性标识
- * @param array $archivesInfo 文档信息
- * @return string
- */
- function showArchivesFlagStr($archivesInfo = [])
- {
- $arr = [];
- if (!empty($archivesInfo['is_head'])) {
- $arr['is_head'] = [
- 'small_name' => '头条',
- ];
- }
- if (!empty($archivesInfo['is_recom'])) {
- $arr['is_recom'] = [
- 'small_name' => '推荐',
- ];
- }
- if (!empty($archivesInfo['is_special'])) {
- $arr['is_special'] = [
- 'small_name' => '特荐',
- ];
- }
- if (!empty($archivesInfo['is_b'])) {
- $arr['is_b'] = [
- 'small_name' => '加粗',
- ];
- }
- if (!empty($archivesInfo['is_litpic'])) {
- $arr['is_litpic'] = [
- 'small_name' => '图片',
- ];
- }
- if (!empty($archivesInfo['is_jump'])) {
- $arr['is_jump'] = [
- 'small_name' => '跳转',
- ];
- }
- return $arr;
- }
- }
- if (!function_exists('checkPasswordLevel'))
- {
- /**
- * 检查密码复杂度
- * @param string $strPassword 密码
- * @return string
- */
- function checkPasswordLevel($strPassword = '')
- {
- $result = 0;
- $pwdlen = strlen($strPassword);
- if ( $pwdlen == 0) {
- $result += 0;
- }
- else if ( $pwdlen<8 && $pwdlen >0 ) {
- $result += 5;
- }
- else if ($pwdlen>10) {
- $result += 25;
- }
- else {
- $result += 10;
- }
-
- //check letter
- $bHave = false;
- $bAll = false;
- $capital = preg_match('/[A-Z]{1}/', $strPassword);//找大写字母
- $small = preg_match('/[a-z]{1}/', $strPassword);//找小写字母
- if ( empty($capital) && empty($small) )
- {
- $result += 0; //没有字母
- $bHave = false;
- }
- else if ( !empty($capital) && !empty($small) )
- {
- $result += 20;
- $bAll = true;
- }
- else
- {
- $result += 10;
- $bAll = true;
- }
-
- //检查数字
- $bDigi = false;
- $digitalLen = 0;
- for ( $i=0; $i<$pwdlen; $i++)
- {
-
- if ( $strPassword[$i] <= '9' && $strPassword[$i] >= '0' )
- {
- $bDigi = true;
- $digitalLen += 1;
- }
-
- }
- if ( $digitalLen==0 )//没有数字
- {
- $result += 0;
- $bDigi = false;
- }
- else if ($digitalLen>2)//2个数字以上
- {
- $result += 20 ;
- $bDigi = true;
- }
- else
- {
- $result += 10;
- $bDigi = true;
- }
-
- //检查非单词字符
- $bOther = false;
- $otherLen = 0;
- for ($i=0; $i<$pwdlen; $i++)
- {
- if ( ($strPassword[$i]>='0' && $strPassword[$i]<='9') ||
- ($strPassword[$i]>='A' && $strPassword[$i]<='Z') ||
- ($strPassword[$i]>='a' && $strPassword[$i]<='z')) {
- continue;
- }
- $otherLen += 1;
- $bOther = true;
- }
- if ( $otherLen == 0 )//没有非单词字符
- {
- $result += 0;
- $bOther = false;
- }
- else if ( $otherLen >1)//1个以上非单词字符
- {
- $result +=25 ;
- $bOther = true;
- }
- else
- {
- $result +=10;
- $bOther = true;
- }
-
- //检查额外奖励
- if ( $bAll && $bDigi && $bOther) {
- $result += 5;
- }
- else if ($bHave && $bDigi && $bOther) {
- $result += 3;
- }
- else if ($bHave && $bDigi ) {
- $result += 2;
- }
- $level = 0;
- //根据分数来算密码强度的等级
- if ( $result >=80 )
- $level = 7;
- else if ( $result>=70)
- $level = 6;
- else if ( $result>=60)
- $level = 5;
- else if ( $result>=50)
- $level = 4;
- else if ( $result>=40)
- $level = 3;
- else if ( $result>20)
- $level = 2;
- else if ( $result>0)
- $level = 1;
- else
- $level = 0;
- return $level;
- }
- }
- if (!function_exists('getPasswordLevelTitle'))
- {
- /**
- * 获取密码复杂度名称
- * @param string $level 复杂程度
- * @return string
- */
- function getPasswordLevelTitle($level = 0)
- {
- $title = '弱';
- //根据分数来算密码强度的等级
- if ( $level == 7 ) {
- $title = '极佳';
- }
- else if ( $level == 6) {
- $title = '非常强';
- }
- else if ( $level == 5) {
- $title = '强';
- }
- else if ( $level == 4) {
- $title = '较强';
- }
- else if ( $level == 3) {
- $title = '一般';
- }
- else if ( $level == 2) {
- $title = '较弱';
- }
- else if ( $level == 1) {
- $title = '非常弱';
- }
- else {
- $title = '弱';
- }
- return $title;
- }
- }
- if (!function_exists('downloadExcel')) {
- /**
- * 下载excel
- * @param $strTable 表格内容
- * @param $filename 文件名
- */
- function downloadExcel($strTable, $filename)
- {
- ob_end_clean();
- header("Content-type: application/vnd.ms-excel");
- header("Content-Type: application/force-download");
- header("Content-Disposition: attachment; filename=" . $filename . "_" . date('Y-m-d') . ".xls");
- header('Expires:0');
- header('Pragma:public');
- echo '<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . $strTable . '</html>';
- }
- }
|