From fe1253a98a2c5d4f9e830db9d038e3fb8162543c Mon Sep 17 00:00:00 2001 From: dyszczo <krzysztof.dyszczyk@gmail.com> Date: Wed, 18 Sep 2019 16:10:50 +0200 Subject: [PATCH] classes from wp-requirements --- CHANGELOG.md | 4 + composer.json | 3 +- src/Plugin/WithoutNamespace/Buildable.php | 11 ++ .../WithoutNamespace/Has_Plugin_Info.php | 29 +++ src/Plugin/WithoutNamespace/Plugin_Info.php | 171 ++++++++++++++++++ 5 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 src/Plugin/WithoutNamespace/Buildable.php create mode 100644 src/Plugin/WithoutNamespace/Has_Plugin_Info.php create mode 100644 src/Plugin/WithoutNamespace/Plugin_Info.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 692f0ab..20f105b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.3.0] - 2019-09-18 +### Added +- Plugin classes from wp-requirements + ## [1.2.0] - 2019-06-26 ### Added - InfoActivationBuilder with capability to set info if plugin subscription is active diff --git a/composer.json b/composer.json index 0cab621..50e7f9e 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "wimg/php-compatibility": "^8" }, "autoload": { - "psr-4": {"WPDesk\\PluginBuilder\\": "src/"} + "psr-4": {"WPDesk\\PluginBuilder\\": "src/"}, + "classmap": ["src/Plugin/WithoutNamespace"] }, "autoload-dev": { }, diff --git a/src/Plugin/WithoutNamespace/Buildable.php b/src/Plugin/WithoutNamespace/Buildable.php new file mode 100644 index 0000000..78c7322 --- /dev/null +++ b/src/Plugin/WithoutNamespace/Buildable.php @@ -0,0 +1,11 @@ +<?php + +/** + * Have info about what class should be built by WPDesk_Builder + * + * have to be compatible with PHP 5.2.x + */ +interface WPDesk_Buildable { + /** @return string */ + public function get_class_name(); +} \ No newline at end of file diff --git a/src/Plugin/WithoutNamespace/Has_Plugin_Info.php b/src/Plugin/WithoutNamespace/Has_Plugin_Info.php new file mode 100644 index 0000000..5ecf98d --- /dev/null +++ b/src/Plugin/WithoutNamespace/Has_Plugin_Info.php @@ -0,0 +1,29 @@ +<?php + +if ( ! interface_exists( 'WPDesk_Translatable' ) ) { + require_once __DIR__ . '/../Translatable.php'; +} + + +/** + * Have MUST HAVE info for plugin instantion + * + * have to be compatible with PHP 5.2.x + */ +interface WPDesk_Has_Plugin_Info extends WPDesk_Translatable { + /** + * @return string + */ + public function get_plugin_file_name(); + + /** + * @return string + */ + public function get_plugin_dir(); + + /** + * @return string + */ + public function get_version(); + +} \ No newline at end of file diff --git a/src/Plugin/WithoutNamespace/Plugin_Info.php b/src/Plugin/WithoutNamespace/Plugin_Info.php new file mode 100644 index 0000000..693b408 --- /dev/null +++ b/src/Plugin/WithoutNamespace/Plugin_Info.php @@ -0,0 +1,171 @@ +<?php + +if ( ! interface_exists( 'WPDesk_Translatable' ) ) { + require_once __DIR__ . '/../Translatable.php'; +} +if ( ! class_exists( 'WPDesk_Buildable' ) ) { + require_once __DIR__ . '/../Buildable.php'; +} +if ( ! class_exists( 'WPDesk_Has_Plugin_Info' ) ) { + require_once 'Has_Plugin_Info.php'; +} + +/** + * Structure with core info about plugin + * + * have to be compatible with PHP 5.2.x + */ +class WPDesk_Plugin_Info implements WPDesk_Translatable, WPDesk_Buildable, WPDesk_Has_Plugin_Info { + /** @var string */ + private $plugin_file_name; + + /** @var string */ + private $plugin_dir; + + /** @var string */ + private $plugin_url; + + /** @var string */ + private $class_name; + + /** @var string */ + private $version; + + /** @var string */ + private $product_id; + + /** @var string */ + private $plugin_name; + + /** @var \DateTimeInterface */ + private $release_date; + + /** string */ + private $text_domain; + + /** + * @return string + */ + public function get_plugin_file_name() { + return $this->plugin_file_name; + } + + /** + * @param string $plugin_name + */ + public function set_plugin_file_name( $plugin_name ) { + $this->plugin_file_name = $plugin_name; + } + + /** + * @return string + */ + public function get_plugin_dir() { + return $this->plugin_dir; + } + + /** + * @param string $plugin_dir + */ + public function set_plugin_dir( $plugin_dir ) { + $this->plugin_dir = $plugin_dir; + } + + /** + * @return string + */ + public function get_plugin_url() { + return $this->plugin_url; + } + + /** + * @param string $plugin_url + */ + public function set_plugin_url( $plugin_url ) { + $this->plugin_url = $plugin_url; + } + + /** + * @return string + */ + public function get_version() { + return $this->version; + } + + /** + * @param string $version + */ + public function set_version( $version ) { + $this->version = $version; + } + + /** + * @return string + */ + public function get_product_id() { + return $this->product_id; + } + + /** + * @param string $product_id + */ + public function set_product_id( $product_id ) { + $this->product_id = $product_id; + } + + /** + * @return string + */ + public function get_plugin_name() { + return $this->plugin_name; + } + + /** + * @param string $plugin_name + */ + public function set_plugin_name( $plugin_name ) { + $this->plugin_name = $plugin_name; + } + + /** + * @return DateTimeInterface + */ + public function get_release_date() { + return $this->release_date; + } + + /** + * @param \DateTimeInterface $release_date + */ + public function set_release_date( $release_date ) { + $this->release_date = $release_date; + } + + /** + * @return string + */ + public function get_class_name() { + return $this->class_name; + } + + /** + * @param string $class_name + */ + public function set_class_name( $class_name ) { + $this->class_name = $class_name; + } + + /** + * @return string + */ + public function get_text_domain() { + return $this->text_domain; + } + + /** + * @param $value + */ + public function set_text_domain( $value ) { + $this->text_domain = $value; + } +} \ No newline at end of file -- GitLab