| Current File : /home/digitaw/www/wp-content/updraft/plugins-old/templately/includes/Core/Admin.php |
<?php
namespace Templately\Core;
use Templately\API\Login;
use Templately\Utils\Base;
use Templately\Utils\Helper;
use Templately\Utils\Options;
use PriyoMukul\WPNotice\Notices;
use Templately\Core\Platform\Elementor;
use Templately\Core\Platform\Gutenberg;
class Admin extends Base {
/**
* Initially invoked function.
* Menu, Assets and maybe redirect on plugin activation is initialized.
*/
public function __construct() {
add_action( 'admin_enqueue_scripts', [$this, 'scripts'] );
add_action( 'admin_init', [$this, 'notices'] );
add_action( 'admin_init', [$this, 'maybe_redirect_templately'] );
add_action( 'admin_menu', [$this, 'admin_menu'] );
}
/**
* Enqueuing Assets
*
* @param string $hook
* @return void
*/
public function scripts( $hook ) {
if ( ! in_array( $hook, [ 'toplevel_page_templately', 'elementor', 'gutenberg' ], true ) ) {
return;
}
$script_dependencies = [];
$_localize_handle = 'templately';
$_current_screen = 'templately';
if ( $hook === 'elementor' || $hook === 'gutenberg' ) {
$_current_screen = $hook;
$_localize_handle = 'templately-' . $hook;
$script_dependencies = [$_localize_handle];
}
if ( $hook === 'toplevel_page_templately' ) {
templately()->assets->enqueue( 'templately-admin', 'css/admin.css', ['templately'] );
}
// Google Font Enqueueing
templately()->assets->enqueue(
'templately-dmsans',
set_url_scheme( '//fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap' )
);
templately()->assets->enqueue( 'templately', 'js/templately.js', $script_dependencies, true );
templately()->assets->enqueue( 'templately', 'css/templately.css', ['templately-dmsans'] );
/**
* @var Elementor|Gutenberg $platform
*/
$platform = $this->platform( $_current_screen );
templately()->assets->localize( $_localize_handle, 'templately', [
'url' => home_url(),
'site_url' => site_url(),
'nonce' => wp_create_nonce( 'templately_nonce' ),
'rest_args' => [
'nonce' => wp_create_nonce( 'wp_rest' ),
'endpoint' => get_rest_url( null, 'templately/v1/' )
],
'log' => defined( 'TEMPLATELY_DEBUG_LOG' ) && TEMPLATELY_DEBUG_LOG,
'dev_mode' => defined( 'TEMPLATELY_DEV' ) && TEMPLATELY_DEV,
"icons" => [
'profile' => templately()->assets->icon( 'icons/profile.svg' ),
'warning' => templately()->assets->icon( 'icons/warning.png' )
],
'promo_image' => templately()->assets->icon( 'single-page-promo.png' ),
'default_image' => templately()->assets->icon( 'clouds/cloud-item.svg' ),
'not_found' => templately()->assets->icon( 'no-item-found.png' ),
'no_items' => templately()->assets->icon( 'no-items.png' ),
'loadingImage' => templately()->assets->icon( 'logos/loading-logo.gif' ),
'current_url' => admin_url( 'admin.php?page=templately' ),
'is_signed' => Login::is_signed(),
'is_globally_signed' => Login::is_globally_signed(),
'signed_as_global' => Login::signed_as_global(),
'current_screen' => $_current_screen,
'has_elementor_pro' => rest_sanitize_boolean( is_plugin_active( 'elementor-pro/elementor-pro.php' ) ),
'theme' => $_current_screen == 'templately' ? 'light' : $platform->ui_theme()
] );
}
/**
* Admin notices for Review and others.
*
* @since 2.0.0
* @return void
*/
public function notices() {
global $current_screen;
$notices = new Notices( [
'id' => 'templately',
'store' => 'options',
'storage_key' => 'notices',
'version' => '1.0.0',
'lifetime' => 3,
'styles' => TEMPLATELY_ASSETS . 'css/notices.css'
] );
$global_user = Options::get_instance()->get( 'user', false, get_current_user_id() );
$download_counts = Options::get_instance()->get( 'total_downlaod_counts', 0, get_current_user_id() );
$cloud_items = 0;
if ( isset( $global_user['my_cloud']['usages'] ) ) {
$cloud_items = intval( $global_user['my_cloud']['usages'] );
}
if ( $cloud_items >= 5 || $download_counts >= 4 ) {
$message = sprintf(
__( "We hope you're enjoying %s! Could you please do us a favor and give us a review on %s to help us spread the word and boost our motivation?", 'templately' ),
'<strong>Templately</strong>',
'<strong>WordPress</strong>'
);
$_review_notice = [
'thumbnail' => templately()->assets->icon( 'logos/logo.svg' ),
'html' => '<p>' . $message . '</p>',
'links' => [
'later' => [
'link' => 'https://wordpress.org/support/plugin/templately/reviews/#new-post',
'target' => '_blank',
'label' => __( 'Sure, you deserve it!', 'templately' ),
'icon_class' => 'dashicons dashicons-external'
],
'allready' => [
'label' => __( 'I already did', 'templately' ),
'icon_class' => 'dashicons dashicons-smiley',
'attributes' => [
'data-dismiss' => true
]
],
'maybe_later' => [
'label' => __( 'Maybe Later', 'templately' ),
'icon_class' => 'dashicons dashicons-calendar-alt',
'attributes' => [
'data-later' => true,
'class' => 'dismiss-btn'
]
],
'support' => [
'link' => 'https://wpdeveloper.com/support',
'attributes' => [
'target' => '_blank'
],
'label' => __( 'I need help', 'templately' ),
'icon_class' => 'dashicons dashicons-sos'
],
'never_show_again' => [
'label' => __( 'Never show again', 'templately' ),
'icon_class' => 'dashicons dashicons-dismiss',
'attributes' => [
'data-dismiss' => true
]
]
]
];
$notices->add(
'review',
$_review_notice,
[
'start' => $notices->strtotime( '+7 day' ),
'recurrence' => 20,
'dismissible' => true,
'refresh' => TEMPLATELY_VERSION,
'screens' => [
'dashboard', 'plugins', 'themes', 'edit-page',
'edit-post', 'users', 'tools', 'options-general',
'nav-menus'
]
]
);
}
if( $global_user === false || isset( $global_user['plan'] ) && $global_user['plan'] == 'free' ) {
$notices->add(
'upsale',
wp_sprintf(
'<p>%1$s <a target="_blank" href="%3$s">%2$s</a>.</p>',
__('🔥 Get access to 4,000+ Ready Templates & save up to 65% OFF now', 'templately'),
__('Upgrade to Pro', 'templately'),
'https://templately.com/#pricing'
),
[
'start' => $notices->time(),
'dismissible' => true,
'refresh' => TEMPLATELY_VERSION,
'screens' => [
'dashboard', 'plugins', 'themes', 'edit-page',
'edit-post', 'users', 'tools', 'options-general',
'nav-menus'
]
]
);
}
$notices->init();
}
/**
* Adding Menu In Sidebar ( WordPress Left-side Dashboard Menu )
*
* @return void
*/
public function admin_menu() {
// TODO: Role Management
add_menu_page(
'Templately',
'Templately',
'delete_posts',
'templately',
[ $this, 'display' ],
templately()->assets->icon( 'logos/logo-icon.svg' ),
'58.7'
);
}
public function display() {
Helper::views( 'settings' );
}
/**
* Redirect on Active
*/
public function maybe_redirect_templately() {
if ( ! get_transient( 'templately_activation_redirect' ) ) {
return;
}
if ( wp_doing_ajax() ) {
return;
}
delete_transient( 'templately_activation_redirect' );
if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
return;
}
// Safe Redirect to Templately Page
wp_safe_redirect( admin_url( 'admin.php?page=templately' ) );
exit;
}
/**
* If Elementor doesn't exists.
*
* @return void
*/
public static function has_no_elementor() {
$plugin_url = \wp_nonce_url( \self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ), 'install-plugin_elementor' );
$button_text = 'Install Elementor';
if ( isset( Helper::get_plugins()['elementor/elementor.php'] ) ) {
$plugin_url = \wp_nonce_url( 'plugins.php?action=activate&plugin=elementor/elementor.php', 'activate-plugin_elementor/elementor.php' );
$button_text = 'Activate Elementor';
}
$output = '<div class="notice notice-error">';
$output .= sprintf(
"<p><strong>%s</strong> %s <strong>%s</strong> %s <a class='button-primary' href='%s'>%s</a></p>",
__( 'Templately', 'templately' ),
__( 'requires', 'templately' ),
__( 'Elementor', 'templately' ),
__( 'plugin to be installed and activated. Please install Elementor to continue.', 'templately' ),
esc_url( $plugin_url ),
__( $button_text, 'templately' )
);
$output .= '</div>';
echo $output;
}
public function header() {
Helper::views( 'header' );
}
}