File "class-mailchimp-woocommerce-options.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/mailchimp-for-woocommerce_bk/includes/class-mailchimp-woocommerce-options.php
File size: 7.52 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Created by MailChimp.
*
* Name: Ryan Hungate
* Email: ryan@vextras.com
* Date: 2/22/16
* Time: 3:45 PM
*/
abstract class MailChimp_WooCommerce_Options
{
/**
* @var MailChimp_WooCommerce_MailChimpApi
*/
protected $api;
protected $plugin_name = 'mailchimp-woocommerce';
protected $environment = 'production';
protected $version = '1.0.0';
protected $plugin_options = null;
protected $is_admin = false;
/**
* hook calls this so that we know the admin is here.
*/
public function adminReady()
{
$this->is_admin = current_user_can(mailchimp_get_allowed_capability());
if (get_option('mailchimp_woocommerce_plugin_do_activation_redirect', false)) {
delete_option('mailchimp_woocommerce_plugin_do_activation_redirect');
// don't do the redirect while activating the plugin through the rest API. ( Bartosz from Woo asked for this )
if ((defined( 'REST_REQUEST' ) && REST_REQUEST)) {
return;
}
// the woocommerce onboarding wizard will have a profile
$onboarding_profile = get_option('woocommerce_onboarding_profile');
// if the onboarding profile has business extensions
if (is_array($onboarding_profile) && array_key_exists('business_extensions', $onboarding_profile)) {
// if the business extensions contains our plugin, we just skip this.
if (is_array($onboarding_profile['business_extensions']) && in_array('mailchimp-for-woocommerce', $onboarding_profile['business_extensions'])) {
return;
}
}
if (!isset($_GET['activate-multi'])) {
wp_redirect("admin.php?page=mailchimp-woocommerce");
}
}
}
/**
* @return bool
*/
public function isAdmin()
{
return $this->is_admin;
}
/**
* @param $version
* @return $this
*/
public function setVersion($version)
{
$this->version = $version;
return $this;
}
/**
* @return string
*/
public function getVersion()
{
return $this->version;
}
/**
* @return mixed|string
*/
public function getUniqueStoreID()
{
return mailchimp_get_store_id();
}
/**
* @param $env
* @return $this
*/
public function setEnvironment($env)
{
$this->environment = $env;
return $this;
}
/**
* @return string
*/
public function getEnvironment()
{
return $this->environment;
}
/**
* @param $key
* @param null $default
* @return null
*/
public function getOption($key, $default = null)
{
$options = $this->getOptions();
if (isset($options[$key])) {
return $options[$key];
}
return $default;
}
/**
* @param $key
* @param bool $default
* @return bool
*/
public function hasOption($key, $default = false)
{
return (bool) $this->getOption($key, $default);
}
/**
* @return array
*/
public function resetOptions()
{
return $this->plugin_options = get_option($this->plugin_name);
}
/**
* @return array
*/
public function getOptions()
{
if (empty($this->plugin_options)) {
$this->plugin_options = get_option($this->plugin_name);
}
return is_array($this->plugin_options) ? $this->plugin_options : array();
}
/**
* @param $key
* @param $value
* @return $this
*/
public function setData($key, $value)
{
update_option($this->plugin_name.'-'.$key, $value, 'yes');
return $this;
}
/**
* @param $key
* @param null $default
* @return mixed|void
*/
public function getData($key, $default = null)
{
return get_option($this->plugin_name.'-'.$key, $default);
}
/**
* @param $key
* @return bool
*/
public function removeData($key)
{
return delete_option($this->plugin_name.'-'.$key);
}
/**
* @param $key
* @param null $default
* @return null|mixed
*/
public function getCached($key, $default = null)
{
$cached = $this->getData("cached-$key", false);
if (empty($cached) || !($cached = unserialize($cached))) {
return $default;
}
if (empty($cached['till']) || (time() > $cached['till'])) {
$this->removeData("cached-$key");
return $default;
}
return $cached['value'];
}
/**
* @param $key
* @param $value
* @param $seconds
* @return $this
*/
public function setCached($key, $value, $seconds = 60)
{
$time = time();
$data = array('at' => $time, 'till' => $time + $seconds, 'value' => $value);
$this->setData("cached-$key", serialize($data));
return $this;
}
/**
* @param $key
* @param $callable
* @param int $seconds
* @return mixed|null
*/
public function getCachedWithSetDefault($key, $callable, $seconds = 60)
{
if (!($value = $this->getCached($key, false))) {
$value = call_user_func($callable);
$this->setCached($key, $value, $seconds);
}
return $value;
}
/**
* @return bool
*/
public function isConfigured()
{
return true;
//return $this->getOption('public_key', false) && $this->getOption('secret_key', false);
}
/**
* @return bool
*/
protected function doingAjax()
{
return defined('DOING_AJAX') && DOING_AJAX;
}
/**
* @return MailChimp_WooCommerce_MailChimpApi
*/
public function api()
{
if (empty($this->api)) {
$this->api = new MailChimp_WooCommerce_MailChimpApi($this->getOption('mailchimp_api_key', false));
}
return $this->api;
}
/**
* @param array $data
* @param $key
* @param null $default
* @return null|mixed
*/
public function array_get(array $data, $key, $default = null)
{
if (isset($data[$key])) {
return $data[$key];
}
return $default;
}
/**
* @param bool $products
* @param bool $orders
* @return $this
*/
public function removePointers($products = true, $orders = true)
{
if ($products) {
$this->removeProductPointers();
}
if ($orders) {
$this->removeOrderPointers();
}
$this->removeSyncPointers();
$this->removeMiscPointers();
return $this;
}
public function removeProductPointers()
{
delete_option('mailchimp-woocommerce-sync.products.completed_at');
delete_option('mailchimp-woocommerce-sync.products.current_page');
}
public function removeOrderPointers()
{
delete_option('mailchimp-woocommerce-sync.orders.prevent');
delete_option('mailchimp-woocommerce-sync.orders.completed_at');
delete_option('mailchimp-woocommerce-sync.orders.current_page');
}
public function removeSyncPointers()
{
mailchimp_flush_sync_pointers();
}
public function removeMiscPointers()
{
delete_option('mailchimp-woocommerce-errors.store_info');
delete_option('mailchimp-woocommerce-validation.api.ping');
delete_option('mailchimp-woocommerce-cached-api-lists');
delete_option('mailchimp-woocommerce-cached-api-ping-check');
}
}