1 | <?php |
||
5 | class ItemUpdateBuilder |
||
6 | { |
||
7 | 4 | public static function buildUpdateItemChanges($itemType, $uriType, $changes) |
|
8 | { |
||
9 | 4 | $updateArray = []; |
|
10 | |||
11 | 4 | if (isset($changes['deleteFields'])) { |
|
12 | 1 | $updateArray['DeleteItemField'] = self::buildUpdateDeleteItemFields($uriType, $changes['deleteFields']); |
|
13 | 1 | unset($changes['deleteFields']); |
|
14 | 1 | } |
|
15 | |||
16 | 4 | $updateArray['SetItemField'] = self::buildUpdateSetItemFields($itemType, $uriType, $changes); |
|
17 | |||
18 | 4 | return $updateArray; |
|
19 | } |
||
20 | |||
21 | 1 | protected static function buildUpdateDeleteItemFields($uriType, $changes) |
|
22 | { |
||
23 | 1 | $deleteItemFields = []; |
|
24 | 1 | foreach ($changes as $key) { |
|
25 | 1 | if (strpos($key, 'PhysicalAddress:') === 0 && $uriType == "contacts") { |
|
26 | $deleteItemFields = |
||
27 | 1 | self::deleteContactPhysicalAddressField($key, $deleteItemFields); |
|
28 | 1 | } else { |
|
29 | 1 | list($fieldUriType, $fieldKey) = self::getFieldURI($uriType, $key); |
|
30 | 1 | $deleteItemFields[] = [$fieldUriType => $fieldKey]; |
|
31 | } |
||
32 | 1 | } |
|
33 | |||
34 | 1 | return $deleteItemFields; |
|
35 | } |
||
36 | |||
37 | 4 | protected static function buildUpdateSetItemFields($itemType, $uriType, $changes) |
|
57 | |||
58 | 1 | protected static function deleteContactPhysicalAddressField($key, $deleteItemFields) |
|
59 | { |
||
60 | 1 | $key = explode(":", $key); |
|
61 | 1 | $dictionaryFields = FieldURIManager::getDictionaryURIFields(); |
|
62 | 1 | if (count($key) == 2 && !isset($dictionaryFields['physicaladdress']['contacts'][strtolower($key[1])])) { |
|
63 | 1 | foreach ($dictionaryFields['physicaladdress']['contacts'] as $uriKey => $uri) { |
|
64 | 1 | $deleteItemFields[] = ['IndexedFieldURI' => ['FieldURI' => $uri, 'FieldIndex' => $key[1]]]; |
|
65 | 1 | } |
|
66 | 1 | } elseif (count($key) == 3 && isset($dictionaryFields['physicaladdress']['contacts'][strtolower($key[1])])) { |
|
67 | 1 | $uri = $dictionaryFields['physicaladdress']['contacts'][strtolower($key[1])]; |
|
68 | 1 | $deleteItemFields[] = ['IndexedFieldURI' => ['FieldURI' => $uri, 'FieldIndex' => $key[2]]]; |
|
69 | 1 | } |
|
70 | |||
71 | 1 | return $deleteItemFields; |
|
72 | } |
||
73 | |||
74 | 3 | protected static function splitDictionaryUpdateEntries($value) |
|
99 | |||
100 | 4 | protected static function getFieldURI($uriType, $key = null, $value = null) |
|
134 | } |
||
135 |