File "PluginsManager-20250112020627.php"
Full Path: /home/pumpbmko/public_html/wp-content/themes/momota/lib/colibriwp/src/PluginsManager-20250112020627.php
File size: 4.57 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace ColibriWP\Theme;
use ColibriWP\Theme\Core\Hooks;
use ColibriWP\Theme\Core\Tree;
use ColibriWP\Theme\Core\Utils;
use Kubio\Theme\Flags;
use TGM_Plugin_Activation;
class PluginsManager {
const INSTALLED_PLUGIN = 'installed';
const ACTIVE_PLUGIN = 'active';
const NOT_INSTALLED_PLUGIN = 'not-installed';
private $theme = null;
/** @var Tree $plugins_data */
private $plugins_data = array();
private $tgmpa_config = array();
public function __construct( $theme ) {
if ( ! class_exists( 'TGM_Plugin_Activation' ) ) {
require_once Theme::rootDirectory() . '/inc/class-tgm-plugin-activation.php';
}
$this->theme = $theme;
}
public function boot() {
$data = Hooks::prefixed_apply_filters( 'theme_plugins', array() );
$this->tgmpa_config = Hooks::prefixed_apply_filters(
'tgmpa_config',
array(
'id' => get_template(),
'default_path' => '',
'menu' => 'tgmpa-install-plugins',
'has_notices' => false,
'dismissable' => true,
'dismiss_msg' => '',
'is_automatic' => false,
'message' => '',
)
);
foreach ( $data as $slug => $plugin_data ) {
$data[ $slug ] = $this->normalizePluginData( $plugin_data );
}
uasort(
$data,
function ( $a, $b ) {
return (
intval( $a['priority'] ) -
intval( $b['priority'] )
);
}
);
$this->plugins_data = new Tree( $data );
add_action( 'tgmpa_register', array( $this, 'tgmpaRegitster' ) );
Hooks::add_wp_ajax(
'activate_plugin',
function () {
check_ajax_referer( 'plugin_activate_nonce' );
$slug = isset( $_REQUEST['slug'] ) ? $_REQUEST['slug'] : false;
$source = sanitize_text_field( Utils::pathGet( $_REQUEST, 'source', '' ) );
if ( $source ) {
Flags::set( 'start_source', $source );
}
if ( $source && strpos( $source, 'customizer-sidebar' ) === 0 ) {
Flags::set( 'import_design', true );
}
if ( $slug && ( $path = $this->getPluginData( "{$slug}.plugin_path" ) ) ) {
$ac = get_option( 'active_plugins' );
$ac[] = $path;
update_option( 'active_plugins', array_unique( $ac ) );
Hooks::prefixed_do_action( 'after_plugin_activated', $slug );
wp_send_json_success();
}
wp_send_json_error();
}
);
}
private function normalizePluginData( $plugin_data ) {
return array_merge(
array(
'name' => '',
'description' => '',
'required' => false,
'force_activation' => false,
'is_automatic' => false,
'priority' => 10,
'plugin_path' => '',
),
$plugin_data
);
}
public function getPluginData( $path = '', $default = null ) {
return $this->plugins_data->findAt( $path, $default );
}
public function tgmpaRegitster() {
$plugins = $this->plugins_data->getData();
$to_register = array();
foreach ( $plugins as $slug => $plugin_data ) {
$to_register[] = array_merge(
$plugin_data,
array(
'slug' => $slug,
)
);
}
tgmpa( $to_register, $this->tgmpa_config );
}
public function getPluginState( $slug ) {
$tgmpa = TGM_Plugin_Activation::get_instance();
$installed = $tgmpa->is_plugin_installed( $slug );
$result = static::NOT_INSTALLED_PLUGIN;
if ( $installed ) {
$result = static::INSTALLED_PLUGIN;
if ( $tgmpa->is_plugin_active( $slug ) ) {
$result = static::ACTIVE_PLUGIN;
}
}
return $result;
}
public function getInstallLink( $slug ) {
if ( $this->getPluginData( "$slug.source" ) ) {
return $this->nonceURL(
add_query_arg(
array(
'plugin' => urlencode( $slug ),
'tgmpa-install' => 'install-plugin',
),
TGM_Plugin_Activation::get_instance()->get_tgmpa_url()
),
'tgmpa-install',
'tgmpa-nonce'
);
}
return add_query_arg(
array(
'action' => 'install-plugin',
'plugin' => $slug,
'_wpnonce' => wp_create_nonce( 'install-plugin_' . $slug ),
),
network_admin_url( 'update.php' )
);
}
private function nonceURL( $actionurl, $action = - 1, $name = '_wpnonce' ) {
return add_query_arg( $name, wp_create_nonce( $action ), $actionurl );
}
public function getActivationLink( $slug ) {
$tgmpa = TGM_Plugin_Activation::get_instance();
if ( isset( $tgmpa->plugins[ $slug ] ) ) {
$path = $tgmpa->plugins[ $slug ]['file_path'];
return add_query_arg(
array(
'action' => 'activate',
'plugin' => rawurlencode( $path ),
'plugin_status' => 'all',
'paged' => '1',
'_wpnonce' => wp_create_nonce( 'activate-plugin_' . $path ),
),
network_admin_url( 'plugins.php' )
);
}
}
}