168 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
|  +--------------------------------------------------------------------+
 | |
|  | CiviCRM version 4.7                                                |
 | |
|  +--------------------------------------------------------------------+
 | |
|  | Copyright CiviCRM LLC (c) 2004-2017                                |
 | |
|  +--------------------------------------------------------------------+
 | |
|  | This file is a part of CiviCRM.                                    |
 | |
|  |                                                                    |
 | |
|  | CiviCRM is free software; you can copy, modify, and distribute it  |
 | |
|  | under the terms of the GNU Affero General Public License           |
 | |
|  | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
 | |
|  |                                                                    |
 | |
|  | CiviCRM is distributed in the hope that it will be useful, but     |
 | |
|  | WITHOUT ANY WARRANTY; without even the implied warranty of         |
 | |
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
 | |
|  | See the GNU Affero General Public License for more details.        |
 | |
|  |                                                                    |
 | |
|  | You should have received a copy of the GNU Affero General Public   |
 | |
|  | License and the CiviCRM Licensing Exception along                  |
 | |
|  | with this program; if not, contact CiviCRM LLC                     |
 | |
|  | at info[AT]civicrm[DOT]org. If you have questions about the        |
 | |
|  | GNU Affero General Public License or the licensing of CiviCRM,     |
 | |
|  | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
 | |
|  +--------------------------------------------------------------------+
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  * @package CRM
 | |
|  * @copyright CiviCRM LLC (c) 2004-2017
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Files required
 | |
|  */
 | |
