Skip to content
Snippets Groups Projects
Commit 97fd491d authored by dyszczo's avatar dyszczo
Browse files

builder/storage/director arch finished

parent 65e139f8
No related branches found
No related tags found
2 merge requests!5Devel,!4more like builder pattern
...@@ -4,6 +4,7 @@ namespace WPDesk\PluginBuilder\BuildDirector; ...@@ -4,6 +4,7 @@ namespace WPDesk\PluginBuilder\BuildDirector;
use WPDesk\PluginBuilder\Builder\AbstractBuilder; use WPDesk\PluginBuilder\Builder\AbstractBuilder;
use WPDesk\PluginBuilder\Plugin\AbstractPlugin; use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
use WPDesk\PluginBuilder\Storage\StorageFactory;
class LegacyBuildDirector { class LegacyBuildDirector {
...@@ -20,7 +21,9 @@ class LegacyBuildDirector { ...@@ -20,7 +21,9 @@ class LegacyBuildDirector {
public function buildPlugin() { public function buildPlugin() {
$this->builder->build_plugin(); $this->builder->build_plugin();
$this->builder->init_plugin(); $this->builder->init_plugin();
$this->builder->store_plugin();
$storage = new StorageFactory();
$this->builder->store_plugin( $storage->create_storage() );
} }
/** /**
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
namespace WPDesk\PluginBuilder\Builder; namespace WPDesk\PluginBuilder\Builder;
use WPDesk\PluginBuilder\Plugin\AbstractPlugin; use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
use WPDesk\PluginBuilder\Storage\PluginStorage;
abstract class AbstractBuilder { abstract class AbstractBuilder {
/** /**
...@@ -14,7 +15,7 @@ abstract class AbstractBuilder { ...@@ -14,7 +15,7 @@ abstract class AbstractBuilder {
/** /**
* Store plugin class in some kind of storage * Store plugin class in some kind of storage
*/ */
public function store_plugin() { public function store_plugin( PluginStorage $storage ) {
} }
/** /**
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
namespace WPDesk\PluginBuilder\Builder; namespace WPDesk\PluginBuilder\Builder;
use WPDesk\PluginBuilder\Plugin\AbstractPlugin; use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
use WPDesk\PluginBuilder\Plugin\PluginStorage; use WPDesk\PluginBuilder\Storage\PluginStorage;
class InfoBuilder extends AbstractBuilder { class InfoBuilder extends AbstractBuilder {
const FILTER_PLUGIN_CLASS = 'wp_builder_plugin_class'; const FILTER_PLUGIN_CLASS = 'wp_builder_plugin_class';
...@@ -16,15 +16,11 @@ class InfoBuilder extends AbstractBuilder { ...@@ -16,15 +16,11 @@ class InfoBuilder extends AbstractBuilder {
/** @var \WPDesk_Buildable */ /** @var \WPDesk_Buildable */
private $info; private $info;
/** @var PluginStorage */
private $storage;
/** @var string */ /** @var string */
protected $storage_id; protected $storage_id;
public function __construct( \WPDesk_Buildable $info, PluginStorage $storage ) { public function __construct( \WPDesk_Buildable $info ) {
$this->info = $info; $this->info = $info;
$this->storage = $storage;
$this->storage_id = $info->get_class_name(); $this->storage_id = $info->get_class_name();
} }
...@@ -38,8 +34,8 @@ class InfoBuilder extends AbstractBuilder { ...@@ -38,8 +34,8 @@ class InfoBuilder extends AbstractBuilder {
$this->plugin = new $class_name( $this->info ); $this->plugin = new $class_name( $this->info );
} }
public function store_plugin() { public function store_plugin( PluginStorage $storage ) {
$this->storage->add_to_storage( $this->storage_id, $this->plugin ); $storage->add_to_storage( $this->storage_id, $this->plugin );
} }
public function init_plugin() { public function init_plugin() {
......
...@@ -69,15 +69,15 @@ abstract class AbstractPlugin implements \WPDesk_Translable { ...@@ -69,15 +69,15 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
* @return void * @return void
*/ */
protected function hooks() { protected function hooks() {
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
add_action( 'wp_enqueue_scripts', array( $this, 'wp_enqueue_scripts' ) ); add_action( 'wp_enqueue_scripts', [ $this, 'wp_enqueue_scripts' ] );
add_action( 'plugins_loaded', array( $this, 'load_plugin_text_domain' ) ); add_action( 'plugins_loaded', [ $this, 'load_plugin_text_domain' ] );
add_filter( 'plugin_action_links_' . plugin_basename( $this->get_plugin_file_path() ), array( add_filter( 'plugin_action_links_' . plugin_basename( $this->get_plugin_file_path() ), [
$this, $this,
'links_filter' 'links_filter'
) ); ] );
} }
...@@ -125,22 +125,22 @@ abstract class AbstractPlugin implements \WPDesk_Translable { ...@@ -125,22 +125,22 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
public function links_filter( $links ) { public function links_filter( $links ) {
$support_link = get_locale() === 'pl_PL' ? 'https://www.wpdesk.pl/support/' : 'https://www.wpdesk.net/support'; $support_link = get_locale() === 'pl_PL' ? 'https://www.wpdesk.pl/support/' : 'https://www.wpdesk.net/support';
$plugin_links = array( $plugin_links = [
'<a href="' . $support_link . '">' . __( 'Support', $this->get_text_domain() ) . '</a>', '<a href="' . $support_link . '">' . __( 'Support', $this->get_text_domain() ) . '</a>',
); ];
$links = array_merge( $plugin_links, $links ); $links = array_merge( $plugin_links, $links );
if ( $this->docs_url ) { if ( $this->docs_url ) {
$plugin_links = array( $plugin_links = [
'<a href="' . $this->docs_url . '">' . __( 'Docs', $this->get_text_domain() ) . '</a>', '<a href="' . $this->docs_url . '">' . __( 'Docs', $this->get_text_domain() ) . '</a>',
); ];
$links = array_merge( $plugin_links, $links ); $links = array_merge( $plugin_links, $links );
} }
if ( $this->settings_url ) { if ( $this->settings_url ) {
$plugin_links = array( $plugin_links = [
'<a href="' . $this->settings_url . '">' . __( 'Settings', $this->get_text_domain() ) . '</a>', '<a href="' . $this->settings_url . '">' . __( 'Settings', $this->get_text_domain() ) . '</a>',
); ];
$links = array_merge( $plugin_links, $links ); $links = array_merge( $plugin_links, $links );
} }
......
<?php <?php
namespace WPDesk\PluginBuilder\Builder\Exception; namespace WPDesk\PluginBuilder\Storage\Exception;
class ClassAlreadyExists extends \RuntimeException class ClassAlreadyExists extends \RuntimeException
{ {
......
<?php <?php
namespace WPDesk\PluginBuilder\Builder\Exception; namespace WPDesk\PluginBuilder\Storage\Exception;
class ClassNotExists extends \RuntimeException class ClassNotExists extends \RuntimeException
{ {
......
<?php
namespace WPDesk\PluginBuilder\Storage;
use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
interface PluginStorage {
/**
* @param string $class
* @param AbstractPlugin $object
*/
public function add_to_storage( $class, $object );
/**
* @param string $class
*
* @return AbstractPlugin
*/
public function get_from_storage( $class );
}
<?php <?php
namespace WPDesk\PluginBuilder\Plugin; namespace WPDesk\PluginBuilder\Storage;
class PluginStorage { use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
class StaticStorage implements PluginStorage {
protected static $instances = []; protected static $instances = [];
/** /**
......
<?php <?php
namespace WPDesk\PluginBuilder\Plugin; namespace WPDesk\PluginBuilder\Storage;
class StorageFactory { class StorageFactory {
...@@ -8,7 +8,7 @@ class StorageFactory { ...@@ -8,7 +8,7 @@ class StorageFactory {
* @return PluginStorage * @return PluginStorage
*/ */
public function create_storage() { public function create_storage() {
return new PluginStorage(); return new StaticStorage();
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment