Server : LiteSpeed System : Linux server 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : alsaif ( 1057) PHP Version : 7.4.33 Disable Function : show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/alsaif/domains/alsaif.group/public_html/plugins/convertforms/aweber/wrapper/ |
<?php
/**
* @package Convert Forms
* @version 4.3.3 Pro
*
* @author Tassos Marinos <info@tassos.gr>
* @link https://www.tassos.gr
* @copyright Copyright © 2023 Tassos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
// No direct access
defined('_JEXEC') or die('Restricted access');
require_once __DIR__ . '/exceptions.php';
require_once __DIR__ . '/oauth_adapter.php';
require_once __DIR__ . '/oauth_application.php';
require_once __DIR__ . '/aweber_response.php';
require_once __DIR__ . '/aweber_collection.php';
require_once __DIR__ . '/aweber_entry_data_array.php';
require_once __DIR__ . '/aweber_entry.php';
/**
* AWeberServiceProvider
*
* Provides specific AWeber information or implementing OAuth.
* @uses OAuthServiceProvider
* @package
* @version $id$
*/
class AWeberServiceProvider implements OAuthServiceProvider
{
/**
* @var String Location for API calls
*/
public $baseUri = 'https://api.aweber.com/1.0';
/**
* @var String Location to request an access token
*/
public $accessTokenUrl = 'https://auth.aweber.com/1.0/oauth/access_token';
/**
* @var String Location to authorize an Application
*/
public $authorizeUrl = 'https://auth.aweber.com/1.0/oauth/authorize';
/**
* @var String Location to request a request token
*/
public $requestTokenUrl = 'https://auth.aweber.com/1.0/oauth/request_token';
public function getBaseUri()
{
return $this->baseUri;
}
public function removeBaseUri($url)
{
return str_replace($this->getBaseUri(), '', $url);
}
public function getAccessTokenUrl()
{
return $this->accessTokenUrl;
}
public function getAuthorizeUrl()
{
return $this->authorizeUrl;
}
public function getRequestTokenUrl()
{
return $this->requestTokenUrl;
}
public function getAuthTokenFromUrl()
{
return '';
}
public function getUserData()
{
return '';
}
}
/**
* AWeberAPIBase
*
* Base object that all AWeberAPI objects inherit from. Allows specific pieces
* of functionality to be shared across any object in the API, such as the
* ability to introspect the collections map.
*
* @package
* @version $id$
*/
class AWeberAPIBase
{
/**
* Maintains data about what children collections a given object type
* contains.
*/
static protected $_collectionMap = array(
'account' => array('lists', 'integrations'),
'broadcast_campaign' => array('links', 'messages', 'stats'),
'followup_campaign' => array('links', 'messages', 'stats'),
'link' => array('clicks'),
'list' => array('campaigns', 'custom_fields', 'subscribers',
'web_forms', 'web_form_split_tests'),
'web_form' => array(),
'web_form_split_test' => array('components'),
);
/**
* loadFromUrl
*
* Creates an object, either collection or entry, based on the given
* URL.
*
* @param mixed $url URL for this request
* @access public
* @return AWeberEntry or AWeberCollection
*/
public function loadFromUrl($url)
{
$data = $this->adapter->request('GET', $url);
return $this->readResponse($data, $url);
}
protected function _cleanUrl($url)
{
return str_replace($this->adapter->app->getBaseUri(), '', $url);
}
/**
* readResponse
*
* Interprets a response, and creates the appropriate object from it.
* @param mixed $response Data returned from a request to the AWeberAPI
* @param mixed $url URL that this data was requested from
* @access protected
* @return mixed
*/
protected function readResponse($response, $url)
{
$this->adapter->parseAsError($response);
if (!empty($response['id']) || !empty($response['broadcast_id']))
{
return new AWeberEntry($response, $url, $this->adapter);
}
else if (array_key_exists('entries', $response))
{
return new AWeberCollection($response, $url, $this->adapter);
}
return false;
}
}
/**
* AWeberAPI
*
* Creates a connection to the AWeberAPI for a given consumer application.
* This is generally the starting point for this library. Instances can be
* created directly with consumerKey and consumerSecret.
* @uses AWeberAPIBase
* @package
* @version $id$
*/
class AWeberAPI extends AWeberAPIBase
{
/**
* @var String Consumer Key
*/
public $consumerKey = false;
/**
* @var String Consumer Secret
*/
public $consumerSecret = false;
/**
* @var Object - Populated in setAdapter()
*/
public $adapter = false;
/**
* Uses the app's authorization code to fetch an access token
*
* @param String Authorization code from authorize app page
*/
public static function getDataFromAweberID($string)
{
list($consumerKey, $consumerSecret, $requestToken, $tokenSecret, $verifier) = AWeberAPI::_parseAweberID($string);
if (!$verifier)
{
return null;
}
$aweber = new AWeberAPI($consumerKey, $consumerSecret);
$aweber->adapter->user->requestToken = $requestToken;
$aweber->adapter->user->tokenSecret = $tokenSecret;
$aweber->adapter->user->verifier = $verifier;
list($accessToken, $accessSecret) = $aweber->getAccessToken();
return array($consumerKey, $consumerSecret, $accessToken, $accessSecret);
}
protected static function _parseAWeberID($string)
{
$values = explode('|', $string);
if (count($values) < 5)
{
return null;
}
return array_slice($values, 0, 5);
}
/**
* Sets the consumer key and secret for the API object. The
* key and secret are listed in the My Apps page in the labs.aweber.com
* Control Panel OR, in the case of distributed apps, will be returned
* from the getDataFromAweberID() function
*
* @param String Consumer Key
* @param String Consumer Secret
* @return null
*/
public function __construct($key, $secret)
{
// Load key / secret
$this->consumerKey = $key;
$this->consumerSecret = $secret;
$this->setAdapter();
}
/**
* Returns the authorize URL by appending the request
* token to the end of the Authorize URI, if it exists
*
* @return string The Authorization URL
*/
public function getAuthorizeUrl()
{
$requestToken = $this->user->requestToken;
return (empty($requestToken)) ?
$this->adapter->app->getAuthorizeUrl()
:
$this->adapter->app->getAuthorizeUrl() . "?oauth_token={$this->user->requestToken}";
}
/**
* Sets the adapter for use with the API
*/
public function setAdapter($adapter = null)
{
if (empty($adapter))
{
$serviceProvider = new AWeberServiceProvider();
$adapter = new OAuthApplication($serviceProvider);
$adapter->consumerKey = $this->consumerKey;
$adapter->consumerSecret = $this->consumerSecret;
}
$this->adapter = $adapter;
}
/**
* Fetches account data for the associated account
*
* @param String Access Token (Only optional/cached if you called getAccessToken() earlier
* on the same page)
* @param String Access Token Secret (Only optional/cached if you called getAccessToken() earlier
* on the same page)
* @return Object AWeberCollection Object with the requested
* account data
*/
public function getAccount($token = false, $secret = false)
{
if ($token && $secret)
{
$user = new OAuthUser();
$user->accessToken = $token;
$user->tokenSecret = $secret;
$this->adapter->user = $user;
}
$body = $this->adapter->request('GET', '/accounts');
$accounts = $this->readResponse($body, '/accounts');
return $accounts[0];
}
/**
* PHP Automagic
*/
public function __get($item)
{
if ($item == 'user')
{
return $this->adapter->user;
}
trigger_error("Could not find \"{$item}\"");
}
/**
* Request a request token from AWeber and associate the
* provided $callbackUrl with the new token
* @param String The URL where users should be redirected
* once they authorize your app
* @return Array Contains the request token as the first item
* and the request token secret as the second item of the array
*/
public function getRequestToken($callbackUrl)
{
$requestToken = $this->adapter->getRequestToken($callbackUrl);
return array($requestToken, $this->user->tokenSecret);
}
/**
* Request an access token using the request tokens stored in the
* current user object. You would want to first set the request tokens
* on the user before calling this function via:
*
* $aweber->user->tokenSecret = $_COOKIE['requestTokenSecret'];
* $aweber->user->requestToken = $_GET['oauth_token'];
* $aweber->user->verifier = $_GET['oauth_verifier'];
*
* @return Array Contains the access token as the first item
* and the access token secret as the second item of the array
*/
public function getAccessToken()
{
return $this->adapter->getAccessToken();
}
}
?>