205 lines
6.5 KiB
PHP
205 lines
6.5 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | Shanghai Jijin Software Co., LTD
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2016 http://www.jijinsoft.com All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | Author: Jijin Tech <support@jijinsoft.com>
|
||
// +----------------------------------------------------------------------
|
||
//递归
|
||
function node_merge($node,$access=null,$pid=0){
|
||
$arr=array();
|
||
foreach($node as $v){
|
||
if(is_array($access)){
|
||
$v['access']=in_array($v['id'],$access)?1:0;
|
||
}
|
||
if($pid==$v['pid']){
|
||
$v['child']=node_merge($node,$access,$v['id']);
|
||
$arr[]=$v;
|
||
}
|
||
}
|
||
return $arr;
|
||
}
|
||
|
||
//根据pid找到所有父节点
|
||
function get_parent_node($id,$nav=""){
|
||
$r=M("node")->find($id);
|
||
$path=CONTROLLER_NAME."/".ACTION_NAME;
|
||
if($path==$r[name]){
|
||
$self="<a class='".$curr."'>".$r[title]."</a>";
|
||
$curr="current";
|
||
}else{
|
||
$self="<a href='".U($r[name])."' class='".$curr."'>".$r[title]."</a>";
|
||
$curr="";
|
||
}
|
||
$nav=$self.$nav;
|
||
if($r[pid]){
|
||
return get_parent_node($r[pid],$nav);
|
||
}else{
|
||
return $nav;
|
||
}
|
||
}
|
||
//左侧根据控制器方法来设置选中状态
|
||
function menu_current($node){
|
||
//将数据变成json便于查询
|
||
$node=stripslashes(json_encode($node));
|
||
$node= strtolower(str_replace('"',"&dh&", $node));
|
||
$path=strtolower('&dh&'.CONTROLLER_NAME."/".ACTION_NAME.'&dh&');
|
||
if(strstr($node,$path)){
|
||
return true;
|
||
}else{
|
||
return false;
|
||
}
|
||
}
|
||
//后台导航路径
|
||
function admin_nav(){
|
||
$path=CONTROLLER_NAME."/".ACTION_NAME;
|
||
$id=M("node")->where("name='$path'")->order("pid desc")->getField("id");
|
||
if($id){
|
||
$getnode=get_parent_node($id);
|
||
}
|
||
$nav=''.$getnode;
|
||
//如果是信息管理控制器则特别显示
|
||
if(CONTROLLER_NAME=="Info"){
|
||
$nav='<a href="#">信息管理</a>';
|
||
$nav_arr=nav_arr();
|
||
foreach($nav_arr as $v){
|
||
$nav.="<a href='/index.php?m=Admin&c=Info&a=index&catid=".$v["catid"]."&modelid=".$v["modelid"]."' class=''>".$v["name"]."</a>";
|
||
}
|
||
if(ACTION_NAME=="add"){
|
||
$nav.="<a href='/index.php?m=Admin&c=Info&a=add&catid=".I("get.catid")."&modelid=".I("get.modelid")."' class=''>增加信息</a>";
|
||
}
|
||
if(ACTION_NAME=="editor"){
|
||
$nav.="<a href='/index.php?m=Admin&c=Info&a=editor&id=".I("get.id")."&catid=".I("get.catid")."&modelid=".I("get.modelid")."' class=''>修改信息</a>";
|
||
}
|
||
if(ACTION_NAME=="checked"){
|
||
$nav.="<a href='#'>审核信息</a>";
|
||
}
|
||
if(ACTION_NAME=="set_top"){
|
||
$nav.="<a href='#'>信息顶置</a>";
|
||
}
|
||
if(ACTION_NAME=="set_good"){
|
||
$nav.="<a href='#'>信息推荐</a>";
|
||
}
|
||
}
|
||
//
|
||
return $nav;
|
||
}
|
||
//后台导航旁边的页面提示
|
||
function nav_notic(){
|
||
$path=CONTROLLER_NAME."/".ACTION_NAME;
|
||
$remark=M("node")->where("name='$path'")->order("pid desc")->getField("remark");
|
||
$remark= explode("\r\n",$remark);
|
||
foreach($remark as $v){
|
||
echo "<li>$v</li>";
|
||
}
|
||
}
|
||
//判断admin是否登陆
|
||
function is_login(){
|
||
if(!session("user_id")||!session("user_name")||!session("is_admin")){
|
||
return 0;
|
||
}else{
|
||
return session("user_id");
|
||
}
|
||
}
|
||
//检测当前用户是否为管理员
|
||
function is_administrator($uid = null){
|
||
$uid = is_null($uid) ? is_login() : $uid;
|
||
return $uid && (intval($uid) === C('USER_ADMINISTRATOR'));
|
||
}
|
||
//获取无限级分类
|
||
function get_cat($tab,$id=0){//$tab是对应的表【表里需要包含如下字段:id,name,pid】 $id是需要选中的项
|
||
//$id=$id['id'];
|
||
$data=M($tab)->order("sort asc")->select();
|
||
return get_cat_merge($data,$id);
|
||
}
|
||
function get_cat_merge($data,$id=0,$pid=0,$selectstr=""){
|
||
$arr=array();
|
||
$i=0;
|
||
foreach($data as $v){
|
||
if($id&&$v[id]==$id){
|
||
$checked="selected";
|
||
}else{
|
||
$checked="";
|
||
}
|
||
if($pid==$v['pid']){
|
||
$i++;
|
||
if($v[level]>1){
|
||
$level_str="└";
|
||
}else{
|
||
$level_str="";
|
||
}
|
||
for($i=2;$i<=$v[level];$i++){
|
||
$level_str=" ".$level_str;
|
||
}
|
||
|
||
$selectstr.="<option value='$v[id]' $checked>{$level_str}{$v[name]}</option>";
|
||
$selectstr=get_cat_merge($data,$id,$v[id],$selectstr);
|
||
|
||
}
|
||
}
|
||
return $selectstr;;
|
||
}
|
||
//传递控制器和方法,判断当前用户是否有这个节点
|
||
function check_user_node($rule){
|
||
if(IS_ROOT){
|
||
return true;//管理员允许访问任何页面
|
||
}
|
||
$rule=strtolower($rule);
|
||
//这里只针对 已经添加过节点的控制器做验证,未增加到node表中的不做验证
|
||
$node=D('node')->field('name')->select();
|
||
//转小写
|
||
$s_node=array();
|
||
foreach($node as $v){
|
||
$s_node[]=strtolower($v[name]);
|
||
}
|
||
if(!in_array($rule,$s_node))
|
||
{
|
||
return true;
|
||
}
|
||
//对角色节点做验证
|
||
foreach(C('ROLE_NODE_RS') as $v){
|
||
$name=strtolower($v[name]);
|
||
if($name==$rule){
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
//检测当前用户是否有对栏目的增加,编辑,删除,审核,查看权限
|
||
function check_user_cat($action,$catid){
|
||
if(IS_ROOT){
|
||
return true;//管理员允许访问任何页面
|
||
}
|
||
$role=session("role");
|
||
if(strstr($role[$action],"|".$catid."|")){
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
/**
|
||
* 格式化字节大小
|
||
* @param number $size 字节数
|
||
* @param string $delimiter 数字和单位分隔符
|
||
* @return string 格式化后的带单位的大小
|
||
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
|
||
*/
|
||
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];
|
||
}
|
||
//
|
||
/**
|
||
* 数字转字母 (类似于Excel列标)
|
||
* @param Int $index 索引值
|
||
* @param Int $start 字母起始值
|
||
* @return String 返回字母
|
||
*/
|
||
function IntToChr($index, $start = 65) {
|
||
$str = '';
|
||
if (floor($index / 26) > 0) {
|
||
$str .= IntToChr(floor($index / 26)-1);
|
||
}
|
||
return $str . chr($index % 26 + $start);
|
||
} |