1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* Duplicate e-mail handler. |
4
|
|
|
* |
5
|
|
|
* @package Handler |
6
|
|
|
* |
7
|
|
|
* @copyright YetiForce S.A. |
8
|
|
|
* @license YetiForce Public License 6.5 (licenses/LicenseEN.txt or yetiforce.com) |
9
|
|
|
* @author Radosław Skrzypczak <[email protected]> |
10
|
|
|
*/ |
11
|
|
|
/** |
12
|
|
|
* Contacts_DuplicateEmail_Handler class. |
13
|
|
|
*/ |
14
|
|
|
class Contacts_DuplicateEmail_Handler |
15
|
|
|
{ |
16
|
|
|
/** |
17
|
|
|
* EditViewPreSave handler function. |
18
|
|
|
* |
19
|
|
|
* @param App\EventHandler $eventHandler |
20
|
|
|
* |
21
|
|
|
* @return array Example: ['result' => false, 'message' => 'LBL_MESSAGE'] |
22
|
|
|
*/ |
23
|
|
|
public function editViewPreSave(App\EventHandler $eventHandler) |
24
|
|
|
{ |
25
|
|
|
$recordModel = $eventHandler->getRecordModel(); |
26
|
|
|
$response = ['result' => true]; |
27
|
|
|
$values = []; |
28
|
|
|
$fields = $recordModel->getModule()->getFieldsByType('email', true); |
29
|
|
|
foreach ($fields as $fieldModel) { |
30
|
|
|
if (($value = $recordModel->get($fieldModel->getName())) && $fieldModel->isViewable()) { |
31
|
|
|
$values[] = $value; |
32
|
|
|
} |
33
|
|
|
} |
34
|
|
|
if ($fields && $values) { |
|
|
|
|
35
|
|
|
$queryGenerator = new \App\QueryGenerator($recordModel->getModuleName()); |
36
|
|
|
$queryGenerator->setStateCondition('All'); |
37
|
|
|
$queryGenerator->setFields(['id'])->permissions = false; |
38
|
|
|
foreach ($fields as $fieldModel) { |
39
|
|
|
$queryGenerator->addCondition($fieldModel->getName(), $values, 'e', false); |
40
|
|
|
} |
41
|
|
|
if ($recordModel->getId()) { |
42
|
|
|
$queryGenerator->addCondition('id', $recordModel->getId(), 'n', true); |
43
|
|
|
} |
44
|
|
|
if ($queryGenerator->createQuery()->exists()) { |
45
|
|
|
$response = [ |
46
|
|
|
'result' => false, |
47
|
|
|
'message' => App\Language::translate('LBL_DUPLICATE_EMAIL_ADDRESS', $recordModel->getModuleName()) |
48
|
|
|
]; |
49
|
|
|
} |
50
|
|
|
} |
51
|
|
|
return $response; |
52
|
|
|
} |
53
|
|
|
} |
54
|
|
|
|
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.