File "Settings.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/woocommerce-paypal-payments/modules/ppcp-wc-gateway/src/Settings/Settings.php
File size: 4.32 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* The settings object.
*
* @package WooCommerce\PayPalCommerce\WcGateway\Settings
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\WcGateway\Settings;
use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
/**
* Class Settings
*/
class Settings implements ContainerInterface {
const KEY = 'woocommerce-ppcp-settings';
const CONNECTION_TAB_ID = 'ppcp-connection';
const PAY_LATER_TAB_ID = 'ppcp-pay-later';
/**
* The settings.
*
* @var array
*/
private $settings = array();
/**
* The list of selected default button locations.
*
* @var string[]
*/
protected $default_button_locations;
/**
* The list of selected default pay later button locations.
*
* @var string[]
*/
protected $default_pay_later_button_locations;
/**
* The list of selected default pay later messaging locations.
*
* @var string[]
*/
protected $default_pay_later_messaging_locations;
/**
* The default ACDC gateway title.
*
* @var string
*/
protected $default_dcc_gateway_title;
/**
* Settings constructor.
*
* @param string[] $default_button_locations The list of selected default button locations.
* @param string $default_dcc_gateway_title The default ACDC gateway title.
* @param string[] $default_pay_later_button_locations The list of selected default pay later button locations.
* @param string[] $default_pay_later_messaging_locations The list of selected default pay later messaging locations.
*/
public function __construct(
array $default_button_locations,
string $default_dcc_gateway_title,
array $default_pay_later_button_locations,
array $default_pay_later_messaging_locations
) {
$this->default_button_locations = $default_button_locations;
$this->default_dcc_gateway_title = $default_dcc_gateway_title;
$this->default_pay_later_button_locations = $default_pay_later_button_locations;
$this->default_pay_later_messaging_locations = $default_pay_later_messaging_locations;
}
/**
* Returns the value for an id.
*
* @param string $id The value identificator.
*
* @return mixed
* @throws NotFoundException When nothing was found.
*/
public function get( $id ) {
if ( ! $this->has( $id ) ) {
throw new NotFoundException();
}
return $this->settings[ $id ];
}
/**
* Whether a value exists.
*
* @param string $id The value identificator.
*
* @return bool
*/
public function has( $id ) {
$this->load();
return array_key_exists( $id, $this->settings );
}
/**
* Sets a value.
*
* @param string $id The value identificator.
* @param mixed $value The value.
*/
public function set( $id, $value ) {
$this->load();
$this->settings[ $id ] = $value;
}
/**
* Stores the settings to the database.
*/
public function persist() {
return update_option( self::KEY, $this->settings );
}
/**
* Loads the settings.
*
* @return bool
*/
private function load(): bool {
if ( $this->settings ) {
return false;
}
$this->settings = get_option( self::KEY, array() );
$defaults = array(
'title' => __( 'PayPal', 'woocommerce-paypal-payments' ),
'description' => __(
'Pay via PayPal.',
'woocommerce-paypal-payments'
),
'smart_button_locations' => $this->default_button_locations,
'smart_button_enable_styling_per_location' => false,
'pay_later_messaging_enabled' => true,
'pay_later_button_enabled' => true,
'pay_later_button_locations' => $this->default_pay_later_button_locations,
'pay_later_messaging_locations' => $this->default_pay_later_messaging_locations,
'brand_name' => get_bloginfo( 'name' ),
'dcc_gateway_title' => $this->default_dcc_gateway_title,
'dcc_gateway_description' => __(
'Pay with your credit card.',
'woocommerce-paypal-payments'
),
);
foreach ( $defaults as $key => $value ) {
if ( isset( $this->settings[ $key ] ) ) {
$this->settings[ $key ] = apply_filters( 'woocommerce_paypal_payments_settings_value', $this->settings[ $key ], $key );
continue;
}
$this->settings[ $key ] = $value;
}
return true;
}
}