Server : LiteSpeed
System : Linux server104.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64
User : saleoqej ( 6848)
PHP Version : 8.0.30
Disable Function : NONE
Directory :  /home/saleoqej/chijamzacademy.com/wp-content/plugins/notificationx/includes/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /home/saleoqej/chijamzacademy.com/wp-content/plugins/notificationx/includes/CoreInstaller.php
<?php

namespace NotificationX;

/**
 * WPDeveloper Core Install
 * @method static CoreInstaller get_instance($args = null)
 */
class CoreInstaller {
    /**
     * Instance of CoreInstallers
     *
     * @var CoreInstaller
     */
    use GetInstance;

    /**
     * Plugin Base Name
     *
     * @var string
     */
    private $plugin_basename;

    /**
     * Instantiate the class
     *
     * @param string $affiliate
     */
    function __construct($plugin_basename = '') {
        $this->plugin_basename = $plugin_basename;
        add_action('init', array($this, 'init_hooks'));
    }

    /**
     * Initialize the hooks
     *
     * @return void
     */
    public function init_hooks() {
        if (!current_user_can('manage_options')) {
            return;
        }
        add_action('wp_ajax_wpdeveloper_upsale_core_install_' . $this->plugin_basename, array($this, 'core_install'));
    }

    /**
     * Fail if plugin installtion/activation fails
     *
     * @param  Object $thing
     *
     * @return void
     */
    public function fail_on_error($thing) {
        if (is_wp_error($thing)) {
            wp_send_json_error($thing->get_error_message());
        }
    }

    /**
     * Install Upsale Plugin
     *
     * @return void
     */
    public function core_install() {
        check_ajax_referer('wpdeveloper_upsale_core_install_' . $this->plugin_basename);
        if (!current_user_can('manage_options')) {
            wp_send_json_error(__('You don\'t have permission to install the plugins', 'notificationx'));
        }

        $this->raise_limits();

        $plugin_slug = (isset($_POST['slug'])) ? sanitize_text_field( $_POST['slug'] ) : '';
        $plugin_file = (isset($_POST['file'])) ? sanitize_file_name( $_POST['file'] ) : '';

        if (empty($plugin_file) || empty($plugin_slug)) {
            wp_send_json_error(__('You don\'t have set any slug and file name to install the plugins', 'notificationx'));
        }

        $plugin_status = $this->install_plugin($plugin_slug, $plugin_file);
        $this->fail_on_error($plugin_status);

        wp_send_json_success();
    }

    /**
     * Install and activate a plugin
     *
     * @param  string $slug
     * @param  string $file
     *
     * @return WP_Error|null
     */
    public function install_plugin($slug, $file) {
        include_once ABSPATH . 'wp-admin/includes/file.php';
        include_once ABSPATH . 'wp-admin/includes/plugin.php';
        include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
        include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';

        $this->raise_limits();

        $plugin_basename = $slug . '/' . $file;

        // if exists and not activated
        if (file_exists(WP_PLUGIN_DIR . '/' . $plugin_basename)) {
            return \activate_plugin($plugin_basename);
        }

        // seems like the plugin doesn't exists. Download and activate it
        $upgrader = new \Plugin_Upgrader(new \WP_Ajax_Upgrader_Skin());

        $api      = plugins_api('plugin_information', array('slug' => $slug, 'fields' => array('sections' => false)));
        $result   = $upgrader->install($api->download_link);

        if (is_wp_error($result)) {
            return $result;
        }

        return activate_plugin($plugin_basename);
    }
    /**
     * Some process take long time to execute
     * for that need to raise the limit.
     */
    public function raise_limits() {
        wp_raise_memory_limit('admin');
        if (wp_is_ini_value_changeable('max_execution_time')) {
            ini_set('max_execution_time', 0);
        }
        @set_time_limit(0);
    }
}