// +---------------------------------------------------------------------- //递归 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="".$r[title].""; $curr="current"; }else{ $self="".$r[title].""; $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='信息管理'; $nav_arr=nav_arr(); foreach($nav_arr as $v){ $nav.="".$v["name"].""; } if(ACTION_NAME=="add"){ $nav.="增加信息"; } if(ACTION_NAME=="editor"){ $nav.="修改信息"; } if(ACTION_NAME=="checked"){ $nav.="审核信息"; } if(ACTION_NAME=="set_top"){ $nav.="信息顶置"; } if(ACTION_NAME=="set_good"){ $nav.="信息推荐"; } } // 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 "
  • $v
  • "; } } //判断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.=""; $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 麦当苗儿 */ 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); }