| Server IP : 38.190.208.107 / Your IP : 216.73.216.187 Web Server : nginx/1.28.1 System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 User : root ( 0) PHP Version : 8.2.28 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/wp.9/wp-content/themes/dt-the7/inc/mods/demo-content/ |
Upload File : |
<?php
/**
* @package The7
*/
defined( 'ABSPATH' ) || exit;
class The7_Demo {
const DEMO_STATUS_FULL_IMPORT = 'full_import';
const DEMO_STATUS_PARTIAL_IMPORT = 'partial_import';
const DEMO_STATUS_NOT_IMPORTED = 'not_imported';
/**
* @var bool
*/
public $post_types_imported;
/**
* @var bool
*/
public $theme_options_imported;
/**
* @var bool
*/
public $attachments_imported;
/**
* @var bool
*/
public $sliders_imported;
/**
* @var string
*/
protected $import_status;
/**
* @var The7_Demo_Content_TGMPA
*/
protected $plugins;
/**
* @var array
*/
protected $fields = [];
public function __construct( $demo ) {
$this->setup_fields( $demo );
$this->refresh_import_status();
}
public function refresh_import_status() {
$history = The7_Demo_Content_Tracker::get_demo_history( $this->id );
$this->post_types_imported = isset( $history['post_types'] );
$this->theme_options_imported = isset( $history['theme_options'] );
$this->attachments_imported = isset( $history['attachments'] );
$this->sliders_imported = isset( $history['rev_sliders'] );
$this->import_status = $this->get_import_status();
}
/**
* @return string
*/
public function get_import_status_text() {
$text = '';
if ( $this->import_status === static::DEMO_STATUS_FULL_IMPORT ) {
$text = '(' . esc_html__( 'fully imported', 'the7mk2' ) . ')';
} elseif ( $this->import_status === static::DEMO_STATUS_PARTIAL_IMPORT ) {
$text = '(' . esc_html__( 'partially imported', 'the7mk2' ) . ')';
}
return '<span class="demo-import-status">' . $text . '</span>';
}
/**
* @return string
*/
public function get_elementor_pro_requierements_text() {
// translators: %1$s: Elementor plugin link, %2$s: PRO Elements plugin link.
$pro_elements_message = _x( '<strong>Important!</strong> This demo requires %1$s or its free alternative, %2$s plugin. We cannot install them automatically. Please <strong>install</strong> one of these plugins to proceed with the demo installation.', 'admin', 'the7mk2' );
return sprintf(
$pro_elements_message,
'<a href="https://elementor.com/pro/" target="_blank" rel="nofollow">Elementor Pro</a>',
'<a href="https://proelements.github.io/proelements.org/" target="_blank" rel="nofollow">PRO Elements</a>'
);
}
/**
* @return bool
*/
public function import_allowed() {
if ( $this->require_elementor_pro() ) {
return $this->plugins()->is_installed( 'pro-elements' );
}
return true;
}
/**
* @return bool
*/
public function partially_imported() {
return in_array(
$this->import_status,
[ static::DEMO_STATUS_PARTIAL_IMPORT, static::DEMO_STATUS_FULL_IMPORT ],
true
);
}
/**
* @return bool
*/
public function require_revslider() {
return in_array( 'revslider', $this->required_plugins, true );
}
/**
* @return bool
*/
public function require_elementor_pro() {
return in_array( 'pro-elements', $this->required_plugins, true );
}
/**
* @return The7_Demo_Content_TGMPA
*/
public function plugins() {
if ( null === $this->plugins ) {
$this->plugins = new The7_Demo_Content_TGMPA( $this->required_plugins );
}
return $this->plugins;
}
/**
* @param string $prop
*
* @return mixed|null
*/
public function __get( $prop ) {
if ( array_key_exists( $prop, $this->fields ) ) {
return $this->fields[ $prop ];
}
return null;
}
/**
* @return bool
*/
public function is_fse() {
return in_array( 'fse', $this->fields['tags'], true );
}
/**
* @return bool
*/
public function is_elementor() {
return in_array( 'elementor', $this->fields['tags'], true );
}
/**
* @return bool
*/
public function is_wpb() {
return ! empty( array_intersect( $this->fields['tags'], [ 'wpb', 'wpbakery' ] ) );
}
/**
* @return string
*/
protected function get_import_status() {
$entire_demo_is_imported = $this->post_types_imported && $this->attachments_imported && ( $this->theme_options_imported || $this->is_fse() );
$demo_is_partially_imported = $this->post_types_imported || $this->theme_options_imported || $this->attachments_imported;
if ( $this->plugins()->is_required( 'revslider' ) ) {
$entire_demo_is_imported &= $this->sliders_imported;
$demo_is_partially_imported |= $this->sliders_imported;
}
if ( $entire_demo_is_imported ) {
return static::DEMO_STATUS_FULL_IMPORT;
}
if ( $demo_is_partially_imported ) {
return static::DEMO_STATUS_PARTIAL_IMPORT;
}
return static::DEMO_STATUS_NOT_IMPORTED;
}
/**
* @param array $fields
*/
protected function setup_fields( $fields ) {
$allowed_fields = [
'title' => '',
'id' => '',
'include_attachments' => false,
'screenshot' => '',
'link' => '',
'attachments_batch' => 999,
'required_plugins' => [],
'tags' => [],
];
$fields = array_intersect_key( (array) $fields, $allowed_fields );
$this->fields = wp_parse_args( $fields, $allowed_fields );
}
}