Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
bc77d7c0 | 4 | | Copyright CiviCRM LLC. All rights reserved. | |
6a488035 | 5 | | | |
bc77d7c0 TO |
6 | | This work is published under the GNU AGPLv3 license with some | |
7 | | permitted exceptions and without any warranty. For full license | | |
8 | | and copyright information, see https://civicrm.org/licensing | | |
6a488035 | 9 | +--------------------------------------------------------------------+ |
d25dd0ee | 10 | */ |
6a488035 TO |
11 | |
12 | /** | |
13 | * | |
14 | * @package CRM | |
ca5cec67 | 15 | * @copyright CiviCRM LLC https://civicrm.org/licensing |
6a488035 TO |
16 | */ |
17 | class CRM_Contact_Form_Location { | |
18 | ||
19 | /** | |
fe482240 | 20 | * Set variables up before form is built. |
6a488035 | 21 | * |
c490a46a | 22 | * @param CRM_Core_Form $form |
6a488035 | 23 | */ |
00be9182 | 24 | public static function preProcess(&$form) { |
a3d827a7 CW |
25 | $form->_addBlockName = CRM_Utils_Request::retrieve('block', 'String'); |
26 | $additionalblockCount = CRM_Utils_Request::retrieve('count', 'Positive'); | |
6a488035 TO |
27 | |
28 | $form->assign('addBlock', FALSE); | |
29 | if ($form->_addBlockName && $additionalblockCount) { | |
30 | $form->assign('addBlock', TRUE); | |
31 | $form->assign('blockName', $form->_addBlockName); | |
32 | $form->assign('blockId', $additionalblockCount); | |
33 | $form->set($form->_addBlockName . '_Block_Count', $additionalblockCount); | |
34 | } | |
35 | ||
1f7c9105 TM |
36 | if (is_a($form, 'CRM_Event_Form_ManageEvent_Location') |
37 | || is_a($form, 'CRM_Contact_Form_Domain')) { | |
be2fb01f | 38 | $form->_blocks = [ |
6ea503d4 | 39 | 'Address' => ts('Address'), |
6a488035 TO |
40 | 'Email' => ts('Email'), |
41 | 'Phone' => ts('Phone'), | |
be2fb01f | 42 | ]; |
6a488035 TO |
43 | } |
44 | ||
45 | $form->assign('blocks', $form->_blocks); | |
9b01cb89 | 46 | $form->assign('className', CRM_Utils_System::getClassName($form)); |
6a488035 TO |
47 | |
48 | // get address sequence. | |
49 | if (!$addressSequence = $form->get('addressSequence')) { | |
50 | $addressSequence = CRM_Core_BAO_Address::addressSequence(); | |
51 | $form->set('addressSequence', $addressSequence); | |
52 | } | |
53 | $form->assign('addressSequence', $addressSequence); | |
54 | } | |
55 | ||
56 | /** | |
fe482240 | 57 | * Build the form object. |
6a488035 | 58 | * |
c490a46a | 59 | * @param CRM_Core_Form $form |
6a488035 | 60 | */ |
00be9182 | 61 | public static function buildQuickForm(&$form) { |
6a488035 | 62 | // required for subsequent AJAX requests. |
be2fb01f | 63 | $ajaxRequestBlocks = []; |
6a488035 TO |
64 | $generateAjaxRequest = 0; |
65 | ||
66 | //build 1 instance of all blocks, without using ajax ... | |
67 | foreach ($form->_blocks as $blockName => $label) { | |
6a488035 TO |
68 | $name = strtolower($blockName); |
69 | ||
be2fb01f | 70 | $instances = [1]; |
a7488080 | 71 | if (!empty($_POST[$name]) && is_array($_POST[$name])) { |
6a488035 TO |
72 | $instances = array_keys($_POST[$name]); |
73 | } | |
8cc574cf | 74 | elseif (property_exists($form, '_values') && !empty($form->_values[$name]) && is_array($form->_values[$name])) { |
6a488035 TO |
75 | $instances = array_keys($form->_values[$name]); |
76 | } | |
77 | ||
78 | foreach ($instances as $instance) { | |
79 | if ($instance == 1) { | |
80 | $form->assign('addBlock', FALSE); | |
81 | $form->assign('blockId', $instance); | |
82 | } | |
83 | else { | |
84 | //we are going to build other block instances w/ AJAX | |
85 | $generateAjaxRequest++; | |
86 | $ajaxRequestBlocks[$blockName][$instance] = TRUE; | |
87 | } | |
88 | ||
89 | $form->set($blockName . '_Block_Count', $instance); | |
e52506b0 | 90 | $formName = 'CRM_Contact_Form_Edit_' . $blockName; |
481a74f4 | 91 | $formName::buildQuickForm($form); |
6a488035 TO |
92 | } |
93 | } | |
94 | ||
95 | //assign to generate AJAX request for building extra blocks. | |
96 | $form->assign('generateAjaxRequest', $generateAjaxRequest); | |
97 | $form->assign('ajaxRequestBlocks', $ajaxRequestBlocks); | |
98 | } | |
96025800 | 99 | |
6a488035 | 100 | } |