/**
  * 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;
     }
 }