ThinkAdmin/application/common.php
2019-04-04 13:29:33 +08:00

139 lines
4.0 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
// +----------------------------------------------------------------------
// | ThinkAdmin
// +----------------------------------------------------------------------
// | 版权所有 2014~2017 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
// +----------------------------------------------------------------------
// | 官方网站: http://think.ctolog.com
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | github开源项目https://github.com/zoujingli/ThinkAdmin
// +----------------------------------------------------------------------
use service\DataService;
use service\NodeService;
use Wechat\Loader;
use think\Db;
/**
* 打印输出数据到文件
* @param mixed $data
* @param bool $replace
* @param string|null $pathname
*/
function p($data, $replace = false, $pathname = null)
{
is_null($pathname) && $pathname = RUNTIME_PATH . date('Ymd') . '.txt';
$str = (is_string($data) ? $data : (is_array($data) || is_object($data)) ? print_r($data, true) : var_export($data, true)) . "\n";
$replace ? file_put_contents($pathname, $str) : file_put_contents($pathname, $str, FILE_APPEND);
}
/**
* 获取微信操作对象
* @param string $type
* @return \Wechat\WechatReceive|\Wechat\WechatUser|\Wechat\WechatPay|\Wechat\WechatScript|\Wechat\WechatOauth|\Wechat\WechatMenu|\Wechat\WechatMedia
*/
function & load_wechat($type = '')
{
static $wechat = [];
$index = md5(strtolower($type));
if (!isset($wechat[$index])) {
$config = [
'token' => sysconf('wechat_token'),
'appid' => sysconf('wechat_appid'),
'appsecret' => sysconf('wechat_appsecret'),
'encodingaeskey' => sysconf('wechat_encodingaeskey'),
'mch_id' => sysconf('wechat_mch_id'),
'partnerkey' => sysconf('wechat_partnerkey'),
'ssl_cer' => sysconf('wechat_cert_cert'),
'ssl_key' => sysconf('wechat_cert_key'),
'cachepath' => CACHE_PATH . 'wxpay' . DS,
];
$wechat[$index] = Loader::get($type, $config);
}
return $wechat[$index];
}
/**
* UTF8字符串加密
* @param string $string
* @return string
*/
function encode($string)
{
$chars = '';
$len = strlen($string = iconv('utf-8', 'gbk', $string));
for ($i = 0; $i < $len; $i++) {
$chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0);
}
return strtoupper($chars);
}
/**
* UTF8字符串解密
* @param string $string
* @return string
*/
function decode($string)
{
$chars = '';
foreach (str_split($string, 2) as $char) {
$chars .= chr(intval(base_convert($char, 36, 10)));
}
return iconv('gbk', 'utf-8', $chars);
}
/**
* RBAC节点权限验证
* @param string $node
* @return bool
*/
function auth($node)
{
return NodeService::checkAuthNode($node);
}
/**
* 设备或配置系统参数
* @param string $name 参数名称
* @param bool $value 默认是false为获取值否则为更新
* @return string|bool
*/
function sysconf($name, $value = false)
{
static $config = [];
if ($value !== false) {
$config = [];
$data = ['name' => $name, 'value' => $value];
return DataService::save('SystemConfig', $data, 'name');
}
if (empty($config)) {
foreach (Db::name('SystemConfig')->select() as $vo) {
$config[$vo['name']] = $vo['value'];
}
}
return isset($config[$name]) ? $config[$name] : '';
}
/**
* array_column 函数兼容
*/
if (!function_exists("array_column")) {
function array_column(array &$rows, $column_key, $index_key = null)
{
$data = [];
foreach ($rows as $row) {
if (empty($index_key)) {
$data[] = $row[$column_key];
} else {
$data[$row[$index_key]] = $row[$column_key];
}
}
return $data;
}
}