| class CRM_Campaign_Form_Gotv extends CRM_Core_Form {
 | |
| 
 | |
|   /**
 | |
|    * Are we forced to run a search
 | |
|    *
 | |
|    * @var int
 | |
|    */
 | |
|   protected $_force;
 | |
| 
 | |
|   protected $_votingTab = FALSE;
 | |
| 
 | |
|   protected $_searchVoterFor;
 | |
| 
 | |
|   /**
 | |
|    * Processing needed for buildForm and later.
 | |
|    */
 | |
|   public function preProcess() {
 | |
|     $this->_search = CRM_Utils_Array::value('search', $_GET);
 | |
|     $this->_force = CRM_Utils_Request::retrieve('force', 'Boolean', $this, FALSE);
 | |
|     $this->_surveyId = CRM_Utils_Request::retrieve('sid', 'Positive', $this);
 | |
|     $this->_interviewerId = CRM_Utils_Request::retrieve('cid', 'Positive', $this);
 | |
| 
 | |
|     //does control come from voting tab interface.
 | |
|     $this->_votingTab = $this->get('votingTab');
 | |
|     $this->_subVotingTab = $this->get('subVotingTab');
 | |
|     $this->_searchVoterFor = 'gotv';
 | |
|     if ($this->_votingTab) {
 | |
|       if ($this->_subVotingTab == 'searchANDReserve') {
 | |
|         $this->_searchVoterFor = 'reserve';
 | |
|       }
 | |
|       elseif ($this->_subVotingTab == 'searchANDInterview') {
 | |
|         $this->_searchVoterFor = 'interview';
 | |
|       }
 | |
|     }
 | |
|     $this->assign('force', $this->_force);
 | |
|     $this->assign('votingTab', $this->_votingTab);
 | |
|     $this->assign('searchParams', json_encode($this->get('searchParams')));
 | |
|     $this->assign('buildSelector', $this->_search);
 | |
|     $this->assign('searchVoterFor', $this->_searchVoterFor);
 | |
|     $this->set('searchVoterFor', $this->_searchVoterFor);
 | |
| 
 | |
|     $surveyTitle = NULL;
 | |
|     if ($this->_surveyId) {
 | |
|       $surveyTitle = CRM_Core_DAO::getFieldValue('CRM_Campaign_DAO_Survey', $this->_surveyId, 'title');
 | |
|     }
 | |
|     $this->assign('surveyTitle', $surveyTitle);
 | |
| 
 | |
|     //append breadcrumb to survey dashboard.
 | |
|     if (CRM_Campaign_BAO_Campaign::accessCampaign()) {
 | |
|       $url = CRM_Utils_System::url('civicrm/campaign', 'reset=1&subPage=survey');
 | |
|       CRM_Utils_System::appendBreadCrumb(array(array('title' => ts('Survey(s)'), 'url' => $url)));
 | |
|     }
 | |
| 
 | |
|     //set the form title.
 | |
|     CRM_Utils_System::setTitle(ts('GOTV (Voter Tracking)'));
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Build the form object.
 | |
|    */
 | |
|   public function buildQuickForm() {
 | |
|     if ($this->_search) {
 | |
|       return;
 | |
|     }
 | |
| 
 | |
|     //build common search form.
 | |
|     CRM_Campaign_BAO_Query::buildSearchForm($this);
 | |
| 
 | |
|     //build the array of all search params.
 | |
|     $this->_searchParams = array();
 | |
|     foreach ($this->_elements as $element) {
 | |
|       $name = $element->_attributes['name'];
 | |
|       if ($name == 'qfKey') {
 | |
|         continue;
 | |
|       }
 | |
|       $this->_searchParams[$name] = $name;
 | |
|     }
 | |
|     $this->set('searchParams', $this->_searchParams);
 | |
|     $this->assign('searchParams', json_encode($this->_searchParams));
 | |
| 
 | |
|     $defaults = array();
 | |
| 
 | |
|     if (!$this->_surveyId) {
 | |
|       $this->_surveyId = key(CRM_Campaign_BAO_Survey::getSurveys(TRUE, TRUE));
 | |
|     }
 | |
| 
 | |
|     if ($this->_force || $this->_votingTab) {
 | |
|       $session = CRM_Core_Session::singleton();
 | |
|       $userId = $session->get('userID');
 | |
|       // get interviewer id
 | |
|       $cid = CRM_Utils_Request::retrieve('cid', 'Positive',
 | |
|         CRM_Core_DAO::$_nullObject, FALSE, $userId
 | |
|       );
 | |
| 
 | |
|       $defaults['survey_interviewer_id'] = $cid;
 | |
|     }
 | |
|     if ($this->_surveyId) {
 | |
|       $defaults['campaign_survey_id'] = $this->_surveyId;
 | |
|     }
 | |
|     if (!empty($defaults)) {
 | |
|       $this->setDefaults($defaults);
 | |
|     }
 | |
| 
 | |
|     //validate the required ids.
 | |
|     $this->validateIds();
 | |
|   }
 | |
| 
 | |
|   public function validateIds() {
 | |
|     $errorMessages = array();
 | |
|     //check for required permissions.
 | |
|     if (!CRM_Core_Permission::check('manage campaign') &&
 | |
|       !CRM_Core_Permission::check('administer CiviCampaign') &&
 | |
|       !CRM_Core_Permission::check("{$this->_searchVoterFor} campaign contacts")
 | |
|     ) {
 | |
|       $errorMessages[] = ts('You are not authorized to access this page.');
 | |
|     }
 | |
| 
 | |
|     $surveys = CRM_Campaign_BAO_Survey::getSurveys();
 | |
|     if (empty($surveys)) {
 | |
|       $errorMessages[] = ts("Oops. It looks like no surveys have been created. <a href='%1'>Click here to create a new survey.</a>", array(1 => CRM_Utils_System::url('civicrm/survey/add', 'reset=1&action=add')));
 | |
|     }
 | |
| 
 | |
|     if ($this->_force && !$this->_surveyId) {
 | |
| 
 | |
|       $errorMessages[] = ts('Could not find Survey.');
 | |
| 
 | |
|     }
 | |
| 
 | |
|     $this->assign('errorMessages', empty($errorMessages) ? FALSE : $errorMessages);
 | |
|   }
 | |
| 
 | |
| }
 |