Current File : /home/inteuuod/public_html/wp-content/plugins/cloudflare/src/WordPress//DataStore.php
<?php
namespace CF\WordPress;
use CF\Integration\DefaultLogger;
use CF\Integration\DataStoreInterface;
use CF\API\Plugin;
use Symfony\Polyfill\Tests\Intl\Idn;
class DataStore implements DataStoreInterface
{
const API_KEY = 'cloudflare_api_key';
const EMAIL = 'cloudflare_api_email';
const CACHED_DOMAIN_NAME = 'cloudflare_cached_domain_name';
protected $wordPressWrapper;
public $logger;
/**
* @param DefaultLogger $logger
*/
public function __construct(DefaultLogger $logger)
{
$this->logger = $logger;
$this->wordPressWrapper = new WordPressWrapper();
}
public function setWordPressWrapper(WordPressWrapper $wordPressWrapper)
{
$this->wordPressWrapper = $wordPressWrapper;
}
/**
* @param $client_api_key
* @param $email
* @param $unique_id
* @param $user_key
*
* @return bool
*/
public function createUserDataStore($client_api_key, $email, $unique_id, $user_key)
{
if (defined('CLOUDFLARE_API_KEY') && defined('CLOUDFLARE_EMAIL')) {
return true;
}
// Clear options
$this->set(self::API_KEY, '');
$this->set(self::EMAIL, '');
// Fill options
$isUpdated1 = $this->set(self::API_KEY, $client_api_key);
$isUpdated2 = $this->set(self::EMAIL, $email);
return $isUpdated1 && $isUpdated2;
}
/**
* @return unique id for the current user for use in the host api
*/
public function getHostAPIUserUniqueId()
{
return;
}
/**
* @return client v4 api key for current user
*/
public function getClientV4APIKey()
{
if (defined('CLOUDFLARE_API_KEY') && CLOUDFLARE_API_KEY !== '') {
return CLOUDFLARE_API_KEY;
}
return $this->get(self::API_KEY);
}
/**
* @return mixed
*/
public function getHostAPIUserKey()
{
return;
}
/**
* @return mixed
*/
public function getDomainNameCache()
{
if (defined('CLOUDFLARE_DOMAIN_NAME') && CLOUDFLARE_DOMAIN_NAME !== '') {
return idn_to_utf8(CLOUDFLARE_DOMAIN_NAME, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46);
}
$cachedDomainName = $this->get(self::CACHED_DOMAIN_NAME);
if (empty($cachedDomainName)) {
return;
}
return $cachedDomainName;
}
/**
* @return mixed
*/
public function setDomainNameCache($domainName)
{
if (defined('CLOUDFLARE_DOMAIN_NAME') && CLOUDFLARE_DOMAIN_NAME !== '') {
return;
}
return $this->set(self::CACHED_DOMAIN_NAME, $domainName);
}
/**
* @return cloudflare email
*/
public function getCloudFlareEmail()
{
if (defined('CLOUDFLARE_EMAIL') && CLOUDFLARE_EMAIL !== '') {
return CLOUDFLARE_EMAIL;
}
return $this->get(self::EMAIL);
}
/**
* @param $settingId Plugin::[PluginSettingName]
*
* @return mixed
*/
public function getPluginSetting($settingId)
{
$settingName = $this->getPluginSettingName($settingId);
if (!$settingName) {
return false;
}
return $this->get($settingName);
}
private function getPluginSettingName($settingId)
{
return in_array($settingId, Plugin::getPluginSettingsKeys()) ? $settingId : false;
}
/**
* @param $key
*
* @return mixed
*/
public function get($key)
{
$result = $this->wordPressWrapper->getOption($key, null);
return $result;
}
/**
* @param $key
* @param $value
*
* @return mixed
*/
public function set($key, $value)
{
return $this->wordPressWrapper->updateOption($key, $value);
}
/**
* @param $key
*/
public function clear($key)
{
$this->wordPressWrapper->deleteOption($key);
}
public function clearDataStore()
{
$pluginKeys = \CF\API\Plugin::getPluginSettingsKeys();
// Delete Plugin Setting Options
foreach ($pluginKeys as $optionName) {
$this->clear($optionName);
}
// Delete DataStore Options
$this->clear(self::API_KEY);
$this->clear(self::EMAIL);
$this->clear(self::CACHED_DOMAIN_NAME);
}
}