Initial commit
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
<?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);
|
||||
}
|
||||
Reference in New Issue
Block a user