/** * Create e-mail addresses form. * * @return void */ public function init() { $emailValidator = new Zend_Validate_EmailAddress(); $emailValidator->setMessages(array(Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'Domain name invalid in e-mail address', Zend_Validate_EmailAddress::INVALID_FORMAT => 'Invalid e-mail address')); // Add an e-mail element for each e-mail category foreach (Model_Core_Agent_EmailMapCategory::iterableKeys() as $categoryConstName => $val) { $categoryFriendlyName = Model_Core_Agent_EmailMapCategory::toString($val); // Add e-mail element $this->addElement('text', "email{$categoryConstName}", array('label' => $categoryFriendlyName, 'required' => false, 'filters' => array('StringTrim'), 'validators' => array(array('NotEmpty', true, array('messages' => array('isEmpty' => "Please enter your {$categoryFriendlyName} e-mail address")))))); $this->getElement("email{$categoryConstName}")->addValidator($emailValidator); } // Set custom subform decorator $this->setDecorators(array(array('ViewScript', array('viewScript' => 'settings/subforms/emailaddresses.phtml')))); $this->setElementFilters(array('StripTags')); $this->setElementDecorators(array(array('ViewHelper', array('escape' => false)), array('Label', array('escape' => false)))); }
/** * Handle "e-mail addresses" section changes and data population */ private function _handleEmailAddresses($request) { // Only available to master users if ($this->_level == Model_Core_Agent_UserRole::MASTER) { // Instantiate form definition $pageFormEmailAddresses = new Connect_Form_SettingsEmailAddresses(); if ($request->isPost() && isset($_POST['updateEmailAddresses'])) { if ($pageFormEmailAddresses->isValid($request->getPost())) { // Save addresses $emailMapArray = array(); foreach (Model_Core_Agent_EmailMapCategory::iterableKeys() as $categoryConstName => $val) { $emailMap = new Model_Core_Agent_EmailMap(); $emailMap->category = $val; $emailMap->emailAddress = new Model_Core_EmailAddress(); $emailMap->emailAddress->emailAddress = $request->getParam("email{$categoryConstName}"); $emailMapArray[] = $emailMap; } $this->_agentManager->setEmailAddresses($emailMapArray); // Tell user successful $this->_helper->flashmessages->addMessage('Email addresses updated'); } else { // Tell user unsuccessful $this->_helper->flashmessages->addMessage('Problem encountered updating e-mail addresses, see below'); } } else { // Populate only $emailMapArray = $this->_agentManager->getEmailAddresses(); $emailMapConstants = array_flip(Model_Core_Agent_EmailMapCategory::iterableKeys()); foreach ($emailMapArray as $emailMap) { $pageFormEmailAddresses->subform_emailaddresses->getElement("email{$emailMapConstants[$emailMap->category]}")->setValue($emailMap->emailAddress->emailAddress); } } // Handle any form error messages by passing them into the // flashmessages helper $allErrors = $pageFormEmailAddresses->getMessages(); foreach ($allErrors as $field => $errors) { $this->_helper->flashmessages->addMessage($errors); } // Return form return $pageFormEmailAddresses; } else { return null; } }