File: /home/alfouzantranspor/public_html/wp-content/themes/mining-logistic/inc/tgm/plugin-activation.php
<?php
/**
* This file represents an example of the code that themes would use to register
* the required plugins.
*
* It is expected that theme authors would copy and paste this code into their
* functions.php file, and amend to suit.
*
* @see http://tgmpluginactivation.com/configuration/ for detailed documentation.
*
* @package TGM-Plugin-Activation
* @subpackage Example
* @version 2.6.1 for parent theme Mining-logistic for publication on WordPress.org
* @author Thomas Griffin, Gary Jones, Juliette Reinders Folmer
* @copyright Copyright (c) 2011, Thomas Griffin
* @license http://opensource.org/licenses/gpl-2.0.php GPL v2 or later
* @link https://github.com/TGMPA/TGM-Plugin-Activation
*/
/**
* Include the TGM_Plugin_Activation class.
*
* Depending on your implementation, you may want to change the include call:
*
* Parent Theme:
* require_once get_template_directory() . '/path/to/class-tgm-plugin-activation.php';
*
* Child Theme:
* require_once get_stylesheet_directory() . '/path/to/class-tgm-plugin-activation.php';
*
* Plugin:
* require_once dirname( __FILE__ ) . '/path/to/class-tgm-plugin-activation.php';
*/
require_once get_template_directory() . '/inc/tgm/class-tgm-plugin-activation.php';
add_action( 'tgmpa_register', 'mining_logistic_register_required_plugins' );
/**
* Register the required plugins for this theme.
*
* In this example, we register five plugins:
* - one included with the TGMPA library
* - two from an external source, one from an arbitrary source, one from a GitHub repository
* - two from the .org repo, where one demonstrates the use of the `is_callable` argument
*
* The variables passed to the `tgmpa()` function should be:
* - an array of plugin arrays;
* - optionally a configuration array.
* If you are not changing anything in the configuration array, you can remove the array and remove the
* variable from the function call: `tgmpa( $plugins );`.
* In that case, the TGMPA default settings will be used.
*
* This function is hooked into `tgmpa_register`, which is fired on the WP `init` action on priority 10.
*/
function mining_logistic_register_required_plugins() {
/*
* Array of plugin arrays. Required keys are name and slug.
* If the source is NOT from the .org repo, then source is also required.
*/
$plugins = array(
array(
'name' => esc_html__( 'Ibtana - WordPress Website Builder', 'mining-logistic' ),
'slug' => 'ibtana-visual-editor',
'required' => false,
)
);
/*
* Array of configuration settings. Amend each line as needed.
*
* TGMPA will start providing localized text strings soon. If you already have translations of our standard
* strings available, please help us make TGMPA even better by giving us access to these translations or by
* sending in a pull-request with .po file(s) with the translations.
*
* Only uncomment the strings in the config array if you want to customize the strings.
*/
$config = array(
'id' => 'mining-logistic', // Unique ID for hashing notices for multiple instances of TGMPA.
'default_path' => '', // Default absolute path to bundled plugins.
'menu' => 'tgmpa-install-plugins', // Menu slug.
'has_notices' => true, // Show admin notices or not.
'dismissable' => true, // If false, a user cannot dismiss the nag message.
'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag.
'is_automatic' => false, // Automatically activate plugins after installation or not.
'message' => '', // Message to output right before the plugins table.
);
tgmpa( $plugins, $config );
}
// Plugin – AI Content Writer plugin activation
add_action('wp_ajax_install_and_activate_required_plugin', 'install_and_activate_required_plugin');
add_action('wp_ajax_install_and_activate_required_plugin', 'install_and_activate_required_plugin');
function install_and_activate_required_plugin() {
if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'install_activate_nonce')) {
wp_send_json_error(['message' => 'Nonce verification failed.']);
}
include_once ABSPATH . 'wp-admin/includes/plugin.php';
include_once ABSPATH . 'wp-admin/includes/file.php';
include_once ABSPATH . 'wp-admin/includes/misc.php';
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
$mining_logistic_upgrader = new Plugin_Upgrader(new Automatic_Upgrader_Skin());
// Define required plugins
$plugins = [
[
'slug' => 'ibtana-visual-editor',
'file' => 'ibtana-visual-editor/plugin.php',
'url' => 'https://downloads.wordpress.org/plugin/ibtana-visual-editor.latest-stable.zip',
]
];
$mining_logistic_installed_plugins = get_plugins();
foreach ($plugins as $plugin) {
// Install if not present
if (!isset($mining_logistic_installed_plugins[$plugin['file']])) {
$mining_logistic_install_result = $mining_logistic_upgrader->install($plugin['url']);
if (is_wp_error($mining_logistic_install_result)) {
wp_send_json_error(['message' => "Failed to install {$plugin['slug']}"]);
}
}
// Activate if not active
if (!is_plugin_active($plugin['file'])) {
$mining_logistic_activate_result = activate_plugin($plugin['file']);
if (is_wp_error($mining_logistic_activate_result)) {
wp_send_json_error([
'message' => "Failed to activate {$plugin['slug']}",
'error' => $mining_logistic_activate_result->get_error_message(),
]);
}
}
}
wp_send_json_success(['message' => 'All plugins installed and activated successfully.']);
}