/**
  * function __construct
  * <pre>
  * Initialize the object.
  * </pre>
  * @param $pathModuleRoot [STRING] The path to the module's root dir.
  * @param $viewer [OBJECT] The viewer object.
  * @param $sortBy [STRING] Field data to sort listManager by.
  * @param $managerInit [INTEGER] Initialization value for the listManager.
  * @return [void]
  */
 function __construct($pathModuleRoot, $viewer, $registrant_formAction, $sortBy, $event_id, $campus_id = "", $isInRegProcess = 'FALSE', $reg_id = '')
 {
     // 	     $fieldList = page_EditCampusRegistrations::FORM_FIELDS;
     //        $fieldTypes = page_EditCampusRegistrations::FORM_FIELD_TYPES;
     $displayFields = page_EditCampusRegistrations::DISPLAY_FIELDS;
     parent::__construct($displayFields);
     //$formAction,  $fieldList,
     $this->pathModuleRoot = $pathModuleRoot;
     $this->viewer = $viewer;
     $this->registrant_formAction = $registrant_formAction;
     $this->sortBy = $sortBy;
     $this->event_id = $event_id;
     $this->campus_id = $campus_id;
     $this->is_in_reg_process = $isInRegProcess;
     $this->reg_id = $reg_id;
     //        $this->managerInit = $managerInit;
     //        $dataAccessObject = new RowManager_RegistrationManager();
     //        $dataAccessObject->setSortOrder( $sortBy );
     //        $this->listManager = new RegistrationList( $sortBy );
     //        $this->listManager = $dataAccessObject->getListIterator();
     $registration = new RowManager_RegistrationManager();
     $registration->setSortOrder($sortBy);
     $registration->setEventID($this->event_id);
     $person = new RowManager_PersonManager();
     $assignment = new RowManager_AssignmentsManager();
     // assigns campus to person
     $campus = new RowManager_CampusManager();
     //   $campus->setCampusID($this->campus_id);
     $cash_trans = new RowManager_CashTransactionManager();
     $cc_trans = new RowManager_CreditCardTransactionManager();
     $status = new RowManager_StatusManager();
     // join 6 tables together:
     //cim_reg_registration, cim_hrdb_person, cim_hrdb_assignment, cim_hrdb_campus,
     //cim_reg_cashtransaction, and cim_reg_cctransaction  (and cim_reg_status)
     $campusRegs = new MultiTableManager();
     /*        $campusRegs->addRowManager( $registration, new JoinPair( $person->getJoinOnPersonID(), $registration->getJoinOnPersonID()));        
             $campusRegs->addRowManager( $person, new JoinPair( $assignment->getJoinOnPersonID(), $person->getJoinOnPersonID() ) );
             $campusRegs->addRowManager( $assignment, new JoinPair( $campus->getJoinOnCampusID(), $assignment->getJoinOnCampusID() ) );
             $campusRegs->addRowManager( $cash_trans, new JoinPair( $registration->getJoinOnRegID(), $cash_trans->getJoinOnRegID() ) );
     /*        $campusRegs->addRowManager( $cc_trans, new JoinPair( $registration->getJoinOnRegID(), $cc_trans->getJoinOnRegID() ) );
     */
     /**/
     $campusRegs->addRowManager($campus);
     $campusRegs->addRowManager($assignment, new JoinPair($campus->getJoinOnCampusID(), $assignment->getJoinOnCampusID(), JOIN_TYPE_LEFT));
     $campusRegs->addRowManager($person, new JoinPair($assignment->getJoinOnPersonID(), $person->getJoinOnPersonID(), JOIN_TYPE_LEFT));
     $campusRegs->addRowManager($registration, new JoinPair($person->getJoinOnPersonID(), $registration->getJoinOnPersonID(), JOIN_TYPE_LEFT));
     $campusRegs->addRowManager($cash_trans, new JoinPair($registration->getJoinOnRegID(), $cash_trans->getJoinOnRegID(), JOIN_TYPE_LEFT));
     $campusRegs->addRowManager($cc_trans, new JoinPair($registration->getJoinOnRegID(), $cc_trans->getJoinOnRegID(), JOIN_TYPE_LEFT));
     $campusRegs->addRowManager($status, new JoinPair($registration->getJoinOnStatus(), $status->getJoinOnStatusID(), JOIN_TYPE_LEFT));
     if ($this->campus_id != '') {
         $campusRegs->constructSearchCondition('campus_id', '=', $this->campus_id, true);
     }
     // (below) ensures no duplicate entries appear in case of multiple payments
     // TODO: figure out which record is displayed....
     $campusRegs->setGroupBy('registration_id');
     //         $campusRegs->setSortOrder( $sortBy );
     $campusRegs->setPrimaryKeyField('registration_id');
     if ($sortBy == 'registration_balance') {
         $campusRegs->addSortField($sortBy, 'DESC');
         // sort balances from greatest to least
     } else {
         $campusRegs->addSortField($sortBy);
         // sort field from least to greatest value
     }
     //     $multiTableManager2->setLabelTemplate('viewer_userID', '[viewer_userID]');
     $this->listManager = $campusRegs->getListIterator();
     $regsArray = $this->listManager->getDataList();
     //          echo "<pre>".print_r($this->listManager,true)."</pre>";
     //         echo "<pre>".print_r($regsArray,true)."</pre>";
     // cycle through registrations and store balance owing for each
     $this->owingArray = array();
     $priceGetter = new FinancialTools();
     $results = array();
     $temp = array();
     reset($regsArray);
     foreach (array_keys($regsArray) as $k) {
         $reg = current($regsArray);
         //				echo 'regID = '.$reg['registration_id'];
         $reg_id = $reg['registration_id'];
         $param = null;
         $array = array();
         $owed = $reg['registration_balance'];
         // $priceGetter->simpleCalcBalanceOwing($reg_id, $this->event_id, $this->campus_id);
         $this->owingArray[$reg_id] = $owed;
         next($regsArray);
     }
     //			echo "<pre>".print_r($this->owingArray,true)."</pre>";
     // create references to sub-page object: registrant drop-down list
     //			$this->registrants_dropList = new FormProcessor_EditCampusRegistrations_OffflineRegBox( $this->pathModuleRoot, $this->viewer, $formAction);
     // now initialize the labels for this page
     // start by loading the default field labels for this Module
     $languageID = $viewer->getLanguageID();
     $seriesKey = modulecim_reg::MULTILINGUAL_SERIES_KEY;
     $pageKey = modulecim_reg::MULTILINGUAL_PAGE_FIELDS;
     $this->labels = new MultilingualManager($languageID, $seriesKey, $pageKey);
     // then load the page specific labels for this page
     $pageKey = page_EditCampusRegistrations::MULTILINGUAL_PAGE_KEY;
     $this->labels->loadPageLabels($pageKey);
     $this->labels->setSeriesKey(SITE_LABEL_SERIES_SITE);
     $this->labels->loadPageLabels(SITE_LABEL_PAGE_FORM_LINKS);
 }