Skip to content
Snippets Groups Projects
Commit cf8230a2 authored by Lucas García's avatar Lucas García
Browse files

feat: integrations registry

parent b2cca0b8
No related branches found
No related tags found
No related merge requests found
......@@ -6,8 +6,33 @@ use Exception;
class Integration
{
public function register()
private static $instances = [];
public function __construct()
{
add_action('init', function () {
$integration = self::get_instance();
$integration->register();
});
}
protected function __clone()
{
}
public function __wakeup()
{
throw new \Exception("Cannot unserialize a singleton.");
}
public static function get_instance()
{
$cls = static::class;
if (!isset(self::$instances[$cls])) {
self::$instances[$cls] = new static();
}
return self::$instances[$cls];
}
public function submit($payload, $endpoints)
......@@ -23,7 +48,7 @@ class Integration
if (!isset($settings['notification_receiver'])) return;
$to = $settings['notification_receiver'];
$subject = 'WPCT ERP Forms Error';
$subject = 'Wpct ERP Forms Error';
$body = "Form ID: {$form['id']}\n";
$body .= "Form title: {$form['title']}";
$body .= 'Submission: ' . print_r($payload, true);
......@@ -73,7 +98,7 @@ class Integration
];
}
return $payload;
return apply_filters('wpct_erp_forms_payload', $payload);
}
private function cleanup_empties(&$submission)
......@@ -101,9 +126,14 @@ class Integration
}
);
return array_map(function ($map) {
return apply_filters('wpct_erp_forms_endpoints', array_map(function ($map) {
return $map['endpoint'];
}, $maps);
}, $maps));
}
public function register()
{
throw new Exception('Method to overwrite by inheritance');
}
public function serialize_submission($submission, $form)
......
<?php
namespace WPCT_ERP_FORMS\Integrations\WPCF7;
namespace WPCT_ERP_FORMS\Integrations;
use WPCT_ERP_FORMS\Integrations\Integration;
......@@ -9,8 +9,6 @@ class WPCF7 extends Integration
public function register()
{
parent::register();
add_filter('wpcf7_before_send_mail', function ($form, &$abort, $submission) {
$this->do_submission($submission, $form);
}, 10, 3);
......@@ -36,6 +34,3 @@ class WPCF7 extends Integration
];
}
}
$wpct_erp_forms_wpct7 = new WPCF7();
$wpct_erp_forms_wpct7->register();
......@@ -14,8 +14,6 @@ class GF extends Integration
public function register()
{
parent::register();
add_action('gform_after_submission', function ($entry, $form) {
$this->do_submission($entry, $form);
}, 10, 2);
......@@ -114,6 +112,3 @@ class GF extends Integration
}
}
}
$wpct_erp_forms_gf = new GF();
$wpct_erp_forms_gf->register();
<?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 'contactform7/index.php';
add_action('plugins_loaded', function () {
WPCTIntegrationsRegistry::$instances[] = new WPCF7();
});
}
if (class_exists('GFForms')) {
require_once 'gravityforms/index.php';
add_action('plugins_loaded', function () {
WPCTIntegrationsRegistry::$instances[] = new GF();
});
}
=== Wpct CRM Forms ===
=== Wpct ERP Forms ===
Contributors: codeccoop, coopdevs
Tags: forms, odoo, crm
Tags: forms, erp, crm
Requires at least: 6.3.1
Tested up to: 6.3.1
Requires PHP: 8.0
......@@ -8,11 +8,24 @@ Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Form submissions to the CRM Lead Odoo module
Form submissions to ERP backends
== Description ==
GravityForm's submissions to the [CRM Lead](https://git.coopdevs.org/coopdevs/odoo/odoo-addons/enhancements/enhancements-crm) Odoo module. The plugin should work with [WPCT Odoo Connect](https://git.coopdevs.org/coopdevs/website/wp/wp-plugins/wpct-odoo-connect) to perform http requests, and with [GravityForms](https://www.gravityforms.com/) to build forms.
Bridge WP form builder plugins' submissions to a ERP backend. The plugin should work with [WPCT Odoo Connect](https://git.coopdevs.org/coopdevs/website/wp/wp-plugins/wpct-odoo-connect) to perform http requests.
The plugin has two integrations, with GravityForms and with Contactform7. Choose your preferred form builder.
== Hooks ==
Filters:
* wpct_erp_forms_before_submission (array $submission, array $form) -> array $submission: Filter form submission
* wpct_erp_forms_payload (array $payload) -> array $payload: Filter submission payload
* wpct_erp_forms_endpoints (array $endpoints) -> array $endpoints: Filter endpoints array
Actions:
* wpct_erp_forms_on_failure (array $submission, array $form): Fired on submission failure
* wpct_erp_forms_after_submission (array $submission, array $form): Fired on successfully submited
== Changelog ==
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment