Files
carpseeds.pl/wp-content/plugins/jet-plugins-wizard/includes/class-jet-plugins-wizard-settings.php
2024-07-15 11:28:08 +02:00

285 lines
5.7 KiB
PHP

<?php
/**
* Settings manager
*/
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
if ( ! class_exists( 'Jet_Plugins_Wizard_Settings' ) ) {
/**
* Define Jet_Plugins_Wizard_Settings class
*/
class Jet_Plugins_Wizard_Settings {
/**
* A reference to an instance of this class.
*
* @since 1.0.0
* @var object
*/
private static $instance = null;
/**
* Manifest file content
*
* @var array
*/
private $all_settings = null;
/**
* External settings
*
* @var array
*/
private $external_settings = array();
/**
* Manifest defaults
*
* @var array
*/
private $defaults = null;
/**
* Has registered external config
*
* @var boolean
*/
private $has_external = false;
/**
* Get settings from array.
*
* @param array $settings Settings trail to get.
* @return mixed
*/
public function get( $settings = array() ) {
$all_settings = $this->get_all_settings();
if ( ! $all_settings ) {
return false;
}
if ( ! is_array( $settings ) ) {
$settings = array( $settings );
}
$count = count( $settings );
$result = $all_settings;
for ( $i = 0; $i < $count; $i++ ) {
if ( empty( $result[ $settings[ $i ] ] ) ) {
return false;
}
$result = $result[ $settings[ $i ] ];
if ( $count - 1 === $i ) {
return $result;
}
}
}
/**
* Check if is kava theme
*
* @return boolean [description]
*/
public function is_kava() {
if ( ! $this->has_external() ) {
return false;
}
if ( empty( $this->external_settings['plugins']['get_from'] ) ) {
return false;
}
$plugins_url = $this->external_settings['plugins']['get_from'];
if ( false === strpos( $plugins_url, 'account.crocoblock.com' ) ) {
return false;
} else {
return true;
}
}
/**
* Add new 3rd party configuration
* @param array $config [description]
* @return [type] [description]
*/
public function register_external_config( $config = array() ) {
$this->has_external = true;
$this->external_settings = array_merge( $this->external_settings, $config );
}
/**
* Return external config status
* @return boolean [description]
*/
public function has_external() {
return $this->has_external;
}
/**
* Get mainfest
*
* @return mixed
*/
public function get_all_settings() {
if ( null !== $this->all_settings ) {
return $this->all_settings;
}
$settings = $this->external_settings;
$all_settings = array(
'license' => isset( $settings['license'] ) ? $settings['license'] : $this->get_defaults( 'license' ),
'plugins' => isset( $settings['plugins'] ) ? $settings['plugins'] : $this->get_defaults( 'plugins' ),
'skins' => isset( $settings['skins'] ) ? $settings['skins'] : $this->get_defaults( 'skins' ),
'texts' => isset( $settings['texts'] ) ? $settings['texts'] : $this->get_defaults( 'texts' ),
);
$this->all_settings = $this->maybe_update_remote_data( $all_settings );
return $this->all_settings;
}
/**
* Maybe update remote settings data
*
* @param array $settings Plugins settings
* @return array
*/
public function maybe_update_remote_data( $settings ) {
if ( ! empty( $settings['plugins']['get_from'] ) ) {
$settings['plugins'] = $this->get_remote_data( $settings['plugins']['get_from'], 'jet_wizard_plugins' );
}
if ( ! empty( $settings['skins']['get_from'] ) ) {
$settings['skins'] = $this->get_remote_data( $settings['skins']['get_from'], 'jet_wizard_skins' );
}
return $settings;
}
/**
* Get remote data for wizard
*
* @param [type] $url [description]
* @param [type] $transient_key [description]
* @return [type] [description]
*/
public function get_remote_data( $url, $transient_key ) {
$data = get_site_transient( $transient_key );
if ( $this->has_external() ) {
$data = false;
}
if ( ! $data ) {
$response = wp_remote_get( $url, array(
'timeout' => 60,
'sslverify' => false,
) );
$data = wp_remote_retrieve_body( $response );
$data = json_decode( $data, true );
if ( empty( $data ) ) {
$data = array();
}
if ( ! $this->has_external() ) {
set_site_transient( $transient_key, $data, 2 * DAY_IN_SECONDS );
}
}
return $data;
}
/**
* Clear transien data cahces
*
* @return [type] [description]
*/
public function clear_transient_data() {
set_site_transient( 'jet_wizard_plugins', null );
set_site_transient( 'jet_wizard_skins', null );
}
/**
* Get wizard defaults
*
* @param string $part What part of manifest to get (optional - if empty return all)
* @return array
*/
public function get_defaults( $part = null ) {
if ( null === $this->defaults ) {
include jet_plugins_wizard()->path( 'includes/config/default-config.php' );
$this->defaults = array(
'license' => $license,
'plugins' => $plugins,
'skins' => $skins,
'texts' => $texts,
);
}
if ( ! $part ) {
return $this->defaults;
}
if ( isset( $this->defaults[ $part ] ) ) {
return $this->defaults[ $part ];
}
return array();
}
/**
* Returns the instance.
*
* @since 1.0.0
* @return object
*/
public static function get_instance() {
// If the single instance hasn't been set, set it now.
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
}
}
/**
* Returns instance of Jet_Plugins_Wizard_Settings
*
* @return object
*/
function jet_plugins_wizard_settings() {
return Jet_Plugins_Wizard_Settings::get_instance();
}