%PDF- %PDF-
Direktori : /home/graphicd/www/wjmarketing/wp-content/plugins/duplicator/src/Utils/ExtraPlugins/ |
Current File : /home/graphicd/www/wjmarketing/wp-content/plugins/duplicator/src/Utils/ExtraPlugins/ExtraItem.php |
<?php namespace Duplicator\Utils\ExtraPlugins; use Duplicator\Libs\Snap\SnapString; class ExtraItem { const STATUS_NOT_INSTALLED = 0; const STATUS_INSTALLED = 1; const STATUS_ACTIVE = 2; const URL_TYPE_GENERIC = 0; const URL_TYPE_ZIP = 1; /** * plugin name * * @var string */ public $name = ''; /** * plugin slug * * @var string */ protected $slug = ''; /** * url to plugin icon * * @var string */ public $icon = ''; /** * plugin description * * @var string */ public $desc = ''; /** * plugin url either to zip file or pro version * * @var string */ public $url = ''; /** * plugin url on wordpress.org if available * * @var bool|string */ public $wpOrgURL = ''; /** * PRO version of plugin if available * * @var ExtraItem|null */ protected $pro = null; /** * Class constructor * * @param string $name plugin name * @param string $slug plugin slug * @param string $icon url to plugin icon * @param string $desc plugin description * @param string $url plugin url * @param string|bool $wpOrgURL plugin url on wordpress.org */ public function __construct($name, $slug, $icon, $desc, $url, $wpOrgURL = false) { $this->name = $name; $this->slug = $slug; $this->icon = $icon; $this->desc = $desc; $this->url = $url; $this->wpOrgURL = $wpOrgURL; } /** * Returns plugin slug * * @return array */ public function getSlug() { return $this->slug; } /** * Is plugin active * * @return bool */ public function isActive() { return $this->isInstalled() && is_plugin_active($this->slug); } /** * Is plugin installed * * @return bool */ public function isInstalled() { static $installedSlugs = null; if ($installedSlugs === null) { $installedSlugs = array_keys(get_plugins()); } return in_array($this->slug, $installedSlugs); } /** * Returns pro version of plugin if available * * @return ExtraItem|null */ public function getPro() { return $this->pro; } /** * Set pro plugin * * @param string $name plugin name * @param string $slug plugin slug * @param string $icon url to plugin icon * @param string $desc plugin description * @param string $url plugin url * @param string|bool $wpOrgURL plugin url on wordpress.org * * @return void */ public function setPro($name, $slug, $icon, $desc, $url, $wpOrgURL = false) { $this->pro = new self($name, $slug, $icon, $desc, $url, $wpOrgURL); } /** * Whether to skip lite version of plugin because it is installed and pro version is available * * @return bool */ public function skipLite() { return $this->pro !== null && $this->isActive(); } /** * Enum of status constants (STATUS_ACTIVE, STATUS_INSTALLED, STATUS_UNINSALED) * * @return int return status constant */ public function getStatus() { if ($this->isActive()) { return self::STATUS_ACTIVE; } elseif ($this->isInstalled()) { return self::STATUS_INSTALLED; } else { return self::STATUS_NOT_INSTALLED; } } /** * Status text * * @return string */ public function getStatusText() { switch ($this->getStatus()) { case self::STATUS_ACTIVE: return __('Active', 'duplicator'); case self::STATUS_INSTALLED: return __('Inactive', 'duplicator'); case self::STATUS_NOT_INSTALLED: return __('Not Installed', 'duplicator'); } } /** * Enum of URL constants (URL_TYPE_GENERIC, URL_TYPE_ZIP) * * @return int */ public function getURLType() { if (SnapString::endsWith($this->url, '.zip')) { return self::URL_TYPE_ZIP; } else { return self::URL_TYPE_GENERIC; } } /** * Install this plugin * * @return bool true on success */ public function install() { if ($this->isInstalled()) { return true; } if (!SnapString::endsWith($this->url, '.zip')) { throw new \Exception('Invalid plugin url for installation'); } if (!current_user_can('install_plugins')) { throw new \Exception('User does not have permission to install plugins'); } if (!class_exists('Plugin_Upgrader')) { require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; } wp_cache_flush(); $upgrader = new \Plugin_Upgrader(new \Automatic_Upgrader_Skin()); if (!$upgrader->install($this->url)) { throw new \Exception('Failed to install plugin'); } return true; } /** * Activate this plugin * * @return bool true on success */ public function activate() { if ($this->isActive()) { return true; } if (!is_null(activate_plugin($this->slug))) { throw new \Exception('Failed to activate plugin'); } return true; } }