/home/ramtczxy/emilypoultryfarm.com/wp-content/plugins/external-importer/application/Installer.php
<?php
namespace ExternalImporter\application;
defined('\ABSPATH') || exit;
use ExternalImporter\application\Plugin;
use ExternalImporter\application\admin\LicConfig;
use ExternalImporter\application\SyncScheduler;
use ExternalImporter\application\GalleryScheduler;
use ExternalImporter\application\AutoimportSheduler;
/**
* Installer class file
*
* @author keywordrush.com <support@keywordrush.com>
* @link https://www.keywordrush.com
* @copyright Copyright © 2021 keywordrush.com
*/
class Installer {
private static $instance = null;
public static function getInstance()
{
if (self::$instance == null)
self::$instance = new self;
return self::$instance;
}
private function __construct()
{
if (!empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'plugins.php')
{
\add_action('admin_init', array($this, 'requirements'), 0);
}
\add_action('admin_init', array($this, 'upgrade'));
\add_action('admin_init', array($this, 'redirect_after_activation'));
}
static public function dbVesrion()
{
return Plugin::db_version;
}
public static function activate()
{
if (!\current_user_can('activate_plugins'))
return;
self::requirements();
\add_option(Plugin::slug . '_do_activation_redirect', true);
\add_option(Plugin::slug . '_first_activation_date', time());
self::upgradeTables();
SyncScheduler::maybeAddScheduleEvent();
AutoimportSheduler::maybeAddScheduleEvent();
}
public static function deactivate()
{
SyncScheduler::clearScheduleEvent();
GalleryScheduler::clearScheduleEvent();
AutoimportSheduler::clearScheduleEvent();
}
public static function requirements()
{
$php_min_version = '5.6';
$extensions = array(
'simplexml',
'mbstring',
);
$plugins = array(
/*
'woocommerce/woocommerce.php' => array(
'name' => 'Woocommerce',
'version' => '3.6.5',
),
*
*/
);
$errors = array();
global $wp_version;
if (version_compare(Plugin::wp_requires, $wp_version, '>'))
$errors[] = sprintf('You are using Wordpress %s. <em>%s</em> requires at least <strong>Wordpress %s</strong>.', $wp_version, Plugin::name, Plugin::wp_requires);
$php_current_version = phpversion();
if (version_compare($php_min_version, $php_current_version, '>'))
$errors[] = sprintf('PHP is installed on your server %s. <em>%s</em> requires at least <strong>PHP %s</strong>.', $php_current_version, Plugin::name, $php_min_version);
foreach ($extensions as $extension)
{
if (!extension_loaded($extension))
$errors[] = sprintf('Requires PHP extension <strong>%s</strong>.', $extension);
}
foreach ($plugins as $plugin_id => $plugin)
{
if (!\is_plugin_active($plugin_id) || \version_compare($plugin['version'], self::getPluginVersion($plugin_id), '>'))
$errors[] = sprintf('<em>%s</em> requires <strong>%s %s+</strong> to be installed and active.', Plugin::name, $plugin['name'], $plugin['version']);
}
if (!$errors)
return;
unset($_GET['activate']);
\deactivate_plugins(\plugin_basename(\ExternalImporter\PLUGIN_FILE));
$e = sprintf('<div class="error"><p>%1$s</p><p><em>%2$s</em> ' . 'cannot be installed!' . '</p></div>', join('</p><p>', $errors), Plugin::name);
\wp_die($e);
}
public static function uninstall()
{
global $wpdb;
if (!current_user_can('activate_plugins'))
return;
\delete_option(Plugin::slug . '_db_version');
if (Plugin::isEnvato())
\delete_option(Plugin::slug . '_env_install');
if (Plugin::isPro())
\delete_option(LicConfig::getInstance()->option_name());
}
public static function upgrade()
{
$db_version = get_option(Plugin::slug . '_db_version');
if ($db_version >= self::dbVesrion())
return;
self::upgradeTables();
\update_option(Plugin::slug . '_db_version', self::dbVesrion());
}
private static function upgradeTables()
{
$models = array('TaskModel', 'QueryModel', 'LogModel', 'AutoimportModel', 'AutoimportItemModel');
$sql = '';
foreach ($models as $model)
{
$m = "\\ExternalImporter\\application\\models\\" . $model;
$sql .= $m::model()->getDump();
$sql .= "\r\n";
}
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
public function redirect_after_activation()
{
if (\get_option(Plugin::slug . '_do_activation_redirect', false))
{
\delete_option(Plugin::slug . '_do_activation_redirect');
\wp_redirect(\get_admin_url(\get_current_blog_id(), 'admin.php?page=' . Plugin::slug()));
}
}
public static function getPluginVersion($plugin_file)
{
$data = \get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
if (isset($data['Version']))
return $data['Version'];
else
return 0;
}
}