Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
admin-columns-pro
/
codepress-admin-columns
/
classes
:
addons.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php class CPAC_Addons { /** * CPAC class * * @since 2.2 */ private $cpac; /** * @since 2.2 * * @param CPAC */ function __construct( $cpac ) { $this->cpac = $cpac; // Redirect to addons settings tab on activation & deactivation if ( is_admin() ) { add_filter( 'wp_redirect', array( $this, 'addon_plugin_statuschange_redirect' ) ); } // Handle install request add_action( 'admin_init', array( $this, 'handle_install_request' ) ); } /** * Handles the installation of the add-on * * @since 2.2 */ public function handle_install_request() { if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'install-cac-addon' ) || ! isset( $_GET['plugin'] ) ) return; if ( ! $this->get_addon( $_GET['plugin'] ) ) { cpac_admin_message( 'Addon does not exist.', 'error' ); return; } if ( ! class_exists( 'CAC_Addon_Pro', false ) ) { cpac_admin_message( 'You need Admin Columns Pro.', 'error' ); return; } // Hook: trigger possible warning message before running WP installer ( api errors etc. ) if ( $error = apply_filters( 'cac/addons/install_request/maybe_error', false, $_GET['plugin'] ) ) { cpac_admin_message( $error, 'error' ); return; } $install_url = add_query_arg( array( 'action' => 'install-plugin', 'plugin' => $_GET['plugin'], 'cpac-redirect' => true ), wp_nonce_url( network_admin_url( 'update.php'), 'install-plugin_' . $_GET['plugin'] ) ); wp_redirect( $install_url ); exit; } /** * Redirect the user to the Admin Columns add-ons page after activation/deactivation of an add-on from the add-ons page * * @since 2.2 * * @see filter:wp_redirect */ public function addon_plugin_statuschange_redirect( $location ) { if ( ! isset( $_GET['cpac-redirect'] ) ) { return $location; } $urlparts = parse_url( $location ); if ( ! $urlparts ) { return $location; } if ( ! empty( $urlparts['query'] ) ) { $admin_url = $urlparts['scheme'] . '://' . $urlparts['host'] . $urlparts['path']; // activate or deactivae plugin if ( admin_url( 'plugins.php' ) == $admin_url ) { parse_str( $urlparts['query'], $request ); if ( empty( $request['error'] ) ) { $location = add_query_arg( empty( $request['activate'] ) ? 'deactivate' : 'activate', true, $this->cpac->settings()->get_settings_url( 'addons' ) ); } } } return $location; } /** * Addons are grouped into addon groups by providing the group an addon belongs to (see CPAC_Addons::get_available_addons()). * * @since 2.2 * * @return array Available addon groups ([group_name] => [label]) */ public function get_addon_groups() { $addon_groups = array( 'integration' => __( 'Plugins', 'codepress-admin-columns' ) ); /** * Filter the addon groups * * @since 2.2 * * @param array $addon_groups Available addon groups ([group_name] => [label]) */ $addon_groups = apply_filters( 'cpac/addons/addon_groups', $addon_groups ); return $addon_groups; } /** * @since 2.2 * * @param bool $grouped Whether to group the plugins by addon group () * @return array Available addons ([addon_basename] => (array) [addon_details] if not grouped, a list of these key-value pairs per group otherwise ([group_name] => (array) [group_addons])) */ public function get_available_addons( $grouped = false ) { $addons = array( 'cac-addon-acf' => array( 'title' => __( 'Advanced Custom Fields', 'codepress-admin-columns' ), 'description' => __( 'Display and edit Advanced Custom Fields fields in the posts overview in seconds!', 'codepress-admin-columns' ), 'group' => 'integration', 'image' => CPAC_URL . 'assets/images/addons/acf.png' ), 'cac-addon-woocommerce' => array( 'title' => __( 'WooCommerce', 'codepress-admin-columns' ), 'description' => __( 'Enhance the products, orders and coupons overviews with new columns and inline editing.', 'codepress-admin-columns' ), 'group' => 'integration', 'image' => CPAC_URL . 'assets/images/addons/woocommerce.png' ) ); /** * Filter the available addons * * @since 2.2 * * @param array $addons Available addons ([addon_name] => (array) [addon_details]) */ $addons = apply_filters( 'cpac/addons/available_addons', $addons ); foreach ( $addons as $addon_name => $addon ) { $addons[ $addon_name ] = wp_parse_args( $addon, array( 'title' => '', 'group' => '', 'image' => '' ) ); } // Maybe group add-ons if ( $grouped ) { $addons = $this->group_addons( $addons ); } return $addons; } /** * Get add-on details from the available add-ons list * * @since 2.2 * * @param string $id Unique addon ID * @return bool|array Returns addon details if the add-on exists, false otherwise */ public function get_addon( $id ) { $addons = $this->get_available_addons(); if ( isset( $addons[ $id ] ) ) { return $addons[ $id ]; } return false; } /** * Group a list of add-ons * * @since 2.2 * @uses CPAC_Addons::group_addons() * * @param array $addons List of addons ([addon_name] => (array) [addon_details]) * @return array A list of addons per group: [group_name] => (array) [group_addons], where [group_addons] is an array ([addon_name] => (array) [addon_details]) */ public function group_addons( $addons ) { $groups = $this->get_addon_groups(); $grouped_addons = array(); foreach ( $addons as $addon_name => $addon ) { if ( ! isset( $groups[ $addon['group'] ] ) ) { continue; } if ( ! isset( $grouped_addons[ $addon['group'] ] ) ) { $grouped_addons[ $addon['group'] ] = array(); } $grouped_addons[ $addon['group'] ][ $addon_name ] = $addon; } return $grouped_addons; } /** * Get whether an add-on is installed (i.e. the plugin is available in the plugin directory) * * @since 2.2 * * @param string $slug Plugin dirname/slug * @return bool Returns true if there is no add-on installed with the passed ID, false otherwise */ public function is_addon_installed( $slug ) { return $this->get_installed_addon_plugin_basename( $slug ) ? true : false; } /** * Get the plugin basename (see plugin_basename()) from a plugin, for example "my-plugin/my-plugin.php" * * @since 2.2 * * @param string $slug Plugin dirname/slug * @return string|bool Returns the plugin basename if the plugin is installed, false otherwise */ public function get_installed_addon_plugin_basename( $slug ) { $plugins = get_plugins(); foreach ( $plugins as $plugin_basename => $plugin ) { if ( $slug == dirname( $plugin_basename ) ) { return $plugin_basename; } } return false; } /** * @since 2.2 * * @param string $slug Plugin dirname/slug * @return string|bool Returns the plugin version if the plugin is installed, false otherwise */ public function get_installed_addon_plugin_version( $slug ) { $plugins = get_plugins(); foreach ( $plugins as $plugin_basename => $plugin ) { if ( $slug == dirname( $plugin_basename ) ) { return $plugin['Version']; } } return false; } }