[Back] <?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* Welcome Notice class.
*/
class Tmpcoder_Welcome_Notice {
/**
** Constructor.
*/
public function __construct() {
// Render Notice
add_action( 'admin_notices', array($this, 'tmpcoder_render_notice') );
// Enque AJAX Script
add_action( 'admin_enqueue_scripts', array($this, 'tmpcoder_admin_enqueue_scripts'), 5 );
add_action( 'wp_ajax_tmpcoder_dismissed_handler', array($this, 'tmpcoder_dismissed_handler') );
// Reset
add_action( 'switch_theme', array($this, 'tmpcoder_reset_notices') );
add_action( 'after_switch_theme', array($this, 'tmpcoder_reset_notices') );
// Install Plugins
add_action( 'wp_ajax_tmpcoder_cancel_elementor_redirect', array($this, 'tmpcoder_cancel_elementor_redirect') );
add_action( 'wp_ajax_tmpcoder_recommended_plugin_activate', array($this, 'tmpcoder_required_plugin_activate') );
}
public function tmpcoder_cancel_elementor_redirect() {
exit;
}
/**
** Get plugin status.
*/
public function tmpcoder_get_plugin_status( $plugin_path ) {
if ( ! current_user_can( 'install_plugins' ) ) {
return;
}
if ( ! file_exists( WP_PLUGIN_DIR . '/' . $plugin_path ) ) {
return 'not_installed';
} else {
$plugin_updates = get_site_transient( 'update_plugins' );
$plugin_needs_update = is_object($plugin_updates) ? array_key_exists($plugin_path, $plugin_updates->response) : false;
if ( in_array( $plugin_path, (array) get_option( 'active_plugins', array() ), true ) || is_plugin_active_for_network( $plugin_path ) ) {
return $plugin_needs_update ? 'active_update' : 'active';
} else {
return $plugin_needs_update ? 'inactive_update' : 'inactive';
}
}
}
/**
** Render Notice
*/
public function tmpcoder_render_notice() {
if ( isset($_GET['page']) && $_GET['page'] == 'tmpcoder-plugin-wizard' || isset($_GET['page']) && $_GET['page'] == 'tmpcoder-theme-wizard' || isset($_GET['page']) && $_GET['page'] == 'tmpcoder-setup-wizard' ){ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
return;
}
global $pagenow; // use wp prebuild variable
$screen = get_current_screen();
$elementor_status = $this->tmpcoder_get_plugin_status( 'elementor/elementor.php' );
$sastra_addon_status = $this->tmpcoder_get_plugin_status( 'sastra-essential-addons-for-elementor/sastra-essential-addons-for-elementor.php' );
$redux_framework_status = $this->tmpcoder_get_plugin_status( 'redux-framework/redux-framework.php' );
$flex_attr = '';
/*if ( 'inactive' === $elementor_status || 'inactive_update' === $elementor_status || 'inactive_update' === $sastra_addon_status || 'inactive
' === $sastra_addon_status || 'inactive' === $redux_framework_status || 'inactive_update' === $redux_framework_status ) {
$flex_attr = ' display:none;';
}*/
if ( 'active' === $elementor_status && 'active' === $sastra_addon_status && 'active' === $redux_framework_status ) {
$flex_attr = ' display:none;';
}else{
$flex_attr = ' display:inline-flex !important;';
}
// if ( 'spexo-welcome' !== $screen->parent_base )
// {
$transient_name = sprintf( '%s_activation_notice', get_template() );
if ( ! get_transient( $transient_name ) ) {
?>
<div class="tmpcoder-notice notice notice-success tmpcoder-required-plugin-notice is-dismissible" data-notice="<?php echo esc_attr( $transient_name ); ?>" style="<?php echo esc_attr($flex_attr); ?>">
<button type="button" class="notice-dismiss"></button>
<?php $this->tmpcoder_render_notice_content(); ?>
</div>
<?php
}
// }
}
/**
** Render Notice Content
*/
public function tmpcoder_render_notice_content() {
$action = 'install-activate';
$redirect_url = 'javascript:void(0)';
$elementor_status = $this->tmpcoder_get_plugin_status( 'elementor/elementor.php' );
$sastra_addon_status = $this->tmpcoder_get_plugin_status( 'sastra-essential-addons-for-elementor/sastra-essential-addons-for-elementor.php' );
$redux_framework_status = $this->tmpcoder_get_plugin_status( 'redux-framework/redux-framework.php' );
if ( 'active' === $elementor_status && 'active' === $sastra_addon_status && 'active' === $redux_framework_status ) {
$action = 'default';
}
$screen = get_current_screen();
$flex_attr = '';
$display_attr = 'display: inline-block !important';
if ( 'appearance_page_about-tmpcoder' === $screen->id ) {
$flex_attr = 'display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center';
$display_attr = 'display: none !important';
}
?>
<div class="welcome-message" style="<?php echo esc_attr($flex_attr); ?>">
<h1 style="<?php echo esc_attr($display_attr); ?>">
<?php
echo esc_html(
sprintf(
/* translators: %s is the theme name */
esc_html__('Welcome to %s', 'spexo'),
TMPCODER_THEME_NAME
)
);
?>
</h1>
<p>
<?php
echo sprintf(
/* translators: %s is the description of prebuilt sites */
esc_html__( '%1$s comes with %2$s with various designs to pick from.', 'spexo' ),
esc_html(TMPCODER_THEME_NAME),
'<strong>Elementor based 40+ prebuilt sites</strong>'
);
echo sprintf(
/* translators: %s is the description of premium widgets */
esc_html__('%s and many other Elementor Extensions & Effects.', 'spexo'),
'<strong><a href="' . esc_url(TMPCODER_SPEXO_ADDONS_WIDGETS_URL) . '" target="_blank" rel="noopener noreferrer">100+ Premium Elementor Widgets</a> like Post and Product Grid, Slider, Menu, Theme & Woocommerce Shop Builder</strong>'
);
esc_html_e('Easily Customize every fundamental part of your WordPress site with Spexo Theme & Woocommerce Shop Builder.', 'spexo');
echo sprintf(
/* translators: %s is the list of customizable elements */
esc_html__('Including your %s etc.', 'spexo'),
'<strong>Header, Footer, Archives, Product Archives, Posts, Products, Default Pages, My Account, Cart, Checkout, Category, 404 Pages,</strong>'
);
echo sprintf(
/* translators: %s is the list of site builder plugins */
esc_html__('Build your site with Spexo and our site builder plugins %s.', 'spexo'),
'<strong>Elementor, Spexo Addons For Elementor & Redux Framework</strong>'
);
?>
</p>
<div class="action-buttons">
<a href="<?php echo esc_attr($redirect_url); ?>" class="button button-primary tmpcoder-install-recommended-plugin" data-action="<?php echo esc_attr($action); ?>">
<?php
echo sprintf(
/* translators: %s is an icon or other HTML element */
esc_html__('Get Started with Prebuild Demos %s', 'spexo'),
/* Since the dynamic part is HTML, it should be safely output directly */
wp_kses_post('<span class="dashicons dashicons-arrow-right-alt"></span>')
);
?>
</a>
</div>
</div>
<div class="image-wrap">
<img src="<?php echo esc_url(get_template_directory_uri().'/inc/activation/img/welcome-banner.png'); ?>" alt="">
</div>
<?php
}
/**
** Reset Notice.
*/
public function tmpcoder_reset_notices() {
delete_transient( sprintf( /* translators: %s is template name */ '%s_activation_notice', get_template() ) );
}
/**
** Dismissed handler
*/
public function tmpcoder_dismissed_handler() {
wp_verify_nonce( null );
if ( isset( $_POST['notice'] ) ) {
set_transient( sanitize_text_field( wp_unslash( $_POST['notice'] ) ), true, 0 );
}
}
/**
** Register scripts and styles for welcome notice.
*/
public function tmpcoder_admin_enqueue_scripts( $page ) {
$pluginCount = 3;
$pluginSucessCount = 0;
$pluginNotInstallCount = 0;
$pluginsList = array();
$installedPluginNotActivated = array();
$elementor_status = $this->tmpcoder_get_plugin_status( 'elementor/elementor.php' );
$sastra_status = $this->tmpcoder_get_plugin_status( 'sastra-essential-addons-for-elementor/sastra-essential-addons-for-elementor.php' );
$redux_status = $this->tmpcoder_get_plugin_status( 'redux-framework/redux-framework.php' );
if ('not_installed' === $elementor_status ) {
array_push($pluginsList,'elementor');
$pluginNotInstallCount++;
}
if ('not_installed' === $sastra_status ) {
array_push($pluginsList,'sastra-essential-addons-for-elementor');
$pluginNotInstallCount++;
}
if ('not_installed' === $redux_status) {
array_push($pluginsList,'redux-framework');
$pluginNotInstallCount++;
}
if ('active' === $elementor_status ) {
$pluginCount -= 1;
$pluginSucessCount += 1;
}
if ('active' === $sastra_status) {
$pluginCount -= 1;
$pluginSucessCount += 1;
}
if ('active' === $redux_status) {
$pluginCount -= 1;
$pluginSucessCount += 1;
}
if ('inactive' === $elementor_status ) {
array_push($installedPluginNotActivated, 'elementor/elementor.php');
}
if ('inactive' === $sastra_status) {
array_push($installedPluginNotActivated, 'sastra-essential-addons-for-elementor/sastra-essential-addons-for-elementor.php');
}
if ('inactive' === $redux_status) {
array_push($installedPluginNotActivated, 'redux-framework/redux-framework.php');
}
// Enqueue Scripts
wp_enqueue_script( 'tmpcoder-welcome-notice-js', get_template_directory_uri() . '/inc/activation/js/tmpcoder-welcome-notice'.tmpcoder_min_suffix().'.js', array('jquery', 'updates'), false, true );
wp_localize_script( 'tmpcoder-welcome-notice-js', 'tmpcoder_localize', array(
'failed_message' => esc_html__( 'Something went wrong, contact support.','spexo' ),
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
'tmpcoderSitesLink' => admin_url( 'themes.php?page=starter-templates' ),
'tmpcoderRedirectionLink' => admin_url( 'admin.php?page=spexo-welcome' ),
'recommendedPluiginActivatingText' => __( 'Activating','spexo' ) . '…',
'recommendedPluiginDeactivatingText' => __( 'Deactivating','spexo' ) . '…',
'recommendedPluiginActivateText' => __( 'Activate','spexo' ),
'recommendedPluiginDeactivateText' => __( 'Deactivate','spexo' ),
'recommendedPluiginSettingsText' => __( 'Settings','spexo' ),
'tmpcoderPluginManagerNonce' => wp_create_nonce( 'spexo_plugin_manager_nonce' ),
'pluginCount' => $pluginCount,
'pluginSucessCount' => $pluginSucessCount,
'pluginsList' => $pluginsList,
'pluginNotInstallCount' => $pluginNotInstallCount,
'installedPluginNotActivated' => $installedPluginNotActivated,
) );
// Enqueue Styles.
wp_enqueue_style( 'tmpcoder-welcome-notice-css', get_template_directory_uri() . '/inc/activation/css/tmpcoder-welcome-notice'.tmpcoder_min_suffix().'.css','', TMPCODER_THEME_CORE_VERSION
);
}
/**
* Required Plugin Activate
*
* @since 1.0.0
*/
public function tmpcoder_required_plugin_activate() {
$plugin_init = array('elementor/elementor.php','sastra-essential-addons-for-elementor/sastra-essential-addons-for-elementor.php','redux-framework/redux-framework.php');
if (is_array($plugin_init)) {
foreach ($plugin_init as $value) {
$activate = activate_plugin( $value, '', false, true );
}
}
if ( is_wp_error( $activate ) ) {
wp_send_json_error(
array(
'success' => false,
'message' => $activate->get_error_message(),
)
);
}
$this->tmpcoder_reset_notices();
wp_send_json_success(
array(
'success' => true,
'message' => __( 'Plugin Successfully Activated','spexo' ),
)
);
}
}
new Tmpcoder_Welcome_Notice();