From 830e4b862d9491811e471a7b629f971e8ba70ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Garc=C3=ADa?= <lucas@codeccoop.org> Date: Tue, 30 Jan 2024 01:38:11 +0100 Subject: [PATCH] feat: class refactor --- ...seSettings.php => class-base-settings.php} | 17 +++-- .../Integration.php => class-integration.php} | 4 +- includes/{options/Menu.php => class-menu.php} | 38 +++++++---- .../Settings.php => class-settings.php} | 14 ++-- .../fields/{BaseField.php => class-field.php} | 6 +- .../gf/iban/{Addon.php => class-addon.php} | 2 +- .../gf/iban/{index.php => class-field.php} | 7 +- .../gf/iban/{Field.php => class-gf-field.php} | 3 +- includes/fields/gf/index.php | 3 - includes/fields/index.php | 11 --- .../wpcf7/iban/{index.php => class-field.php} | 5 +- includes/fields/wpcf7/index.php | 3 - ...dsetControl.js => fieldset-control-js.php} | 0 .../gf/{index.php => class-integration.php} | 12 ++-- includes/integrations/index.php | 27 -------- .../{index.php => class-integration.php} | 11 +-- includes/options/index.php | 10 --- wpct-erp-forms.php | 68 +++++++++++++------ 18 files changed, 116 insertions(+), 125 deletions(-) rename includes/{options/BaseSettings.php => class-base-settings.php} (90%) rename includes/{integrations/Integration.php => class-integration.php} (98%) rename includes/{options/Menu.php => class-menu.php} (58%) rename includes/{options/Settings.php => class-settings.php} (75%) rename includes/fields/{BaseField.php => class-field.php} (85%) rename includes/fields/gf/iban/{Addon.php => class-addon.php} (96%) rename includes/fields/gf/iban/{index.php => class-field.php} (72%) rename includes/fields/gf/iban/{Field.php => class-gf-field.php} (99%) delete mode 100644 includes/fields/gf/index.php delete mode 100644 includes/fields/index.php rename includes/fields/wpcf7/iban/{index.php => class-field.php} (97%) delete mode 100644 includes/fields/wpcf7/index.php rename includes/{options/fieldsetControl.js => fieldset-control-js.php} (100%) rename includes/integrations/gf/{index.php => class-integration.php} (93%) delete mode 100644 includes/integrations/index.php rename includes/integrations/wpcf7/{index.php => class-integration.php} (75%) delete mode 100644 includes/options/index.php diff --git a/includes/options/BaseSettings.php b/includes/class-base-settings.php similarity index 90% rename from includes/options/BaseSettings.php rename to includes/class-base-settings.php index 78ab794..5e02a90 100644 --- a/includes/options/BaseSettings.php +++ b/includes/class-base-settings.php @@ -1,8 +1,6 @@ <?php -namespace WPCT_ERP_FORMS\Options; - -use Exception; +namespace WPCT_ERP_FORMS; class Undefined { @@ -76,7 +74,11 @@ class BaseSettings } if (!is_array($value)) { - return $this->input_render($setting, $field, $value); + if (is_bool($value)) { + return $this->checkbox_render($setting, $field, $value); + } else { + return $this->input_render($setting, $field, $value); + } } else { $fieldset = $this->fieldset_render($setting, $field, $value); if ($is_root) { @@ -88,6 +90,11 @@ class BaseSettings } } + private function checkbox_render($setting, $field, $value) + { + return "<input type='checkbox' name='{$setting}[$field]' " . ($value ? 'checked' : '') . " />"; + } + public function input_render($setting, $field, $value) { return "<input type='text' name='{$setting}[{$field}]' value='{$value}' />"; @@ -125,7 +132,7 @@ class BaseSettings <button class="button button-secondary" data-action="remove">Remove</button> </div> <script> - <?php include 'fieldsetControl.js' ?> + <?php include 'fieldset-control-js.php' ?> </script> <?php return ob_get_clean(); diff --git a/includes/integrations/Integration.php b/includes/class-integration.php similarity index 98% rename from includes/integrations/Integration.php rename to includes/class-integration.php index 4685e67..89c4754 100644 --- a/includes/integrations/Integration.php +++ b/includes/class-integration.php @@ -1,8 +1,6 @@ <?php -namespace WPCT_ERP_FORMS\Integrations; - -use Exception; +namespace WPCT_ERP_FORMS; class Integration { diff --git a/includes/options/Menu.php b/includes/class-menu.php similarity index 58% rename from includes/options/Menu.php rename to includes/class-menu.php index a7e1728..3121e4d 100644 --- a/includes/options/Menu.php +++ b/includes/class-menu.php @@ -1,10 +1,9 @@ <?php -namespace WPCT_ERP_FORMS\Options; +namespace WPCT_ERP_FORMS; class Menu { - private $name; private $settings; @@ -14,25 +13,35 @@ class Menu $this->settings = $settings; } - public function register() + public function on_load() { add_action('admin_menu', function () { - add_options_page( - $this->name, - $this->name, - 'manage_options', - $this->settings->get_name(), - function () { - $this->render_page(); - } - ); + $this->add_menu(); }); add_action('admin_init', function () { - $this->settings->register(); + $this->register_settings(); }); } + private function add_menu() + { + add_options_page( + $this->name, + $this->name, + 'manage_options', + $this->settings->get_name(), + function () { + $this->render_page(); + }, + ); + } + + private function register_settings() + { + $this->settings->register(); + } + private function render_page() { ob_start(); @@ -48,7 +57,8 @@ class Menu </form> </div> <?php - echo ob_get_clean(); + $output = ob_get_clean(); + echo apply_filters('wpct_st_menu_page_content', $output); } public function get_settings() diff --git a/includes/options/Settings.php b/includes/class-settings.php similarity index 75% rename from includes/options/Settings.php rename to includes/class-settings.php index 78461c7..b057ec9 100644 --- a/includes/options/Settings.php +++ b/includes/class-settings.php @@ -1,14 +1,12 @@ <?php -namespace WPCT_ERP_FORMS\Options; +namespace WPCT_ERP_FORMS; -use WPCT_ERP_FORMS\Options\BaseSettings; - -require_once 'BaseSettings.php'; +require_once 'class-base-settings.php'; class Settings extends BaseSettings { - public $group_name = 'wpct_erp_forms'; + public $group_name = 'wpct-erp-forms'; private $_default_endpoint = '/api/private/crm-lead'; public function register() @@ -17,8 +15,8 @@ class Settings extends BaseSettings $this->register_setting( $setting_name, [ - 'notification_receiver' => 'admin@example.com' - ] + 'notification_receiver' => 'admin@example.coop' + ], ); $this->register_field('notification_receiver', $setting_name); @@ -31,7 +29,7 @@ class Settings extends BaseSettings [ 'form_id' => 0, 'endpoint' => $this->_default_endpoint, - ] + ], ], ], ); diff --git a/includes/fields/BaseField.php b/includes/fields/class-field.php similarity index 85% rename from includes/fields/BaseField.php rename to includes/fields/class-field.php index aa0e311..4a84d8f 100644 --- a/includes/fields/BaseField.php +++ b/includes/fields/class-field.php @@ -1,10 +1,8 @@ <?php -namespace WPCT_ERP_FORMS\Fields; +namespace WPCT_ERP_FORMS; -use Exception; - -class BaseField +class Field { private static $instances = []; diff --git a/includes/fields/gf/iban/Addon.php b/includes/fields/gf/iban/class-addon.php similarity index 96% rename from includes/fields/gf/iban/Addon.php rename to includes/fields/gf/iban/class-addon.php index cc9f9ae..1d8fbdc 100644 --- a/includes/fields/gf/iban/Addon.php +++ b/includes/fields/gf/iban/class-addon.php @@ -1,6 +1,6 @@ <?php -namespace WPCT_ERP_FORMS\Fields\GF\Iban; +namespace WPCT_ERP_FORMS\GF\Fields\Iban; use GFForms; use GFAddOn; diff --git a/includes/fields/gf/iban/index.php b/includes/fields/gf/iban/class-field.php similarity index 72% rename from includes/fields/gf/iban/index.php rename to includes/fields/gf/iban/class-field.php index 1f85c9b..1b57140 100644 --- a/includes/fields/gf/iban/index.php +++ b/includes/fields/gf/iban/class-field.php @@ -1,10 +1,13 @@ <?php -namespace WPCT_ERP_FORMS\Fields\GF\Iban; +namespace WPCT_ERP_FORMS\GF\Fields\Iban; -use WPCT_ERP_FORMS\Fields\BaseField; +use WPCT_ERP_FORMS\Field as BaseField; use GFAddOn; +require_once 'class-addon.php'; +require_once 'class-gf-field.php'; + class Field extends BaseField { public function register() diff --git a/includes/fields/gf/iban/Field.php b/includes/fields/gf/iban/class-gf-field.php similarity index 99% rename from includes/fields/gf/iban/Field.php rename to includes/fields/gf/iban/class-gf-field.php index 9651ef7..dfa96d5 100644 --- a/includes/fields/gf/iban/Field.php +++ b/includes/fields/gf/iban/class-gf-field.php @@ -1,8 +1,7 @@ <?php -namespace WPCT_ERP_FORMS\Fields\GF\Iban; +namespace WPCT_ERP_FORMS\GF\Fields\Iban; -use Exception; use GF_Field; class GFField extends GF_Field diff --git a/includes/fields/gf/index.php b/includes/fields/gf/index.php deleted file mode 100644 index 1f62d02..0000000 --- a/includes/fields/gf/index.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - -require_once 'iban/index.php'; diff --git a/includes/fields/index.php b/includes/fields/index.php deleted file mode 100644 index eb4556c..0000000 --- a/includes/fields/index.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -require_once 'BaseField.php'; - -if (defined('WPCF7_VERSION')) { - require_once 'wpcf7/index.php'; -} - -if (class_exists('GFForms')) { - require_once 'gf/index.php'; -} diff --git a/includes/fields/wpcf7/iban/index.php b/includes/fields/wpcf7/iban/class-field.php similarity index 97% rename from includes/fields/wpcf7/iban/index.php rename to includes/fields/wpcf7/iban/class-field.php index 1cf6e2b..632052f 100644 --- a/includes/fields/wpcf7/iban/index.php +++ b/includes/fields/wpcf7/iban/class-field.php @@ -1,9 +1,8 @@ <?php -namespace WPCT_ERP_FORMS\Fields\WPCF7\Iban; +namespace WPCT_ERP_FORMS\WPCF7\Fields\Iban; -use WPCT_ERP_FORMS\Fields\BaseField; -use Exception; +use WPCT_ERP_FORMS\Field as BaseField; class Field extends BaseField { diff --git a/includes/fields/wpcf7/index.php b/includes/fields/wpcf7/index.php deleted file mode 100644 index 1f62d02..0000000 --- a/includes/fields/wpcf7/index.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - -require_once 'iban/index.php'; diff --git a/includes/options/fieldsetControl.js b/includes/fieldset-control-js.php similarity index 100% rename from includes/options/fieldsetControl.js rename to includes/fieldset-control-js.php diff --git a/includes/integrations/gf/index.php b/includes/integrations/gf/class-integration.php similarity index 93% rename from includes/integrations/gf/index.php rename to includes/integrations/gf/class-integration.php index 26a2d3c..d20088a 100644 --- a/includes/integrations/gf/index.php +++ b/includes/integrations/gf/class-integration.php @@ -1,15 +1,17 @@ <?php -namespace WPCT_ERP_FORMS\Integrations; +namespace WPCT_ERP_FORMS\GF; -use WPCT_ERP_FORMS\Fields\GF\Iban\Field as IbanField; -use WPCT_ERP_FORMS\Integrations\Integration; -use Exception; +use WPCT_ERP_FORMS\GF\Fields\Iban\Field as IbanField; +use WPCT_ERP_FORMS\Integration as BaseIntegration; require_once 'attachments.php'; require_once 'fields-population.php'; -class GF extends Integration +// Fields +require_once dirname(__FILE__, 3) . '/fields/gf/iban/index.php'; + +class Integration extends BaseIntegration { public static $fields = [ IbanField::class diff --git a/includes/integrations/index.php b/includes/integrations/index.php deleted file mode 100644 index f25adb1..0000000 --- a/includes/integrations/index.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - -namespace WPCT_ERP_FORMS\Integrations; - -use WPCT_ERP_FORMS\Integrations\WPCF7; -use WPCT_ERP_FORMS\Integrations\GF; - -require_once 'Integration.php'; - -class WPCTIntegrationsRegistry -{ - public static $instances = []; -} - -if (defined('WPCF7_VERSION')) { - require_once 'wpcf7/index.php'; - add_action('plugins_loaded', function () { - WPCTIntegrationsRegistry::$instances['wpcf7'] = new WPCF7(); - }, 90); -} - -if (class_exists('GFForms')) { - require_once 'gf/index.php'; - add_action('plugins_loaded', function () { - WPCTIntegrationsRegistry::$instances['gf'] = new GF(); - }, 90); -} diff --git a/includes/integrations/wpcf7/index.php b/includes/integrations/wpcf7/class-integration.php similarity index 75% rename from includes/integrations/wpcf7/index.php rename to includes/integrations/wpcf7/class-integration.php index e327c97..66a5c50 100644 --- a/includes/integrations/wpcf7/index.php +++ b/includes/integrations/wpcf7/class-integration.php @@ -1,11 +1,14 @@ <?php -namespace WPCT_ERP_FORMS\Integrations; +namespace WPCT_ERP_FORMS\WPCF7; -use WPCT_ERP_FORMS\Integrations\Integration; -use WPCT_ERP_FORMS\Fields\WPCF7\Iban\Field as IbanField; +use WPCT_ERP_FORMS\Integration as BaseIntegration; +use WPCT_ERP_FORMS\WPCF7\Fields\Iban\Field as IbanField; -class WPCF7 extends Integration +// Fields +require_once dirname(__FILE__, 3) . '/fields/wpcf7/iban/index.php'; + +class Integration extends BaseIntegration { public static $fields = [ IbanField::class diff --git a/includes/options/index.php b/includes/options/index.php deleted file mode 100644 index 270e749..0000000 --- a/includes/options/index.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -use WPCT_ERP_FORMS\Options\Settings; -use WPCT_ERP_FORMS\Options\Menu; - -require_once 'Settings.php'; -require_once 'Menu.php'; - -$wpct_erp_forms_admin_menu = new Menu('Wpct ERP Forms', new Settings()); -$wpct_erp_forms_admin_menu->register(); diff --git a/wpct-erp-forms.php b/wpct-erp-forms.php index 0b42bae..6694cfe 100755 --- a/wpct-erp-forms.php +++ b/wpct-erp-forms.php @@ -1,5 +1,10 @@ <?php +namespace WPCT_ERP_FORMS; + +use WPCT_ERP_FORMS\WPCF7\Integration as Wpcf7Integration; +use WPCT_ERP_FORMS\GF\Integration as GFIntegration; + /** * Plugin Name: Wpct ERP Forms * Plugin URI: https://git.coopdevs.org/codeccoop/wp/wpct-erp-forms @@ -13,28 +18,51 @@ * @package wpct_erp_forms */ -/* Settings */ -require_once 'includes/options/index.php'; +require_once 'includes/class-menu.php'; +require_once 'includes/class-settings.php'; +require_once 'includes/class-integration.php'; +require_once 'includes/fields/class-field.php'; -/* Integrations */ -require_once 'includes/integrations/index.php'; +class Plugin +{ + private $menu; + private $integrations = []; -/* Fields */ -require_once 'includes/fields/index.php'; + public function __construct() + { + $settings = new Settings(); + $this->menu = new Menu('Wpct ERP Forms', $settings); -/* Dependencies */ -add_filter('wpct_dependencies_check', function ($dependencies) { - $dependencies['Wpct Http Backend'] = '<a href="https://git.coopdevs.org/codeccoop/wp/wpct-http-backend/">Wpct Http Backend</a>'; - return $dependencies; -}); + load_plugin_textdomain( + 'wpct-erp-forms', + false, + dirname(plugin_basename(__FILE__)) . '/languages', + ); + } -/* Localization */ -add_action('plugins_loaded', 'wpct_erp_forms_i18n', 10); -function wpct_erp_forms_i18n() -{ - load_plugin_textdomain( - 'wpct-erp-forms', - false, - dirname(plugin_basename(__FILE__)) . '/languages' - ); + public function on_load() + { + add_action('init', function () { + /* Dependencies */ + add_filter('wpct_dependencies_check', function ($dependencies) { + $dependencies['Wpct Http Backend'] = '<a href="https://git.coopdevs.org/codeccoop/wp/wpct-http-backend/">Wpct Http Backend</a>'; + return $dependencies; + }); + + if (is_plugin_active('wp-contact-form-7/wp-contact-form-7.php')) { + require_once 'includes/integrations/wpcf7/class-integration.php'; + $this->integrations['wpcf7'] = new Wpcf7Integration(); + } else if (is_plugin_active('gravityforms/gravityforms.php')) { + require_once 'includes/integrations/gf/class-integration.php'; + $this->integrations['gf'] = new GFIntegration(); + } + }); + + $this->menu->on_load(); + } } + +add_action('plugins_loaded', function () { + $plugin = new Plugin(); + $plugin->on_load(); +}, 10); -- GitLab