qa-ifish7/web/Application/Admin/Common/function.php

205 lines
6.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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="&nbsp;&nbsp;".$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);
}