1034 lines
16 KiB
PHP
1034 lines
16 KiB
PHP
<?php
|
|
|
|
/**
|
|
* PHP SDK for haodai.com (using OAuth2)
|
|
*
|
|
* @author duyumi <duyumi.net@gmail.com>
|
|
* @copyright open.weibo.com
|
|
*/
|
|
|
|
|
|
!defined('IN_DISCUZ') && exit('Access Denied');
|
|
|
|
class HaoDaiOAuth {
|
|
|
|
|
|
public $client_id;
|
|
|
|
|
|
public $client_secret;
|
|
|
|
|
|
public $access_token;
|
|
|
|
|
|
public $refresh_token;
|
|
|
|
|
|
public $http_code;
|
|
|
|
|
|
public $url;
|
|
|
|
|
|
public $host = HD_API_HOST;
|
|
|
|
|
|
public $source = "open.haodai";
|
|
|
|
|
|
public $auth = "oauth2";
|
|
|
|
|
|
public $union_ref = HD_REF;
|
|
|
|
|
|
public $timeout = 30;
|
|
|
|
|
|
public $connecttimeout = 30;
|
|
|
|
|
|
public $ssl_verifypeer = FALSE;
|
|
|
|
|
|
public $format = 'json';
|
|
|
|
|
|
public $decode_json = TRUE;
|
|
|
|
|
|
public $http_info;
|
|
|
|
|
|
public $useragent = 'HAODAI OAuth2 v0.1';
|
|
|
|
|
|
|
|
|
|
public $debug = FALSE;
|
|
|
|
|
|
|
|
|
|
public static $boundary = '';
|
|
|
|
|
|
|
|
|
|
|
|
function accessTokenURL() { return HD_API_HOST.'oauth2/access_token/'; }
|
|
|
|
|
|
function authorizeURL() { return HD_API_HOST.'oauth2/authorize/'; }
|
|
|
|
|
|
function __construct($client_id, $client_secret, $access_token = NULL, $refresh_token = NULL, $union_ref = NULL) {
|
|
|
|
$this->client_id = $client_id;
|
|
|
|
$this->client_secret = $client_secret;
|
|
|
|
$this->access_token = $access_token;
|
|
|
|
$this->refresh_token = $refresh_token;
|
|
|
|
$this->union_ref = empty($union_ref) ? HD_REF : $union_ref;
|
|
}
|
|
|
|
|
|
|
|
|
|
function getAuthorizeURL( $url, $response_type = 'code', $state = NULL, $display = NULL ) {
|
|
|
|
$params = array();
|
|
|
|
$params['client_id'] = $this->client_id;
|
|
|
|
$params['redirect_uri'] = $url;
|
|
|
|
$params['response_type'] = $response_type;
|
|
|
|
$params['state'] = $state;
|
|
|
|
$params['display'] = $display;
|
|
|
|
return $this->authorizeURL() . "?" . http_build_query($params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getAccessToken( $type = 'code', $keys ) {
|
|
|
|
$params = array();
|
|
|
|
$params['client_id'] = $this->client_id;
|
|
|
|
$params['client_secret'] = $this->client_secret;
|
|
|
|
$params['response_type'] = 'token';
|
|
|
|
if ( $type === 'token' ) {
|
|
|
|
$params['grant_type'] = 'refresh_token';
|
|
|
|
$params['refresh_token'] = $keys['refresh_token'];
|
|
|
|
} elseif ( $type === 'code' ) {
|
|
|
|
$params['grant_type'] = 'authorization_code';
|
|
|
|
$params['code'] = $keys['code'];
|
|
|
|
$params['redirect_uri'] = $keys['redirect_uri'];
|
|
|
|
} elseif ( $type === 'password' ) {
|
|
|
|
$params['grant_type'] = 'password';
|
|
|
|
$params['username'] = $keys['username'];
|
|
|
|
$params['password'] = $keys['password'];
|
|
|
|
} else {
|
|
|
|
exit("wrong auth type");
|
|
|
|
}
|
|
|
|
|
|
|
|
$response = $this->oAuthRequest($this->accessTokenURL(), 'POST', $params);
|
|
|
|
|
|
|
|
$token = json_decode($response, true);
|
|
|
|
if ( is_array($token) && !isset($token['error']) ) {
|
|
|
|
$this->access_token = $token['access_token'];
|
|
|
|
$this->refresh_token = $token['refresh_token'];
|
|
|
|
} else {
|
|
|
|
exit("get access token failed." . $token['error']);
|
|
|
|
}
|
|
|
|
return $token;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function parseSignedRequest($signed_request) {
|
|
|
|
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
|
|
|
|
$sig = self::base64decode($encoded_sig) ;
|
|
|
|
$data = json_decode(self::base64decode($payload), true);
|
|
|
|
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') return '-1';
|
|
|
|
$expected_sig = hash_hmac('sha256', $payload, $this->client_secret, true);
|
|
|
|
return ($sig !== $expected_sig)? '-2':$data;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function base64decode($str) {
|
|
|
|
return base64_decode(strtr($str.str_repeat('=', (4 - strlen($str) % 4)), '-_', '+/'));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getTokenFromJSSDK() {
|
|
|
|
$key = "haodaijs_" . $this->client_id;
|
|
|
|
if ( isset($_COOKIE[$key]) && $cookie = $_COOKIE[$key] ) {
|
|
|
|
parse_str($cookie, $token);
|
|
|
|
if ( isset($token['access_token']) && isset($token['refresh_token']) ) {
|
|
|
|
$this->access_token = $token['access_token'];
|
|
|
|
$this->refresh_token = $token['refresh_token'];
|
|
|
|
return $token;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getTokenFromArray( $arr ) {
|
|
|
|
if (isset($arr['access_token']) && $arr['access_token']) {
|
|
|
|
$token = array();
|
|
|
|
$this->access_token = $token['access_token'] = $arr['access_token'];
|
|
|
|
if (isset($arr['refresh_token']) && $arr['refresh_token']) {
|
|
|
|
$this->refresh_token = $token['refresh_token'] = $arr['refresh_token'];
|
|
|
|
}
|
|
|
|
|
|
|
|
return $token;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get($url, $parameters = array()) {
|
|
|
|
$response = $this->oAuthRequest($url, 'GET', $parameters);
|
|
|
|
if ($this->format === 'json' && $this->decode_json) {
|
|
|
|
return json_decode($response, true);
|
|
|
|
}
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function post($url, $parameters = array(), $multi = false) {
|
|
|
|
$response = $this->oAuthRequest($url, 'POST', $parameters, $multi );
|
|
|
|
if ($this->format === 'json' && $this->decode_json) {
|
|
|
|
return json_decode($response, true);
|
|
|
|
}
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function delete($url, $parameters = array()) {
|
|
|
|
$response = $this->oAuthRequest($url, 'DELETE', $parameters);
|
|
|
|
if ($this->format === 'json' && $this->decode_json) {
|
|
|
|
return json_decode($response, true);
|
|
|
|
}
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function oAuthRequest($url, $method, $parameters, $multi = false) {
|
|
|
|
|
|
|
|
if (strrpos($url, 'http://') !== 0 && strrpos($url, 'https://') !== 0) {
|
|
|
|
$url = "{$this->host}{$url}";
|
|
|
|
}
|
|
|
|
|
|
|
|
switch ($method) {
|
|
|
|
case 'GET':
|
|
|
|
$url = $url . '?source='.$this->source.'&auth='.$this->auth.'&ref='.$this->union_ref.'&'. http_build_query($parameters);
|
|
|
|
return $this->http($url, 'GET');
|
|
|
|
default:
|
|
|
|
$headers = array();
|
|
|
|
if (!$multi && (is_array($parameters) || is_object($parameters)) ) {
|
|
|
|
$body = http_build_query($parameters);
|
|
|
|
} else {
|
|
|
|
$body = self::build_http_query_multi($parameters);
|
|
|
|
$headers[] = "Content-Type: multipart/form-data; boundary=" . self::$boundary;
|
|
|
|
}
|
|
|
|
$url = $url . '?source='.$this->source.'&auth='.$this->auth.'&ref='.$this->union_ref;
|
|
|
|
return $this->http($url, $method, $body, $headers);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function http($url, $method, $postfields = NULL, $headers = array()) {
|
|
|
|
$this->http_info = array();
|
|
|
|
$ci = curl_init();
|
|
|
|
|
|
curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
|
|
|
|
curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);
|
|
|
|
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
|
|
|
|
curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
|
|
|
|
curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
|
|
|
|
curl_setopt($ci, CURLOPT_ENCODING, "");
|
|
|
|
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
|
|
|
|
curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, 1);
|
|
|
|
curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
|
|
|
|
curl_setopt($ci, CURLOPT_HEADER, FALSE);
|
|
|
|
|
|
|
|
switch ($method) {
|
|
|
|
case 'POST':
|
|
|
|
curl_setopt($ci, CURLOPT_POST, TRUE);
|
|
|
|
if (!empty($postfields)) {
|
|
|
|
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
|
|
|
|
$this->postdata = $postfields;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 'DELETE':
|
|
|
|
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
|
|
|
|
if (!empty($postfields)) {
|
|
|
|
$url = "{$url}?{$postfields}";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( isset($this->access_token) && $this->access_token )
|
|
|
|
$headers[] = "Authorization: oauth2 ".$this->access_token;
|
|
|
|
|
|
|
|
if ( !empty($this->remote_ip) ) {
|
|
|
|
if ( defined('SAE_ACCESSKEY') ) {
|
|
|
|
$headers[] = "SaeRemoteIP: " . $this->remote_ip;
|
|
|
|
} else {
|
|
|
|
$headers[] = "API-RemoteIP: " . $this->remote_ip;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if ( !defined('SAE_ACCESSKEY') ) {
|
|
|
|
$headers[] = "API-RemoteIP: " . $_SERVER['REMOTE_ADDR'];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
curl_setopt($ci, CURLOPT_URL, $url );
|
|
|
|
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );
|
|
|
|
curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );
|
|
|
|
|
|
|
|
$response = curl_exec($ci);
|
|
|
|
|
|
|
|
$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
|
|
|
|
$this->http_info = array_merge($this->http_info, curl_getinfo($ci));
|
|
|
|
$this->url = $url;
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
echo "=====post data======\r\n";
|
|
|
|
var_dump($postfields);
|
|
|
|
|
|
|
|
echo "=====headers======\r\n";
|
|
|
|
print_r($headers);
|
|
|
|
|
|
|
|
echo '=====request info====='."\r\n";
|
|
|
|
print_r( curl_getinfo($ci) );
|
|
|
|
|
|
|
|
echo '=====response====='."\r\n";
|
|
|
|
print_r( $response );
|
|
|
|
}
|
|
|
|
curl_close ($ci);
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getHeader($ch, $header) {
|
|
|
|
$i = strpos($header, ':');
|
|
|
|
if (!empty($i)) {
|
|
|
|
$key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
|
|
|
|
$value = trim(substr($header, $i + 2));
|
|
|
|
$this->http_header[$key] = $value;
|
|
|
|
}
|
|
|
|
return strlen($header);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function build_http_query_multi($params) {
|
|
|
|
if (!$params) return '';
|
|
|
|
|
|
|
|
uksort($params, 'strcmp');
|
|
|
|
|
|
|
|
$pairs = array();
|
|
|
|
|
|
|
|
self::$boundary = $boundary = uniqid('------------------');
|
|
|
|
$MPboundary = '--'.$boundary;
|
|
|
|
$endMPboundary = $MPboundary. '--';
|
|
|
|
$multipartbody = '';
|
|
|
|
|
|
|
|
foreach ($params as $parameter => $value) {
|
|
|
|
|
|
|
|
if( in_array($parameter, array('pic', 'image')) && $value{0} == '@' ) {
|
|
|
|
$url = ltrim( $value, '@' );
|
|
|
|
$content = file_get_contents( $url );
|
|
|
|
$array = explode( '?', basename( $url ) );
|
|
|
|
$filename = $array[0];
|
|
|
|
|
|
|
|
$multipartbody .= $MPboundary . "\r\n";
|
|
|
|
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename . '"'. "\r\n";
|
|
|
|
$multipartbody .= "Content-Type: image/unknown\r\n\r\n";
|
|
|
|
$multipartbody .= $content. "\r\n";
|
|
|
|
} else {
|
|
|
|
$multipartbody .= $MPboundary . "\r\n";
|
|
|
|
$multipartbody .= 'content-disposition: form-data; name="' . $parameter . "\"\r\n\r\n";
|
|
|
|
$multipartbody .= $value."\r\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
$multipartbody .= $endMPboundary;
|
|
|
|
return $multipartbody;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HaoDaiClient
|
|
|
|
{
|
|
|
|
|
|
function __construct( $akey, $skey, $access_token, $refresh_token = NULL, $union_ref='')
|
|
|
|
{
|
|
|
|
$this->oauth = new HaoDaiOAuth( $akey, $skey, $access_token, $refresh_token, $union_ref);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function set_debug( $enable )
|
|
|
|
{
|
|
|
|
$this->oauth->debug = $enable;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function set_remote_ip( $ip )
|
|
|
|
{
|
|
|
|
if ( ip2long($ip) !== false ) {
|
|
|
|
$this->oauth->remote_ip = $ip;
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_xindai_list($city='beijing' , $xd_type='xiaofei', $money=1, $month=12, $data=array(), $page=1, $page_size=10 )
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['xd_type'] = $xd_type;
|
|
|
|
$params['city'] = $city;
|
|
|
|
$params['page'] = $page;
|
|
|
|
$params['page_size'] = $page_size;
|
|
|
|
$params['money'] = $money;
|
|
|
|
$params['month']= $month;
|
|
|
|
$params = array_merge($params,$data);
|
|
|
|
return $this->oauth->get('xindai/get_xindai_list', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_xindai_detail($city, $item_id, $money=1, $month=12)
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['item_id'] = $item_id;
|
|
|
|
$params['city'] = $city;
|
|
|
|
$params['money'] = $money;
|
|
|
|
$params['month']= $month;
|
|
|
|
return $this->oauth->get('xindai/get_xindai_detail', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function send_xindai_apply($city, $nickname, $money, $mobile, $data=array())
|
|
|
|
{
|
|
|
|
if(empty($city)||empty($nickname)||empty($mobile)||empty($money))
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
$params = array();
|
|
|
|
$params['city'] = $city;
|
|
|
|
$params['nickname'] = $nickname;
|
|
|
|
$params['mobile'] = $mobile;
|
|
|
|
$params['money'] = $money;
|
|
|
|
$params = array_merge($data,$params);
|
|
|
|
return $this->oauth->post( 'xindai/send_xindai_apply', $params, true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_xindai_filter($xd_type)
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['xd_type'] = $xd_type;
|
|
|
|
return $this->oauth->get( 'xindai/get_xindai_filter', $params );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function get_xindai_zones()
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
return $this->oauth->get( 'xindai/get_xindai_zones', $params );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function send_xindai_apply_details($id, $details, $xd_type=FALSE)
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['id'] = intval($id);
|
|
|
|
$params['details'] = $details;
|
|
|
|
$params['xd_type'] = $xd_type;
|
|
|
|
return $this->oauth->post('xindai/send_xindai_apply_details', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function send_xindai_apply_fast( $city, $nickname, $money, $mobile, $data=array())
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['city'] = $city;
|
|
|
|
$params['nickname'] = $nickname;
|
|
|
|
$params['mobile'] = $mobile;
|
|
|
|
$params['money'] = $money;
|
|
|
|
$params = array_merge($data,$params);
|
|
|
|
return $this->oauth->post('xindai/send_xindai_apply_fast', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function get_hot_recommend( $city )
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['city'] = $city;
|
|
|
|
return $this->oauth->get('common/get_hot_recommend', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_xindai_ad( $city )
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['city'] = $city;
|
|
|
|
return $this->oauth->get('xindai/get_xindai_ad', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_article_dkgl_list( $city, $is_top, $pg_num = 1, $pg_size = 10)
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['is_top'] = $is_top;
|
|
|
|
$params['city'] = $city;
|
|
|
|
return $this->request_with_pager( 'article/get_article_dkgl_list', $pg_num, $pg_size, $params );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_article_dkzx_list( $city, $is_top, $pg_num = 1, $pg_size = 10)
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['is_top'] = $is_top;
|
|
|
|
$params['city'] = $city;
|
|
|
|
return $this->request_with_pager( 'article/get_article_dkzx_list', $pg_num, $pg_size, $params );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_article_cjwt_list( $city, $is_top, $pg_num = 1, $pg_size = 10)
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['is_top'] = $is_top;
|
|
|
|
$params['city'] = $city;
|
|
|
|
return $this->request_with_pager( 'article/get_article_cjwt_list', $pg_num, $pg_size, $params );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_article_jyfx_list( $city, $is_top, $pg_num = 1, $pg_size = 10)
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['is_top'] = $is_top;
|
|
|
|
$params['city'] = $city;
|
|
|
|
return $this->request_with_pager( 'article/get_article_jyfx_list', $pg_num, $pg_size, $params );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_article_detail( $id)
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['id'] = $id;
|
|
|
|
return $this->oauth->get( 'article/get_article_detail',$params );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function register_union_account($data=array())
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['email'] = $data['email'];
|
|
|
|
$params['tel'] = $data['tel'];
|
|
|
|
$params['nickname'] = $data['nickname'];
|
|
|
|
$params['passwd'] = $data['passwd'];
|
|
|
|
$params['realname'] = $data['realname'];
|
|
|
|
$params['qq'] = $data['qq'];
|
|
|
|
$params['domain'] = $data['domain'];
|
|
|
|
$params['sitename'] = $data['sitename'];
|
|
|
|
$res = $this->oauth->post('user/register_union_account', $params);
|
|
|
|
$this->oauth->union_ref = $res['hd_ref'];
|
|
|
|
return $res;
|
|
}
|
|
|
|
|
|
|
|
|
|
function haodai_app_register($data=array())
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
$params['app_name'] = $data['app_name'];
|
|
|
|
$params['site_url'] = $data['site_url'];
|
|
|
|
$params['desc'] = $data['desc'];
|
|
|
|
$params['callback_url'] = $data['callback_url'];
|
|
|
|
return $this->oauth->post('user/haodai_app_register', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function haodai_check_AccessToken()
|
|
|
|
{
|
|
|
|
$params = array();
|
|
|
|
return $this->oauth->get('common/check_AccessToken', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function request_with_pager( $url, $pg_num = false, $pg_size = false, $params = array() )
|
|
|
|
{
|
|
|
|
if( $pg_num ) $params['pg_num'] = $pg_num;
|
|
|
|
if( $pg_size ) $params['pg_size'] = $pg_size;
|
|
|
|
|
|
|
|
return $this->oauth->get($url, $params );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function id_format(&$id) {
|
|
|
|
if ( is_float($id) ) {
|
|
|
|
$id = number_format($id, 0, '', '');
|
|
|
|
} elseif ( is_string($id) ) {
|
|
|
|
$id = trim($id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} |