| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592 |
- <?php
- require_once APP_PATH . 'Common/Common/developer.php'; //加载开发者二次开发公共函数库
- /**
- * 处理插件钩子
- * @param string $hook 钩子名称
- * @param mixed $params 传入参数
- * @return void
- *
- */
- function hook($hook, $params = array())
- {
- $result = \Think\Hook::listen($hook, $params);
- }
- /**
- * 获取插件类的类名
- * @param strng $name 插件名
- *
- */
- function get_addon_class($name)
- {
- $class = "Addons\\{$name}\\{$name}Addon";
- return $class;
- }
- /**
- * 插件显示内容里生成访问插件的url
- * @param string $url url
- * @param array $param 参数
- *
- */
- function addons_url($url, $param = array())
- {
- return D('Admin/Addon')->getAddonUrl($url, $param);
- }
- /**
- * 兼容Nginx
- * @return array
- *
- */
- if (!function_exists('getallheaders')) {
- function getallheaders()
- {
- foreach ($_SERVER as $name => $value) {
- if (substr($name, 0, 5) == 'HTTP_') {
- $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
- }
- }
- return $headers;
- }
- }
- /**
- * POST数据提前处理
- * @return array
- *
- */
- function format_data($data = null)
- {
- //解析数据类似复选框类型的数组型值
- if (!$data) {
- $data = $_POST;
- }
- $data_object = new \Util\Date;
- foreach ($data as $key => $val) {
- if (!is_array($val)) {
- $val = trim($val);
- if ($data_object->checkDatetime($val)) {
- $data[$key] = strtotime($val);
- } else if ($data_object->checkDatetime($val, 'Y-m-d H:i')) {
- $data[$key] = strtotime($val);
- } else if ($data_object->checkDatetime($val, 'Y-m-d')) {
- $data[$key] = strtotime($val);
- } else {
- $data[$key] = $val;
- }
- } else {
- $data[$key] = implode(',', $val);
- }
- }
- return $data;
- }
- /**
- * 获取所有数据并转换成一维数组
- *
- */
- function select_list_as_tree($model, $map = null, $extra = null, $key = 'id')
- {
- //获取列表
- /**
- * @author Gentle
- * @tro 添加Product查询判断条件
- * @time 2017年9月11日09:35:58
- */
- $model_object = D($model);
- if ($model == 'Product') {
- $list = $model_object->where('id>0')->order('id asc')->select();
- foreach ($list as $val) {
- $result[$val[$key]] = $val['id'] . ':' . $val['name'];
- }
- return $result;
- }
- if ($model == 'Box_type') {
- $list = $model_object->where('id>0')->order('id asc')->select();
- foreach ($list as $val) {
- $result[$val[$key]] = $val['id'] . ':' . $val['name'];
- }
- return $result;
- }
- $con['status'] = array('eq', 1);
- if ($map) {
- $con = array_merge($con, $map);
- }
- // $model_object = D($model);
- if (in_array('sort', $model_object->getDbFields())) {
- $list = $model_object->where($con)->order('sort asc, id asc')->select();
- } else {
- $list = $model_object->where($con)->order('id asc')->select();
- }
- //转换成树状列表(非严格模式)
- $tree = new \Util\Tree();
- $list = $tree->array2tree($list, 'title', 'id', 'pid', 0, false);
- if ($extra) {
- $result[0] = $extra;
- }
- //转换成一维数组
- foreach ($list as $val) {
- $result[$val[$key]] = $val['title_show'];
- }
- return $result;
- }
- /**
- * 解析文档内容
- * @param string $str 待解析内容
- * @return string
- *
- */
- function parse_content($str)
- {
- // 将img标签的src改为lazy-src用户前台图片lazyload加载
- if (C('STATIC_DOMAIN')) {
- $tmp = preg_replace('/<img.*?src="(.*?Uploads.*?)"(.*?)>/i', "<img class='lazy lazy-fadein img-responsive' style='display:inline-block;' data-src='" . C('STATIC_DOMAIN') . "$1'>", $str);
- $tmp = preg_replace('/<img.*?src="(\/.*?)"(.*?)>/i', "<img class='img-responsive' style='display:inline-block;' src='" . C('STATIC_DOMAIN') . "$1'>", $tmp);
- } else {
- $domain = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'];
- $tmp = preg_replace('/<img.*?src="(.*?Uploads.*?)"(.*?)>/i', "<img class='lazy lazy-fadein img-responsive' style='display:inline-block;' data-src='" . $domain . "$1'>", $str);
- $tmp = preg_replace('/<img.*?src="(\/.*?)"(.*?)>/i', "<img class='img-responsive' style='display:inline-block;' src='" . $domain . "$1'>", $tmp);
- }
- return $tmp;
- }
- /**
- * 字符串截取(中文按2个字符数计算),支持中文和其他编码
- * @static
- * @access public
- * @param str $str 需要转换的字符串
- * @param str $start 开始位置
- * @param str $length 截取长度
- * @param str $charset 编码格式
- * @param str $suffix 截断显示字符
- * @return str
- */
- function cut_str($str, $start, $length, $charset = 'utf-8', $suffix = true)
- {
- return \Util\Str::cutStr(
- $str, $start, $length, $charset, $suffix
- );
- }
- /**
- * 过滤标签,输出纯文本
- * @param string $str 文本内容
- * @return string 处理后内容
- *
- */
- function html2text($str)
- {
- return \Util\Str::html2text($str);
- }
- /**
- * 友好的时间显示
- * @param int $sTime 待显示的时间
- * @param string $type 类型. normal | mohu | full | ymd | other
- * @param string $alt 已失效
- * @return string
- *
- */
- function friendly_date($sTime, $type = 'mohu', $alt = 'false')
- {
- $date = new \Util\Date((int)$sTime);
- return $date->friendlyDate($type, $alt);
- }
- /**
- * 用于生成插入datetime类型字段用的字符串
- * @param string $str 支持偏移字符串
- */
- function datetime($str = 'now')
- {
- return @date("Y-m-d H:i:s", strtotime($str));
- }
- /**
- * 时间戳格式化
- * @param int $time
- * @return string 完整的时间显示
- *
- */
- function time_format($time = null, $format = 'Y-m-d H:i')
- {
- $time = $time === null ? time() : intval($time);
- return date($format, $time);
- }
- /**
- * 系统非常规MD5加密方法
- * @param string $str 要加密的字符串
- * @return string
- *
- */
- function user_md5($str, $auth_key)
- {
- if (!$auth_key) {
- $auth_key = C('AUTH_KEY') ?: 'OpenCMF';
- }
- return '' === $str ? '' : md5(sha1($str) . $auth_key);
- }
- /**
- * 检测用户是否登录
- * @return integer 0-未登录,大于0-当前登录用户ID
- *
- */
- function is_login()
- {
- return D('Admin/User')->is_login();
- }
- /**
- * 检测用户是否VIP
- * @return integer VIP等级
- *
- */
- function is_vip($uid)
- {
- if (D('Admin/Module')->where('name="Vip" and status="1"')->count()) {
- $uid = $uid ? $uid : is_login();
- return D('Vip/Index')->isVip($uid);
- }
- return false;
- }
- /**
- * 获取上传文件路径
- * @param int $id 文件ID
- * @return string
- *
- */
- function get_cover($id = null, $type = null)
- {
- return D('Admin/Upload')->getCover($id, $type);
- }
- /**
- * 自动生成URL,支持在后台生成前台链接
- * @param string $url URL表达式,格式:'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...'
- * @param string|array $vars 传入的参数,支持数组和字符串
- * @param string|boolean $suffix 伪静态后缀,默认为true表示获取配置值
- * @param boolean $domain 是否显示域名
- * @return string
- *
- */
- function oc_url($url = '', $vars = '', $suffix = true, $domain = true)
- {
- $url = U($url, $vars, $suffix, $domain);
- if (MODULE_MARK === 'Admin') {
- $url_model = D('Admin/Config')->where(array('name' => 'URL_MODEL'))->getField('value');
- switch ($url_model) {
- case '1':
- $result = strtr($url, array('admin.php?s=' => 'index.php'));
- break;
- case '2':
- $result = strtr($url, array('admin.php?s=/' => ''));
- break;
- case '3':
- $result = strtr($url, array('admin.php' => 'index.php'));
- break;
- default:
- $result = strtr($url, array('admin.php' => 'index.php'));
- break;
- }
- return $result;
- } else {
- return $url;
- }
- }
- /**
- * 检测是否使用手机访问
- * @access public
- * @return bool
- */
- function is_wap()
- {
- if (isset($_SERVER['HTTP_VIA']) && stristr($_SERVER['HTTP_VIA'], "wap")) {
- return true;
- } elseif (isset($_SERVER['HTTP_ACCEPT']) && strpos(strtoupper($_SERVER['HTTP_ACCEPT']), "VND.WAP.WML")) {
- return true;
- } elseif (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE'])) {
- return true;
- } elseif (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])) {
- return true;
- } else {
- return false;
- }
- }
- /**
- * 是否微信访问
- * @return bool
- *
- */
- function is_weixin()
- {
- if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
- return true;
- } else {
- return false;
- }
- }
- /**
- * author xtj
- * intro 压缩方法
- * param
- * return array obj json bool string resource
- */
- function downZip($batch_name, $printer_id)
- {
- $data = explode('_', $batch_name);
- $filename = $data[0] . '_' . $data[1];
- if (M('task')->where(array('name' => $filename, 'printer_id' => $printer_id))->find()) {
- $path = './Data/Code_Add_list/' . $filename . '/admin/' . $batch_name.'/1';
- if (!file_exists($path)) return false;//批次号不存在
- $zip = new \Util\Zip();
- M('task')->where(array('name' => $filename, 'id' => $data[2]))->setField('status', 1);
- $zip->ZipAndDownload($path, $batch_name);
- }
- }
- /**
- * author xtj
- * intro 消息提示方法
- * param $param 参数数组
- * return json
- */
- function alert($param = array())
- {
- if (!empty($param)) {
- foreach ($param as $k => $v) {
- $data[$k] = $v;
- }
- }
- header('Content-Type:application/json; charset=utf-8');
- exit(json_encode($data));
- }
- function i_array_column($input, $columnKey, $indexKey = null)
- {
- if (!function_exists('array_column')) {
- $columnKeyIsNumber = (is_numeric($columnKey)) ? true : false;
- $indexKeyIsNull = (is_null($indexKey)) ? true : false;
- $indexKeyIsNumber = (is_numeric($indexKey)) ? true : false;
- $result = array();
- foreach ((array)$input as $key => $row) {
- if ($columnKeyIsNumber) {
- $tmp = array_slice($row, $columnKey, 1);
- $tmp = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null;
- } else {
- $tmp = isset($row[$columnKey]) ? $row[$columnKey] : null;
- }
- if (!$indexKeyIsNull) {
- if ($indexKeyIsNumber) {
- $key = array_slice($row, $indexKey, 1);
- $key = (is_array($key) && !empty($key)) ? current($key) : null;
- $key = is_null($key) ? 0 : $key;
- } else {
- $key = isset($row[$indexKey]) ? $row[$indexKey] : 0;
- }
- }
- $result[$key] = $tmp;
- }
- return $result;
- } else {
- return array_column($input, $columnKey, $indexKey);
- }
- }
- /**
- * author xtj
- * intro 是否有下载的权限
- * param
- * return bool
- */
- function is_downzip($uid)
- {
- if (M('admin_access')->where(array('uid' => $uid))->getField('group') == 2) {
- return true;
- } else {
- return false;
- }
- }
- /**
- * author xtj
- * intro 获取用户组
- * param
- * return int
- */
- function getUserGroup($uid)
- {
- return M('admin_access')->where(array('uid' => $uid))->getField('group');
- }
- /**
- * author xtj
- * intro 获取当前登录用户uid
- * param
- * return int
- */
- function get_current_admin_id()
- {
- return session('user_auth.uid');
- }
- /**
- * author xtj
- * intro 获取当前登录用户名
- * param
- * return int
- */
- function get_current_admin_name(){
- return session('user_auth.username');
- }
- /**
- * author jade
- * intro 获取当前登录用户名
- * param
- * return int
- */
- function w_log($path,$content){
- file_put_contents($path, $content.PHP_EOL,FILE_APPEND);
- return true;
- }
- /*
- * 获取后缀
- */
- function get_extension($file)
- {
- return pathinfo($file, PATHINFO_EXTENSION);
- }
- /*
- * 获取分表表名
- */
- function getSubTable($tableName, $code = null,$PREFIX=0)
- {
- // 每张表中放50个集团的数据
- $lastWord=strtolower(substr($code, -1));
- return $PREFIX==0?C('DB_PREFIX').$tableName .'_'.$lastWord:$tableName .'_'.$lastWord;
- }
- function getSubTable1($tableName, $code = null,$PREFIX=0)
- {
- // 每张表中放50个集团的数据;
- $lastWord=strtolower(substr($code, -1));
- return $tableName .'_'.$lastWord;
- }
- function getpage($count, $pagesize = 10) {
- $p = new Think\Page($count, $pagesize);
- $p->setConfig('header', '<li class="rows">共<b>%TOTAL_ROW%</b>条记录 第<b>%NOW_PAGE%</b>页/共<b>%TOTAL_PAGE%</b>页</li>');
- $p->setConfig('prev', '上一页');
- $p->setConfig('next', '下一页');
- $p->setConfig('last', '末页');
- $p->setConfig('first', '首页');
- $p->setConfig('theme', '%FIRST%%UP_PAGE%%LINK_PAGE%%DOWN_PAGE%%END%%HEADER%');
- $p->lastSuffix = false;//最后一页不显示为总页数
- return $p;
- }
- function repeat($rand){
- $return = M('activate_list')->field('id')->where('active_batch = '.$rand)->limit(1)->select();
- if(!empty($return)){
- $rand = rand(10000,999999);
- repeat($rand);
- }
- return $rand;
- }
- /**
- * 获取远程URL的HTTP状态
- * @Author xtj
- * @param string $url 远程URL
- * @param string $data ture[返回HTTP状态数组] | false[返回状态数值]
- */
- function getStatusCode($url){
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_exec($ch);
- return curl_getinfo($ch, CURLINFO_HTTP_CODE); // 200
- curl_close($ch);
- }
- /*
- uri专用的url解密
- */
- function urlsafe_b64decode($string) {
- $data = str_replace(array('-','_'),array('+','/'),$string);
- $mod4 = strlen($data) % 4;
- if ($mod4) {
- $data .= substr('====', $mod4);
- }
- return base64_decode($data);
- }
- function intTochar($num=0,$len){
- //规定的不足的时候自动补足零
- $code=(string)$num;
- $buwei='';
- if(strlen($code)<$len){
- for($i=strlen($code);$i<$len;$i++){
- $buwei.='0';
- }
- }
- return $buwei.$code;
- }
- //二维码数组生产
- function CodeData($sign,$fixed_code,$small_num,$print_date,$flow,$weight,$large_sign,$reservation){
- $code=$sign;//4 位固定标志位
- $code.=$fixed_code; // 固定字符串
- $code.=$small_num;//3位 小件数量
- $code.=$print_date;//6 位 日期
- $code.=$flow;//6位打印流水号
- $code.=$weight;//6位辅料重量
- $code.=$large_sign;//大小件标示位
- $code.=$reservation;//20 位 预留号
- //大码数据信息
- $data=[
- 'code'=>str_replace(" ","",$code),
- 'code_cp1'=>$print_date.$flow,
- 'code_cp2'=>$weight.$reservation,//20位补充
- 'print_date'=>time(),
- 'p_nums'=>0,
- ];
- return $data;
- }
- //托盘编号处理函数
- function GetTuopan($userid,$product_id){
- $codition['userid']=$userid;
- $codition['product_id']=$product_id;
- $l_flow=M('reset_flow')->field('l_flow,bach_num')->where($codition)->find();
- return $l_flow;
- }
- ?>
|