public function checkAutoAssignment($id_customer = 0) { $sql = 'SELECT * FROM ' . _DB_PREFIX_ . 'mj_filter f LEFT JOIN ' . _DB_PREFIX_ . 'mj_condition c ON c.id_filter = f.id_filter WHERE f.assignment_auto = 1'; $rows = DB::getInstance()->executeS($sql); if (!is_array($rows)) { return $this; } $formatRows = array(); foreach ($rows as $row) { $id_filter = (int) $row['id_filter']; $formatRows[$id_filter]['mode'] = 0; $formatRows[$id_filter]['replace_customer'] = (bool) $row['replace_customer']; $formatRows[$id_filter]['name'] = $row['name']; $formatRows[$id_filter]['description'] = $row['description']; $formatRows[$id_filter]['idfilter'] = $id_filter; $formatRows[$id_filter]['idgroup'] = $row['id_group']; $formatRows[$id_filter]['rule_a'][] = $row['rule_a']; $formatRows[$id_filter]['rule_action'][] = $row['rule_action']; $formatRows[$id_filter]['baseSelect'][] = $row['id_basecondition']; $formatRows[$id_filter]['sourceSelect'][] = $row['id_sourcecondition']; $formatRows[$id_filter]['fieldSelect'][] = $row['id_fieldcondition']; $formatRows[$id_filter]['data'][] = $row['data']; $formatRows[$id_filter]['value1'][] = $row['value1']; $formatRows[$id_filter]['value2'][] = $row['value2']; } foreach ($formatRows as $filterId => $formatRow) { $obj = new Segmentation(); $sql = $obj->getQuery($formatRow, true) . ' HAVING c.id_customer = ' . (int) $id_customer; $result = DB::getInstance()->executeS($sql); if ($result && !$obj->belongsToGroup($formatRow['idgroup'], $id_customer)) { if ($formatRow['replace_customer']) { $sql = 'DELETE FROM ' . _DB_PREFIX_ . 'customer_group WHERE id_customer = ' . (int) $id_customer; Db::getInstance()->execute($sql); } $values = array('id_group' => (int) $formatRow['idgroup'], 'id_customer' => (int) $id_customer); DB::getInstance()->autoExecute(_DB_PREFIX_ . 'customer_group', $values, 'INSERT'); // Mailjet update $customer = new Customer($id_customer); } else { if (!$result && $obj->belongsToGroup($formatRow['idgroup'], $id_customer)) { $sql = 'DELETE FROM ' . _DB_PREFIX_ . 'customer_group WHERE id_group = ' . (int) $formatRow['idgroup'] . ' AND id_customer = ' . (int) $id_customer; DB::getInstance()->execute($sql); // Mailjet update $customer = new Customer($id_customer); } } $customer = new Customer($id_customer); $initialSynchronization = new HooksSynchronizationSingleUser(MailjetTemplate::getApi()); $mailjetListID = $obj->_getMailjetContactListId($filterId); if ($result) { $initialSynchronization->subscribe($customer->email, $mailjetListID); } else { $initialSynchronization->remove($customer->email, $mailjetListID); } } return $this; }