Merge pull request #14662 from eileenmcnaughton/activity_pdf_71
[civicrm-core.git] / CRM / Event / Form / Task / PickProfile.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 * $Id$
17 *
18 */
19
20 /**
21 * This class provides the functionality for batch profile update for event participations
22 */
23 class CRM_Event_Form_Task_PickProfile extends CRM_Event_Form_Task {
24
25 /**
26 * The title of the group.
27 *
28 * @var string
29 */
30 protected $_title;
31
32 /**
33 * Maximum event participations that should be allowed to update.
34 * @var int
35 */
36 protected $_maxParticipations = 100;
37
38 /**
39 * Variable to store redirect path.
40 * @var string
41 */
42 protected $_userContext;
43
44 /**
45 * Build all the data structures needed to build the form.
46 *
47 * @return void
48 */
49 public function preProcess() {
50 // initialize the task and row fields
51 parent::preProcess();
52
53 $session = CRM_Core_Session::singleton();
54 $this->_userContext = $session->readUserContext();
55
56 CRM_Utils_System::setTitle(ts('Update multiple participants'));
57
58 $validate = FALSE;
59 //validations
60 if (count($this->_participantIds) > $this->_maxParticipations) {
61 CRM_Core_Session::setStatus("The maximum number of records you can select for Update multiple participants is {$this->_maxParticipations}. You have selected " . count($this->_participantIds) . ". Please select fewer participantions from your search results and try again.");
62 $validate = TRUE;
63 }
64
65 // then redirect
66 if ($validate) {
67 CRM_Utils_System::redirect($this->_userContext);
68 }
69 }
70
71 /**
72 * Build the form object.
73 *
74 *
75 * @return void
76 */
77 public function buildQuickForm() {
78 $types = ['Participant'];
79 $profiles = CRM_Core_BAO_UFGroup::getProfiles($types, TRUE);
80
81 if (empty($profiles)) {
82 CRM_Core_Session::setStatus("To use Update multiple participants, you need to configure a profile containing only Participant fields (e.g. Participant Status, Participant Role, etc.). Configure a profile at 'Administer CiviCRM >> Customize >> CiviCRM Profile'.");
83 CRM_Utils_System::redirect($this->_userContext);
84 }
85
86 $ufGroupElement = $this->add('select', 'uf_group_id', ts('Select Profile'),
87 [
88 '' => ts('- select profile -'),
89 ] + $profiles, TRUE
90 );
91 $this->addDefaultButtons(ts('Continue'));
92 }
93
94 /**
95 * Add local and global form rules.
96 *
97 *
98 * @return void
99 */
100 public function addRules() {
101 $this->addFormRule(['CRM_Event_Form_Task_PickProfile', 'formRule']);
102 }
103
104 /**
105 * Global validation rules for the form.
106 *
107 * @param array $fields
108 * Posted values of the form.
109 *
110 * @return array
111 * list of errors to be posted back to the form
112 */
113 public static function formRule($fields) {
114 return TRUE;
115 }
116
117 /**
118 * Process the form after the input has been submitted and validated.
119 *
120 *
121 * @return void
122 */
123 public function postProcess() {
124 $params = $this->exportValues();
125
126 $this->set('ufGroupId', $params['uf_group_id']);
127
128 // also reset the batch page so it gets new values from the db
129 $this->controller->resetPage('Batch');
130 }
131
132 }