CRM/Event add comments
[civicrm-core.git] / CRM / Event / Page / ParticipantListing / Simple.php
CommitLineData
6a488035
TO
1<?php
2/*
3 +--------------------------------------------------------------------+
06b69b18 4 | CiviCRM version 4.5 |
6a488035 5 +--------------------------------------------------------------------+
06b69b18 6 | Copyright CiviCRM LLC (c) 2004-2014 |
6a488035
TO
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
13 | |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
26*/
27
28/**
29 *
30 * @package CRM
06b69b18 31 * @copyright CiviCRM LLC (c) 2004-2014
6a488035
TO
32 * $Id$
33 *
34 */
35class CRM_Event_Page_ParticipantListing_Simple extends CRM_Core_Page {
36
37 protected $_id;
38
39 protected $_participantListingType;
40
41 protected $_eventTitle;
42
430ae6dd
TO
43 protected $_pager;
44
45 function preProcess() {
6a488035
TO
46 $this->_id = CRM_Utils_Request::retrieve('id', 'Integer', $this, TRUE);
47
48 // retrieve Event Title and include it in page title
49 $this->_eventTitle = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event',
50 $this->_id,
51 'title'
52 );
53 CRM_Utils_System::setTitle(ts('%1 - Participants', array(1 => $this->_eventTitle)));
54
55 // we do not want to display recently viewed contacts since this is potentially a public page
56 $this->assign('displayRecent', FALSE);
57 }
58
0cf587a7
EM
59 /**
60 * @return string
61 */
6a488035
TO
62 function run() {
63 $this->preProcess();
64
65 $fromClause = "
66FROM civicrm_contact
03e04002 67INNER JOIN civicrm_participant ON ( civicrm_contact.id = civicrm_participant.contact_id
68 AND civicrm_contact.is_deleted = 0 )
6a488035
TO
69INNER JOIN civicrm_event ON civicrm_participant.event_id = civicrm_event.id
70LEFT JOIN civicrm_email ON ( civicrm_contact.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1 )
71";
72
73 $whereClause = "
74WHERE civicrm_event.id = %1
75AND civicrm_participant.is_test = 0
76AND civicrm_participant.status_id IN ( 1, 2 )";
77 $params = array(1 => array($this->_id, 'Integer'));
78 $this->pager($fromClause, $whereClause, $params);
79 $orderBy = $this->orderBy();
80
81 list($offset, $rowCount) = $this->_pager->getOffsetAndRowCount();
82
83 $query = "
84SELECT civicrm_contact.id as contact_id ,
85 civicrm_contact.display_name as name ,
86 civicrm_contact.sort_name as sort_name ,
87 civicrm_participant.id as participant_id,
88 civicrm_email.email as email
89 $fromClause
90 $whereClause
91ORDER BY $orderBy
92LIMIT $offset, $rowCount";
93
94 $rows = array();
95 $object = CRM_Core_DAO::executeQuery($query, $params);
96 while ($object->fetch()) {
97 $row = array(
98 'id' => $object->contact_id,
99 'participantID' => $object->participant_id,
100 'name' => $object->name,
101 'email' => $object->email,
102 );
103 $rows[] = $row;
104 }
105 $this->assign_by_ref('rows', $rows);
106
107 return parent::run();
108 }
109
0cf587a7
EM
110 /**
111 * @param $fromClause
112 * @param $whereClause
113 * @param $whereParams
114 */
6a488035
TO
115 function pager($fromClause, $whereClause, $whereParams) {
116
117 $params = array();
118
119 $params['status'] = ts('Group') . ' %%StatusMessage%%';
120 $params['csvString'] = NULL;
121 $params['buttonTop'] = 'PagerTopButton';
122 $params['buttonBottom'] = 'PagerBottomButton';
123 $params['rowCount'] = $this->get(CRM_Utils_Pager::PAGE_ROWCOUNT);
124 if (!$params['rowCount']) {
125 $params['rowCount'] = CRM_Utils_Pager::ROWCOUNT;
126 }
127
128 $query = "
129SELECT count( civicrm_contact.id )
130 $fromClause
131 $whereClause
132";
133
134 $params['total'] = CRM_Core_DAO::singleValueQuery($query, $whereParams);
135 $this->_pager = new CRM_Utils_Pager($params);
136 $this->assign_by_ref('pager', $this->_pager);
137 }
138
0cf587a7
EM
139 /**
140 * @return string
141 */
6a488035
TO
142 function orderBy() {
143 static $headers = NULL;
144 if (!$headers) {
145 $headers = array();
146 $headers[1] = array('name' => ts('Name'),
147 'sort' => 'civicrm_contact.sort_name',
148 'direction' => CRM_Utils_Sort::ASCENDING,
149 );
150 if ($this->_participantListingType == 'Name and Email') {
151 $headers[2] = array('name' => ts('Email'),
152 'sort' => 'civicrm_email.email',
153 'direction' => CRM_Utils_Sort::DONTCARE,
154 );
155 }
156 }
157 $sortID = NULL;
158 if ($this->get(CRM_Utils_Sort::SORT_ID)) {
159 $sortID = CRM_Utils_Sort::sortIDValue($this->get(CRM_Utils_Sort::SORT_ID),
160 $this->get(CRM_Utils_Sort::SORT_DIRECTION)
161 );
162 }
163 $sort = new CRM_Utils_Sort($headers, $sortID);
164 $this->assign_by_ref('headers', $headers);
165 $this->assign_by_ref('sort', $sort);
166 $this->set(CRM_Utils_Sort::SORT_ID,
167 $sort->getCurrentSortID()
168 );
169 $this->set(CRM_Utils_Sort::SORT_DIRECTION,
170 $sort->getCurrentSortDirection()
171 );
172
173 return $sort->orderBy();
174 }
175}
176