[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: class-zakra-welcome-notice.php
<?php // Exit if accessed directly. defined( 'ABSPATH' ) || exit; class Zakra_Welcome_Notice { public function __construct() { add_action( 'wp_loaded', array( $this, 'welcome_notice' ), 20 ); add_action( 'wp_loaded', array( $this, 'hide_notices' ), 15 ); add_action( 'wp_ajax_import_button', array( $this, 'welcome_notice_import_handler' ) ); } public function welcome_notice() { if ( ! get_option( 'zakra_admin_notice_welcome' ) ) { add_action( 'admin_notices', array( $this, 'welcome_notice_markup' ) ); // Show notice. } } /** * echo `Get started` CTA. * * @return string */ public function import_button_html() { $html = '<a class="btn-get-started button button-primary button-hero" href="#" data-name="' . esc_attr( 'themegrill-demo-importer' ) . '" data-slug="' . esc_attr( 'themegrill-demo-importer' ) . '" aria-label="' . esc_attr__( 'Get started with Zakra', 'zakra' ) . '">' . esc_html__( 'Get started with Zakra', 'zakra' ) . '</a>'; return $html; } /** * Show welcome notice. */ public function welcome_notice_markup() { $dismiss_url = wp_nonce_url( remove_query_arg( array( 'activated' ), add_query_arg( 'zakra-hide-notice', 'welcome' ) ), 'zakra_hide_notices_nonce', '_zakra_notice_nonce' ); ?> <div id="message" class="notice notice-success zakra-notice"> <a class="zakra-message-close notice-dismiss" href="<?php echo esc_url( $dismiss_url ); ?>"></a> <div class="zakra-message__content"> <div class="zakra-message__image"> <img class="zakra-screenshot" src="<?php echo esc_url( get_template_directory_uri() . '/screenshot.jpg' ); ?>" alt="<?php esc_attr_e( 'Zakra', 'zakra' ); ?>" /> </div> <div class="zakra-message__text"> <h2 class="zakra-message__heading"> <?php printf( /* translators: 1: welcome page link starting html tag, 2: welcome page link ending html tag. */ esc_html__( 'Welcome! Thank you for choosing Zakra! To fully take advantage of the best our theme can offer, please make sure you visit our %1$swelcome page%2$s.', 'zakra' ), '<a href="' . esc_url( admin_url( 'themes.php?page=zakra-options' ) ) . '">', '</a>' ); ?> </h2> <div class="zakra-message__cta"> <?php echo $this->import_button_html(); ?> <span class="plugin-install-notice"><?php esc_html_e( 'Clicking the button will install and activate the ThemeGrill demo importer plugin.', 'zakra' ); ?></span> </div> </div> </div> </div> <!-- /.zakra-message__content --> <?php } /** * Hide a notice if the GET variable is set. */ public function hide_notices() { if ( isset( $_GET['zakra-hide-notice'] ) && isset( $_GET['_zakra_notice_nonce'] ) ) { // WPCS: input var ok. if ( ! wp_verify_nonce( wp_unslash( $_GET['_zakra_notice_nonce'] ), 'zakra_hide_notices_nonce' ) ) { // phpcs:ignore WordPress.VIP.ValidatedSanitizedInput.InputNotSanitized wp_die( __( 'Action failed. Please refresh the page and retry.', 'zakra' ) ); // WPCS: xss ok. } if ( ! current_user_can( 'manage_options' ) ) { wp_die( __( 'Cheatin’ huh?', 'zakra' ) ); // WPCS: xss ok. } $hide_notice = sanitize_text_field( wp_unslash( $_GET['zakra-hide-notice'] ) ); // Hide. if ( 'welcome' === $_GET['zakra-hide-notice'] ) { update_option( 'zakra_admin_notice_' . $hide_notice, 1 ); } else { // Show. delete_option( 'zakra_admin_notice_' . $hide_notice ); } } } /** * Handle the AJAX process while import or get started button clicked. */ public function welcome_notice_import_handler() { check_ajax_referer( 'zakra_demo_import_nonce', 'security' ); $state = ''; if ( class_exists( 'themegrill_demo_importer' ) ) { $state = 'activated'; } elseif ( file_exists( WP_PLUGIN_DIR . '/themegrill-demo-importer/themegrill-demo-importer.php' ) ) { $state = 'installed'; } if ( 'activated' === $state ) { $response['redirect'] = admin_url( '/themes.php?page=demo-importer&browse=all&zakra-hide-notice=welcome' ); } elseif ( 'installed' === $state ) { $response['redirect'] = admin_url( '/themes.php?page=demo-importer&browse=all&zakra-hide-notice=welcome' ); if ( current_user_can( 'activate_plugin' ) ) { $result = activate_plugin( 'themegrill-demo-importer/themegrill-demo-importer.php' ); if ( is_wp_error( $result ) ) { $response['errorCode'] = $result->get_error_code(); $response['errorMessage'] = $result->get_error_message(); } } } else { wp_enqueue_style( 'plugin-install' ); wp_enqueue_script( 'plugin-install' ); $response['redirect'] = admin_url( '/themes.php?page=demo-importer&browse=all&zakra-hide-notice=welcome' ); /** * Install Plugin. */ include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; $api = plugins_api( 'plugin_information', array( 'slug' => sanitize_key( wp_unslash( 'themegrill-demo-importer' ) ), 'fields' => array( 'sections' => false, ), ) ); $skin = new WP_Ajax_Upgrader_Skin(); $upgrader = new Plugin_Upgrader( $skin ); $result = $upgrader->install( $api->download_link ); if ( $result ) { $response['installed'] = 'succeed'; } else { $response['installed'] = 'failed'; } // Activate plugin. if ( current_user_can( 'activate_plugin' ) ) { $result = activate_plugin( 'themegrill-demo-importer/themegrill-demo-importer.php' ); if ( is_wp_error( $result ) ) { $response['errorCode'] = $result->get_error_code(); $response['errorMessage'] = $result->get_error_message(); } } } wp_send_json( $response ); exit(); } } new Zakra_Welcome_Notice();
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server05.hostinghome.co.in
Server IP: 192.168.74.40
PHP Version: 7.4.33
Server Software: Apache
System: Linux server05.hostinghome.co.in 3.10.0-962.3.2.lve1.5.81.el7.x86_64 #1 SMP Wed May 31 10:36:47 UTC 2023 x86_64
HDD Total: 1.95 TB
HDD Free: 691.79 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Disabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: itsweb
User ID (UID): 1619
Group ID (GID): 1621
Script Owner UID: 1619
Current Dir Owner: 1619