/**
  * Generate user accounts HTML.
  *
  * @param integer $userStatus
  * Must correspond to one of the consts exposed by the Model_Core_Agent_UserStatus class.
  *
  * @param null|int|array $filterOutUserIds Optional filter, can be empty
  * (null) for no filtering, have one ID (int), or an array of IDs (array of
  * int)
  *
  * @return string
  * Returns the HTML as a string.
  */
 public function listUsers($userStatus, $filterOutUserIds = null)
 {
     $returnVal = '';
     $userManager = new Manager_Core_Agent_User();
     $users = $userManager->getUsersByStatus($this->_agentSchemeNumber, $userStatus);
     if ($userStatus == Model_Core_Agent_UserStatus::ACTIVATED) {
         $userStatusClass = 'activated';
     } else {
         $userStatusClass = 'deactivated';
     }
     // Set up to do any on-the-fly filtering
     if (is_numeric($filterOutUserIds)) {
         // Convert numeric to single element array
         $filterOutUserIds = array($filterOutUserIds);
     }
     if (!is_array($filterOutUserIds)) {
         // Convert null to empty array
         $filterOutUserIds = array();
     }
     // Instantiate form - a single instantiation is recycled to save CPU
     // time and mem footprint!
     $userForm = new Connect_Form_SettingsUserAccount(Model_Core_Agent_UserRole::MASTER);
     $firstRow = true;
     $userManager = new Manager_Core_Agent_User();
     foreach ($users as $userObj) {
         // Filter out?
         if (!in_array($userObj->id, $filterOutUserIds)) {
             // Populate form with user object stuffs
             $userForm->subform_useraccount->getElement('realname')->setValue($userObj->name);
             $userForm->subform_useraccount->getElement('username')->setValue($userObj->username);
             $userForm->subform_useraccount->getElement('email')->setValue($userObj->email->emailAddress);
             $userForm->subform_useraccount->getElement('emailcopyto')->setValue($userObj->copyMailTo->emailAddress);
             $userSecurity = $userManager->getUserSecurityDetails($userObj->id);
             $userForm->subform_useraccount->getElement('question')->setValue($userSecurity['questionID']);
             $userForm->subform_useraccount->getElement('answer')->setValue($userSecurity['answer']);
             $userRole = $userObj->role == Model_Core_Agent_UserRole::MASTER ? '1' : '0';
             $userForm->subform_useraccount->getElement('master')->setValue($userRole);
             $userResourcesReports = in_array(Model_Core_Agent_UserResources::REPORTS, $userObj->resources) ? '1' : '0';
             $userForm->subform_useraccount->getElement('reports')->setValue($userResourcesReports);
             $userStatus = $userObj->status == Model_Core_Agent_UserStatus::ACTIVATED ? '1' : '0';
             $userForm->subform_useraccount->getElement('status')->setValue($userStatus);
             // Generate HTML using partial view
             $returnVal .= $this->view->partial('partials/edit-user-account.phtml', array('form' => $userForm, 'userId' => $userObj->id, 'firstRow' => $firstRow, 'userStatusClass' => $userStatusClass));
             $firstRow = false;
         }
     }
     return $returnVal;
 }