Merge pull request #15843 from totten/master-simplehead
[civicrm-core.git] / CRM / Admin / Form / ParticipantStatusType.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 class CRM_Admin_Form_ParticipantStatusType extends CRM_Admin_Form {
18
19 /**
20 * Explicitly declare the entity api name.
21 */
22 public function getDefaultEntity() {
23 return 'ParticipantStatusType';
24 }
25
26 /**
27 * Build form.
28 */
29 public function buildQuickForm() {
30 parent::buildQuickForm();
31
32 if ($this->_action & CRM_Core_Action::DELETE) {
33
34 return;
35
36 }
37
38 $this->applyFilter('__ALL__', 'trim');
39
40 $attributes = CRM_Core_DAO::getAttribute('CRM_Event_DAO_ParticipantStatusType');
41
42 $this->add('text', 'name', ts('Name'), NULL, TRUE);
43
44 $this->add('text', 'label', ts('Label'), $attributes['label'], TRUE);
45
46 $this->addSelect('class', ['required' => TRUE]);
47
48 $this->add('checkbox', 'is_active', ts('Active?'));
49 $this->add('checkbox', 'is_counted', ts('Counted?'));
50
51 $this->add('number', 'weight', ts('Order'), $attributes['weight'], TRUE);
52
53 $this->addSelect('visibility_id', ['label' => ts('Visibility'), 'required' => TRUE]);
54
55 $this->assign('id', $this->_id);
56 }
57
58 /**
59 * Set default values.
60 *
61 * @return array
62 */
63 public function setDefaultValues() {
64 $defaults = parent::setDefaultValues();
65 if (empty($defaults['weight'])) {
66 $defaults['weight'] = CRM_Utils_Weight::getDefaultWeight('CRM_Event_DAO_ParticipantStatusType');
67 }
68 $this->_isReserved = CRM_Utils_Array::value('is_reserved', $defaults);
69 if ($this->_isReserved) {
70 $this->freeze(['name', 'class', 'is_active']);
71 }
72 return $defaults;
73 }
74
75 public function postProcess() {
76 if ($this->_action & CRM_Core_Action::DELETE) {
77 if (CRM_Event_BAO_ParticipantStatusType::deleteParticipantStatusType($this->_id)) {
78 CRM_Core_Session::setStatus(ts('Selected participant status has been deleted.'), ts('Record Deleted'), 'success');
79 }
80 else {
81 CRM_Core_Session::setStatus(ts('Selected participant status has <strong>NOT</strong> been deleted; there are still participants with this status.'), ts('Sorry'), 'error');
82 }
83 return;
84 }
85
86 $formValues = $this->controller->exportValues($this->_name);
87
88 $params = [
89 'name' => CRM_Utils_Array::value('name', $formValues),
90 'label' => CRM_Utils_Array::value('label', $formValues),
91 'class' => CRM_Utils_Array::value('class', $formValues),
92 'is_active' => CRM_Utils_Array::value('is_active', $formValues, FALSE),
93 'is_counted' => CRM_Utils_Array::value('is_counted', $formValues, FALSE),
94 'weight' => CRM_Utils_Array::value('weight', $formValues),
95 'visibility_id' => CRM_Utils_Array::value('visibility_id', $formValues),
96 ];
97
98 // make sure a malicious POST does not change these on reserved statuses
99 if ($this->_isReserved) {
100 unset($params['name'], $params['class'], $params['is_active']);
101 }
102
103 if ($this->_action & CRM_Core_Action::UPDATE) {
104
105 $params['id'] = $this->_id;
106
107 }
108
109 if ($this->_id) {
110 $oldWeight = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantStatusType', $this->_id, 'weight', 'id');
111 }
112 else {
113 $oldWeight = 0;
114 }
115 $params['weight'] = CRM_Utils_Weight::updateOtherWeights('CRM_Event_DAO_ParticipantStatusType', $oldWeight, $params['weight']);
116
117 $participantStatus = CRM_Event_BAO_ParticipantStatusType::create($params);
118
119 if ($participantStatus->id) {
120 if ($this->_action & CRM_Core_Action::UPDATE) {
121 CRM_Core_Session::setStatus(ts('The Participant Status has been updated.'), ts('Saved'), 'success');
122 }
123 else {
124 CRM_Core_Session::setStatus(ts('The new Participant Status has been saved.'), ts('Saved'), 'success');
125 }
126 }
127 else {
128 CRM_Core_Session::setStatus(ts('The changes have not been saved.'), ts('Saved'), 'success');
129 }
130 }
131
132 }