PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.8
Independent Analytics – WordPress Analytics Plugin v2.14.8
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Integrations / Integrations.php
independent-analytics / IAWP / Integrations Last commit date
Integration.php 3 months ago Integrations.php 6 months ago
Integrations.php
129 lines
1 <?php
2
3 namespace IAWP\Integrations;
4
5 use IAWPSCOPED\Illuminate\Support\Collection;
6 /** @internal */
7 class Integrations
8 {
9 private ?Collection $cached_integrations = null;
10 /**
11 * @return Integration[]
12 */
13 public function ecommerce_integrations() : array
14 {
15 return $this->integrations(function (\IAWP\Integrations\Integration $integration) {
16 return $integration->is_ecommerce_plugin();
17 })->sortBy(function (\IAWP\Integrations\Integration $integration) {
18 return !$integration->activated();
19 })->all();
20 }
21 public function is_using_ecommerce_plugin() : bool
22 {
23 return Collection::make($this->ecommerce_integrations())->contains(function (\IAWP\Integrations\Integration $integration) {
24 return $integration->activated();
25 });
26 }
27 public function active_ecommerce_plugin() : ?\IAWP\Integrations\Integration
28 {
29 if (!$this->is_using_ecommerce_plugin()) {
30 return null;
31 }
32 $ecommerce_plugins = $this->ecommerce_integrations();
33 return $ecommerce_plugins[\array_key_first($ecommerce_plugins)];
34 }
35 /**
36 * @return Integration[]
37 */
38 public function form_integrations() : array
39 {
40 return $this->integrations(function (\IAWP\Integrations\Integration $integration) {
41 return $integration->is_form_plugin();
42 })->sortBy(function (\IAWP\Integrations\Integration $integration) {
43 return !$integration->activated();
44 })->all();
45 }
46 public function is_using_form_plugin() : bool
47 {
48 return Collection::make($this->form_integrations())->contains(function (\IAWP\Integrations\Integration $integration) {
49 return $integration->activated();
50 });
51 }
52 public function active_form_plugin() : ?\IAWP\Integrations\Integration
53 {
54 if (!$this->is_using_form_plugin()) {
55 return null;
56 }
57 $form_plugins = $this->form_integrations();
58 return $form_plugins[\array_key_first($form_plugins)];
59 }
60 private function integrations(?callable $where) : Collection
61 {
62 if (\is_null($this->cached_integrations)) {
63 $this->cached_integrations = $this->config()->map(function ($config) {
64 return new \IAWP\Integrations\Integration($config);
65 });
66 }
67 return $this->cached_integrations->when(\is_callable($where), function (Collection $collection) use($where) {
68 return $collection->filter(function (\IAWP\Integrations\Integration $integration) use($where) {
69 return $where($integration);
70 })->values();
71 });
72 }
73 private function config() : Collection
74 {
75 // Template
76 // [
77 // 'name' => 'WooCommerce', // Any string
78 // 'category' => 'ecommerce', // 'ecommerce' or 'form'
79 // 'plugin' => ['plugin/plugin.php'], // A string or an array of strings
80 // // 'theme' => ['theme-slug'], // A string or an array of strings
81 // 'description' => 'A text blurb'
82 // ],
83 return Collection::make([
84 // Example
85 // [
86 // 'name' => 'WooCommerce',
87 // 'category' => 'ecommerce',
88 // 'plugin' => ['woocommerce/woocommerce.php'],
89 // 'description' => 'Some text blurb...',
90 // ],
91 // eCommerce
92 ['name' => 'WooCommerce', 'category' => 'ecommerce', 'plugin' => ['woocommerce/woocommerce.php']],
93 ['name' => 'FluentCart', 'category' => 'ecommerce', 'plugin' => ['fluent-cart/fluent-cart.php', 'fluent-cart-pro/fluent-cart-pro.php']],
94 ['name' => 'SureCart', 'category' => 'ecommerce', 'plugin' => ['surecart/surecart.php']],
95 ['name' => 'Easy Digital Downloads', 'category' => 'ecommerce', 'plugin' => ['easy-digital-downloads/easy-digital-downloads.php', 'easy-digital-downloads-pro/easy-digital-downloads.php'], 'filename' => 'edd'],
96 ['name' => 'Paid Memberships Pro', 'category' => 'ecommerce', 'plugin' => ['paid-memberships-pro/paid-memberships-pro.php', 'paid-memberships-pro-dev/paid-memberships-pro.php'], 'filename' => 'pmpro'],
97 // Forms
98 ['name' => 'Contact Form 7', 'category' => 'form', 'plugin' => ['contact-form-7/wp-contact-form-7.php']],
99 ['name' => 'WPForms', 'category' => 'form', 'plugin' => ['wpforms-lite/wpforms.php', 'wpforms/wpforms.php']],
100 ['name' => 'Gravity Forms', 'category' => 'form', 'plugin' => ['gravityforms/gravityforms.php']],
101 ['name' => 'Fluent Forms', 'category' => 'form', 'plugin' => ['fluentform/fluentform.php']],
102 ['name' => 'MailChimp for WordPress', 'category' => 'form', 'plugin' => ['mailchimp-for-wp/mailchimp-for-wp.php']],
103 ['name' => 'MailPoet', 'category' => 'form', 'plugin' => ['mailpoet/mailpoet.php']],
104 ['name' => 'Ninja Forms', 'category' => 'form', 'plugin' => ['ninja-forms/ninja-forms.php']],
105 ['name' => 'Bit Form', 'category' => 'form', 'plugin' => ['bit-form/bitforms.php']],
106 ['name' => 'Kadence', 'category' => 'form', 'plugin' => ['kadence-blocks/kadence-blocks.php']],
107 ['name' => 'Newsletter', 'category' => 'form', 'plugin' => ['newsletter/plugin.php']],
108 ['name' => 'Formidable Forms', 'category' => 'form', 'plugin' => ['formidable/formidable.php']],
109 ['name' => 'Bricks Builder', 'category' => 'form', 'theme' => 'bricks'],
110 ['name' => 'Divi', 'category' => 'form', 'theme' => 'Divi'],
111 ['name' => 'Elementor Pro', 'category' => 'form', 'plugin' => ['elementor-pro/elementor-pro.php']],
112 ['name' => 'Avada', 'category' => 'form', 'plugin' => ['fusion-builder/fusion-builder.php', 'fusion-core/fusion-core.php']],
113 ['name' => 'MailOptin', 'category' => 'form', 'plugin' => ['mailoptin/mailoptin.php']],
114 ['name' => 'SureForms', 'category' => 'form', 'plugin' => ['sureforms/sureforms.php']],
115 ['name' => 'Forminator', 'category' => 'form', 'plugin' => ['forminator/forminator.php']],
116 ['name' => 'WS Form', 'category' => 'form', 'plugin' => ['ws-form/ws-form.php', 'ws-form-pro/ws-form.php']],
117 ['name' => 'Convert Pro', 'category' => 'form', 'plugin' => ['convertpro/convertpro.php']],
118 ['name' => 'Everest Forms', 'category' => 'form', 'plugin' => ['everest-forms/everest-forms.php']],
119 ['name' => 'Hustle', 'category' => 'form', 'plugin' => ['wordpress-popup/popover.php', 'hustle/opt-in.php']],
120 ['name' => 'JetFormBuilder', 'category' => 'form', 'plugin' => ['jetformbuilder/jet-form-builder.php']],
121 ['name' => 'Kali Forms', 'category' => 'form', 'plugin' => ['kali-forms/kali-forms.php']],
122 ['name' => 'Thrive Leads', 'category' => 'form', 'plugin' => ['thrive-leads/thrive-leads.php']],
123 ['name' => 'Amelia', 'category' => 'form', 'plugin' => ['ameliabooking/ameliabooking.php']],
124 ['name' => 'ARForms', 'category' => 'form', 'plugin' => ['arforms-form-builder/arforms-form-builder.php']],
125 ['name' => 'WP Store Locator', 'category' => 'form', 'plugin' => ['wp-store-locator/wp-store-locator.php']],
126 ]);
127 }
128 }
129