PluginProbe
NotificationX – FOMO, Live Sales Notification, WooCommerce Sales Popup, GDPR, Social Proof, Announcement Banner & Floating Notification Bar / 3.3.0
NotificationX – FOMO, Live Sales Notification, WooCommerce Sales Popup, GDPR, Social Proof, Announcement Banner & Floating Notification Bar v3.3.0
3.3.1 3.3.0 3.2.14 3.2.13 3.2.12 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 trunk 0.2.5.5 0.2.5.6 0.2.5.7 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.2.0 1.2.1 All 156 releases
notificationx / includes / Extensions / ExtensionFactory.php

ExtensionFactory.php in NotificationX – FOMO, Live Sales Notification, WooCommerce Sales Popup, GDPR, Social Proof, Announcement Banner & Floating Notification Bar 3.3.0, at includes/Extensions/ExtensionFactory.php

203 lines 8.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Extension Factory
4 *
5 * @package NotificationX\Extensions
6 */
7
8 namespace NotificationX\Extensions;
9
10 use Exception;
11 use NotificationX\Core\Database;
12 use NotificationX\GetInstance;
13 use NotificationX\Core\Modules;
14
15 /**
16 * ExtensionFactory Class
17 *
18 * @method static ExtensionFactory get_instance($args = null)
19 */
20 class ExtensionFactory {
21 /**
22 * Instance of Admin
23 *
24 * @var Admin
25 */
26 use GetInstance;
27
28 public $active_items;
29 public $types = [];
30 public $extensions = [];
31 public $extension_classes = [
32 'woo_inline' => 'NotificationX\Extensions\WooCommerce\WooInline',
33 'edd_inline' => 'NotificationX\Extensions\EDD\EDDInline',
34 'tutor_inline' => 'NotificationX\Extensions\Tutor\TutorInline',
35 'learndash_inline' => 'NotificationX\Extensions\LearnDash\LearnDashInline',
36 'learnpress_inline' => 'NotificationX\Extensions\LearnPress\LearnPressInline',
37 'cf7' => 'NotificationX\Extensions\CF7\CF7',
38 'convertkit' => 'NotificationX\Extensions\ConvertKit\ConvertKit',
39 'custom_notification' => 'NotificationX\Extensions\CustomNotification\CustomNotification',
40 'custom_notification_conversions' => 'NotificationX\Extensions\CustomNotification\CustomNotificationConversions',
41 'announcements' => 'NotificationX\Extensions\OfferAnnouncement\Announcements',
42 'edd' => 'NotificationX\Extensions\EDD\EDD',
43 'envato' => 'NotificationX\Extensions\Envato\Envato',
44 'freemius_conversions' => 'NotificationX\Extensions\Freemius\FreemiusConversions',
45 'freemius_reviews' => 'NotificationX\Extensions\Freemius\FreemiusReviews',
46 'freemius_stats' => 'NotificationX\Extensions\Freemius\FreemiusStats',
47 'grvf' => 'NotificationX\Extensions\GRVF\GravityForms',
48 'give' => 'NotificationX\Extensions\Give\Give',
49 'google' => 'NotificationX\Extensions\Google_Analytics\Google_Analytics',
50 'google_reviews' => 'NotificationX\Extensions\Google\GoogleReviews',
51 'learndash' => 'NotificationX\Extensions\LearnDash\LearnDash',
52 'learnpress' => 'NotificationX\Extensions\LearnPress\LearnPress',
53 'mailchimp' => 'NotificationX\Extensions\MailChimp\MailChimp',
54 'njf' => 'NotificationX\Extensions\NJF\NinjaForms',
55 'press_bar' => 'NotificationX\Extensions\PressBar\PressBar',
56 'tutor' => 'NotificationX\Extensions\Tutor\Tutor',
57 'wpf' => 'NotificationX\Extensions\WPF\WPForms',
58 'reviewx' => 'NotificationX\Extensions\ReviewX\ReviewX',
59 'woocommerce' => 'NotificationX\Extensions\WooCommerce\WooCommerce',
60 'woocommerce_sales' => 'NotificationX\Extensions\WooCommerce\WooCommerceSales',
61 'woocommerce_cart_peek' => 'NotificationX\Extensions\WooCommerce\WooCommerceCartPeek',
62 'woocommerce_sales_reviews' => 'NotificationX\Extensions\WooCommerce\WooCommerceSalesReviews',
63 'woocommerce_sales_inline' => 'NotificationX\Extensions\WooCommerce\WooCommerceSalesInline',
64 'woo_reviews' => 'NotificationX\Extensions\WooCommerce\WooReviews',
65 'wp_comments' => 'NotificationX\Extensions\WordPress\WPComments',
66 'wp_reviews' => 'NotificationX\Extensions\WordPress\WPOrgReview',
67 'wp_stats' => 'NotificationX\Extensions\WordPress\WPOrgStats',
68 'zapier_conversions' => 'NotificationX\Extensions\Zapier\ZapierConversions',
69 'zapier_email_subscription' => 'NotificationX\Extensions\Zapier\ZapierEmailSubscription',
70 'zapier_reviews' => 'NotificationX\Extensions\Zapier\ZapierReviews',
71 'exit_intent_custom' => 'NotificationX\Extensions\ExitIntent\ExitIntentNotification',
72 'elementor_form' => 'NotificationX\Extensions\Elementor\From',
73 'flashing_tab' => 'NotificationX\Extensions\FlashingTab\FlashingTab',
74 'fluentform' => 'NotificationX\Extensions\FluentForm\FluentForm',
75 'youtube' => 'NotificationX\Extensions\Google\YouTube',
76 'vimeo' => 'NotificationX\Extensions\Vimeo\Vimeo',
77 'wistia' => 'NotificationX\Extensions\Wistia\Wistia',
78 'surecart' => 'NotificationX\Extensions\SureCart\SureCart',
79 'ActiveCampaign' => 'NotificationX\Extensions\ActiveCampaign\ActiveCampaign',
80 'popup_notification' => 'NotificationX\Extensions\Popup\PopupNotification',
81 'fluentcart' => 'NotificationX\Extensions\FluentCart\FluentCart',
82 'fluentcart_inline' => 'NotificationX\Extensions\FluentCart\FluentCartInline',
83 'gdpr_notification' => 'NotificationX\Extensions\GDPR\GDPR_Notification',
84 'ccpa_notification' => 'NotificationX\Extensions\CCPA\CCPA_Notification',
85 'bitintegrations_conversions' => 'NotificationX\Extensions\BitIntegrations\BitIntegrationsConversions',
86 'bitintegrations_email_subscription' => 'NotificationX\Extensions\BitIntegrations\BitIntegrationsEmailSubscription',
87 'bitintegrations_reviews' => 'NotificationX\Extensions\BitIntegrations\BitIntegrtionsReviews',
88 ];
89
90 /**
91 * Initially Invoked when initialized.
92 */
93 public function __construct(){
94 // GlobalFields::get_instance();
95 $this->register_extensions();
96 }
97
98 public function register_extensions(){
99 // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Reviewed for the NotificationX codebase: acceptable in this context.
100 $this->extension_classes = apply_filters( 'nx_extension_classes', $this->extension_classes );
101 foreach ($this->extension_classes as $extension) {
102 // initializing extension.
103 if(class_exists($extension)){
104 $obj = $extension::get_instance();
105 if(Modules::get_instance()->is_enabled($obj->module)){
106 $this->add($obj);
107 }
108 }
109 }
110 }
111
112 /**
113 * This function is responsible for adding an extension to the extensions array!
114 *
115 * @param array $extensions
116 * @param string $classname
117 * @return void
118 */
119 protected function add( $extension) {
120 $this->extensions[ $extension->id ] = $extension;
121 $this->types[$extension->types][ $extension->id ] = $extension;
122 return $this->extensions;
123 }
124
125 /**
126 * Get Extensions data
127 *
128 * @param Extension $extension The notifications type.
129 * @param array $args Settings arguments for notificationx.
130 * @return array
131 */
132 public static function getExtension( Extension $extension, $args = array() ){
133 return $extension->get_data( $args );
134 }
135
136 /**
137 * This function is responsible for getting the extension from loaded extension.
138 *
139 * @param string $key
140 * @return Extension
141 */
142 public function get( $key ){
143 if( empty( $key ) ) {
144 return false;
145 }
146 try {
147 $class = $this->extension_classes[$key];
148 if(class_exists($class)){
149 return $class::get_instance();
150 }
151 }
152 catch (\Exception $e) {
153
154 }
155 return isset( $this->extensions[ $key ] ) ? $this->extensions[ $key ] : false;
156 }
157
158 /**
159 * This function is responsible for getting the extension from loaded extension.
160 *
161 * @param string $key
162 * @return array|bool
163 */
164 public function get_type( $type ){
165 if( empty( $type ) ) {
166 return false;
167 }
168 return isset( $this->types[ $type ] ) ? $this->types[ $type ] : false;
169 }
170
171 /**
172 * This function is responsible for getting the extension from loaded extension.
173 *
174 * @param string $key
175 * @return array
176 */
177 public function get_themes_for_type( $type ){
178 $themes = [];
179
180 $extensions = $this->get_type($type);
181
182 if(is_array($extensions)){
183 foreach($extensions as $extension){
184 if(!$extension->exclude_custom_themes){
185 $themes = array_merge($themes, $extension->get_themes_name());
186 }
187 }
188 }
189
190 return array_unique($themes);
191 }
192
193 /**
194 * This function is responsible for getting the extension from loaded extension.
195 *
196 * @param string $key
197 * @return bool|void
198 */
199 public function get_all(){
200 return $this->extensions;
201 }
202 }
203