Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
immortalist
/
wp-content
/
plugins
/
agile-store-locator
/
includes
/
admin
:
manager.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace AgileStoreLocator\Admin; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } use AgileStoreLocator\Activator; use AgileStoreLocator\Deactivator; use AgileStoreLocator\Frontend\Request; use AgileStoreLocator\Helper; use AgileStoreLocator\Admin\Store; use AgileStoreLocator\Admin\Base; /** * The admin-specific functionality of the plugin. * * Defines the plugin name, version, and two examples hooks for how to * enqueue the admin-specific stylesheet and JavaScript. * * @package AgileStoreLocator * @subpackage AgileStoreLocator/Admin/Manager * @author AgileStoreLocator Team <support@agilelogix.com> */ class Manager extends Base { /** * The ID of this plugin. * * @since 1.0.0 * @access protected * @var string $AgileStoreLocator The ID of this plugin. */ protected $AgileStoreLocator; /** * The version of this plugin. * * @since 1.0.0 * @access protected * @var string $version The current version of this plugin. */ protected $version; /** * [$scripts_data load the scripts] * @var array */ protected $scripts_data = array(); /** * [$load_config this configuration is loaded on class initialization to perform rewrite and hook validation] * @var [type] */ protected $load_config; /** * Initialize the class and set its properties. * * @since 1.0.0 * @param string $AgileStoreLocator The name of this plugin. * @param string $version The version of this plugin. */ public function __construct( $AgileStoreLocator, $version ) { $this->AgileStoreLocator = $AgileStoreLocator; $this->version = function_exists('wp_get_environment_type') && wp_get_environment_type() == 'development' ? time(): $version; parent::__construct(); // Not for the activation if(!isset($_REQUEST['action']) || $_REQUEST['action'] != 'activate') { // Fetch the basic configs such as rewrites and hook info $this->load_config = \AgileStoreLocator\Helper::get_configs(['rewrite_slug', 'rewrite_id', 'cf7_hook']); // Pretty URL for the Store Locator add_action('init', array($this,'rewrite_slug')); } // Whitelist the Variable add_filter( 'query_vars', array($this,'rewrite_query_vars')); // Shortcode Button (Classic editor) add_action('media_buttons', array($this,'add_shortcode_button'), 15); // Generate shortcode popup add_action('admin_head', array($this,'shortcode_gen_popup')); // shortcode registration add_action('plugins_loaded', array($this,'shortcode_registration')); } /** * Register the stylesheets for the admin area. * * @since 1.0.0 */ public function enqueue_styles() { /** * This function is provided for demonstration purposes only. * * An instance of this class should be passed to the run() function * defined in \AgileStoreLocator\Loader as all of the hooks are defined * in that particular class. * * The \AgileStoreLocator\Loader will then create the relationship * between the defined hooks and the functions defined in this * class. */ wp_enqueue_style( $this->AgileStoreLocator, ASL_URL_PATH . 'admin/css/bootstrap.min.css', array(), $this->version, 'all' );//$this->version wp_enqueue_style( 'asl_chosen_plugin', ASL_URL_PATH . 'admin/css/chosen.min.css', array(), $this->version, 'all' ); wp_enqueue_style( 'asl_locator', ASL_URL_PATH . 'admin/css/style.css', array(), $this->version, 'all' ); wp_enqueue_style( 'asl_datatable2', ASL_URL_PATH . 'admin/datatable/media/css/jquery.dataTables.css', array(), $this->version, 'all' ); wp_enqueue_style( 'asl_datetimepicker', ASL_URL_PATH . 'admin/css/daterangepicker.css', array(), $this->version, 'all' ); } /** * Register the JavaScript for the admin area. * * @since 1.0.0 */ public function enqueue_scripts() { // store locator bootstrap wp_register_script( 'asl-bootstrap', ASL_URL_PATH . 'admin/js/bootstrap.min.js', array('jquery'), $this->version, false ); // Store locator libraries wp_register_script( $this->AgileStoreLocator.'-lib', ASL_URL_PATH . 'admin/js/libs.min.js', array('jquery'), $this->version, false ); // Shortcode wp_register_script( $this->AgileStoreLocator.'-shortcode', ASL_URL_PATH . 'admin/js/shortcode.js', array('jquery'), $this->version, false ); // Chosen library wp_register_script( $this->AgileStoreLocator.'-choosen', ASL_URL_PATH . 'admin/js/chosen.proto.min.js', array('jquery'), $this->version, false ); // Datatable wp_register_script( $this->AgileStoreLocator.'-datatable', ASL_URL_PATH . 'admin/datatable/media/js/jquery.dataTables.min.js', array('jquery'), $this->version, false ); // Uploader wp_register_script( $this->AgileStoreLocator.'-upload', ASL_URL_PATH . 'admin/js/jquery.fileupload.min.js', array('jquery', 'jquery-ui-core'), $this->version, false ); // drawing wp_register_script( $this->AgileStoreLocator.'-draw', ASL_URL_PATH . 'admin/js/drawing.js', array('jquery'), $this->version, false ); // Datetimepicker wp_register_script( $this->AgileStoreLocator.'-datetimepicker', ASL_URL_PATH . 'admin/js/datetimepicker.min.js', array('jquery'), $this->version, false ); // Dashboard wp_register_script( $this->AgileStoreLocator.'-dashboard', ASL_URL_PATH . 'admin/js/dashboard.js', array('jquery', $this->AgileStoreLocator.'-lib', $this->AgileStoreLocator.'-datetimepicker'), $this->version, false ); // jscript wp_register_script( $this->AgileStoreLocator.'-jscript', ASL_URL_PATH . 'admin/js/jscript.js', array('jquery', $this->AgileStoreLocator.'-lib', $this->AgileStoreLocator.'-datatable'), $this->version, false ); } /** * [_enqueue_scripts a private enqueue scripts] * @return [type] [description] */ public function _enqueue_scripts($all_scripts = true, $tag = 'jscript') { $langs = array( 'select_category' => esc_attr__('Select Some Options','asl_locator'), 'no_category' => esc_attr__('Select Some Options','asl_locator'), 'geocode_fail' => esc_attr__('Geocode was not Successful:','asl_locator'), 'upload_fail' => esc_attr__('Upload Failed! Please try Again.','asl_locator'), 'delete_category' => esc_attr__('Delete Category','asl_locator'), 'delete_categories' => esc_attr__('Delete Categories','asl_locator'), 'warn_question' => esc_attr__('Are you sure you want to ','asl_locator'), 'delete_it' => esc_attr__('Delete it!','asl_locator'), 'duplicate_it' => esc_attr__('Duplicate it!','asl_locator'), 'backup_tmpl' => esc_attr__('Backup Template','asl_locator'), 'backup_tmpl_msg' => esc_attr__('Are you sure to backup Template into theme root directory?','asl_locator'), 'backup' => esc_attr__('Backup','asl_locator'), 'remove_tmpl' => esc_attr__('Remove Template','asl_locator'), 'remove_tmpl_msg' => esc_attr__('Are you sure to remove Template from the theme root directory?','asl_locator'), 'remove' => esc_attr__('Remove','asl_locator'), 'delete_marker' => esc_attr__('Delete Marker','asl_locator'), 'delete_markers' => esc_attr__('Delete Markers','asl_locator'), 'delete_logo' => esc_attr__('Delete Logo','asl_locator'), 'delete_logos' => esc_attr__('Delete Selected Logos','asl_locator'), 'select_special' => esc_attr__('Select Special','asl_locator'), 'select_brand' => esc_attr__('Select Brand','asl_locator'), 'delete_store' => esc_attr__('Delete Store','asl_locator'), 'delete_stores' => esc_attr__('Delete Stores','asl_locator'), 'duplicate_stores' => esc_attr__('Duplicate Selected Store','asl_locator'), 'start_time' => esc_attr__('Start Time','asl_locator'), 'select_logo' => esc_attr__('Select Logo','asl_locator'), 'select_marker' => esc_attr__('Select Marker','asl_locator'), 'end_time' => esc_attr__('End Time','asl_locator'), 'select_country' => esc_attr__('Select Country','asl_locator'), 'delete_all_stores' => esc_attr__('DELETE ALL STORES','asl_locator'), 'truncate_stores' => esc_attr__('Truncate Stores Table','asl_locator'), 'truncate_stores_text' => esc_attr__('Are you sure to delete all stores of all languages?','asl_locator'), 'invalid_file_error' => esc_attr__('Invalid File, Accepts JPG, PNG, GIF or SVG.','asl_locator'), 'error_try_again' => esc_attr__('Error Occured, Please try Again.','asl_locator'), 'delete_all' => esc_attr__('DELETE ALL','asl_locator'), 'pur_title' => esc_attr__('PLEASE VALIDATE PURCHASE CODE!','asl_locator'), 'pur_text' => __('Thank you for purchasing <b>Store Locator for WordPress</b> Plugin, kindly enter your purchase code to unlock the page. <a target="_blank" href="https://agilestorelocator.com/wiki/store-locator-purchase-code/">How to Get Your Purchase Code</a>.','asl_locator'), 'api_key_missing' => __('Error! Search and Map will not work due to missing API Key','asl_locator'), 'warn_save_setting' => __('Save Settings to apply the changes','asl_locator'), 'close' => __('Close','asl_locator'), 'copy' => __('Copy','asl_locator'), 'import' => __('Import','asl_locator'), 'import_config' => __('Import Configuration & Settings','asl_locator'), 'paste_config_ph' => __('Paste Configuration JSON','asl_locator'), 'import_config_warn' => __('Warning! the existing configuration will be removed and replaced including the customizations that you have made through the Customizer section!','asl_locator'), 'export_config' => esc_attr__('Export Configuration','asl_locator'), 'required_field' => esc_attr__('Please correct the error in field','asl_locator'), 'select_media' => esc_attr__('Select or Upload Media', 'asl_locator'), 'use_media' => esc_attr__('Use this media', 'asl_locator') ); wp_enqueue_script( 'asl-bootstrap'); wp_enqueue_script($this->AgileStoreLocator.'-lib'); // These scripts are not need on other pages if($all_scripts) { wp_enqueue_script( $this->AgileStoreLocator.'-choosen'); wp_enqueue_script( $this->AgileStoreLocator.'-datatable'); wp_enqueue_script( $this->AgileStoreLocator.'-upload'); } // Script for the page switch ($tag) { case 'dashboard': $tag = 'dashboard'; wp_enqueue_script( $this->AgileStoreLocator.'-dashboard'); break; case 'shortcode': $tag = 'shortcode'; wp_enqueue_script( $this->AgileStoreLocator.'-shortcode'); break; default: wp_enqueue_script( $this->AgileStoreLocator.'-draw'); wp_enqueue_script( $this->AgileStoreLocator.'-jscript'); break; } // Plugin Validation $this->localize_scripts( $this->AgileStoreLocator.'-'.$tag, 'ASL_REMOTE', array('nounce' => wp_create_nonce('asl-nounce'), 'Com' => get_option('asl-compatible'), 'sl_lang' => $this->lang, 'LANG' => $langs, 'URL' => admin_url( 'admin-ajax.php' ))); // Inject script with inline_script //wp_add_inline_script( $this->AgileStoreLocator.'-'.$tag, $this->get_local_script_data(), 'before'); } ///////////////////////// //////////Page Methods // ///////////////////////// /** * [admin_manage_brands Manage Attribute Page] * @return [type] [description] */ public function page_manage_attribute() { // add scripts $this->_enqueue_scripts(); include ASL_PLUGIN_PATH.'admin/partials/attribute.php'; } /** * [admin_manage_specials Manage Attribute Page] * @return [type] [description] */ public function page_manage_specials() { // add scripts $this->_enqueue_scripts(); include ASL_PLUGIN_PATH.'admin/partials/attribute_special.php'; } /** * [admin_ui_customizer ASL Settings Page] * @return [type] [description] */ public function page_ui_customizer() { $this->_enqueue_scripts(); $all_configs = array(); include ASL_PLUGIN_PATH.'admin/partials/ui-customizer.php'; } /** * [admin_plugin_settings Admin Plugi] * @return [type] [description] */ public function page_plugin_settings() { // add scripts $this->_enqueue_scripts(); include ASL_PLUGIN_PATH.'admin/partials/add_store.php'; } /** * [page_edit_store Edit a Store] * @return [type] [description] */ public function page_edit_store() { $this->_enqueue_scripts(); // For Logo wp_enqueue_media(); // For textarea wp_enqueue_editor(); // Required for TinyMCE global $wpdb; $store_id = isset($_REQUEST['store_id'])? intval($_REQUEST['store_id']): 0; if(!$store_id) { die('Invalid Store Id.'); } // Store Data $store = $wpdb->get_results("SELECT * FROM ".ASL_PREFIX."stores WHERE id = $store_id"); if(!$store || !$store[0]) { die('Invalid Store Id'); } // Take the first store $store = $store[0]; $storecategory = $wpdb->get_results("SELECT * FROM ".ASL_PREFIX."stores_categories WHERE store_id = $store_id"); // Current store lang $lang = $store->lang; $countries = $wpdb->get_results("SELECT * FROM ".ASL_PREFIX."countries ORDER BY `country`"); $logos = $wpdb->get_results( "SELECT `id` as `value`, `name` as `text`, `path` as `imageSrc` FROM ".ASL_PREFIX."storelogos ORDER BY name"); $markers = $wpdb->get_results( "SELECT * FROM ".ASL_PREFIX."markers"); $category = $wpdb->get_results( "SELECT * FROM ".ASL_PREFIX."categories WHERE lang = '$lang'"); $brands = []; $specials = []; // Custom Fields $fields = $this->_get_custom_fields(); $custom_data = (isset($store->custom) && $store->custom)? json_decode($store->custom, true): []; $all_configs = \AgileStoreLocator\Helper::get_configs(['api_key', 'time_format', 'branches']); include ASL_PLUGIN_PATH.'admin/partials/edit_store.php'; } /** * [admin_add_new_store Add a New Store] * @return [type] [description] */ public function page_add_new_store() { global $wpdb; $this->_enqueue_scripts(); // For Logo wp_enqueue_media(); // For textarea wp_enqueue_editor(); // Required for TinyMCE //api key $sql = "SELECT `key`,`value` FROM ".ASL_PREFIX."configs WHERE `key` = 'api_key' || `key` = 'time_format' || `key` = 'default_lat' || `key` = 'default_lng'"; $all_configs_result = $wpdb->get_results($sql); $all_configs = array(); foreach($all_configs_result as $c) { $all_configs[$c->key] = $c->value; } // Current store lang $lang = $this->lang; $logos = $wpdb->get_results( "SELECT `id` as `value`, `name` as `text`, `path` as `imageSrc` FROM ".ASL_PREFIX."storelogos ORDER BY name"); $markers = $wpdb->get_results( "SELECT * FROM ".ASL_PREFIX."markers"); $category = $wpdb->get_results( "SELECT * FROM ".ASL_PREFIX."categories WHERE lang = '$lang';"); $countries = $wpdb->get_results("SELECT * FROM ".ASL_PREFIX."countries"); $brands = []; $specials = []; $fields = $this->_get_custom_fields(); include ASL_PLUGIN_PATH.'admin/partials/add_store.php'; } /** * [admin_dashboard Plugin Dashboard] * @return [type] [description] */ public function page_dashboard() { $this->_enqueue_scripts(false, 'dashboard'); global $wpdb; $sql = "SELECT `key`,`value` FROM ".ASL_PREFIX."configs WHERE `key` = 'api_key'"; $all_configs_result = $wpdb->get_results($sql); $all_configs = array('api_key' => $all_configs_result[0]->value); $all_stats = array(); $temp = $wpdb->get_results( "SELECT count(*) as c FROM ".ASL_PREFIX."markers");; $all_stats['markers'] = $temp[0]->c; $temp = $wpdb->get_results( "SELECT count(*) as c FROM ".ASL_PREFIX."stores");; $all_stats['stores'] = $temp[0]->c; $temp = $wpdb->get_results( "SELECT count(*) as c FROM ".ASL_PREFIX."categories");; $all_stats['categories'] = $temp[0]->c; $temp = $wpdb->get_results( "SELECT count(*) as c FROM ".ASL_PREFIX."stores_view");; $all_stats['searches'] = $temp[0]->c; include ASL_PLUGIN_PATH.'admin/partials/dashboard.php'; } /** * [admin_manage_categories Manage Categories] * @return [type] [description] */ public function page_manage_categories() { $this->_enqueue_scripts(); include ASL_PLUGIN_PATH.'admin/partials/categories.php'; } /** * [admin_store_markers Manage Markers] * @return [type] [description] */ public function page_store_markers() { $this->_enqueue_scripts(); include ASL_PLUGIN_PATH.'admin/partials/markers.php'; } /** * [admin_store_logos Manage Logos] * @return [type] [description] */ public function page_store_logos() { $this->_enqueue_scripts(); include ASL_PLUGIN_PATH.'admin/partials/logos.php'; } /** * [admin_manage_store Manage Stores] * @return [type] [description] */ public function page_manage_store() { global $wpdb; $prefix = ASL_PREFIX; $this->_enqueue_scripts(); $pending_stores = Store::pending_store_count(); // Field Columns $field_columns = array( '1' => 'Action', '2' => 'ID', '3' => 'Title', '4' => 'Lat', '5' => 'Lng', '6' => 'Street', '7' => 'State', '8' => 'City', '9' => 'Phone', '10' => 'Email', '11' => 'URL', '12' => 'Zip', '13' => 'Disabled', '14' => 'Categories', '15' => 'Marker', '16' => 'Logo', '17' => 'Created' ); $hidden_fields = $wpdb->get_results("SELECT `content` FROM {$prefix}settings WHERE `type` = 'hidden'"); if($hidden_fields && isset($hidden_fields[0])) { $hidden_fields = $hidden_fields[0]->content; } else $hidden_fields = []; // Get all config $all_configs = \AgileStoreLocator\Helper::get_configs(); include ASL_PLUGIN_PATH.'admin/partials/manage_store.php'; } /** * [admin_import_stores Admin Import Store Page] * @return [type] [description] */ public function page_import_stores() { $this->_enqueue_scripts(); //Check if ziparhive is installed global $wpdb; //Get the API KEY $sql = "SELECT `key`,`value` FROM ".ASL_PREFIX."configs WHERE `key` = 'server_key'"; $configs_result = $wpdb->get_results($sql); $api_key = ''; if(isset($configs_result[0]) && $configs_result[0]->value) { $api_key = $configs_result[0]->value; } else $api_key = esc_attr__('Google API Key is Missing','asl_locator'); include ASL_PLUGIN_PATH.'admin/partials/import_store.php'; } /** * [admin_customize_map Customize the Map Page] * @return [type] [description] */ public function page_customize_map() { $this->_enqueue_scripts(); global $wpdb; $sql = "SELECT `key`,`value` FROM ".ASL_PREFIX."configs WHERE `key` = 'api_key' OR `key` = 'default_lat' OR `key` = 'default_lng' ORDER BY id;"; $all_configs_result = $wpdb->get_results($sql); $config_list = array(); foreach($all_configs_result as $item) { $config_list[$item->key] = $item->value; } $all_configs = array('api_key' => $config_list['api_key'],'default_lat' => $config_list['default_lat'],'default_lng' => $config_list['default_lng']); $map_customize = $wpdb->get_results("SELECT content FROM ".ASL_PREFIX."settings WHERE type = 'map' AND id = 1"); $map_customize = ($map_customize && $map_customize[0]->content)?$map_customize[0]->content:'[]'; //add_action( 'init', 'my_theme_add_editor_styles' ); include ASL_PLUGIN_PATH.'admin/partials/customize_map.php'; } /** * [addSlugs Add Slug to existing rows] */ private function addSlugs() { global $wpdb; $ASL_PREFIX = ASL_PREFIX; $query = "SELECT s.`id`, `title`, `description`, `street`, `city`, `state`, `postal_code`, `lat`,`lng`,`phone`, `fax`,`email`,`website`,`logo_id`,`marker_id`,`description_2`,`open_hours`, `ordr`,`brand`, `custom`, `slug` FROM {$ASL_PREFIX}stores as s"; $all_results = $wpdb->get_results($query); // Generate Slug foreach ($all_results as $store ) { $a_store = (Array) $store; $slug = \AgileStoreLocator\Helper::slugify($a_store); //update into stores table $wpdb->update($ASL_PREFIX."stores", array('slug' => $slug),array('id' => $a_store['id'])); } } /** * [admin_user_settings ASL Settings Page] * @return [type] [description] */ public function page_user_settings() { $this->_enqueue_scripts(); // CodeMirror Enqueue if(function_exists('wp_enqueue_code_editor')) wp_enqueue_code_editor(array('type' => 'text/html')); global $wpdb; // Get the Cache Settings $cache_settings = \AgileStoreLocator\Helper::getSettings('cache'); // make it empty array when not saved if(!$cache_settings) { $cache_settings = []; } // Langs $active_langs = \AgileStoreLocator\Helper::getLangControl(true); /////////////////////////////////////// // Check the upgrade is done or not? // /////////////////////////////////////// \AgileStoreLocator\Activator::validate_configs(); $sql = "SELECT `key`,`value` FROM ".ASL_PREFIX."configs"; $all_configs_result = $wpdb->get_results($sql); $query = "SELECT `type`,`content` FROM ".ASL_PREFIX."settings"; $all_setting_result = $wpdb->get_results($query); $all_configs = array(); $all_settings = array(); foreach ($all_setting_result as $key => $value) { $all_settings[$value->type] = $value->content; } foreach($all_configs_result as $config) { $all_configs[$config->key] = $config->value; } $all_configs = array_merge($all_configs,$all_settings); ///get Countries $countries = $wpdb->get_results("SELECT country,iso_code_2 as code FROM ".ASL_PREFIX."countries"); $custom_map_style = \AgileStoreLocator\Helper::get_setting('map_style', 'map_style'); // Possible values for the slug $slug_attr = array('title' => esc_attr__('Title','asl_locator') , 'city' => esc_attr__('City','asl_locator'), 'postal_code' => esc_attr__('Post Code','asl_locator'), 'state' => esc_attr__('State','asl_locator'), 'description' => esc_attr__('Description', 'asl_locator'), 'lang' => esc_attr__('Lang', 'asl_locator')); // Remove Google Script tags $all_configs['remove_maps_script'] = get_option('asl-remove_maps_script'); // Get the Custom Fields $fields = $this->_get_custom_fields(); // Add the fields in the slug if($fields && is_array($fields)) { foreach($fields as $field) { $slug_attr[$field['name']] = $field['label']; } } // Slug for the Store Details if(isset($all_configs['slug_attr_ddl']) && $all_configs['slug_attr_ddl']) { $ordered_slugs = explode(',', $all_configs['slug_attr_ddl']); foreach ($ordered_slugs as $value) { if (!isset($slug_attr[$value])) continue; $existing_value = $slug_attr[$value]; unset($slug_attr[$value]); $slug_attr = array_merge($slug_attr, [$value => $existing_value]); } } include ASL_PLUGIN_PATH.'admin/partials/user_setting.php'; } /** * [rewrite_slug ASL Settings Page] * @return [type] [description] * * Pretty URL for the Store Locator */ public function rewrite_slug(){ global $wpdb; $slug = isset($this->load_config['rewrite_slug'])? $this->load_config['rewrite_slug']: null; $page_id = isset($this->load_config['rewrite_id'])? $this->load_config['rewrite_id']: null; // Make sure values exist if($slug && $page_id) add_rewrite_rule('^'.$slug.'/?([^/]*)/?','index.php?page_id='.$page_id.'&sl-store=$matches[1]','top'); } /** * [rewrite_query_vars ASL Settings Page] * @return [type] [query_vars] * * Whitelist the Variable */ function rewrite_query_vars($query_vars){ $query_vars[] = 'sl-store'; return $query_vars; } /* *[add_shortcode_button] *Create add shortcode button on admin page * */ public function add_shortcode_button() { global $post; if ($post) { if($post->post_type == 'page' ) { echo '<a href="#" id="sl-shortcode-insert" data-toggle="smodal" data-target="#insert-sl-shortcode" class="button">'.__('Add Store Locator Shortcode','asl_locator').'</a>'; } } } /* *[shortcode_gen_popup] * shortcode Popup HTML * */ public function shortcode_gen_popup() { global $post; if ($post) { if($post->post_type == 'page') { // Add scripts $this->_enqueue_scripts(false, 'shortcode'); // Include Add Shortcode admin Popup HTML include ASL_PLUGIN_PATH.'admin/partials/shortcode-popup-html.php'; } } } /* *[shortcode_registration] * */ public function shortcode_registration() { // For Gutenberg Shortcode button require_once ASL_PLUGIN_PATH.'admin/blocks/index.php'; // For Elementor Shortcode // Add the Elementor if ( class_exists( '\Elementor\Plugin' ) ) { $ele_addons = new \AgileStoreLocator\Vendors\Elementor\Addon( $this->AgileStoreLocator, $this->version ); } // Initialize the third party hooks to create association \AgileStoreLocator\Helper::third_party_hooks($this->load_config); } /** * [add_action_link render the settings button for the plugin] * @return [type] $links [description] */ public function add_action_link( $links, $file ) { if ( $file != ASL_BASE_PATH.'/agile-store-locator.php' ) { return $links; } $settings_url = admin_url( 'admin.php?page=asl-settings' ); $settings_link = '<a href="' . esc_url( $settings_url ) . '" >' . __( 'Settings', 'asl_locator' ) . '</a>'; array_unshift( $links, $settings_link ); $docs_url = 'https://agilestorelocator.com/'; $docs_link = '<a href="' . esc_url( $docs_url ) . '" style="color:green;font-weight:bold;" target="__blank">' . __( 'Go Pro', 'asl_locator' ) . '</a>'; array_push( $links, $docs_link ); return $links; } /** * [localize_scripts description] * @param [type] $script_name [description] * @param [type] $variable [description] * @param [type] $data [description] * @return [type] [description] */ private function localize_scripts($script_name, $variable, $data) { //$this->scripts_data[] = [$variable, $data]; // Since version 1.4.2 wp_localize_script( $script_name, $variable, $data ); } /** * [get_local_script_data Render the scripts data] * @return [type] [description] */ private function get_local_script_data($with_tags = false) { $scripts = ''; foreach ($this->scripts_data as $script_data) { $scripts .= 'var '.$script_data[0].' = '.(($script_data[1] && !empty($script_data[1]))?json_encode($script_data[1]): "''").';'; } // With script tags if($with_tags) { $scripts = "<script type='text/javascript' id='agile-store-locator-script-js'>".$scripts."</script>"; } // Clear it $this->scripts_data = []; return $scripts; } }