File "AbstractPlugin.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/flexible-shipping-pro/vendor/wpdesk/wp-builder/src/Plugin/AbstractPlugin.php
File size: 5.17 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace WPDesk\PluginBuilder\Plugin;
/**
* Base plugin with most basic functionalities used by every WPDesk plugin.
*
*
* Known issues:
*
* The class name is too generic but can't be changed as it would introduce a major incompatibility for most of the plugins.
* The $plugin_url, $docs_url and most other fields should be removed as they only litter the place but for compatibility reasons we can't do it right now.
* Hook methods should be moved to external classes but for compatibility reasons we can't do it right now.
*/
abstract class AbstractPlugin extends SlimPlugin {
/**
* Most info about plugin internals.
*
* @var \WPDesk_Plugin_Info
*/
protected $plugin_info;
/**
* Unique string for this plugin in [a-z_]+ format.
*
* @var string
*/
protected $plugin_namespace;
/**
* Absolute URL to the plugin dir.
*
* @var string
*/
protected $plugin_url;
/**
* Absolute URL to the plugin docs.
*
* @var string
*/
protected $docs_url;
/**
* Absolute URL to the plugin settings url.
*
* @var string
*/
protected $settings_url;
/**
* Support URL.
*
* @var string
*/
protected $support_url;
/**
* AbstractPlugin constructor.
*
* @param \WPDesk_Plugin_Info $plugin_info
*/
public function __construct( $plugin_info ) {
$this->plugin_info = $plugin_info;
$this->plugin_namespace = strtolower( $plugin_info->get_plugin_dir() );
$this->plugin_url = $this->plugin_info->get_plugin_url();
$this->init_base_variables();
}
/**
* Initialize internal state of the plugin.
*
* @return void
* @deprecated Just use __construct to initialize plugin internal state.
*
*/
public function init_base_variables() {
}
/**
* Initializes plugin external state.
*
* The plugin internal state is initialized in the constructor and the plugin should be internally consistent after creation.
* The external state includes hooks execution, communication with other plugins, integration with WC etc.
*
* @return void
*/
public function init() {
$this->hooks();
}
/**
* Returns absolute path to the plugin dir.
*
* @return string
*/
public function get_plugin_file_path() {
return $this->plugin_info->get_plugin_file_name();
}
/**
* Returns plugin text domain.
*
* @return string
*/
public function get_text_domain() {
return $this->plugin_info->get_text_domain();
}
/**
* Returns unique string for plugin in [a-z_]+ format. Can be used as plugin id in various places like plugin slug etc.
*
* @return string
*/
public function get_namespace() {
return $this->plugin_namespace;
}
/**
* Returns plugin absolute URL.
*
* @return string
*/
public function get_plugin_url() {
return esc_url( trailingslashit( $this->plugin_url ) );
}
/**
* Returns plugin absolute URL to dir with front end assets.
*
* @return string
*/
public function get_plugin_assets_url() {
return esc_url( trailingslashit( $this->get_plugin_url() . 'assets' ) );
}
/**
* @return $this
* @deprecated For backward compatibility.
*
*/
public function get_plugin() {
return $this;
}
/**
* Integrate with WordPress and with other plugins using action/filter system.
*
* @return void
*/
protected function hooks() {
add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
add_action( 'wp_enqueue_scripts', [ $this, 'wp_enqueue_scripts' ] );
add_action( 'plugins_loaded', [ $this, 'load_plugin_text_domain' ] );
add_filter( 'plugin_action_links_' . plugin_basename( $this->get_plugin_file_path() ), [
$this,
'links_filter'
] );
}
/**
* Initialize plugin test domain. This is a hook function. Do not execute directly.
*
* @return void
*/
public function load_plugin_text_domain() {
load_plugin_textdomain( $this->get_text_domain(), '', $this->get_namespace() . '/lang/' );
}
/**
* Append JS scripts in the WordPress admin panel. This is a hook function. Do not execute directly.
*
* @return void
*/
public function admin_enqueue_scripts() {
}
/**
* Append JS scripts in WordPress. This is a hook function. Do not execute directly.
*
* @return void
*/
public function wp_enqueue_scripts() {
}
/**
* Initialize plugin admin links. This is a hook function. Do not execute directly.
*
* @param string[] $links
*
* @return string[]
*/
public function links_filter( $links ) {
$support_link = get_locale() === 'pl_PL' ? 'https://www.wpdesk.pl/support/' : 'https://www.wpdesk.net/support';
if ( $this->support_url ) {
$support_link = $this->support_url;
}
$plugin_links = [
'<a target="_blank" href="' . $support_link . '">' . esc_html__( 'Support', 'wpdesk-wp-builder' ) . '</a>',
];
$links = array_merge( $plugin_links, $links );
if ( $this->docs_url ) {
$plugin_links = [
'<a target="_blank" href="' . $this->docs_url . '">' . esc_html__( 'Docs', 'wpdesk-wp-builder' ) . '</a>',
];
$links = array_merge( $plugin_links, $links );
}
if ( $this->settings_url ) {
$plugin_links = [
'<a href="' . $this->settings_url . '">' . esc_html__( 'Settings', 'wpdesk-wp-builder' ) . '</a>',
];
$links = array_merge( $plugin_links, $links );
}
return $links;
}
}