Merge pull request #17550 from eileenmcnaughton/request
[civicrm-core.git] / CRM / Contact / Form / Location.php
CommitLineData
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 */
17class 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}