_caseId = CRM_Utils_Request::retrieve('caseid', 'String', $this, FALSE); $this->_context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this); $cid = CRM_Utils_Request::retrieve('cid', 'String', $this, FALSE); // Allow request to specify email id rather than contact id $toEmailId = CRM_Utils_Request::retrieve('email_id', 'String', $this); if ($toEmailId) { $toEmail = civicrm_api('email', 'getsingle', ['version' => 3, 'id' => $toEmailId]); if (!empty($toEmail['email']) && !empty($toEmail['contact_id'])) { $this->_toEmail = $toEmail; } if (!$cid) { $cid = $toEmail['contact_id']; $this->set('cid', $cid); } } if ($cid) { $cid = explode(',', $cid); $displayName = []; foreach ($cid as $val) { $displayName[] = CRM_Contact_BAO_Contact::displayName($val); } CRM_Utils_System::setTitle(implode(',', $displayName) . ' - ' . ts('Email')); } else { CRM_Utils_System::setTitle(ts('New Email')); } if ($this->_context === 'search') { $this->_single = TRUE; } if ($cid || $this->_context === 'standalone') { // When search context is false the parent pre-process is not set. That avoids it changing the // redirect url & attempting to set the search params of the form. It may have only // historical significance. $this->setIsSearchContext(FALSE); } $this->traitPreProcess(); } /** * Stub function as EmailTrait calls this. * * @todo move some code from preProcess into here. */ public function setContactIDs() {} /** * List available tokens for this form. * * @return array * @throws \CRM_Core_Exception */ public function listTokens() { $tokens = CRM_Core_SelectValues::contactTokens(); if (isset($this->_caseId) || isset($this->_caseIds)) { // For a single case, list tokens relevant for only that case type $caseTypeId = isset($this->_caseId) ? CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $this->_caseId, 'case_type_id') : NULL; $tokens += CRM_Core_SelectValues::caseTokens($caseTypeId); } return $tokens; } }