www.gusucode.com > 高端企业门户+论坛网站源码程序 > 整站安装/整站源码/source/plugin/manyou/Service/Util.php
<?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to license terms * * $Id: Util.php 31728 2012-09-25 09:03:42Z zhouxiaobo $ */ if(!defined('IN_DISCUZ')) { exit('Access Denied'); } class Cloud_Service_Util { protected static $_instance; public static function getInstance() { if (!(self::$_instance instanceof self)) { self::$_instance = new self(); } return self::$_instance; } public function __construct() { } public function generateSiteSignUrl($params = array(), $isCamelCase = false, $isReturnArray = false) { global $_G; $ts = TIMESTAMP; $sId = $_G['setting']['my_siteid']; $sKey = $_G['setting']['my_sitekey']; $uid = $_G['uid']; if(!is_array($params)) { $params = array(); } unset($params['sig'], $params['ts']); if ($isCamelCase) { $params['sId'] = $sId; $params['sSiteUid'] = $uid; } else { $params['s_id'] = $sId; $params['s_site_uid'] = $uid; } ksort($params); $str = $this->httpBuildQuery($params, '', '&'); $sig = md5(sprintf('%s|%s|%s', $str, $sKey, $ts)); $params['ts'] = $ts; $params['sig'] = $sig; if(!$isReturnArray) { $params = $this->httpBuildQuery($params, '', '&'); } return $params; } public function redirect($url, $code = 302) { @ob_end_clean(); @ob_start(); $errorChars = array(); for ($i = 0; $i <= 31; $i ++) { $errorChars[] = chr($i); } $url = trim(str_replace($errorChars, '', $url)); if (strpos($url, '/') === 0) { $url = '/' . ltrim($url, '/'); } @header('Location: ' . $url, true, $code); exit; } public function generateUniqueId() { $siteuniqueid = C::t('common_setting')->fetch('siteuniqueid'); if(empty($siteuniqueid) || strlen($siteuniqueid) < 16) { $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; $siteuniqueid = 'DX'.$chars[date('y')%60].$chars[date('n')].$chars[date('j')].$chars[date('G')].$chars[date('i')].$chars[date('s')].substr(md5($_G['clientip'].$_G['username'].TIMESTAMP), 0, 4).random(4); C::t('common_setting')->update('siteuniqueid', $siteuniqueid); require_once libfile('function/cache'); updatecache('setting'); } } public function httpBuildQuery($data, $numeric_prefix='', $arg_separator='', $prefix='') { $render = array(); if (empty($arg_separator)) { $arg_separator = @ini_get('arg_separator.output'); empty($arg_separator) && $arg_separator = '&'; } foreach ((array) $data as $key => $val) { if (is_array($val) || is_object($val)) { $_key = empty($prefix) ? "{$key}[%s]" : sprintf($prefix, $key) . "[%s]"; $_render = $this->httpBuildQuery($val, '', $arg_separator, $_key); if (!empty($_render)) { $render[] = $_render; } } else { if (is_numeric($key) && empty($prefix)) { $render[] = urlencode("{$numeric_prefix}{$key}") . "=" . urlencode($val); } else { if (!empty($prefix)) { $_key = sprintf($prefix, $key); $render[] = urlencode($_key) . "=" . urlencode($val); } else { $render[] = urlencode($key) . "=" . urlencode($val); } } } } $render = implode($arg_separator, $render); if (empty($render)) { $render = ''; } return $render; } public function getApiVersion() { return '0.6'; } public function hashHmac($algo, $data, $key, $raw_output = false) { if (function_exists('hash_hmac')) { return hash_hmac($algo, $data, $key, $raw_output); } else { $algo = strtolower($algo); $pack = 'H'.strlen(call_user_func($algo, 'test')); $size = 64; $opad = str_repeat(chr(0x5C), $size); $ipad = str_repeat(chr(0x36), $size); if(strlen($key) > $size) { $key = str_pad(pack($pack, call_user_func($algo, $key)), $size, chr(0x00)); } else { $key = str_pad($key, $size, chr(0x00)); } for ($i = 0; $i < strlen($key) - 1; $i++) { $opad[$i] = $opad[$i] ^ $key[$i]; $ipad[$i] = $ipad[$i] ^ $key[$i]; } $output = call_user_func($algo, $opad.pack($pack, call_user_func($algo, $ipad.$data))); return ($raw_output) ? pack($pack, $output) : $output; } } public function isMobile($status) { if (getstatus($status, 11) || getstatus($status, 12) || getstatus($status, 13)) { return true; } return false; } public function mobileHasSound() { if (getstatus($status, 13)) { return true; } return false; } public function mobileHasPhoto() { if (getstatus($status, 12) && getstatus($status, 11)) { return true; } return false; } public function mobileHasGPS() { if (getstatus($status, 12)) { return true; } return false; } public function isfounder($user) { global $_G; $founders = str_replace(' ', '', $_G['config']['admincp']['founder']); if(!$user['uid'] || $user['groupid'] != 1 || $user['adminid'] != 1) { return false; } elseif(empty($founders)) { return false; } elseif(strexists(",$founders,", ",$user[uid],")) { return true; } elseif(!is_numeric($user['username']) && strexists(",$founders,", ",$user[username],")) { return true; } else { return FALSE; } } }