Skip to content
Snippets Groups Projects
Commit 3d11d9e2 authored by Grzegorz Rola's avatar Grzegorz Rola
Browse files

Merge branch 'feature/new-requirements' into 'master'

activation aware builder

See merge request !19
parents 7e54daed 7823c89d
No related branches found
No related tags found
1 merge request!19activation aware builder
Pipeline #7939 failed with stages
in 3 minutes and 45 seconds
## [1.2.0] - 2019-06-26
### Added
- InfoActivationBuilder with capability to set info if plugin subscription is active
<?php
namespace WPDesk\PluginBuilder\Builder;
use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
use WPDesk\PluginBuilder\Plugin\ActivationAware;
use WPDesk\PluginBuilder\Storage\PluginStorage;
/**
* Builder that have info about activations
*
* Warning: We can't extend InfoBuilder.php as some old plugins(without wp-flow) will load the old version od InfoBuilder class that have private plugin property.
*
* @package WPDesk\PluginBuilder\Builder
*/
class InfoActivationBuilder extends AbstractBuilder
{
const FILTER_PLUGIN_CLASS = 'wp_builder_plugin_class';
const HOOK_BEFORE_PLUGIN_INIT = 'wp_builder_before_plugin_init';
const HOOK_AFTER_PLUGIN_INIT = 'wp_builder_before_init';
/** @var AbstractPlugin */
private $plugin;
/** @var \WPDesk_Buildable */
private $info;
/** @var string */
protected $storage_id;
/**
* @var bool
*/
private $is_active;
/**
* @param \WPDesk_Buildable $info
* @param bool $is_active
*/
public function __construct(\WPDesk_Buildable $info, $is_active)
{
$this->info = $info;
$this->storage_id = $info->get_class_name();
$this->is_active = $is_active;
}
/**
* Builds instance of plugin
*/
public function build_plugin()
{
$class_name = apply_filters(self::FILTER_PLUGIN_CLASS, $this->info->get_class_name());
/** @var AbstractPlugin $plugin */
$this->plugin = new $class_name($this->info);
if ($this->plugin instanceof ActivationAware && $this->is_active) {
$this->plugin->set_active();
}
return $this->plugin;
}
public function store_plugin(PluginStorage $storage)
{
$storage->add_to_storage($this->storage_id, $this->plugin);
}
public function init_plugin()
{
do_action(self::HOOK_BEFORE_PLUGIN_INIT, $this->plugin);
$this->plugin->init();
do_action(self::HOOK_AFTER_PLUGIN_INIT, $this->plugin);
}
/**
* @return AbstractPlugin
*/
public function get_plugin()
{
return $this->plugin;
}
}
\ No newline at end of file
...@@ -5,6 +5,11 @@ namespace WPDesk\PluginBuilder\Builder; ...@@ -5,6 +5,11 @@ namespace WPDesk\PluginBuilder\Builder;
use WPDesk\PluginBuilder\Plugin\AbstractPlugin; use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
use WPDesk\PluginBuilder\Storage\PluginStorage; use WPDesk\PluginBuilder\Storage\PluginStorage;
/**
* @deprecated Should not be used as some old plugins are using it and we can't touch this.
*
* @package WPDesk\PluginBuilder\Builder
*/
class InfoBuilder extends AbstractBuilder { class InfoBuilder extends AbstractBuilder {
const FILTER_PLUGIN_CLASS = 'wp_builder_plugin_class'; const FILTER_PLUGIN_CLASS = 'wp_builder_plugin_class';
const HOOK_BEFORE_PLUGIN_INIT = 'wp_builder_before_plugin_init'; const HOOK_BEFORE_PLUGIN_INIT = 'wp_builder_before_plugin_init';
......
<?php
namespace WPDesk\PluginBuilder\Plugin;
/**
* It means that this class is should know about subscription activation
*
* @package WPDesk\PluginBuilder\Plugin
*/
interface ActivationAware {
/**
* Set the activation flag to true
*
* @return void
*/
public function set_active();
/**
* Is subscription active?
*
* @return bool
*/
public function is_active();
}
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
namespace WPDesk\PluginBuilder\Plugin; namespace WPDesk\PluginBuilder\Plugin;
/**
* @deprecated nobody uses it :) And also this library is not a place for this class
*
* @package WPDesk\PluginBuilder\Plugin
*/
class ActivationTracker { class ActivationTracker {
/** /**
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
namespace WPDesk\PluginBuilder\Plugin; namespace WPDesk\PluginBuilder\Plugin;
/**
* @package WPDesk\PluginBuilder\Plugin
*/
trait PluginAccess { trait PluginAccess {
/** /**
* Plugin. * Plugin.
......
...@@ -2,6 +2,11 @@ ...@@ -2,6 +2,11 @@
namespace WPDesk\PluginBuilder\Plugin; namespace WPDesk\PluginBuilder\Plugin;
/**
* @deprecated Use wpdesk/wp-view
*
* @package WPDesk\PluginBuilder\Plugin
*/
trait TemplateLoad { trait TemplateLoad {
/** /**
......
...@@ -4,6 +4,11 @@ namespace WPDesk\PluginBuilder\Storage; ...@@ -4,6 +4,11 @@ namespace WPDesk\PluginBuilder\Storage;
use WPDesk\PluginBuilder\Plugin\AbstractPlugin; use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
/**
* Can store plugin instances in static variable
*
* @package WPDesk\PluginBuilder\Storage
*/
class StaticStorage implements PluginStorage { class StaticStorage implements PluginStorage {
protected static $instances = []; protected static $instances = [];
...@@ -26,9 +31,8 @@ class StaticStorage implements PluginStorage { ...@@ -26,9 +31,8 @@ class StaticStorage implements PluginStorage {
public function get_from_storage( $class ) { public function get_from_storage( $class ) {
if ( isset( self::$instances[ $class ] ) ) { if ( isset( self::$instances[ $class ] ) ) {
return self::$instances[ $class ]; return self::$instances[ $class ];
} else {
throw new Exception\ClassNotExists( "Class {$class} not exists in storage" );
} }
throw new Exception\ClassNotExists( "Class {$class} not exists in storage" );
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment