Import - Fix multi-record custom data import PHP errors
[civicrm-core.git] / CRM / Custom / Form / Preview.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
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 |
9 +--------------------------------------------------------------------+
10 */
11
12 /**
13 *
14 * @package CRM
15 * @copyright CiviCRM LLC https://civicrm.org/licensing
16 */
17
18 /**
19 * This class generates form components for previewing custom data
20 *
21 * It delegates the work to lower level subclasses and integrates the changes
22 * back in. It also uses a lot of functionality with the CRM API's, so any change
23 * made here could potentially affect the API etc. Be careful, be aware, use unit tests.
24 *
25 */
26 class CRM_Custom_Form_Preview extends CRM_Core_Form {
27
28 /**
29 * The group tree data.
30 *
31 * @var array
32 */
33 protected $_groupTree;
34
35 /**
36 * Pre processing work done here.
37 *
38 * gets session variables for group or field id
39 *
40 * @return void
41 */
42 public function preProcess() {
43 // get the controller vars
44 $this->_groupId = $this->get('groupId');
45 $this->_fieldId = $this->get('fieldId');
46 if ($this->_fieldId) {
47 // field preview
48 $defaults = [];
49 $params = ['id' => $this->_fieldId];
50 $fieldDAO = new CRM_Core_DAO_CustomField();
51 CRM_Core_DAO::commonRetrieve('CRM_Core_DAO_CustomField', $params, $defaults);
52
53 if (!empty($defaults['is_view'])) {
54 CRM_Core_Error::statusBounce(ts('This field is view only so it will not display on edit form.'));
55 }
56 elseif (empty($defaults['is_active'])) {
57 CRM_Core_Error::statusBounce(ts('This field is inactive so it will not display on edit form.'));
58 }
59
60 $groupTree = [];
61 $groupTree[$this->_groupId]['id'] = 0;
62 $groupTree[$this->_groupId]['fields'] = [];
63 $groupTree[$this->_groupId]['fields'][$this->_fieldId] = $defaults;
64 $this->_groupTree = CRM_Core_BAO_CustomGroup::formatGroupTree($groupTree, 1, $this);
65 $this->assign('preview_type', 'field');
66 }
67 else {
68 $groupTree = CRM_Core_BAO_CustomGroup::getGroupDetail($this->_groupId);
69 $this->_groupTree = CRM_Core_BAO_CustomGroup::formatGroupTree($groupTree, TRUE, $this);
70 $this->assign('preview_type', 'group');
71 }
72 }
73
74 /**
75 * Set the default form values.
76 *
77 * @return array
78 * the default array reference
79 */
80 public function setDefaultValues() {
81 $defaults = [];
82
83 CRM_Core_BAO_CustomGroup::setDefaults($this->_groupTree, $defaults, FALSE, FALSE);
84
85 return $defaults;
86 }
87
88 /**
89 * Build the form object.
90 *
91 * @return void
92 */
93 public function buildQuickForm() {
94 if (is_array($this->_groupTree) && !empty($this->_groupTree[$this->_groupId])) {
95 foreach ($this->_groupTree[$this->_groupId]['fields'] as & $field) {
96 //add the form elements
97 CRM_Core_BAO_CustomField::addQuickFormElement($this, $field['element_name'], $field['id'], CRM_Utils_Array::value('is_required', $field));
98 }
99
100 $this->assign('groupTree', $this->_groupTree);
101 }
102 $this->addButtons([
103 [
104 'type' => 'cancel',
105 'name' => ts('Done with Preview'),
106 'isDefault' => TRUE,
107 ],
108 ]);
109 }
110
111 }