勾股OA5.0常用【PHP助手】函数集
一、系统相关
1、设置缓存
set_cache($key='', $value='', $date = 86400);
2、读取缓存
get_cache($key='');
3、清空缓存
clear_cache($key='');
4、读取文件配置
get_config($key);
5、读取系统配置
get_system_config($name='', $key = '');
6、设置系统配置
set_system_config($name, $key, $value='');
7、获取url参数,$key为空时返回所有参数数组
get_params($key = "");
8、判断系统是否已安装
is_installed();
9、判断系统是否存在模板
isTemplate($url='');
10、判断模块是否禁用
isModule($name);
11、是否是模块配置内的某模块的数据权限,>1即有权限,$uid,要鉴别的用户,$name模块名称,$conf权限标识
isAuth($uid,$name,$conf);
12、获取某模块的某数据配置,$name模块名称,$conf权限标识
valueAuth($name,$conf);
13、是否是某部门负责人,>1即有权限,$uid,要鉴别的用户,$did要鉴别的部门,为空时全部部门
isLeader($uid,$did);
14、菜单节点权限判断
check_auth($rule, $uid);
15、返回json数据,用于接口
to_assign($code = 0, $msg = "操作成功", $data = [], $action = '', $url = '', $httpCode = 200, $header = [], $options = []);
16、适配layui的table数据列表的返回数据方法,用于接口
table_assign($code = 0, $msg = '请求成功', $data = [], $httpCode = 200, $header = [], $options = []);
17、写入操作日
add_log($type, $param_id = '', $param = [] ,$subject='');
18、发送站内信
send_message($msg=[]);
//如:
$msg=[
'from_uid'=>$this->uid,//发送人
'to_uids'=>$step[0]['check_uids'],//接收人
'template_id'=>1,//消息模板ID
'content'=>[ //消息内容
'create_time'=>date('Y-m-d H:i:s'),
'action_id'=>$param['action_id'],
'title' => '一个审批'
]
];
send_message($msg);
19、消息链接信息转换
get_message_link($template,$action_id);
20、发送邮件
send_email($to, $subject = '', $content = '');
二、员工相关
1、获取指定用户的信息
get_admin($uid);
2、获取指定部门所有的员工信息($son=1,包含子部门)
get_department_employee($did=0,$son=0);
3、获取岗位职称列表
get_position();
4、页面模板快速获取当前登录人信息。如:
{$login_admin.id}
三、部门相关
1、获取部门列表
get_department();
2、读取部门名称
//$dids可是数字,字符串,数组。如:1、2,3、[1,2,3]
get_department_name($dids);
3、获取某部门的子部门ids,($is_self=1,包含自己)
get_department_son($did = 0, $is_self = 1);
4、获取某员工所在主部门的负责人(pid=1,上一级部门负责人)
get_department_leader($uid=0,$pid=0);
5、获取某负责人所负责的部门的数据集(ids)【包括部门负责人所在的部门+其子部门】
//传入部门负责人id,由于部门支持设置多个负责人,所以输出的是部门ids数组,如:[1,2,3,4,5]
get_leader_departments($uid = 0);
6、获取某员工所在部门的顶级部门(如果默认顶级部门当做是分公司的,即是获取某员工所属分公司)
get_department_top($did=0);
7、获取某员工所能看的部门数组,传入某员工uid,输出部门数组dids,如:[1,2,3]
get_role_departments($uid=0);
四、常规数据获取
1、读取基础数据,$table=数据表名(不要加表前缀)
get_base_data($table);
2、读取模块基础数据,$table=数据表名(不要加表前缀),$type=类型(,,2,3…)
get_base_type_data($table,$type);
3、读取所属地区名称
get_region_name($id);
4、根据附件表的id返回附件的url地址
get_file($id);
5、读取分类子分类ids,返回id数组
get_cate_son($table='',$id=0,$is_self = 1);
五、工具函数
1、生成一个不会重复的字符串
make_token()
2、随机字符串,默认长度10
set_salt($num = 10);
3、密码加密
set_password($pwd, $salt);
4、去除空格
trim_space($str='');
5、隐藏电话号码(邮箱)中间4位
hidetel($phone);
6、间隔时间段格式化,$time 时间戳,$format 格式 【d:显示到天 i显示到分钟 s显示到秒】
time_trans($time='', $format = 'd');
7、时间戳格式化为正常的日期格式,默认我们用PHP自带的date
函数,但是涉及到有些数据可能为0的情况,所以我们写了一个to_date
的方法,对0的情况默认输出是空字符。
to_date($time = NULL, $format = 'Y-m-d H:i:s');
在页面模板中可以使用:
{$detail.begin_time|to_date='Y-m-d'}
8、计算按相差天数
count_days($a=0, $b = 0);
9、人民币转大写
cny($amount);
10、金额展示,规则:超过1万时以万为单位,低于1万时以千为单位,低于1千时以元为单位
format_money($money);
11、金额保留两位小数
sprintf("%.2f",$money);
12、 二维数组排序
@param $array 要进行排序的select结果集
@param $field 排序的字段
@param $order 排序方式1降序2升序
sort_array($array = [], $field='', $order = 1);
13、查找数组索引,支持一维数组,二维数组查找
array_search_plus($array, $searchFor);
14、根据数据库查询出来二维数组获取某个字段拼接字符串
split_array_field($array = [], $field = '',$separator=',');
15、数组转换字符串
array_to_string($array=[],$separator=',');
16、字符串转换数组
string_to_array($string='',$separator=',');
17、文件大小格式化
to_size($size);
18、格式化附件展示($view,不为空即是仅查看)
file_card($file_array,$view='')
六、校验相关
1、判断是否是手机浏览器
is_mobile();
2、判断是否是微信浏览器
is_wechat();
3、判断是否是企业微信浏览器
is_wxwork();
4、验证输入的邮件地址是否合法
is_email($user_email);
七、其他
if(!empty($param['end_time'])){
$param['end_time'] = strtotime($param['end_time']);
}
if (!empty($param['range_time'])) {
$range_time =explode('~', $param['range_time']);
$where[] = ['start_time', 'between',[strtotime(urldecode($range_time[0])),strtotime(urldecode($range_time[1]))]];
}
$param = get_params();
$id = isset($param['id']) ? $param['id'] : 0;
foreach ($new as $key => $value) {
if (!in_array($key, $key_array)) {
if(isset($old[$key]) && ($old[$key]!=$value)){
$log_data[] = array(
'field' => $key,
'type' => $type,
$type_array[$type] => $new['id'],
'admin_id' => $uid,
'old_content' => $old[$key],
'new_content' => $value,
'create_time' => time(),
);
}
}
}
//打印sql语句
$sql = Db::name('Admin')->where($where)
->where(function ($query) use($whereOr) {
if (!empty($whereOr)){
$query->whereOr($whereOr);
}
})->fetchSql()->buildSql();
echo $sql;