mirror of
https://github.com/Karaka-Management/Resources.git
synced 2026-01-11 13:28:40 +00:00
160 lines
3.7 KiB
PHP
160 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace PayPal\Core;
|
|
|
|
/**
|
|
* Class PayPalConfigManager
|
|
*
|
|
* PayPalConfigManager loads the SDK configuration file and
|
|
* hands out appropriate config params to other classes
|
|
*
|
|
* @package PayPal\Core
|
|
*/
|
|
class PayPalConfigManager
|
|
{
|
|
|
|
/**
|
|
* Configuration Options
|
|
*
|
|
* @var array
|
|
*/
|
|
private $configs = array(
|
|
);
|
|
|
|
/**
|
|
* Singleton Object
|
|
*
|
|
* @var $this
|
|
*/
|
|
private static $instance;
|
|
|
|
/**
|
|
* Private Constructor
|
|
*/
|
|
private function __construct()
|
|
{
|
|
if (defined('PP_CONFIG_PATH')) {
|
|
$configFile = constant('PP_CONFIG_PATH') . '/sdk_config.ini';
|
|
} else {
|
|
$configFile = implode(DIRECTORY_SEPARATOR,
|
|
array(dirname(__FILE__), "..", "config", "sdk_config.ini"));
|
|
}
|
|
if (file_exists($configFile)) {
|
|
$this->addConfigFromIni($configFile);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns the singleton object
|
|
*
|
|
* @return $this
|
|
*/
|
|
public static function getInstance()
|
|
{
|
|
if (!isset(self::$instance)) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Add Configuration from configuration.ini files
|
|
*
|
|
* @param string $fileName
|
|
* @return $this
|
|
*/
|
|
public function addConfigFromIni($fileName)
|
|
{
|
|
if ($configs = parse_ini_file($fileName)) {
|
|
$this->addConfigs($configs);
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* If a configuration exists in both arrays,
|
|
* then the element from the first array will be used and
|
|
* the matching key's element from the second array will be ignored.
|
|
*
|
|
* @param array $configs
|
|
* @return $this
|
|
*/
|
|
public function addConfigs($configs = array())
|
|
{
|
|
$this->configs = $configs + $this->configs;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Simple getter for configuration params
|
|
* If an exact match for key is not found,
|
|
* does a "contains" search on the key
|
|
*
|
|
* @param string $searchKey
|
|
* @return array
|
|
*/
|
|
public function get($searchKey)
|
|
{
|
|
if (array_key_exists($searchKey, $this->configs)) {
|
|
return $this->configs[$searchKey];
|
|
} else {
|
|
$arr = array();
|
|
if ($searchKey !== '') {
|
|
foreach ($this->configs as $k => $v) {
|
|
if (strstr($k, $searchKey)) {
|
|
$arr[$k] = $v;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $arr;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Utility method for handling account configuration
|
|
* return config key corresponding to the API userId passed in
|
|
*
|
|
* If $userId is null, returns config keys corresponding to
|
|
* all configured accounts
|
|
*
|
|
* @param string|null $userId
|
|
* @return array|string
|
|
*/
|
|
public function getIniPrefix($userId = null)
|
|
{
|
|
if ($userId == null) {
|
|
$arr = array();
|
|
foreach ($this->configs as $key => $value) {
|
|
$pos = strpos($key, '.');
|
|
if (strstr($key, "acct")) {
|
|
$arr[] = substr($key, 0, $pos);
|
|
}
|
|
}
|
|
return array_unique($arr);
|
|
} else {
|
|
$iniPrefix = array_search($userId, $this->configs);
|
|
$pos = strpos($iniPrefix, '.');
|
|
$acct = substr($iniPrefix, 0, $pos);
|
|
|
|
return $acct;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* returns the config file hashmap
|
|
*/
|
|
public function getConfigHashmap()
|
|
{
|
|
return $this->configs;
|
|
}
|
|
|
|
/**
|
|
* Disabling __clone call
|
|
*/
|
|
public function __clone()
|
|
{
|
|
trigger_error('Clone is not allowed.', E_USER_ERROR);
|
|
}
|
|
}
|