_version = $version;
$this->_token = AWDP_TOKEN;
$this->file = $file;
$this->dir = dirname($this->file);
$this->assets_dir = trailingslashit($this->dir) . 'assets';
$this->assets_url = esc_url(trailingslashit(plugins_url('/assets/', $this->file)));
$this->plugin_slug = 'abc';
$this->script_suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
// $currentScreen = get_current_screen();
register_activation_hook($this->file, array($this, 'install'));
// register_deactivation_hook($this->file, array($this, 'deactivation'));
add_action('save_post', array($this, 'delete_transient'), 1);
add_action('edited_term', array($this, 'delete_transient'));
add_action('delete_term', array($this, 'delete_transient'));
add_action('created_term', array($this, 'delete_transient'));
add_action('admin_menu', array($this, 'register_root_page'));
// var_dump($currentScreen);
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'), 10, 1);
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_styles'), 10, 1);
$plugin = plugin_basename($this->file);
add_filter("plugin_action_links_$plugin", array($this, 'add_settings_link'));
}
/**
*
*
* Ensures only one instance of WCPA is loaded or can be loaded.
*
* @since 1.0.0
* @static
* @see WordPress_Plugin_Template()
* @return Main WCPA instance
*/
public static function instance($file = '', $version = '1.0.0')
{
if (is_null(self::$_instance)) {
self::$_instance = new self($file, $version);
}
return self::$_instance;
}
public function register_root_page()
{
$this->hook_suffix[] = add_menu_page(
__('Pricing Rules', 'aco-woo-dynamic-pricing'), __('Pricing Rules', 'aco-woo-dynamic-pricing'), 'edit_products', 'awdp_admin_ui', array($this, 'admin_ui'), esc_url($this->assets_url) . '/images/icon.png', 25);
$this->hook_suffix[] = add_submenu_page(
'awdp_admin_ui', __('Product Lists', 'aco-woo-dynamic-pricing'), __('Product Lists', 'aco-woo-dynamic-pricing'), 'edit_products', 'awdp_admin_product_lists', array($this, 'admin_ui_pro_lists'));
$this->hook_suffix[] = add_submenu_page(
'awdp_admin_ui', __('Settings', 'aco-woo-dynamic-pricing'), __('Settings', 'aco-woo-dynamic-pricing'), 'edit_products', 'awdp_ui_settings', array($this, 'admin_ui_settings'));
}
public function admin_ui()
{
AWDP_Backend::view('admin-root', []);
}
public function add_settings_link($links)
{
$settings = '' . __('Pricing Rules','aco-woo-dynamic-pricing') . '';
$products = '' . __('Product Lists','aco-woo-dynamic-pricing') . '';
array_push($links, $settings);
array_push($links, $products);
return $links;
}
/**
* Create post type forms
*/
static function view($view, $data = array())
{
extract($data);
include(plugin_dir_path(__FILE__) . 'views/' . $view . '.php');
}
// End admin_enqueue_styles ()
public function admin_ui_pro_lists()
{
AWDP_Backend::view('admin-lists', []);
}
public function admin_ui_settings()
{
AWDP_Backend::view('admin-settings', []);
}
/**
* Load admin CSS.
* @access public
* @since 1.0.0
* @return void
*/
public function admin_enqueue_styles($hook = '')
{
// wp_enqueue_style('wp-color-picker');
wp_register_style($this->_token . '-admin', esc_url($this->assets_url) . 'css/backend.css', array(), $this->_version);
wp_enqueue_style($this->_token . '-admin');
}
/**
* Load admin Javascript.
* @access public
* @since 1.0.0
* @return void
*/
public function admin_enqueue_scripts($hook = '')
{
if (!isset($this->hook_suffix) || empty($this->hook_suffix)) {
return;
}
// All Categories
$categories = get_terms('product_cat', ['taxonomy' => 'product_cat', 'hide_empty' => false, 'fields' => 'id=>name']);
// Product List
$awdpList = get_posts(array('fields' => 'ids', 'numberposts' => -1, 'post_type' => AWDP_PRODUCT_LIST, 'orderby' => 'title', 'order' => 'ASC'));
$awdpList = array_map(function ($v) {
return ['id' => $v, 'name' => get_the_title($v)];
}, $awdpList);
// Tags
$taglist = get_terms(array('hide_empty' => false, 'taxonomy' => 'product_tag'));
$screen = get_current_screen();
$defaultLabel = get_option('awdp_fee_label') ? get_option('awdp_fee_label') : __("Discount", "aco-woo-dynamic-pricing");
wp_enqueue_script('jquery');
if (in_array($screen->id, $this->hook_suffix)) {
if (!wp_script_is('wp-i18n', 'registered')) {
wp_register_script('wp-i18n', esc_url($this->assets_url) . 'js/i18n.min.js', array('jquery'), $this->_version, true);
}
wp_enqueue_script($this->_token . '-backend-script', esc_url($this->assets_url) . 'js/backend.js', array('jquery', 'wp-i18n'), $this->_version, true);
wp_localize_script($this->_token . '-backend-script', 'awdp_object', array(
'api_nonce' => wp_create_nonce('wp_rest'),
'root' => rest_url('awdp/v1/'),
'cats' => (array)$categories,
'tags' => (array)$taglist,
'productlist' => (array)$awdpList,
'defaultlabel' => $defaultLabel
)
);
$plugin_rel_path = (dirname($this->file)) . '/../../languages'; /* Relative to WP_PLUGIN_DIR */
if ( AWDP_Wordpress_Version >= 5 ) {
wp_set_script_translations(AWDP_TOKEN . '-backend-script', 'aco-woo-dynamic-pricing', $plugin_rel_path);
}
}
}
/**
* Cloning is forbidden.
*
* @since 1.0.0
*/
public function __clone()
{
_doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?'), $this->_version);
}
/**
* Unserializing instances of this class is forbidden.
*
* @since 1.0.0
*/
public function __wakeup()
{
_doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?'), $this->_version);
}
/**
* Installation. Runs on activation.
* @access public
* @since 1.0.0
* @return void
*/
public function install()
{
$this->_log_version_number();
}
/**
* Log the plugin version number.
* @access public
* @since 1.0.0
* @return void
*/
private function _log_version_number()
{
update_option($this->_token . '_version', $this->_version);
}
public function delete_transient($arg = false)
{
if ($arg) {
in_array(get_post_type($arg), ['product', AWDP_POST_TYPE, AWDP_PRODUCT_LIST]) && delete_transient(AWDP_PRODUCTS_TRANSIENT_KEY);
} else {
delete_transient(AWDP_PRODUCTS_TRANSIENT_KEY);
}
}
}