????
Current Path : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/reviews-feed/class/Common/ |
Current File : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/reviews-feed/class/Common/SBR_Settings.php |
<?php namespace SmashBalloon\Reviews\Common; use Smashballoon\Customizer\V2\Feed_Saver; class SBR_Settings { /** * @var array */ protected $atts; /** * @var array */ protected $db; /** * @var array */ protected $settings; /** * @var array */ protected $feed_type_and_terms; /** * @var array */ protected $connected_accounts; /** * @var array */ protected $connected_accounts_in_feed; /** * @var string */ protected $transient_name; /** * SBR_Settings constructor. * * Overwritten in the Pro version. * * @param array $atts shortcode settings * @param array $db settings from the wp_options table */ public function __construct( $atts, $db, $preview_settings = false ) { $atts = is_array( $atts ) ? $atts : array(); if ( ! empty( $atts['feed'] ) ) { $this->settings = self::get_settings_by_feed_id( $atts['feed'], $preview_settings ); if ( ! empty( $this->settings ) ) { $this->settings['customizer'] = isset($atts['customizer']) && $atts['customizer'] == true ? true : false; $this->settings['feed'] = intval( $atts['feed'] ); $this->settings['localization'] = Util::get_api_call_language($this->settings); } } // convert string 'false' and 'true' to booleans foreach ( $atts as $key => $value ) { if ( $value === 'false' ) { $atts[ $key ] = false; } elseif ( $value === 'true' ) { $atts[ $key ] = true; } } $this->atts = $atts; $this->db = $db; $this->connected_accounts = isset( $db['connected_accounts'] ) ? $db['connected_accounts'] : array(); } /** * Get Settings By Feed ID * * @since 1.0 */ public static function get_settings_by_feed_id($feed_id, $preview_settings = false, $single_review = false){ global $wpdb; if (is_array($preview_settings)) { return $preview_settings; } if( $single_review && intval($feed_id) < 1) { return sbr_settings_defaults(); } if (intval($feed_id) < 1) { return false; } $container = Container::get_instance(); $feed_saver = $container->get( Feed_Saver::class ); $feed_saver->set_feed_id( $feed_id ); return $feed_saver->get_feed_settings(); } /** * @return array * * @since 1.0 */ public function get_settings(){ return $this->settings; } /** * @return array * * @since 1.0 */ public function get_connected_accounts() { return $this->connected_accounts; } /** * @return array|bool * * @since 1.0 */ public function get_connected_accounts_in_feed() { if ( isset( $this->connected_accounts_in_feed ) ) { return $this->connected_accounts_in_feed; } else { return false; } } /** * @return bool|string * * @since 1.0 */ public function get_transient_name() { if ( isset( $this->transient_name ) ) { return $this->transient_name; } else { return false; } } /** * @return float|int * * @since 1.0 */ public function get_cache_time_in_seconds() { if ( $this->db['caching_type'] === 'background' ) { return SBR_CRON_UPDATE_CACHE_TIME; } else { //If the caching time doesn't exist in the database then set it to be 1 hour $cache_time = isset( $this->settings['cache_time'] ) ? (int)$this->settings['cache_time'] : 1; $cache_time_unit = isset( $this->settings['cache_time_unit'] ) ? $this->settings['cache_time_unit'] : 'hours'; //Calculate the cache time in seconds if ( $cache_time_unit == 'minutes' ) $cache_time_unit = 60; if ( $cache_time_unit == 'hours' ) $cache_time_unit = 60*60; if ( $cache_time_unit == 'days' ) $cache_time_unit = 60*60*24; $cache_time = max( 900, $cache_time * $cache_time_unit ); return $cache_time; } } public function update_settings($update_array = []) { if(!is_array($update_array)) { return false; } $updated = array_merge($this->settings, array_map(function ($value) { return $this->convert_value($value); }, $update_array)); return update_option('sbr_settings', $updated); } private function convert_value($value) { switch($value) { case 'true': return true; case 'false': return false; default: return $value; } } }