本文整理汇总了PHP中Hybrid_Error类的典型用法代码示例。如果您正苦于以下问题:PHP Hybrid_Error类的具体用法?PHP Hybrid_Error怎么用?PHP Hybrid_Error使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Hybrid_Error类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: wsl_display_dev_mode_debugging_area
/**
* Display a debugging area.
*
* This function is highly inspired by the Query Monitor.
* https://wordpress.org/plugins/query-monitor/
*
* Note: in order for this function to display the sql queries, 'SAVEQUERIES' should be defined as true in 'wp-config.php'
*/
function wsl_display_dev_mode_debugging_area($keyword = 'wsl_')
{
global $wpdb, $wp_actions, $wp_filter;
?>
<style>
.wsl-dev-nonselectsql {
color: #a0a !important;
}
.wsl-dev-expensivesql {
color: #f44 !important;
}
.wsl-dev-optionfunc {
color: #4a4 !important;
}
.wsl-dev-wslfunc {
color: #1468fa !important;
}
.wsl-dev-nonwslfunc {
color: #a0a !important;
}
.wsl-dev-usedhook, .wsl-dev-usedhook a {
color: #1468fa;
}
.wsl-dev-usedwslhook {
color: #a0a !important;
}
.wsl-dev-unusedhook, .wsl-dev-unusedhook a{
color: #a3a3a3 !important;
}
.wsl-dev-hookcallback, .wsl-dev-hookcallback a {
color: #4a4 !important;
}
.wsl-dev-table {
width:100%;
border: 1px solid #e5e5e5;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
border-spacing: 0;
clear: both;
margin: 0;
width: 100%;
}
.wsl-dev-table td, .wsl-dev-table th {
border: 1px solid #dddddd;
padding: 8px 10px;
background-color: #fff;
text-align: left;
}
</style>
<?php
if (class_exists('Hybrid_Error', false) && Hybrid_Error::getApiError()) {
?>
<h4>Provider API Error</h4>
<table class="wsl-dev-table">
<tr>
<td>
<?php
echo Hybrid_Error::getApiError();
?>
</td>
</tr>
</table>
<?php
}
?>
<h4>SQL Queries</h4>
<table class="wsl-dev-table">
<tr>
<td colspan="3">
1. SAVEQUERIES should be defined and set to TRUE in order for the queries to show up (http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis)
<br />
2. Calls for get_option() don't necessarily result on a query to the database. WP use both cache and wp_load_alloptions() to load all options at once. Hence, it won't be shown here.
</td>
</tr>
<?php
$queries = $wpdb->queries;
$total_wsl_queries = 0;
$total_wsl_queries_time = 0;
if ($queries) {
foreach ($queries as $item) {
$sql = trim($item[0]);
$time = $item[1];
$stack = $item[2];
$sql = str_ireplace(array(' FROM ', ' WHERE ', ' LIMIT ', ' GROUP BY ', ' ORDER BY ', ' SET '), array("\n" . 'FROM ', "\n" . 'WHERE ', "\n" . 'LIMIT ', "\n" . 'GROUP BY ', "\n" . 'ORDER BY ', "\n" . 'SET '), $sql);
# https://wordpress.org/plugins/query-monitor/
$callers = explode(',', $stack);
$caller = trim(end($callers));
if (false !== strpos($caller, '(')) {
$caller_name = substr($caller, 0, strpos($caller, '(')) . '()';
} else {
$caller_name = $caller;
//.........这里部分代码省略.........
示例2: request
/**
* Make http request
*/
function request($url, $method, $postfields = NULL, $auth_header = NULL, $content_type = NULL, $multipart = false)
{
$this->http_info = array();
$ci = curl_init();
/* Curl settings */
curl_setopt($ci, CURLOPT_USERAGENT, $this->curl_useragent);
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->curl_connect_time_out);
curl_setopt($ci, CURLOPT_TIMEOUT, $this->curl_time_out);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->curl_ssl_verifypeer);
curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
curl_setopt($ci, CURLOPT_HEADER, FALSE);
curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE);
curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE);
if ($multipart) {
curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:', $auth_header));
} elseif ($content_type) {
curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:', "Content-Type: {$content_type}"));
}
if ($this->curl_proxy) {
curl_setopt($ci, CURLOPT_PROXY, $this->curl_proxy);
}
switch ($method) {
case 'POST':
curl_setopt($ci, CURLOPT_POST, TRUE);
if (!empty($postfields)) {
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
}
if (!empty($auth_header) && $this->curl_auth_header && !$multipart) {
curl_setopt($ci, CURLOPT_HTTPHEADER, array('Content-Type: application/atom+xml', $auth_header));
}
break;
case 'DELETE':
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
if (!empty($postfields)) {
$url = "{$url}?{$postfields}";
}
}
curl_setopt($ci, CURLOPT_URL, $url);
$response = curl_exec($ci);
$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
$this->http_info = array_merge($this->http_info, curl_getinfo($ci));
curl_close($ci);
//-
Hybrid_Error::deleteApiError();
if ($this->http_code != 200) {
Hybrid_Error::setApiError($this->http_code . '. ' . preg_replace('/\\s+/', ' ', $response));
}
if (defined('WORDPRESS_SOCIAL_LOGIN_DEBUG_API_CALLS')) {
do_action('wsl_log_provider_api_call', 'OAuth1', $url, $method, $postfields, $this->http_code, $this->http_info, $response);
}
//-
return $response;
}
示例3: fetch
/**
* General data send/request method.
*
* @param str $method
* The data communication method.
* @param str $url
* The Linkedin API endpoint to connect with.
* @param str $data
* [OPTIONAL] The data to send to LinkedIn.
* @param arr $parameters
* [OPTIONAL] Addition OAuth parameters to send to LinkedIn.
*
* @return arr
* Array containing:
*
* array(
* 'info' => Connection information,
* 'linkedin' => LinkedIn response,
* 'oauth' => The OAuth request string that was sent to LinkedIn
* )
*/
function fetch($method, $url, $data = NULL, $parameters = array())
{
// check for cURL
if (!extension_loaded('curl')) {
// cURL not present
throw new LinkedInException('LinkedIn->fetch(): PHP cURL extension does not appear to be loaded/present.');
}
try {
// generate OAuth values
$oauth_consumer = new OAuthConsumer($this->getApplicationKey(), $this->getApplicationSecret(), $this->getCallbackUrl());
$oauth_token = $this->getToken();
$oauth_token = !is_null($oauth_token) ? new OAuthToken($oauth_token['oauth_token'], $oauth_token['oauth_token_secret']) : NULL;
$defaults = array('oauth_version' => self::_API_OAUTH_VERSION);
$parameters = array_merge($defaults, $parameters);
// generate OAuth request
$oauth_req = OAuthRequest::from_consumer_and_token($oauth_consumer, $oauth_token, $method, $url, $parameters);
$oauth_req->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $oauth_consumer, $oauth_token);
// start cURL, checking for a successful initiation
if (!($handle = curl_init())) {
// cURL failed to start
throw new LinkedInException('LinkedIn->fetch(): cURL did not initialize properly.');
}
// set cURL options, based on parameters passed
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_VERBOSE, FALSE);
if (isset(Hybrid_Auth::$config["proxy"])) {
curl_setopt($handle, CURLOPT_PROXY, Hybrid_Auth::$config["proxy"]);
}
// configure the header we are sending to LinkedIn - http://developer.linkedin.com/docs/DOC-1203
$header = array($oauth_req->to_header(self::_API_OAUTH_REALM));
if (is_null($data)) {
// not sending data, identify the content type
$header[] = 'Content-Type: text/plain; charset=UTF-8';
switch ($this->getResponseFormat()) {
case self::_RESPONSE_JSON:
$header[] = 'x-li-format: json';
break;
case self::_RESPONSE_JSONP:
$header[] = 'x-li-format: jsonp';
break;
}
} else {
$header[] = 'Content-Type: text/xml; charset=UTF-8';
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($handle, CURLOPT_HTTPHEADER, $header);
// set the last url, headers
$this->last_request_url = $url;
$this->last_request_headers = $header;
// gather the response
$return_data['linkedin'] = curl_exec($handle);
$return_data['info'] = curl_getinfo($handle);
$return_data['oauth']['header'] = $oauth_req->to_header(self::_API_OAUTH_REALM);
$return_data['oauth']['string'] = $oauth_req->base_string;
//-
$http_code = curl_getinfo($handle, CURLINFO_HTTP_CODE);
Hybrid_Error::deleteApiError();
if ($http_code != 200) {
Hybrid_Error::setApiError($http_code . '. ' . preg_replace('/\\s+/', ' ', $return_data['linkedin']));
}
if (defined('WORDPRESS_SOCIAL_LOGIN_DEBUG_API_CALLS')) {
do_action('wsl_log_provider_api_call', 'OAuth1.LinkedIn', $url, $method, $data, $http_code, $this->http_info, $return_data['linkedin']);
}
//-
// check for throttling
if (self::isThrottled($return_data['linkedin'])) {
throw new LinkedInException('LinkedIn->fetch(): throttling limit for this user/application has been reached for LinkedIn resource - ' . $url);
}
//TODO - add check for NO response (http_code = 0) from cURL
// close cURL connection
curl_close($handle);
// no exceptions thrown, return the data
return $return_data;
} catch (OAuthException $e) {
// oauth exception raised
throw new LinkedInException('OAuth exception caught: ' . $e->getMessage());
//.........这里部分代码省略.........
示例4: processAuthDone
/**
* define:endpoint step 3.1 and 3.2
*/
public static function processAuthDone()
{
Hybrid_Endpoint::authInit();
// Fix a strange behavior when some provider call back ha endpoint
// with /index.php?hauth.done={provider}?{args}...
if (strrpos($_SERVER["QUERY_STRING"], '?')) {
$_SERVER["QUERY_STRING"] = str_replace("?", "&", $_SERVER["QUERY_STRING"]);
parse_str($_SERVER["QUERY_STRING"], Hybrid_Endpoint::$request);
}
$provider_id = trim(strip_tags(Hybrid_Endpoint::$request["hauth_done"]));
$hauth = Hybrid_Auth::setup($provider_id);
if (!$hauth) {
Hybrid_Logger::error("Endpoint: Invalide parameter on hauth_done!");
$hauth->adapter->setUserUnconnected();
header("HTTP/1.0 404 Not Found");
die("Invalide parameter! Please return to the login page and try again.");
}
try {
Hybrid_Logger::info("Endpoint: call adapter [{$provider_id}] loginFinish() ");
$hauth->adapter->loginFinish();
} catch (Exception $e) {
Hybrid_Logger::error("Exception:" . $e->getMessage(), $e);
Hybrid_Error::setError($e->getMessage(), $e->getCode(), $e->getTraceAsString(), $e);
$hauth->adapter->setUserUnconnected();
}
Hybrid_Logger::info("Endpoint: job done. retrun to callback url.");
$hauth->returnToCallbackUrl();
die;
}
示例5: makeRequest
/**
* Makes an HTTP request. This method can be overridden by subclasses if
* developers want to do fancier things or use something other than curl to
* make the request.
*
* @param string $url The URL to make the request to
* @param array $params The parameters to use for the POST body
* @param CurlHandler $ch Initialized curl handle
*
* @return string The response text
*/
protected function makeRequest($url, $params, $ch = null)
{
if (!$ch) {
$ch = curl_init();
}
$opts = self::$CURL_OPTS;
if ($this->getFileUploadSupport()) {
$opts[CURLOPT_POSTFIELDS] = $params;
} else {
$opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&');
}
$opts[CURLOPT_URL] = $url;
// disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
// for 2 seconds if the server does not support this header.
if (isset($opts[CURLOPT_HTTPHEADER])) {
$existing_headers = $opts[CURLOPT_HTTPHEADER];
$existing_headers[] = 'Expect:';
$opts[CURLOPT_HTTPHEADER] = $existing_headers;
} else {
$opts[CURLOPT_HTTPHEADER] = array('Expect:');
}
curl_setopt_array($ch, $opts);
$result = curl_exec($ch);
$errno = curl_errno($ch);
// CURLE_SSL_CACERT || CURLE_SSL_CACERT_BADFILE
if ($errno == 60 || $errno == 77) {
self::errorLog('Invalid or no certificate authority found, ' . 'using bundled information');
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fb_ca_chain_bundle.crt');
$result = curl_exec($ch);
}
// With dual stacked DNS responses, it's possible for a server to
// have IPv6 enabled but not have IPv6 connectivity. If this is
// the case, curl will try IPv4 first and if that fails, then it will
// fall back to IPv6 and the error EHOSTUNREACH is returned by the
// operating system.
if ($result === false && empty($opts[CURLOPT_IPRESOLVE])) {
$matches = array();
$regex = '/Failed to connect to ([^:].*): Network is unreachable/';
if (preg_match($regex, curl_error($ch), $matches)) {
if (strlen(@inet_pton($matches[1])) === 16) {
self::errorLog('Invalid IPv6 configuration on server, ' . 'Please disable or get native IPv6 on your server.');
self::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$result = curl_exec($ch);
}
}
}
//-
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
Hybrid_Error::deleteApiError();
if ($http_code != 200) {
Hybrid_Error::setApiError($http_code . '. ' . preg_replace('/\\s+/', ' ', $result));
}
if (defined('WORDPRESS_SOCIAL_LOGIN_DEBUG_API_CALLS')) {
do_action('wsl_log_provider_api_call', 'OAuth2.Facebook', $opts[CURLOPT_URL], null, $opts[CURLOPT_POSTFIELDS], $http_code, curl_getinfo($ch), $result);
}
//-
if ($result === false) {
$e = new FacebookApiException(array('error_code' => curl_errno($ch), 'error' => array('message' => curl_error($ch), 'type' => 'CurlException')));
curl_close($ch);
throw $e;
}
curl_close($ch);
return $result;
}
示例6: wsl_component_authtest
//.........这里部分代码省略.........
<?php
}
?>
</table>
</div>
</div>
<?php
$console = false;
if (!isset($adapter->openidIdentifier)) {
?>
<div class="stuffbox">
<h3>
<label><?php
_wsl_e("Connected adapter console", 'wordpress-social-login');
?>
</label>
</h3>
<div class="inside">
<?php
$path = isset($adapter->api->api_base_url) ? $adapter->api->api_base_url : '';
$path = isset($_REQUEST['console-path']) ? $_REQUEST['console-path'] : $path;
$method = isset($_REQUEST['console-method']) ? $_REQUEST['console-method'] : '';
$query = isset($_REQUEST['console-query']) ? $_REQUEST['console-query'] : '';
$response = '';
if ($path && in_array($method, array('GET', 'POST'))) {
$console = true;
try {
if ($method == 'GET') {
$response = $adapter->api->get($path . ($query ? '?' . $query : ''));
} else {
$response = $adapter->api->get($path, $query);
}
$response = $response ? $response : Hybrid_Error::getApiError();
} catch (Exception $e) {
$response = "ERROR: " . $e->getMessage();
}
}
?>
<form action="" method="post"/>
<table class="wp-list-table widefat">
<tr>
<th width="200"><label><?php
_wsl_e("Path", 'wordpress-social-login');
?>
</label></th>
<td><input type="text" style="width:96%" name="console-path" value="<?php
echo htmlentities($path);
?>
"><a href="https://apigee.com/providers" target="_blank"><img src="<?php
echo $assets_base_url . 'question.png';
?>
" style="vertical-align: text-top;" /></a></td>
</tr>
<tr>
<th width="200"><label><?php
_wsl_e("Method", 'wordpress-social-login');
?>
</label></th>
<td><select style="width:100px" name="console-method"><option value="GET" <?php
if ($method == 'GET') {
echo 'selected';
}
?>
>GET</option><!-- <option value="POST" <?php
if ($method == 'POST') {
示例7: initialize
/**
* Try to initialize Hybrid_Auth with given $config hash or file
*/
public static function initialize($config)
{
if (!session_id()) {
throw new Exception("Hybriauth require the use of 'session_start()' at the start of your script.", 1);
}
if (!is_array($config) && !file_exists($config)) {
throw new Exception("Hybriauth config does not exist on the given path.", 1);
}
if (!is_array($config)) {
$config = (include $config);
}
// build some need'd paths
$config["path_base"] = realpath(dirname(__FILE__)) . "/";
$config["path_libraries"] = $config["path_base"] . "thirdparty/";
$config["path_resources"] = $config["path_base"] . "resources/";
$config["path_providers"] = $config["path_base"] . "Providers/";
// reset debug mode
if (!isset($config["debug_mode"])) {
$config["debug_mode"] = false;
$config["debug_file"] = null;
}
# load hybridauth required files, a autoload is on the way...
require_once $config["path_base"] . "Error.php";
require_once $config["path_base"] . "Logger.php";
require_once $config["path_base"] . "Storage.php";
require_once $config["path_base"] . "Provider_Adapter.php";
require_once $config["path_base"] . "Provider_Model.php";
require_once $config["path_base"] . "Provider_Model_OpenID.php";
require_once $config["path_base"] . "Provider_Model_OAuth1.php";
require_once $config["path_base"] . "Provider_Model_OAuth2.php";
require_once $config["path_base"] . "User.php";
require_once $config["path_base"] . "User_Profile.php";
require_once $config["path_base"] . "User_Contact.php";
require_once $config["path_base"] . "User_Activity.php";
// hash given config
Hybrid_Auth::$config = $config;
// start session storage mng
Hybrid_Auth::$store = new Hybrid_Storage();
// instace of errors mng
Hybrid_Auth::$error = new Hybrid_Error();
// instace of log mng
Hybrid_Auth::$logger = new Hybrid_Logger();
// store php session and version..
$_SESSION["HA::PHP_SESSION_ID"] = session_id();
$_SESSION["HA::VERSION"] = Hybrid_Auth::$version;
// almost done, check for errors then move on
Hybrid_Logger::info("Enter Hybrid_Auth::initialize()");
Hybrid_Logger::info("Hybrid_Auth::initialize(). Hybrid_Auth used version: " . Hybrid_Auth::$version);
Hybrid_Logger::info("Hybrid_Auth::initialize(). Hybrid_Auth called from: " . Hybrid_Auth::getCurrentUrl());
Hybrid_Logger::debug("Hybrid_Auth initialize. dump used config: ", serialize($config));
Hybrid_Logger::debug("Hybrid_Auth initialize. dump current session: ", serialize($_SESSION));
Hybrid_Logger::info("Hybrid_Auth initialize: check if any error is stored on the endpoint...");
if (Hybrid_Error::hasError()) {
$m = Hybrid_Error::getErrorMessage();
$c = Hybrid_Error::getErrorCode();
$p = Hybrid_Error::getErrorPrevious();
Hybrid_Logger::error("Hybrid_Auth initialize: A stored Error found, Throw an new Exception and delete it from the store: Error#{$c}, '{$m}'");
Hybrid_Error::clearError();
if (!$p instanceof Exception) {
$p = null;
}
//TODO: Is this check realy needed?
throw new Exception($m, $c, $p);
}
Hybrid_Logger::info("Hybrid_Auth initialize: no error found. initialization succeed.");
// Endof initialize
}
示例8: processAuthDone
/**
* define:endpoint step 3.1 and 3.2
*/
public static function processAuthDone()
{
Hybrid_Endpoint::authInit();
$provider_id = trim(strip_tags(Hybrid_Endpoint::$request["hauth_done"]));
$hauth = Hybrid_Auth::setup($provider_id);
if (!$hauth) {
Hybrid_Logger::error("Endpoint: Invalide parameter on hauth_done!");
$hauth->adapter->setUserUnconnected();
header("HTTP/1.0 404 Not Found");
die("Invalide parameter! Please return to the login page and try again.");
}
try {
Hybrid_Logger::info("Endpoint: call adapter [{$provider_id}] loginFinish() ");
$hauth->adapter->loginFinish();
} catch (Exception $e) {
Hybrid_Logger::error("Exception:" . $e->getMessage(), $e);
Hybrid_Error::setError($e->getMessage(), $e->getCode(), $e->getTraceAsString(), $e);
$hauth->adapter->setUserUnconnected();
}
Hybrid_Logger::info("Endpoint: job done. retrun to callback url.");
$hauth->returnToCallbackUrl();
die;
}
示例9: processAuthDone
/**
* define:endpoint step 3.1 and 3.2
*/
public static function processAuthDone()
{
Hybrid_Endpoint::authInit();
$provider_id = trim(strip_tags(Hybrid_Endpoint::$request["hauth_done"]));
# check if page accessed directly
if (!Hybrid_Auth::storage()->get("hauth_session.{$provider_id}.hauth_endpoint")) {
throw new Hybrid_Exception("You cannot access this page directly.");
}
$hauth = Hybrid_Auth::setup($provider_id);
if (!$hauth) {
$hauth->adapter->setUserUnconnected();
throw new Hybrid_Exception("Invalid parameter! Please return to the login page and try again.");
}
try {
$hauth->adapter->loginFinish();
} catch (Exception $e) {
Hybrid_Error::setError($e->getMessage(), $e->getCode());
$hauth->adapter->setUserUnconnected();
}
$hauth->returnToCallbackUrl();
die;
}
示例10: getLatestApiError
/**
* Return the latest api error
*/
public static function getLatestApiError()
{
return Hybrid_Error::getErrorMessage();
}
示例11: request
function request($url, $params = false, $type = "GET")
{
if ($type == "GET") {
$url = $url . (strpos($url, '?') ? '&' : '?') . http_build_query($params, '', '&');
}
$this->http_info = array();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_time_out);
curl_setopt($ch, CURLOPT_USERAGENT, $this->curl_useragent);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->curl_connect_time_out);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $this->curl_ssl_verifypeer);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $this->curl_ssl_verifyhost);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->curl_header);
if ($this->curl_proxy) {
curl_setopt($ch, CURLOPT_PROXY, $this->curl_proxy);
}
if ($type == "POST") {
curl_setopt($ch, CURLOPT_POST, 1);
if ($params) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
}
}
$response = curl_exec($ch);
$this->http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$this->http_info = array_merge($this->http_info, curl_getinfo($ch));
curl_close($ch);
//-
Hybrid_Error::deleteApiError();
if ($this->http_code != 200) {
Hybrid_Error::setApiError($this->http_code . '. ' . preg_replace('/\\s+/', ' ', $response));
}
if (defined('WORDPRESS_SOCIAL_LOGIN_DEBUG_API_CALLS')) {
do_action('wsl_log_provider_api_call', 'OAuth2', $url, $type, $params, $this->http_code, $this->http_info, $response);
}
//-
return $response;
}
示例12: request_curl
protected function request_curl($url, $method = 'GET', $params = array(), $update_claimed_id)
{
$params = http_build_query($params, '', '&');
$curl = curl_init($url . ($method == 'GET' && $params ? '?' . $params : ''));
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/xrds+xml, */*'));
if (!empty($this->proxy)) {
curl_setopt($curl, CURLOPT_PROXY, $this->proxy['host']);
if (!empty($this->proxy['port'])) {
curl_setopt($curl, CURLOPT_PROXYPORT, $this->proxy['port']);
}
if (!empty($this->proxy['user'])) {
curl_setopt($curl, CURLOPT_PROXYUSERPWD, $this->proxy['user'] . ':' . $this->proxy['pass']);
}
}
if ($this->verify_peer !== null) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, $this->verify_peer);
if ($this->capath) {
curl_setopt($curl, CURLOPT_CAPATH, $this->capath);
}
if ($this->cainfo) {
curl_setopt($curl, CURLOPT_CAINFO, $this->cainfo);
}
}
if ($method == 'POST') {
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
} elseif ($method == 'HEAD') {
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_NOBODY, true);
} else {
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_HTTPGET, true);
}
$response = curl_exec($curl);
if ($method == 'HEAD' && curl_getinfo($curl, CURLINFO_HTTP_CODE) == 405) {
curl_setopt($curl, CURLOPT_HTTPGET, true);
$response = curl_exec($curl);
$response = substr($response, 0, strpos($response, "\r\n\r\n"));
}
//-
$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
Hybrid_Error::deleteApiError();
if ($http_code != 200) {
Hybrid_Error::setApiError($http_code . '. ' . preg_replace('/\\s+/', ' ', $response));
}
if (defined('WORDPRESS_SOCIAL_LOGIN_DEBUG_API_CALLS')) {
do_action('wsl_log_provider_api_call', 'OpenID', $url . ($method == 'GET' && $params ? '?' . $params : ''), $method, $params, curl_getinfo($curl), curl_getinfo($curl), $response);
}
//-
if ($method == 'HEAD' || $method == 'GET') {
$header_response = $response;
# If it's a GET request, we want to only parse the header part.
if ($method == 'GET') {
$header_response = substr($response, 0, strpos($response, "\r\n\r\n"));
}
$headers = array();
foreach (explode("\n", $header_response) as $header) {
$pos = strpos($header, ':');
if ($pos !== false) {
$name = strtolower(trim(substr($header, 0, $pos)));
$headers[$name] = trim(substr($header, $pos + 1));
}
}
if ($update_claimed_id) {
# Updating claimed_id in case of redirections.
$effective_url = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
if ($effective_url != $url) {
$this->identity = $this->claimed_id = $effective_url;
}
}
if ($method == 'HEAD') {
return $headers;
} else {
$this->headers = $headers;
}
}
if (curl_errno($curl)) {
throw new ErrorException(curl_error($curl), curl_errno($curl));
}
return $response;
}
示例13: processAuthDone
/**
* define:endpoint step 3.1 and 3.2
*/
protected function processAuthDone()
{
$provider_id = trim($this->getProperty('hauth_done'));
$hauth = Hybrid_Auth::setup($provider_id);
if (!$hauth) {
Hybrid_Logger::error("Endpoint: Invalid parameter on hauth_done!");
$hauth->adapter->setUserUnconnected();
header("HTTP/1.0 404 Not Found");
return "Invalid parameter! Please return to the login page and try again.";
}
try {
Hybrid_Logger::info("Endpoint: call adapter [{$provider_id}] loginFinish() ");
$hauth->adapter->loginFinish();
} catch (Exception $e) {
Hybrid_Logger::error("Exception:" . $e->getMessage(), $e);
Hybrid_Error::setError($e->getMessage(), $e->getCode(), $e->getTraceAsString(), $e);
$hauth->adapter->setUserUnconnected();
}
Hybrid_Logger::info("Endpoint: job done. retrun to callback url.");
// Save profile data in session
$profile = $hauth->adapter->getUserProfile();
// else
$_SESSION['social_profile'] = array('provider' => $provider_id, 'profile' => $this->modx->error->toArray($profile));
//$q->prepare();
//$this->modx->log(1, $q->toSQL());
// else
$hauth->returnToCallbackUrl();
return '';
}
示例14: wsl_process_login_render_error_page
/**
* Display an error message in case user authentication fails
*/
function wsl_process_login_render_error_page($e, $config = null, $provider = null, $adapter = null)
{
// HOOKABLE:
do_action("wsl_process_login_render_error_page", $e, $config, $provider, $adapter);
$assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . 'assets/img/';
$message = _wsl__("Unspecified error!", 'wordpress-social-login');
$notes = "";
$apierror = substr($e->getMessage(), 0, 145);
switch ($e->getCode()) {
case 0:
$message = _wsl__("Unspecified error.", 'wordpress-social-login');
break;
case 1:
$message = _wsl__("WordPress Social Login is not properly configured.", 'wordpress-social-login');
break;
case 2:
$message = sprintf(__wsl__("WordPress Social Login is not properly configured.<br /> <b>%s</b> need to be properly configured.", 'wordpress-social-login'), $provider);
break;
case 3:
$message = _wsl__("Unknown or disabled provider.", 'wordpress-social-login');
break;
case 4:
$message = sprintf(_wsl__("WordPress Social Login is not properly configured.<br /> <b>%s</b> requires your application credentials.", 'wordpress-social-login'), $provider);
$notes = sprintf(_wsl__("<b>What does this error mean ?</b><br />Most likely, you didn't setup the correct application credentials for this provider. These credentials are required in order for <b>%s</b> users to access your website and for WordPress Social Login to work.", 'wordpress-social-login'), $provider) . _wsl__('<br />Instructions for use can be found in the <a href="http://miled.github.io/wordpress-social-login/networks.html" target="_blank">User Manual</a>.', 'wordpress-social-login');
break;
case 5:
$message = sprintf(_wsl__("Authentication failed. Either you have cancelled the authentication or <b>%s</b> refused the connection.", 'wordpress-social-login'), $provider);
break;
case 6:
$message = sprintf(_wsl__("Request failed. Either you have cancelled the authentication or <b>%s</b> refused the connection.", 'wordpress-social-login'), $provider);
break;
case 7:
$message = _wsl__("You're not connected to the provider.", 'wordpress-social-login');
break;
case 8:
$message = _wsl__("Provider does not support this feature.", 'wordpress-social-login');
break;
}
if (is_object($adapter)) {
$adapter->logout();
}
// provider api response
if (class_exists('Hybrid_Error', false) && Hybrid_Error::getApiError()) {
$tmp = Hybrid_Error::getApiError();
$apierror = $apierror . "\n" . '<br />' . $tmp;
// network issue
if (trim($tmp) == '0.') {
$apierror = "Could not establish connection to provider API";
}
}
return wsl_render_error_page($message, $notes, $provider, $apierror, $e);
}
示例15: processAuthDone
/**
* define:endpoint step 3.1 and 3.2
*/
protected function processAuthDone()
{
$provider_id = trim($this->getProperty('hauth_done'));
$hauth = Hybrid_Auth::setup($provider_id);
if (!$hauth) {
Hybrid_Logger::error("Endpoint: Invalid parameter on hauth_done!");
$hauth->adapter->setUserUnconnected();
header("HTTP/1.0 404 Not Found");
return "Invalid parameter! Please return to the login page and try again.";
}
try {
Hybrid_Logger::info("Endpoint: call adapter [{$provider_id}] loginFinish() ");
$hauth->adapter->loginFinish();
} catch (Exception $e) {
Hybrid_Logger::error("Exception:" . $e->getMessage(), $e);
Hybrid_Error::setError($e->getMessage(), $e->getCode(), $e->getTraceAsString(), $e);
$hauth->adapter->setUserUnconnected();
}
Hybrid_Logger::info("Endpoint: job done. retrun to callback url.");
// Save profile data in session
$profile = $hauth->adapter->getUserProfile();
// Try to get user by social profile
/*$q = $this->modx->newQuery('modUser');
$q->innerJoin('modUserProfile', 'Profile');
$q->innerJoin('modHybridAuthUserProfile', 'SocialProfile');
$q->innerJoin('modHybridAuthProvider', 'Provider', "Provider.id=SocialProfile.provider");
$q->where(array(
"SocialProfile.identifier" => $profile->identifier,
"Provider.name" => $provider,
"modUser.active" => 1,
"Profile.blocked" => 0,
));
$q->limit(1);
if($user = $this->modx->getObject('modUser', $q)){
$user->addSessionContext($this->modx->context->key);
$redirectTo = $this->modx->getOption('site_url');
$this->modx->sendRedirect($redirectTo);
return;
}*/
// else
$_SESSION['social_profile'] = array('provider' => $provider_id, 'profile' => $this->modx->error->toArray($profile));
//$q->prepare();
//$this->modx->log(1, $q->toSQL());
// else
$hauth->returnToCallbackUrl();
return '';
}