447 lines
15 KiB
PHP
447 lines
15 KiB
PHP
<?php
|
|
defined('ABSPATH') or die();
|
|
|
|
define('ELESSI_ADMIN_PATH', ELESSI_THEME_PATH . '/admin/');
|
|
define('ELESSI_ADMIN_DIR_URI', ELESSI_THEME_URI . '/admin/');
|
|
defined('ELESSI_ADMIN_PAGE_SLUG_OLD') or define('ELESSI_ADMIN_PAGE_SLUG_OLD', 'optionsframework');
|
|
defined('NASA_ADMIN_PAGE_SLUG') or define('NASA_ADMIN_PAGE_SLUG', 'nasa-theme-options');
|
|
defined('ELESSI_REPO') or define('ELESSI_REPO', 'https://raw.githubusercontent.com/nasathemes/extra-installer/main');
|
|
|
|
/**
|
|
*
|
|
* @return string
|
|
*/
|
|
function elessi_latest_nasa_core_version() {
|
|
return '6.3.5';
|
|
}
|
|
|
|
/**
|
|
* List Plugins
|
|
*/
|
|
function elessi_list_required_plugins() {
|
|
$imported = 'imported' === get_option('nasatheme_imported', '') ? true : false;
|
|
|
|
$plugins = array();
|
|
|
|
/**
|
|
* Required Plugins
|
|
*/
|
|
$plugins[] = array(
|
|
'name' => 'WooCommerce',
|
|
'slug' => 'woocommerce',
|
|
'required' => true,
|
|
'auto' => true
|
|
);
|
|
|
|
$plugins[] = array(
|
|
'name' => 'Nasa Core',
|
|
'slug' => 'nasa-core',
|
|
'source' => esc_url(ELESSI_REPO . '/plgs/nasa-core.zip'),
|
|
'required' => true,
|
|
'version' => elessi_latest_nasa_core_version(),
|
|
'auto' => true
|
|
);
|
|
|
|
if (!$imported || (!NASA_ELEMENTOR_ACTIVE && !NASA_WPB_ACTIVE)) {
|
|
$plugins[] = array(
|
|
'name' => 'WPBakery Page Builder',
|
|
'slug' => 'js_composer',
|
|
'source' => esc_url(ELESSI_REPO . '/plgs/js_composer.zip'),
|
|
'version' => '8.3',
|
|
'auto' => true,
|
|
'unchecked' => true,
|
|
'buider' => true
|
|
);
|
|
|
|
$plugins[] = array(
|
|
'name' => 'Elementor',
|
|
'slug' => 'elementor',
|
|
'auto' => true,
|
|
'unchecked' => true,
|
|
'buider' => true
|
|
);
|
|
|
|
$plugins[] = array(
|
|
'name' => 'Ultimate Addons for Elementor Lite (Formerly Elementor Header & Footer Builder)',
|
|
'slug' => 'header-footer-elementor',
|
|
'auto' => true,
|
|
'unchecked' => true,
|
|
'parent' => 'elementor'
|
|
);
|
|
} else {
|
|
if (NASA_ELEMENTOR_ACTIVE) {
|
|
$plugins[] = array(
|
|
'name' => 'Elementor',
|
|
'slug' => 'elementor',
|
|
'auto' => true,
|
|
'unchecked' => true,
|
|
'buider' => true
|
|
);
|
|
|
|
$plugins[] = array(
|
|
'name' => 'Ultimate Addons for Elementor Lite (Formerly Elementor Header & Footer Builder)',
|
|
'slug' => 'header-footer-elementor',
|
|
'auto' => true,
|
|
'unchecked' => true,
|
|
'parent' => 'elementor'
|
|
);
|
|
}
|
|
|
|
if (NASA_WPB_ACTIVE) {
|
|
$plugins[] = array(
|
|
'name' => 'WPBakery Page Builder',
|
|
'slug' => 'js_composer',
|
|
'source' => esc_url(ELESSI_REPO . '/plgs/js_composer.zip'),
|
|
'version' => '8.3',
|
|
'auto' => true,
|
|
'unchecked' => true,
|
|
'buider' => true
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Optional plugins
|
|
*/
|
|
$plugins[] = array(
|
|
'name' => 'YITH WooCommerce Compare',
|
|
'slug' => 'yith-woocommerce-compare',
|
|
'auto' => true
|
|
);
|
|
|
|
/* $plugins[] = array(
|
|
'name' => esc_html__('Contact Form 7', 'elessi-theme'),
|
|
'slug' => 'contact-form-7',
|
|
'auto' => true
|
|
); */
|
|
|
|
$plugins[] = array(
|
|
'name' => 'Contact Form 7',
|
|
'slug' => 'contact-form-7',
|
|
'source' => esc_url(ELESSI_REPO . '/plgs/contact-form-7.zip'),
|
|
'version' => '6.6.4',
|
|
'auto' => true
|
|
);
|
|
|
|
$plugins[] = array(
|
|
'name' => 'Smash Balloon Instagram Feed',
|
|
'slug' => 'instagram-feed',
|
|
'auto' => true
|
|
);
|
|
|
|
$plugins[] = array(
|
|
'name' => 'Revolution Slider',
|
|
'slug' => 'revslider',
|
|
'source' => esc_url(ELESSI_REPO . '/plgs/revslider.zip'),
|
|
'version' => '6.7.30',
|
|
'auto' => true
|
|
);
|
|
|
|
return $plugins;
|
|
}
|
|
|
|
/**
|
|
* Theme check Update Nasa Core
|
|
*/
|
|
add_action('admin_init', 'elessi_check_update_core');
|
|
function elessi_check_update_core() {
|
|
if (isset($_REQUEST['page']) && in_array($_REQUEST['page'], array('nasa-install-demo-data', 'install-required-plugins'))) {
|
|
return;
|
|
}
|
|
|
|
add_action('admin_footer', 'elessi_footer_admin_update_core');
|
|
}
|
|
|
|
/**
|
|
* Template footer admin update core
|
|
*
|
|
* @param type $text
|
|
* @return type
|
|
*/
|
|
function elessi_footer_admin_update_core() {
|
|
if (apply_filters('nasa_notices_need_update_core', true)) {
|
|
include ELESSI_ADMIN_PATH . 'ns-need-update-core.php';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Required Plugins use in theme
|
|
*
|
|
* In Admin
|
|
*/
|
|
require_once ELESSI_ADMIN_PATH . 'classes/class-tgm-plugin-activation.php';
|
|
add_action('tgmpa_register', 'elessi_register_required_plugins');
|
|
function elessi_register_required_plugins() {
|
|
$plugins = elessi_list_required_plugins();
|
|
$config = array(
|
|
'domain' => 'elessi-theme', // Text domain - likely want to be the same as your theme.
|
|
'default_path' => '', // Default absolute path to pre-packaged plugins
|
|
'parent_slug' => NASA_ADMIN_PAGE_SLUG, // Default parent menu slug
|
|
'menu' => 'install-required-plugins', // Menu slug
|
|
'has_notices' => true, // Show admin notices or not
|
|
'is_automatic' => false, // Automatically activate plugins after installation or not
|
|
'message' => '', // Message to output right before the plugins table
|
|
);
|
|
|
|
tgmpa($plugins, $config);
|
|
}
|
|
|
|
/**
|
|
* Update VC
|
|
*/
|
|
if (function_exists('vc_set_as_theme')) {
|
|
add_action('vc_before_init', 'elessi_vc_set_as_theme');
|
|
function elessi_vc_set_as_theme() {
|
|
vc_set_as_theme();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Title : SMOF
|
|
* Description : Slightly Modified Options Framework
|
|
* Version : 1.5.2
|
|
* Author : Syamil MJ
|
|
* Author URI : http://aquagraphite.com
|
|
* License : GPLv3 - http://www.gnu.org/copyleft/gpl.html
|
|
|
|
* define( 'SMOF_VERSION', '1.5.2' );
|
|
* Definitions
|
|
*
|
|
* @since 1.4.0
|
|
*/
|
|
$smof_output = '';
|
|
if (function_exists('wp_get_theme')) {
|
|
if (is_child_theme()) {
|
|
$temp_obj = wp_get_theme();
|
|
$theme_obj = wp_get_theme($temp_obj->get('Template'));
|
|
} else {
|
|
$theme_obj = wp_get_theme();
|
|
}
|
|
|
|
$theme_name = $theme_obj->get('Name');
|
|
} else {
|
|
$theme_data = wp_get_theme(ELESSI_THEME_PATH . '/style.css');
|
|
$theme_name = $theme_data['Name'];
|
|
}
|
|
|
|
define('ELESSI_ADMIN_THEMENAME', $theme_name);
|
|
// define('ELESSI_ADMIN_SUPPORT_FORUMS', 'https://elessi.nasatheme.com/documentation/');
|
|
define('ELESSI_ADMIN_DOCS', 'https://elessi-docs.nasatheme.com');
|
|
define('ELESSI_ADMIN_INSTALL', 'https://nasatheme.com/wordpress-theme-installation-service');
|
|
define('ELESSI_ADMIN_CTSV', 'https://nasatheme.com/wordpress-theme-customization-service');
|
|
define('ELESSI_ADMIN_BACKUPS', 'backups');
|
|
|
|
/**
|
|
* Functions Load
|
|
*
|
|
* @package WordPress
|
|
* @subpackage SMOF
|
|
* @since 1.4.0
|
|
* @author Syamil MJ
|
|
*/
|
|
require_once ELESSI_ADMIN_PATH . 'dynamic-style.php';
|
|
require_once ELESSI_ADMIN_PATH . 'functions/functions.interface.php';
|
|
require_once ELESSI_ADMIN_PATH . 'functions/functions.options.php';
|
|
require_once ELESSI_ADMIN_PATH . 'functions/functions.admin.php';
|
|
|
|
add_action('admin_head', 'optionsframework_admin_message');
|
|
add_action('admin_init', 'optionsframework_admin_init_redirect');
|
|
add_action('admin_init', 'optionsframework_admin_init');
|
|
add_action('admin_menu', 'optionsframework_add_admin');
|
|
|
|
/**
|
|
* Required Files
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
require_once ELESSI_ADMIN_PATH . 'classes/class.options_machine.php';
|
|
|
|
/**
|
|
* AJAX Saving Options
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
add_action('wp_ajax_of_ajax_post_action', 'of_ajax_callback');
|
|
|
|
/**
|
|
* IMPORTER
|
|
*/
|
|
require_once ELESSI_ADMIN_PATH . 'importer/nasa-importer.php';
|
|
|
|
/**
|
|
* Images in review product
|
|
*/
|
|
add_action('add_meta_boxes_comment', 'elessi_admin_review_images_comment', 10, 1);
|
|
function elessi_admin_review_images_comment($comment) {
|
|
global $nasa_opt;
|
|
|
|
if (!isset($nasa_opt['comment_media']) || !$nasa_opt['comment_media']) {
|
|
return;
|
|
}
|
|
|
|
$attachment_ids = get_comment_meta($comment->comment_ID, 'nasa_review_images', true);
|
|
|
|
if (!empty($attachment_ids)) {
|
|
$attachment_ids = array_filter( $attachment_ids, function( $attachment_id ) {
|
|
$attachment = get_post( $attachment_id );
|
|
if ( $attachment ) {
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
}
|
|
|
|
?>
|
|
<div class="stuffbox">
|
|
<div class="inside">
|
|
<h2><?php echo esc_html__('Review Product By Images', 'elessi-theme'); ?></h2>
|
|
<div class="nasa-wrap-review-thumb nasa-flex flex-wrap" id="nasa-wrap-review-<?php echo esc_attr($comment->comment_ID); ?>">
|
|
<input type="hidden" name="data-medias-id" value="<?php echo !empty($attachment_ids) ? esc_attr(json_encode($attachment_ids)) : '[]' ?>" />
|
|
<?php if (!empty($attachment_ids)) {
|
|
foreach ($attachment_ids as $attachment_id) {
|
|
$media = false;
|
|
$type_file = get_post_mime_type($attachment_id);
|
|
$url = wp_get_attachment_url($attachment_id, 'full');
|
|
|
|
if ($url) {
|
|
$media = in_array($type_file, array("image/jpg", "image/jpeg", "image/bmp", "image/png", "image/gif", "image/webp")) ?
|
|
wp_get_attachment_image($attachment_id, apply_filters('nasa_reivew_product_thumbnail_size', 'thumbnail'), false, array('class' => 'skip-lazy attachment-thumbnail size-thumbnail')) :
|
|
'<video controls autoplay loop><source src="' . $url . '" type="' . $type_file . '" /></video>';
|
|
}
|
|
?>
|
|
|
|
<div class="nasa-item-review-thumb">
|
|
<?php echo $media ? apply_filters('nasa_reivew_product_thumbnail_html', $media, $attachment_id) : ''; ?>
|
|
<a href="javascript:void(0);" data-id_media="<?php echo esc_attr($attachment_id); ?>" class="item-review-thumb-remove button-primary"><svg class="ns-df-cart-svg" width="25" height="25" stroke-width="2" viewBox="0 0 24 24" fill="currentColor"><path d="M12 6V18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" /><path d="M6 12H18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" /></svg></a>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
?>
|
|
|
|
<a href="javascript:void(0);" class="button media_upload_button">
|
|
<?php echo esc_html__('Upload','elessi-theme'); ?>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* update_nasa_review_images_meta
|
|
*/
|
|
add_action('edit_comment', 'update_nasa_review_images_meta');
|
|
function update_nasa_review_images_meta($comment_id) {
|
|
$new_nasa_review_media = (isset($_POST['data-medias-id']) && $_POST['data-medias-id']) ? $_POST['data-medias-id'] : null;
|
|
|
|
if ($new_nasa_review_media != null && $new_nasa_review_media !='') {
|
|
$new_nasa_review_media = json_decode($new_nasa_review_media);
|
|
$attachment_ids = get_comment_meta($comment_id, 'nasa_review_images', true);
|
|
|
|
update_comment_meta($comment_id, 'nasa_review_images', $new_nasa_review_media);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Search Products in theme options
|
|
*/
|
|
add_filter('woocommerce_json_search_found_products', 'elessi_theme_options_search_products');
|
|
function elessi_theme_options_search_products($products){
|
|
if (!isset($_REQUEST['rule_opt']) || $_REQUEST['rule_opt'] !== 'elessi-options') {
|
|
return $products;
|
|
}
|
|
|
|
$products_new = array();
|
|
|
|
if ($products){
|
|
$image_size = apply_filters('nasa_product_sale_notification_size', 'thumbnail');
|
|
|
|
foreach($products as $k => $v) {
|
|
$product_object = wc_get_product($k);
|
|
|
|
$products_new[$k] = array(
|
|
'permalink' => $product_object->get_permalink(),
|
|
'title' => $product_object->get_title(),
|
|
'img_url' => wp_get_attachment_image_url($product_object->get_image_id(), $image_size)
|
|
);
|
|
}
|
|
|
|
$products = $products_new;
|
|
}
|
|
|
|
return $products;
|
|
}
|
|
|
|
/**
|
|
* Add Column Type of Elementor - Header and Footer Builder
|
|
*/
|
|
add_filter('manage_elementor-hf_posts_columns', 'elessi_admin_hf_column_type');
|
|
function elessi_admin_hf_column_type($columns) {
|
|
$columns['type'] = __('Type of Template', 'elessi-theme');
|
|
|
|
if (isset($columns['date'])) {
|
|
$date_column = $columns['date'];
|
|
unset($columns['date']);
|
|
$columns['date'] = $date_column;
|
|
}
|
|
|
|
return $columns;
|
|
}
|
|
|
|
/**
|
|
* Type of Elementor - Header and Footer Builder
|
|
*/
|
|
add_action('manage_elementor-hf_posts_custom_column', 'elessi_admin_hf_column_type_content', 10, 2);
|
|
function elessi_admin_hf_column_type_content($column, $post_id) {
|
|
if ($column !== 'type') {
|
|
return;
|
|
}
|
|
|
|
$type = get_post_meta($post_id, 'ehf_template_type', true);
|
|
|
|
switch ($type) {
|
|
case 'type_header':
|
|
echo '<span class="nshfe-type-header">' . esc_html__('Header', 'elessi-theme') . '</span>';
|
|
break;
|
|
|
|
case 'type_footer':
|
|
echo '<span class="nshfe-type-footer">' . esc_html__('Footer', 'elessi-theme') . '</span>';
|
|
break;
|
|
|
|
case 'type_before_footer':
|
|
echo '<span class="nshfe-type-bfooter">' . esc_html__('Before Footer', 'elessi-theme') . '</span>';
|
|
break;
|
|
|
|
case 'custom':
|
|
echo '<span class="nshfe-type-ctblock">' . esc_html__('Custom Block', 'elessi-theme') . '</span>';
|
|
break;
|
|
|
|
default:
|
|
echo '<span class="nshfe-type-df">' . esc_html__('Unknown', 'elessi-theme') . '</span>';
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Delete permanently review meta data and media attach
|
|
*/
|
|
add_action('delete_comment', 'elessi_admin_action_on_delete_review');
|
|
if (!function_exists('elessi_admin_action_on_delete_review')) :
|
|
function elessi_admin_action_on_delete_review($comment_id) {
|
|
$comment = get_comment($comment_id);
|
|
|
|
if ($comment && $comment->comment_type == 'review') {
|
|
$attachment_ids = get_comment_meta($comment_id, 'nasa_review_images', true);
|
|
|
|
if (!empty($attachment_ids) && is_array($attachment_ids)) {
|
|
foreach ($attachment_ids as $attachment_id) {
|
|
wp_delete_attachment($attachment_id, true);
|
|
}
|
|
|
|
delete_comment_meta($comment_id, 'nasa_review_images');
|
|
}
|
|
}
|
|
}
|
|
endif;
|