<?php
/**
* Admin settings helper
*
* @link https://developer.wordpress.org/themes/basics/theme-functions/
*
* @package Astra
* @author Astra
* @copyright Copyright (c) 2020, Astra
* @link https://wpastra.com/
* @since Astra 1.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'Astra_Admin_Settings' ) ) {
/**
* Astra Admin Settings
*/
class Astra_Admin_Settings {
/**
* Menu page title
*
* @since 1.0
* @var array $menu_page_title
*/
public static $menu_page_title;
/**
* Page title
*
* @since 1.0
* @var array $page_title
*/
public static $page_title = 'Astra';
/**
* Plugin slug
*
* @since 1.0
* @var array $plugin_slug
*/
public static $plugin_slug = 'astra';
/**
* Default Menu position
*
* @since 1.0
* @var array $default_menu_position
*/
public static $default_menu_position = 'themes.php';
/**
* Parent Page Slug
*
* @since 1.0
* @var array $parent_page_slug
*/
public static $parent_page_slug = 'general';
/**
* Current Slug
*
* @since 1.0
* @var array $current_slug
*/
public static $current_slug = 'general';
/**
* Starter Templates Slug
*
* @since 2.3.2
* @var array $starter_templates_slug
*/
public static $starter_templates_slug = 'astra-sites';
/**
* Constructor
*/
public function __construct() {
if ( ! is_admin() ) {
return;
}
self::get_starter_templates_slug();
add_action( 'after_setup_theme', __CLASS__ . '::init_admin_settings', 99 );
}
/**
* Admin settings init
*/
public static function init_admin_settings() {
self::$menu_page_title = apply_filters( 'astra_menu_page_title', __( 'Adélie Options', 'astra' ) );
self::$page_title = apply_filters( 'astra_page_title', __( 'Astra', 'astra' ) );
self::$plugin_slug = self::get_theme_page_slug();
add_action( 'admin_enqueue_scripts', __CLASS__ . '::register_scripts' );
if ( ! is_customize_preview() ) {
// add css on the admin init action to resolve the error in the PWA service worker js.
add_action( 'admin_head', __CLASS__ . '::admin_submenu_css' );
}
$requested_page = isset( $_REQUEST['page'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['page'] ) ) : '';// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( strpos( $requested_page, self::$plugin_slug ) !== false ) {
add_action( 'admin_enqueue_scripts', __CLASS__ . '::styles_scripts' );
// Let extensions hook into saving.
do_action( 'astra_admin_settings_scripts' );
if ( defined( 'ASTRA_EXT_VER' ) && version_compare( ASTRA_EXT_VER, '2.5.0', '<' ) ) {
self::save_settings();
}
}
add_action( 'customize_controls_enqueue_scripts', __CLASS__ . '::customizer_scripts' );
add_action( 'admin_menu', __CLASS__ . '::add_admin_menu', 99 );
add_action( 'astra_menu_general_action', __CLASS__ . '::general_page' );
add_action( 'astra_header_right_section', __CLASS__ . '::top_header_right_section' );
add_action( 'astra_welcome_page_right_sidebar_content', __CLASS__ . '::astra_welcome_page_starter_sites_section', 10 );
add_action( 'astra_welcome_page_right_sidebar_content', __CLASS__ . '::external_important_links_section', 11 );
add_action( 'astra_welcome_page_content', __CLASS__ . '::astra_welcome_page_content' );
add_action( 'astra_welcome_page_content', __class__ . '::astra_available_plugins', 30 );
// AJAX.
add_action( 'wp_ajax_astra-sites-plugin-activate', __CLASS__ . '::required_plugin_activate' );
add_action( 'wp_ajax_astra-sites-plugin-deactivate', __CLASS__ . '::required_plugin_deactivate' );
add_action( 'admin_init', __CLASS__ . '::register_notices' );
add_action( 'astra_notice_before_markup', __CLASS__ . '::notice_assets' );
add_action( 'admin_init', __CLASS__ . '::minimum_addon_version_notice' );
}
/**
* Save All admin settings here
*/
public static function save_settings() {
// Only admins can save settings.
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
// Let extensions hook into saving.
do_action( 'astra_admin_settings_save' );
}
/**
* Theme options page Slug getter including White Label string.
*
* @since 2.1.0
* @return string Theme Options Page Slug.
*/
public static function get_theme_page_slug() {
return apply_filters( 'astra_theme_page_slug', self::$plugin_slug );
}
/**
* Ask Theme Rating
*
* @since 1.4.0
*/
public static function register_notices() {
// Return if white labeled.
if ( astra_is_white_labelled() ) {
return;
}
// Force Astra welcome notice on theme activation.
if ( current_user_can( 'install_plugins' ) && ! defined( 'ASTRA_SITES_NAME' ) && '1' == get_option( 'fresh_site' ) ) {
wp_enqueue_script( 'astra-admin-settings' );
$image_path = ASTRA_THEME_URI . 'inc/assets/images/polyguin.svg';
$ast_sites_notice_btn = self::astra_sites_notice_button();
if ( file_exists( WP_PLUGIN_DIR . '/astra-sites/astra-sites.php' ) && is_plugin_inactive( 'astra-sites/astra-sites.php' ) && is_plugin_inactive( 'astra-pro-sites/astra-pro-sites.php' ) ) {
$ast_sites_notice_btn['button_text'] = __( 'Get Started', 'astra' );
$ast_sites_notice_btn['class'] .= ' button button-primary button-hero';
} elseif ( ! file_exists( WP_PLUGIN_DIR . '/astra-sites/astra-sites.php' ) && is_plugin_inactive( 'astra-pro-sites/astra-pro-sites.php' ) ) {
$ast_sites_notice_btn['button_text'] = __( 'Get Started', 'astra' );
$ast_sites_notice_btn['class'] .= ' button button-primary button-hero';
// Astra Premium Sites - Active.
} else {
$ast_sites_notice_btn['class'] = ' button button-primary button-hero astra-notice-close';
}
$astra_sites_notice_args = array(
'id' => 'astra-sites-on-active',
'type' => 'info',
'message' => sprintf(
'<div class="notice-image">
<img src="%1$s" class="custom-logo" alt="Astra" itemprop="logo"></div>
<div class="notice-content">
<h2 class="notice-heading">
%2$s
</h2>
<p>%3$s</p>
<div class="astra-review-notice-container">
<a class="%4$s" %5$s %6$s %7$s %8$s %9$s %10$s> %11$s </a>
</div>
</div>',
$image_path,
__( 'Thank you for installing Adélie Linux WordPress Theme!', 'astra' ),
__( 'Did you know Astra comes with dozens of ready-to-use <a href="https://wpastra.com/starter-templates/?utm_source=install-notice">starter templates</a>? Install the Starter Templates plugin to get started.', 'astra' ),
esc_attr( $ast_sites_notice_btn['class'] ),
'href="' . astra_get_prop( $ast_sites_notice_btn, 'link', '' ) . '"',
'data-slug="' . astra_get_prop( $ast_sites_notice_btn, 'data_slug', '' ) . '"',
'data-init="' . astra_get_prop( $ast_sites_notice_btn, 'data_init', '' ) . '"',
'data-settings-link-text="' . astra_get_prop( $ast_sites_notice_btn, 'data_settings_link_text', '' ) . '"',
'data-settings-link="' . astra_get_prop( $ast_sites_notice_btn, 'data_settings_link', '' ) . '"',
'data-activating-text="' . astra_get_prop( $ast_sites_notice_btn, 'activating_text', '' ) . '"',
esc_html( $ast_sites_notice_btn['button_text'] )
),
'priority' => 5,
'display-with-other-notices' => false,
'show_if' => class_exists( 'Astra_Ext_White_Label_Markup' ) ? Astra_Ext_White_Label_Markup::show_branding() : true,
);
Astra_Notices::add_notice(
$astra_sites_notice_args
);
}
}
/**
* Display notice for minimun version for Astra addon.
*
* @since 2.0.0
*/
public static function minimum_addon_version_notice() {
if ( ! defined( 'ASTRA_EXT_VER' ) ) {
return;
}
if ( version_compare( ASTRA_EXT_VER, ASTRA_EXT_MIN_VER ) < 0 ) {
$message = sprintf(
/* translators: %1$1s: Theme Name, %2$2s: Minimum Required version of the addon */
__( 'Please update the %1$1s to version %2$2s or higher. Ignore if already updated.', 'astra' ),
astra_get_addon_name(),
ASTRA_EXT_MIN_VER
);
$min_version = get_user_meta( get_current_user_id(), 'ast-minimum-addon-version-notice-min-ver', true );
if ( ! $min_version ) {
update_user_meta( get_current_user_id(), 'ast-minimum-addon-version-notice-min-ver', ASTRA_EXT_MIN_VER );
}
if ( version_compare( $min_version, ASTRA_EXT_MIN_VER, '!=' ) ) {
delete_user_meta( get_current_user_id(), 'ast-minimum-addon-version-notice' );
update_user_meta( get_current_user_id(), 'ast-minimum-addon-version-notice-min-ver', ASTRA_EXT_MIN_VER );
}
$notice_args = array(
'id' => 'ast-minimum-addon-version-notice',
'type' => 'warning',
'message' => $message,
'show_if' => true,
'repeat-notice-after' => false,
'priority' => 18,
'display-with-other-notices' => true,
);
Astra_Notices::add_notice( $notice_args );
}
}
/**
* Enqueue Astra Notices CSS.
*
* @since 2.0.0
*
* @return void
*/
public static function notice_assets() {
if ( is_rtl() ) {
wp_enqueue_style( 'astra-notices-rtl', ASTRA_THEME_URI . 'inc/assets/css/astra-notices-rtl.css', array(), ASTRA_THEME_VERSION );
} else {
wp_enqueue_style( 'astra-notices', ASTRA_THEME_URI . 'inc/assets/css/astra-notices.css', array(), ASTRA_THEME_VERSION );
}
}
/**
* Render button for Astra Site notices
*
* @since 1.6.5
* @return array $ast_sites_notice_btn Rendered button
*/
public static function astra_sites_notice_button() {
$ast_sites_notice_btn = array();
// Any of the Starter Templtes plugin - Active.
if ( is_plugin_active( 'astra-pro-sites/astra-pro-sites.php' ) || is_plugin_active( 'astra-sites/astra-sites.php' ) ) {
$ast_sites_notice_btn['class'] = 'active';
$ast_sites_notice_btn['button_text'] = __( 'See Library »', 'astra' );
$ast_sites_notice_btn['link'] = admin_url( 'themes.php?page=' . self::$starter_templates_slug );
return $ast_sites_notice_btn;
}
// Starter Templates PRO Plugin - Installed but Inactive.
if ( file_exists( WP_PLUGIN_DIR . '/astra-pro-sites/astra-pro-sites.php' ) && is_plugin_inactive( 'astra-pro-sites/astra-pro-sites.php' ) ) {
$ast_sites_notice_btn['class'] = 'astra-activate-recommended-plugin';
$ast_sites_notice_btn['button_text'] = __( 'Activate Importer Plugin', 'astra' );
$ast_sites_notice_btn['data_slug'] = 'astra-pro-sites';
$ast_sites_notice_btn['data_init'] = '/astra-pro-sites/astra-pro-sites.php';
$ast_sites_notice_btn['data_settings_link'] = admin_url( 'themes.php?page=' . self::$starter_templates_slug );
$ast_sites_notice_btn['data_settings_link_text'] = __( 'See Library »', 'astra' );
$ast_sites_notice_btn['activating_text'] = __( 'Activating Importer Plugin ', 'astra' ) . '…';
return $ast_sites_notice_btn;
}
// Starter Templates FREE Plugin - Installed but Inactive.
if ( file_exists( WP_PLUGIN_DIR . '/astra-sites/astra-sites.php' ) && is_plugin_inactive( 'astra-sites/astra-sites.php' ) ) {
$ast_sites_notice_btn['class'] = 'astra-activate-recommended-plugin';
$ast_sites_notice_btn['button_text'] = __( 'Activate Importer Plugin', 'astra' );
$ast_sites_notice_btn['data_slug'] = 'astra-sites';
$ast_sites_notice_btn['data_init'] = '/astra-sites/astra-sites.php';
$ast_sites_notice_btn['data_settings_link'] = admin_url( 'themes.php?page=' . self::$starter_templates_slug );
$ast_sites_notice_btn['data_settings_link_text'] = __( 'See Library »', 'astra' );
$ast_sites_notice_btn['activating_text'] = __( 'Activating Importer Plugin ', 'astra' ) . '…';
return $ast_sites_notice_btn;
}
// Any of the Starter Templates plugin not available.
if ( ! file_exists( WP_PLUGIN_DIR . '/astra-sites/astra-sites.php' ) || ! file_exists( WP_PLUGIN_DIR . '/astra-pro-sites/astra-pro-sites.php' ) ) {
$ast_sites_notice_btn['class'] = 'astra-install-recommended-plugin';
$ast_sites_notice_btn['button_text'] = __( 'Install Importer Plugin', 'astra' );
$ast_sites_notice_btn['data_slug'] = 'astra-sites';
$ast_sites_notice_btn['data_init'] = '/astra-sites/astra-sites.php';
$ast_sites_notice_btn['data_settings_link'] = admin_url( 'themes.php?page=' . self::$starter_templates_slug );
$ast_sites_notice_btn['data_settings_link_text'] = __( 'See Library »', 'astra' );
$ast_sites_notice_btn['detail_link_class'] = 'plugin-detail thickbox open-plugin-details-modal astra-starter-sites-detail-link';
$ast_sites_notice_btn['detail_link'] = network_admin_url( 'plugin-install.php?tab=plugin-information&plugin=astra-sites&TB_iframe=true&width=772&height=400' );
$ast_sites_notice_btn['detail_link_text'] = __( 'Details »', 'astra' );
return $ast_sites_notice_btn;
}
$ast_sites_notice_btn['class'] = 'active';
$ast_sites_notice_btn['button_text'] = __( 'See Library »', 'astra' );
$ast_sites_notice_btn['link'] = admin_url( 'themes.php?page=' . self::$starter_templates_slug );
return $ast_sites_notice_btn;
}
/**
* Check if installed Starter Sites plugin is new.
*
* @since 2.3.2
*/
public static function get_starter_templates_slug() {
if ( defined( 'ASTRA_PRO_SITES_VER' ) && version_compare( ASTRA_PRO_SITES_VER, '2.0.0', '>=' ) ) {
self::$starter_templates_slug = 'starter-templates';
}
if ( defined( 'ASTRA_SITES_VER' ) && version_compare( ASTRA_SITES_VER, '2.0.0', '>=' ) ) {
self::$starter_templates_slug = 'starter-templates';
}
}
/**
* Load the scripts and styles in the customizer controls.
*
* @since 1.2.1
*/
public static function customizer_scripts() {
$color_palettes = wp_json_encode( astra_color_palette() );
wp_add_inline_script( 'wp-color-picker', 'jQuery.wp.wpColorPicker.prototype.options.palettes = ' . $color_palettes . ';' );
}
/**
* Register admin scripts.
*
* @param String $hook Screen name where the hook is fired.
* @return void
*/
public static function register_scripts( $hook ) {
if ( in_array( $hook, array( 'post.php', 'post-new.php' ) ) ) {
$post_types = get_post_types( array( 'public' => true ) );
$screen = get_current_screen();
$post_type = $screen->id;
if ( in_array( $post_type, (array) $post_types ) ) {
echo '<style class="astra-meta-box-style">
.block-editor-page #side-sortables #astra_settings_meta_box select { min-width: 84%; padding: 3px 24px 3px 8px; height: 20px; }
.block-editor-page #normal-sortables #astra_settings_meta_box select { min-width: 200px; }
.block-editor-page .edit-post-meta-boxes-area #poststuff #astra_settings_meta_box h2.hndle { border-bottom: 0; }
.block-editor-page #astra_settings_meta_box .components-base-control__field, .block-editor-page #astra_settings_meta_box .block-editor-page .transparent-header-wrapper, .block-editor-page #astra_settings_meta_box .adv-header-wrapper, .block-editor-page #astra_settings_meta_box .stick-header-wrapper, .block-editor-page #astra_settings_meta_box .disable-section-meta div { margin-bottom: 8px; }
.block-editor-page #astra_settings_meta_box .disable-section-meta div label { vertical-align: inherit; }
.block-editor-page #astra_settings_meta_box .post-attributes-label-wrapper { margin-bottom: 4px; }
#side-sortables #astra_settings_meta_box select { min-width: 100%; }
#normal-sortables #astra_settings_meta_box select { min-width: 200px; }
</style>';
}
}
/* Add CSS for the Submenu for BSF plugins added in Appearance Menu */
if ( ! is_customize_preview() ) {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
wp_register_script( 'astra-admin-settings', ASTRA_THEME_URI . 'inc/assets/js/astra-admin-menu-settings.js', array( 'jquery', 'wp-util', 'updates' ), ASTRA_THEME_VERSION, false );
$localize = array(
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
'btnActivating' => __( 'Activating Importer Plugin ', 'astra' ) . '…',
'astraSitesLink' => admin_url( 'themes.php?page=' ),
'astraSitesLinkTitle' => __( 'See Library »', 'astra' ),
'recommendedPluiginActivatingText' => __( 'Activating', 'astra' ) . '…',
'recommendedPluiginDeactivatingText' => __( 'Deactivating', 'astra' ) . '…',
'recommendedPluiginActivateText' => __( 'Activate', 'astra' ),
'recommendedPluiginDeactivateText' => __( 'Deactivate', 'astra' ),
'recommendedPluiginSettingsText' => __( 'Settings', 'astra' ),
'astraPluginManagerNonce' => wp_create_nonce( 'astra-recommended-plugin-nonce' ),
);
wp_localize_script( 'astra-admin-settings', 'astra', apply_filters( 'astra_theme_js_localize', $localize ) );
}
}
/**
* Enqueues the needed CSS/JS for the builder's admin settings page.
*
* @since 1.0
*/
public static function styles_scripts() {
// Styles.
if ( is_rtl() ) {
wp_enqueue_style( 'astra-admin-settings-rtl', ASTRA_THEME_URI . 'inc/assets/css/astra-admin-menu-settings-rtl.css', array(), ASTRA_THEME_VERSION );
} else {
wp_enqueue_style( 'astra-admin-settings', ASTRA_THEME_URI . 'inc/assets/css/astra-admin-menu-settings.css', array(), ASTRA_THEME_VERSION );
}
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
wp_register_script( 'astra-admin-settings', ASTRA_THEME_URI . 'inc/assets/js/astra-admin-menu-settings.js', array( 'jquery', 'wp-util', 'updates' ), ASTRA_THEME_VERSION, false );
$localize = array(
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
'btnActivating' => __( 'Activating Importer Plugin ', 'astra' ) . '…',
'astraSitesLink' => admin_url( 'themes.php?page=' ),
'astraSitesLinkTitle' => __( 'See Library »', 'astra' ),
'recommendedPluiginActivatingText' => __( 'Activating', 'astra' ) . '…',
'recommendedPluiginDeactivatingText' => __( 'Deactivating', 'astra' ) . '…',
'recommendedPluiginActivateText' => __( 'Activate', 'astra' ),
'recommendedPluiginDeactivateText' => __( 'Deactivate', 'astra' ),
'recommendedPluiginSettingsText' => __( 'Settings', 'astra' ),
'astraPluginManagerNonce' => wp_create_nonce( 'astra-recommended-plugin-nonce' ),
'ajax_nonce' => wp_create_nonce( 'astra-builder-module-nonce' ),
'old_header_footer' => __( 'Use Old Header/Footer', 'astra' ),
'migrate_to_builder' => __( 'Use New Header/Footer Builder', 'astra' ),
);
wp_localize_script( 'astra-admin-settings', 'astra', apply_filters( 'astra_theme_js_localize', $localize ) );
// Script.
wp_enqueue_script( 'astra-admin-settings' );
if ( ! file_exists( WP_PLUGIN_DIR . '/astra-sites/astra-sites.php' ) && is_plugin_inactive( 'astra-pro-sites/astra-pro-sites.php' ) ) {
// For starter site plugin popup detail "Details »" on Astra Options page.
wp_enqueue_script( 'plugin-install' );
wp_enqueue_script( 'thickbox' );
wp_enqueue_style( 'thickbox' );
}
}
/**
* Get and return page URL
*
* @param string $menu_slug Menu name.
* @since 1.0
* @return string page url
*/
public static function get_page_url( $menu_slug ) {
$parent_page = self::$default_menu_position;
if ( strpos( $parent_page, '?' ) !== false ) {
$query_var = '&page=' . self::$plugin_slug;
} else {
$query_var = '?page=' . self::$plugin_slug;
}
$parent_page_url = admin_url( $parent_page . $query_var );
$url = $parent_page_url . '&action=' . $menu_slug;
return esc_url( $url );
}
/**
* Add main menu
*
* @since 1.0
*/
public static function add_admin_menu() {
$parent_page = self::$default_menu_position;
$page_title = self::$menu_page_title;
$capability = 'manage_options';
$page_menu_slug = self::$plugin_slug;
$page_menu_func = __CLASS__ . '::menu_callback';
if ( apply_filters( 'astra_dashboard_admin_menu', true ) ) {
add_theme_page( $page_title, $page_title, $capability, $page_menu_slug, $page_menu_func );
} else {
do_action( 'asta_register_admin_menu', $parent_page, $page_title, $capability, $page_menu_slug, $page_menu_func );
}
}
/**
* Menu callback
*
* @since 1.0
*/
public static function menu_callback() {
$current_slug = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : self::$current_slug; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$current_slug = str_replace( '-', '_', $current_slug );
$ast_icon = apply_filters( 'astra_page_top_icon', true );
$ast_visit_site_url = apply_filters( 'astra_site_url', 'https://www.adelielinux.org/' );
$ast_wrapper_class = apply_filters( 'astra_welcome_wrapper_class', array( $current_slug ) );
?>
<div class="ast-menu-page-wrapper wrap ast-clear <?php echo esc_attr( implode( ' ', $ast_wrapper_class ) ); ?>">
<div class="ast-theme-page-header">
<div class="ast-container ast-flex">
<div class="ast-theme-title">
<a href="<?php echo esc_url( $ast_visit_site_url ); ?>" target="_blank" rel="noopener" >
<?php if ( $ast_icon ) { ?>
<img src="<?php echo esc_url( ASTRA_THEME_URI . 'inc/assets/images/gen_polylogo_black_color_x200.png' ); ?>" class="ast-theme-icon" alt="<?php echo esc_attr( self::$page_title ); ?> " >
<span class="astra-theme-version"><?php echo esc_html( ASTRA_THEME_VERSION ); ?></span>
<?php } ?>
<?php do_action( 'astra_welcome_page_header_title' ); ?>
</a>
</div>
<?php do_action( 'astra_header_right_section' ); ?>
</div>
</div>
<?php do_action( 'astra_menu_' . esc_attr( $current_slug ) . '_action' ); ?>
</div>
<?php
}
/**
* Include general page
*
* @since 1.0
*/
public static function general_page() {
require_once ASTRA_THEME_DIR . 'inc/core/view-general.php';// phpcs:ignore WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
}
/**
* External links through Astra Options page.
*
* @since 3.4.0
*/
public static function external_important_links_section() {
if ( astra_is_white_labelled() ) {
return;
}
?>
<div class="postbox">
<h2 class="hndle ast-normal-cursor">
<span><?php echo esc_html( apply_filters( 'astra_other_links_postbox_title', __( 'Important Links', 'astra' ) ) ); ?></span>
</h2>
<div class="inside">
<ul class="ast-other-links-list">
<li>
<span class="dashicons dashicons-admin-home"></span>
<a href="https://www.adelielinux.org/" target="_blank" rel="noopener"> <?php esc_html_e( 'Adélie Linux Homepage', 'astra' ); ?> </a>
</li>
<li>
<span class="dashicons dashicons-book"></span>
<a href="https://blog.adelielinux.org/" target="_blank" rel="noopener"> <?php esc_html_e( 'Adélie Linux Blog', 'astra' ); ?> </a>
</li>
<li>
<span class="dashicons dashicons-groups"></span>
<a href="https://git.adelielinux.org/adelie/blog-ng/" target="_blank" rel="noopener"> <?php esc_html_e( 'Theme Source Code', 'astra' ); ?> </a>
</li>
<li>
<span class="dashicons dashicons-star-filled"></span>
<a href="https://www.adelielinux.org/contribute/donate.html" target="_blank" rel="noopener"> <?php esc_html_e( 'Donate', 'astra' ); ?> </a>
</li>
</ul>
</div>
</div>
<?php
}
/**
* Starter Templates Post Box Title.
*
* @since 3.4.0
*
* @return string Starter Templates Plugin name.
*/
public static function get_starter_templates_title() {
$astra_sites_name = __( '150+ Starter Templates', 'astra' );
if ( method_exists( 'Astra_Ext_White_Label_Markup', 'get_whitelabel_string' ) ) {
$white_labelled_astra_sites_name = Astra_Ext_White_Label_Markup::get_whitelabel_string( 'astra-sites', 'name' );
if ( ! empty( $white_labelled_astra_sites_name ) ) {
$astra_sites_name = $white_labelled_astra_sites_name;
}
}
return $astra_sites_name;
}
/**
* Include Welcome page right starter sites content
*
* @since 1.2.4
*/
public static function astra_welcome_page_starter_sites_section() {
if ( astra_is_white_labelled() ) {
return;
}
}
/**
* Include Welcome page content
*
* @since 1.2.4
*/
public static function astra_welcome_page_content() {
$astra_addon_tagline = apply_filters( 'astra_addon_list_tagline', __( 'More Options Available with Astra Pro!', 'astra' ) );
// Quick settings.
$quick_settings = apply_filters(
'astra_quick_settings',
array(
'header' => array(
'title' => __( 'Header Options', 'astra' ),
'dashicon' => 'dashicons-align-center',
'quick_url' => admin_url( 'customize.php?autofocus[panel]=panel-header-group' ),
),
'logo-favicon' => array(
'title' => __( 'Upload Logo', 'astra' ),
'dashicon' => 'dashicons-format-image',
'quick_url' => admin_url( 'customize.php?autofocus[control]=custom_logo' ),
),
'footer' => array(
'title' => __( 'Footer Settings', 'astra' ),
'dashicon' => 'dashicons-align-wide',
'quick_url' => admin_url( 'customize.php?autofocus[section]=section-footer-group' ),
),
'colors' => array(
'title' => __( 'Set Colors', 'astra' ),
'dashicon' => 'dashicons-admin-customizer',
'quick_url' => admin_url( 'customize.php?autofocus[section]=section-colors-background' ),
),
'layout' => array(
'title' => __( 'Layout Options', 'astra' ),
'dashicon' => 'dashicons-layout',
'quick_url' => admin_url( 'customize.php?autofocus[section]=section-container-layout' ),
),
'typography' => array(
'title' => __( 'Customize Fonts', 'astra' ),
'dashicon' => 'dashicons-editor-textcolor',
'quick_url' => admin_url( 'customize.php?autofocus[section]=section-typography' ),
),
'blog-layout' => array(
'title' => __( 'Blog Layouts', 'astra' ),
'dashicon' => 'dashicons-welcome-write-blog',
'quick_url' => admin_url( 'customize.php?autofocus[section]=section-blog-group' ),
),
'sidebars' => array(
'title' => __( 'Sidebar Options', 'astra' ),
'dashicon' => 'dashicons-align-left',
'quick_url' => admin_url( 'customize.php?autofocus[section]=section-sidebars' ),
),
)
);
$extensions = apply_filters(
'astra_addon_list',
array(
)
);
?>
<div class="postbox">
<h2 class="hndle ast-normal-cursor"><span><?php esc_html_e( 'Links to Customizer Settings:', 'astra' ); ?></span></h2>
<div class="ast-quick-setting-section">
<?php
if ( ! empty( $quick_settings ) ) :
?>
<div class="ast-quick-links">
<ul class="ast-flex">
<?php
foreach ( (array) $quick_settings as $key => $link ) {
echo '<li class="' . esc_attr( $key ) . '"><span class="dashicons ' . esc_attr( $link['dashicon'] ) . '"></span><a class="ast-quick-setting-title" href="' . esc_url( $link['quick_url'] ) . '" target="_blank" rel="noopener">' . esc_html( $link['title'] ) . '</a></li>';
}
?>
</ul>
</div>
<?php endif; ?>
</div>
</div>
<?php
}
/**
* Include Welcome page content
*
* @since 1.2.4
*/
public static function astra_available_plugins() {
// Return if white labeled.
if ( astra_is_white_labelled() ) {
return;
}
}
/**
* Build plugin's page URL on WordPress.org
* https://wordpress.org/plugins/{plugin-slug}
*
* @since 1.6.9
* @param String $slug plugin slug.
* @return String Plugin URL on WordPress.org
*/
private static function build_worg_plugin_link( $slug ) {
return esc_url( trailingslashit( 'https://wordpress.org/plugins/' . $slug ) );
}
/**
* Required Plugin Activate
*
* @since 1.2.4
*/
public static function required_plugin_activate() {
$nonce = ( isset( $_POST['nonce'] ) ) ? sanitize_key( $_POST['nonce'] ) : '';
if ( false === wp_verify_nonce( $nonce, 'astra-recommended-plugin-nonce' ) ) {
wp_send_json_error( esc_html_e( 'WordPress Nonce not validated.', 'astra' ) );
}
if ( ! current_user_can( 'install_plugins' ) || ! isset( $_POST['init'] ) || ! sanitize_text_field( wp_unslash( $_POST['init'] ) ) ) {
wp_send_json_error(
array(
'success' => false,
'message' => __( 'No plugin specified', 'astra' ),
)
);
}
$plugin_init = ( isset( $_POST['init'] ) ) ? sanitize_text_field( wp_unslash( $_POST['init'] ) ) : '';
$activate = activate_plugin( $plugin_init, '', false, true );
if ( '/astra-pro-sites/astra-pro-sites.php' === $plugin_init || '/astra-sites/astra-sites.php' === $plugin_init ) {
self::get_starter_templates_slug();
}
if ( is_wp_error( $activate ) ) {
wp_send_json_error(
array(
'success' => false,
'message' => $activate->get_error_message(),
'starter_template_slug' => self::$starter_templates_slug,
)
);
}
wp_send_json_success(
array(
'success' => true,
'message' => __( 'Plugin Successfully Activated', 'astra' ),
'starter_template_slug' => self::$starter_templates_slug,
)
);
}
/**
* Required Plugin Activate
*
* @since 1.2.4
*/
public static function required_plugin_deactivate() {
$nonce = ( isset( $_POST['nonce'] ) ) ? sanitize_key( $_POST['nonce'] ) : '';
if ( false === wp_verify_nonce( $nonce, 'astra-recommended-plugin-nonce' ) ) {
wp_send_json_error( esc_html_e( 'WordPress Nonce not validated.', 'astra' ) );
}
if ( ! current_user_can( 'install_plugins' ) || ! isset( $_POST['init'] ) || ! sanitize_text_field( wp_unslash( $_POST['init'] ) ) ) {
wp_send_json_error(
array(
'success' => false,
'message' => __( 'No plugin specified', 'astra' ),
)
);
}
$plugin_init = ( isset( $_POST['init'] ) ) ? sanitize_text_field( wp_unslash( $_POST['init'] ) ) : '';
$deactivate = deactivate_plugins( $plugin_init, '', false );
if ( is_wp_error( $deactivate ) ) {
wp_send_json_error(
array(
'success' => false,
'message' => $deactivate->get_error_message(),
)
);
}
wp_send_json_success(
array(
'success' => true,
'message' => __( 'Plugin Successfully Deactivated', 'astra' ),
)
);
}
/**
* Astra Header Right Section Links
*
* @since 1.2.4
*/
public static function top_header_right_section() {
if ( ! empty( $top_links ) ) {
?>
<div class="ast-top-links">
<ul>
<?php
foreach ( (array) $top_links as $key => $info ) {
/* translators: %1$s: Top Link URL wrapper, %2$s: Top Link URL, %3$s: Top Link URL target attribute */
printf(
'<li><%1$s %2$s %3$s > %4$s </%1$s>',
isset( $info['url'] ) ? 'a' : 'span',
isset( $info['url'] ) ? 'href="' . esc_url( $info['url'] ) . '"' : '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
isset( $info['url'] ) ? 'target="_blank" rel="noopener"' : '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
$info['title']// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
);
}
?>
</ul>
</div>
<?php
}
}
/**
* Add custom CSS for admin area sub menu icons.
*
* @since 2.5.4
*/
public static function admin_submenu_css() {
echo '<style class="astra-menu-appearance-style">
#menu-appearance a[href^="edit.php?post_type=astra-"]:before,
#menu-appearance a[href^="themes.php?page=astra-"]:before,
#menu-appearance a[href^="edit.php?post_type=astra_"]:before,
#menu-appearance a[href^="edit-tags.php?taxonomy=bsf_custom_fonts"]:before,
#menu-appearance a[href^="themes.php?page=custom-typekit-fonts"]:before,
#menu-appearance a[href^="edit.php?post_type=bsf-sidebar"]:before {
content: "\21B3";
margin-right: 0.5em;
opacity: 0.5;
}
</style>';
}
}
new Astra_Admin_Settings();
}