/** * @param RecipientInterface $recipient * @param Salutation $salutation * * @return bool */ public function accept(RecipientInterface $recipient, Salutation $salutation) { global $container; $requiredFields = $salutation->getRequiredFieldsFilter(); if (!$salutation->getEnableRequiredFieldsFilter() || empty($requiredFields)) { return true; } $details = $recipient->getDetails(); foreach ($requiredFields as $requiredField) { if (empty($details[$requiredField])) { /** @var SynonymizerService $synonymizer */ $synonymizer = $container['avisota.recipient.synonymizer']; $synonyms = $synonymizer->findSynonyms($requiredField); $stillEmpty = true; if ($synonyms) { foreach ($synonyms as $synonym) { if (!empty($details[$synonym])) { $stillEmpty = false; break; } } } if ($stillEmpty) { return false; } } } return true; }
/** * @param RecipientInterface $recipient * @param Salutation $salutation * * @return bool */ public function accept(RecipientInterface $recipient, Salutation $salutation) { global $container; $fieldValue = $salutation->getGenderFilter(); if (!$salutation->getEnableGenderFilter() || empty($fieldValue)) { return true; } $details = $recipient->getDetails(); $fieldName = 'gender'; if (isset($details[$fieldName]) && $fieldValue == $details[$fieldName]) { return true; } /** @var SynonymizerService $synonymizer */ $synonymizer = $container['avisota.recipient.synonymizer']; $synonyms = $synonymizer->findSynonyms('gender'); // try synonyms if ($synonyms) { foreach ($synonyms as $synonym) { if (isset($details[$synonym]) && $fieldValue == $details[$synonym]) { return true; } } } return false; }