/**
  * function __construct
  * <pre>
  * Initialize the object.
  * </pre>
  * @param $pathModuleRoot [STRING] The path to this module's root directory
  * @param $viewer [OBJECT] The viewer object.
  * @param $formAction [STRING] The action on a form submit
  * @param $person_id [INTEGER] Value used to initialize the dataManager
  * @return [void]
  */
 function __construct($pathModuleRoot, $viewer, $formAction, $person_id)
 {
     // NOTE: be sure to call the parent constructor before trying to
     //       use the ->formXXX arrays...
     $fieldList = FormProcessor_NewPerson::FORM_FIELDS;
     $fieldDisplayTypes = FormProcessor_NewPerson::FORM_FIELD_TYPES;
     parent::__construct($formAction, $fieldList, $fieldDisplayTypes);
     $this->pathModuleRoot = $pathModuleRoot;
     $this->viewer = $viewer;
     $this->person_id = $person_id;
     $fieldsOfInterest = implode(',', $this->formFields);
     // Using Join
     $dataAccessObject = new MultiTableManager();
     $viewerManager = new RowManager_ViewerManager();
     $dataAccessObject->addRowManager($viewerManager);
     $personManager = new RowManager_PersonManager();
     $joinPair = new JoinPair($personManager->getJoinOnPersonID(), $viewerManager->getJoinOnPersonID());
     $dataAccessObject->addRowManager($personManager, $joinPair);
     $dataAccessObject->setFieldsOfInterest($fieldsOfInterest);
     $this->formValues = $dataAccessObject->getArrayOfValues();
     // Done using Join
     // figure out the important fields for the dataManager
     /*No Join used, only person manager.
             $this->dataManager = new RowManager_PersonManager( $person_id );
             $this->dataManager->setFieldsOfInterest( $fieldsOfInterest );
             $this->formValues = $this->dataManager->getArrayOfValues();
     */
     // now initialize the labels for this page
     // start by loading the default field labels for this Module
     $languageID = $viewer->getLanguageID();
     $seriesKey = modulecim_hrdb::MULTILINGUAL_SERIES_KEY;
     $pageKey = modulecim_hrdb::MULTILINGUAL_PAGE_FIELDS;
     $this->labels = new MultilingualManager($languageID, $seriesKey, $pageKey);
     // then load the page specific labels for this page
     $pageKey = FormProcessor_NewPerson::MULTILINGUAL_PAGE_KEY;
     $this->labels->loadPageLabels($pageKey);
     // load the site default form link labels
     $this->labels->setSeriesKey(SITE_LABEL_SERIES_SITE);
     $this->labels->loadPageLabels(SITE_LABEL_PAGE_FORM_LINKS);
     $this->labels->loadPageLabels(SITE_LABEL_PAGE_FORMERRORS);
 }