add logging, optimize all customer sync, add presync
This commit is contained in:
@@ -2,8 +2,8 @@
|
|||||||
<module>
|
<module>
|
||||||
<name>mauticconnect</name>
|
<name>mauticconnect</name>
|
||||||
<displayName><![CDATA[Mautic Connect]]></displayName>
|
<displayName><![CDATA[Mautic Connect]]></displayName>
|
||||||
<version><![CDATA[1.0.0]]></version>
|
<version><![CDATA[1.2.0]]></version>
|
||||||
<description><![CDATA[Integrate your PrestaShop store with Mautic for marketing automation.]]></description>
|
<description><![CDATA[A data-driven module to integrate PrestaShop with Mautic for marketing automation.]]></description>
|
||||||
<author><![CDATA[Your Name]]></author>
|
<author><![CDATA[Your Name]]></author>
|
||||||
<tab><![CDATA[marketing]]></tab>
|
<tab><![CDATA[marketing]]></tab>
|
||||||
<confirmUninstall><![CDATA[Are you sure you want to uninstall this module? All Mautic connection data will be lost.]]></confirmUninstall>
|
<confirmUninstall><![CDATA[Are you sure you want to uninstall this module? All Mautic connection data will be lost.]]></confirmUninstall>
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ class MauticConnect extends Module
|
|||||||
}
|
}
|
||||||
$orderId = (int)$params['id_order'];
|
$orderId = (int)$params['id_order'];
|
||||||
$newStatusId = (int)$params['newOrderStatus']->id;
|
$newStatusId = (int)$params['newOrderStatus']->id;
|
||||||
|
$this->log(['orderId' => $orderId, 'newStatusId' => $newStatusId]);
|
||||||
$eventHash = md5($newStatusId . '_' . $orderId);
|
$eventHash = md5($newStatusId . '_' . $orderId);
|
||||||
if ($this->isAlreadyProcessed($eventHash)) {
|
if ($this->isAlreadyProcessed($eventHash)) {
|
||||||
return;
|
return;
|
||||||
@@ -325,7 +325,9 @@ class MauticConnect extends Module
|
|||||||
// ...call the processor method defined for this event.
|
// ...call the processor method defined for this event.
|
||||||
if (method_exists($this, $event['processor_method'])) {
|
if (method_exists($this, $event['processor_method'])) {
|
||||||
$this->{$event['processor_method']}($orderId, $event);
|
$this->{$event['processor_method']}($orderId, $event);
|
||||||
|
|
||||||
$this->markAsProcessed($eventHash);
|
$this->markAsProcessed($eventHash);
|
||||||
|
|
||||||
// We break because an order status change should only trigger one event.
|
// We break because an order status change should only trigger one event.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -492,6 +494,7 @@ class MauticConnect extends Module
|
|||||||
*/
|
*/
|
||||||
public function getOauth2RedirectUri()
|
public function getOauth2RedirectUri()
|
||||||
{
|
{
|
||||||
|
|
||||||
return $this->context->link->getModuleLink($this->name, 'oauth2', [], true);
|
return $this->context->link->getModuleLink($this->name, 'oauth2', [], true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -615,8 +618,10 @@ class MauticConnect extends Module
|
|||||||
if (!$this->isConnected()) {
|
if (!$this->isConnected()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
$this->log(['newCustomer' => $params['newCustomer']]);
|
||||||
|
|
||||||
if (isset($params['newCustomer']) && Validate::isLoadedObject($params['newCustomer'])) {
|
if (isset($params['newCustomer']) && Validate::isLoadedObject($params['newCustomer'])) {
|
||||||
|
|
||||||
$this->syncCustomer($params['newCustomer']);
|
$this->syncCustomer($params['newCustomer']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -640,9 +645,12 @@ class MauticConnect extends Module
|
|||||||
{
|
{
|
||||||
return (bool)Configuration::get(self::MAUTIC_ACCESS_TOKEN);
|
return (bool)Configuration::get(self::MAUTIC_ACCESS_TOKEN);
|
||||||
}
|
}
|
||||||
public function syncAllCustomers()
|
public function syncAllCustomers(bool $full = false)
|
||||||
{
|
{
|
||||||
$customers = new PrestaShopCollection('Customer');
|
$customers = new PrestaShopCollection('Customer');
|
||||||
|
if (!$full) {
|
||||||
|
$customers->where('date_add', '>', date("Y-m-d H:i:s", time() - 60 - 60 * 24 * 2));
|
||||||
|
}
|
||||||
foreach ($customers as $customer) {
|
foreach ($customers as $customer) {
|
||||||
$this->syncCustomer($customer);
|
$this->syncCustomer($customer);
|
||||||
}
|
}
|
||||||
@@ -819,13 +827,14 @@ class MauticConnect extends Module
|
|||||||
if (!$mauticSegmentId || !$mauticTemplateId) {
|
if (!$mauticSegmentId || !$mauticTemplateId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Get all necessary objects
|
// 2. Get all necessary objects
|
||||||
$order = new Order($id_order);
|
$order = new Order($id_order);
|
||||||
$customer = new Customer((int)$order->id_customer);
|
$customer = new Customer((int)$order->id_customer);
|
||||||
$currency = new Currency((int)$order->id_currency);
|
$currency = new Currency((int)$order->id_currency);
|
||||||
$carrier = new Carrier((int)$order->id_carrier);
|
$carrier = new Carrier((int)$order->id_carrier);
|
||||||
$link = new Link(); // Needed for generating image URLs
|
$link = new Link(); // Needed for generating image URLs
|
||||||
|
$this->syncCustomer($customer);
|
||||||
// 3. Gather primary data
|
// 3. Gather primary data
|
||||||
$customer_email = $customer->email;
|
$customer_email = $customer->email;
|
||||||
if (!$this->isContactInSegment($customer_email, $mauticSegmentId)) {
|
if (!$this->isContactInSegment($customer_email, $mauticSegmentId)) {
|
||||||
@@ -927,7 +936,7 @@ class MauticConnect extends Module
|
|||||||
$currency = new Currency((int)$order->id_currency);
|
$currency = new Currency((int)$order->id_currency);
|
||||||
$carrier = new Carrier((int)$order->id_carrier);
|
$carrier = new Carrier((int)$order->id_carrier);
|
||||||
$link = new Link(); // Needed for generating image URLs
|
$link = new Link(); // Needed for generating image URLs
|
||||||
|
$this->syncCustomer($customer);
|
||||||
// 3. Gather primary data
|
// 3. Gather primary data
|
||||||
$customer_email = $customer->email;
|
$customer_email = $customer->email;
|
||||||
if (!$this->isContactInSegment($customer_email, $mauticSegmentId)) {
|
if (!$this->isContactInSegment($customer_email, $mauticSegmentId)) {
|
||||||
@@ -1087,4 +1096,17 @@ class MauticConnect extends Module
|
|||||||
'date_add' => date('Y-m-d H:i:s'),
|
'date_add' => date('Y-m-d H:i:s'),
|
||||||
], false, true, Db::INSERT_IGNORE); // INSERT IGNORE is a safe way to prevent errors on race conditions
|
], false, true, Db::INSERT_IGNORE); // INSERT IGNORE is a safe way to prevent errors on race conditions
|
||||||
}
|
}
|
||||||
|
public function log(array $data)
|
||||||
|
{
|
||||||
|
|
||||||
|
$data = json_encode($data, JSON_UNESCAPED_UNICODE);
|
||||||
|
|
||||||
|
$logdirectory = _PS_ROOT_DIR_ . '/var/modules/' . $this->name . '/logs/' . date("Y") . '/' . date("m") . '/' . date("d") . '/';
|
||||||
|
if (!is_dir($logdirectory)) {
|
||||||
|
mkdir($logdirectory, 0750, true);
|
||||||
|
}
|
||||||
|
$logger = new \FileLogger(0); //0 == debug level, logDebug() won’t work without this.
|
||||||
|
$logger->setFilename($logdirectory . 'dayly.log');
|
||||||
|
$logger->logInfo($data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user