Blocks
2 weeks ago
Collections
2 weeks ago
Exception
2 weeks ago
Field
2 weeks ago
Form
2 weeks ago
Integration
2 weeks ago
Marketing
2 weeks ago
Notice
2 weeks ago
Service
2 weeks ago
Settings
2 weeks ago
Tracker
2 weeks ago
Validator
2 weeks ago
Plugin.php
2 weeks ago
Plugin.php
112 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WPDesk\FCF\Free; |
| 4 | |
| 5 | use FcfVendor\WPDesk\PluginBuilder\Plugin\AbstractPlugin; |
| 6 | use FcfVendor\WPDesk\PluginBuilder\Plugin\HookableCollection; |
| 7 | use FcfVendor\WPDesk\PluginBuilder\Plugin\HookableParent; |
| 8 | use FcfVendor\WPDesk_Plugin_Info; |
| 9 | use WPDesk\FCF\Free\Blocks; |
| 10 | use WPDesk\FCF\Free\Field; |
| 11 | use WPDesk\FCF\Free\Integration; |
| 12 | use WPDesk\FCF\Free\Notice; |
| 13 | use WPDesk\FCF\Free\Service; |
| 14 | use WPDesk\FCF\Free\Settings; |
| 15 | use WPDesk\FCF\Free\Tracker; |
| 16 | |
| 17 | /** |
| 18 | * Main plugin class. The most important flow decisions are made here. |
| 19 | */ |
| 20 | class Plugin extends AbstractPlugin implements HookableCollection { |
| 21 | |
| 22 | use HookableParent; |
| 23 | |
| 24 | /** |
| 25 | * Scripts version. |
| 26 | * |
| 27 | * @var string |
| 28 | */ |
| 29 | private $script_version = '1'; |
| 30 | |
| 31 | /** |
| 32 | * Instance of old version main class of plugin. |
| 33 | * |
| 34 | * @var \Flexible_Checkout_Fields_Plugin |
| 35 | */ |
| 36 | private $plugin_old; |
| 37 | |
| 38 | /** |
| 39 | * @var Service\TemplateLoader |
| 40 | */ |
| 41 | private $template_loader; |
| 42 | |
| 43 | /** |
| 44 | * Plugin constructor. |
| 45 | * |
| 46 | * @param WPDesk_Plugin_Info $plugin_info Plugin info. |
| 47 | * @param \Flexible_Checkout_Fields_Plugin $plugin_old Main plugin. |
| 48 | */ |
| 49 | public function __construct( WPDesk_Plugin_Info $plugin_info, \Flexible_Checkout_Fields_Plugin $plugin_old ) { |
| 50 | parent::__construct( $plugin_info ); |
| 51 | |
| 52 | $this->plugin_url = $this->plugin_info->get_plugin_url(); |
| 53 | $this->plugin_namespace = $this->plugin_info->get_text_domain(); |
| 54 | $this->script_version = $plugin_info->get_version(); |
| 55 | $this->plugin_old = $plugin_old; |
| 56 | $this->template_loader = new Service\TemplateLoader( $plugin_info->get_plugin_dir(), 'flexible-checkout-fields' ); |
| 57 | } |
| 58 | |
| 59 | /** |
| 60 | * Initializes plugin external state. |
| 61 | * The plugin internal state is initialized in the constructor and the plugin should be internally consistent after |
| 62 | * creation. The external state includes hooks execution, communication with other plugins, integration with WC |
| 63 | * etc. |
| 64 | * |
| 65 | * @return void |
| 66 | */ |
| 67 | public function init() { |
| 68 | ( new \FcfVendor\WPDesk\Dashboard\DashboardWidget() )->hooks(); |
| 69 | |
| 70 | $this->add_hookable( new Service\ShortLinksGenerator() ); |
| 71 | |
| 72 | $this->add_hookable( new Notice\NoticeIntegration( new Notice\ReviewNotice( $this ) ) ); |
| 73 | $this->add_hookable( new Notice\NoticeIntegration( new Notice\FlexibleWishlistReview( $this ) ) ); |
| 74 | $this->add_hookable( new Notice\NoticeIntegration( new Notice\BlockCompatibility() ) ); |
| 75 | $this->add_hookable( new Settings\Page() ); |
| 76 | $this->add_hookable( new Blocks\Editor() ); |
| 77 | $this->add_hookable( new Form\Assets( $this->plugin_info ) ); |
| 78 | $this->add_hookable( new Form\FormModifier() ); |
| 79 | $this->add_hookable( new Field\FieldTranslator() ); |
| 80 | $this->add_hookable( new Field\FieldTemplateLoader( $this->template_loader ) ); |
| 81 | |
| 82 | $this->add_hookable( new Integration\IntegratorIntegration( $this->plugin_old ) ); |
| 83 | $this->add_hookable( new Tracker\DeactivationTracker( $this->plugin_info ) ); |
| 84 | |
| 85 | $this->add_hookable( new Validator\FieldValidator() ); |
| 86 | $this->add_hookable( new Validator\ValidationClassGenerator() ); |
| 87 | |
| 88 | ( new Field\Types() )->init(); |
| 89 | ( new Settings\Forms() )->init(); |
| 90 | ( new Settings\Routes() )->init(); |
| 91 | ( new Settings\Tabs() )->init(); |
| 92 | $this->add_hookable( new Settings\MigrationsManager( $this->plugin_info->get_version() ) ); |
| 93 | $this->add_hookable( new Marketing\SupportPage( $this->template_loader ) ); |
| 94 | } |
| 95 | |
| 96 | /** |
| 97 | * {@inheritdoc} |
| 98 | */ |
| 99 | public function hooks() { |
| 100 | $this->hooks_on_hookable_objects(); |
| 101 | } |
| 102 | |
| 103 | /** |
| 104 | * Get script version. |
| 105 | * |
| 106 | * @return string; |
| 107 | */ |
| 108 | public function get_script_version() { |
| 109 | return $this->script_version; |
| 110 | } |
| 111 | } |
| 112 |