*/ class Admin_Plugins_Description_Admin { /** * The ID of this plugin. * * @since 1.0.0 * @access private * @var string $plugin_name The ID of this plugin. */ private $plugin_name; /** * The version of this plugin. * * @since 1.0.0 * @access private * @var string $version The current version of this plugin. */ private $version; /** * Initialize the class and set its properties. * * @since 1.0.0 * @param string $plugin_name The name of this plugin. * @param string $version The version of this plugin. */ public function __construct($plugin_name, $version) { $this->plugin_name = $plugin_name; $this->version = $version; } /** * 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 Admin_Plugins_Description_Loader as all of the hooks are defined * in that particular class. * * The Admin_Plugins_Description_Loader will then create the relationship * between the defined hooks and the functions defined in this * class. */ wp_enqueue_style($this->plugin_name, plugin_dir_url(__FILE__) . 'css/admin-plugins-description-admin.css', array(), $this->version, 'all'); } /** * Register the JavaScript for the admin area. * * @since 1.0.0 */ public function enqueue_scripts() { /** * This function is provided for demonstration purposes only. * * An instance of this class should be passed to the run() function * defined in Admin_Plugins_Description_Loader as all of the hooks are defined * in that particular class. * * The Admin_Plugins_Description_Loader will then create the relationship * between the defined hooks and the functions defined in this * class. */ wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/admin-plugins-description-admin.js', array('jquery'), $this->version, false); wp_localize_script($this->plugin_name, 'adminPluginsDesription', array('ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('apd-nonce'))); } public function add_description_form($plugin_file, $plugin_data) { $description = $this->get_plugin_description(sanitize_title($plugin_data['Name'])); echo '
' . esc_html($description) . '
'; echo ''; } public function add_description_link($links, $file) { $plugin_path = WP_PLUGIN_DIR . '/' . $file; $plugin_data = get_plugin_data($plugin_path); $plugin_name = sanitize_title($plugin_data['Name']); $icon = ''; $link_add = '' . $icon . __('Add description', 'admin-plugins-description') . ''; $link_edit = '' . $icon . __('Edit description', 'admin-plugins-description') . ''; $links[] = $link_add . $link_edit; return $links; } public function handle_ajax_request() { check_ajax_referer('apd-nonce', 'nonce'); $descriptions = get_option('apd-descriptions', array()); empty($descriptions) ? $descriptions = array() : $descriptions; if (isset($_POST['description']) && !empty($_POST['description'])) { $description = sanitize_text_field(wp_unslash($_POST['description'])); } else { wp_send_json_error(__('Description cannot be empty', 'admin-plugins-description')); } if (isset($_POST['plugin'])) { $plugin = sanitize_text_field(wp_unslash($_POST['plugin'])); } else { wp_send_json_error(__('Plugin identifier is missing', 'admin-plugins-description')); } if (empty($description)) { wp_send_json_error(__('Description cannot be empty', 'admin-plugins-description')); } else { $descriptions[$plugin] = $description; update_option('apd-descriptions', $descriptions, false); wp_send_json_success(array( 'description' => $description, 'plugin' => $plugin, )); } } public function handle_remove_description() { check_ajax_referer('apd-nonce', 'nonce'); $descriptions = get_option('apd-descriptions', array()); if (empty($descriptions)) { wp_send_json_error(__('There is no descriptions', 'admin-plugins-description')); } if (isset($_POST['plugin'])) { $plugin = sanitize_text_field(wp_unslash($_POST['plugin'])); } else { wp_send_json_error(__('Plugin identifier is missing', 'admin-plugins-description')); } unset($descriptions[$plugin]); update_option('apd-descriptions', $descriptions, false); wp_send_json_success(array( 'plugin' => $plugin, )); } private function get_plugin_description($plugin) { $descriptions = get_option('apd-descriptions', array()); return isset($descriptions[$plugin]) ? $descriptions[$plugin] : ''; } }