/** * function __construct * <pre> * Initialize the Class ... * </pre> * @param $sortBy [STRING] the field name to sort list by * @return [void] */ function __construct($requireRegion = false, $getOnlyNS = false, $includeChildren = false, $includeAlumni = false, $sortBy = '', $excludeSpouse = false) { $this->requireRegion = $requireRegion; $multiTableManager = new MultiTableManager(); // ----- STEP ONE: Deal with the ren table $renManager = new RowManager_HrdbRenManager(); /* if( $getOnlyNS ) { $renManager->setEmployeeStatus('NS'); } */ $multiTableManager->addRowManager($renManager); if ($getOnlyNS) { // we also need to $condition = $multiTableManager->constructSearchCondition($renManager->getFieldEmployeeStatus(), OP_EQUAL, 'NS'); $condition .= ' OR '; $condition .= $multiTableManager->constructSearchCondition($renManager->getFieldEmployeeStatus(), OP_EQUAL, 'ANS'); $multiTableManager->addSearchCondition($condition); } if (!$includeChildren) { $multiTableManager->constructSearchCondition($renManager->getFieldIdentifierFamilyPosition(), OP_NOT_EQUAL, "Child", true); } if ($excludeSpouse) { $multiTableManager->constructSearchCondition($renManager->getFieldIdentifierFamilyPosition(), OP_NOT_EQUAL, 'Spouse', true); } // STEP ONE COMPLETE // ----- STEP TWO: Join with the family table $familyManager = new RowManager_FamilyManager(); if (!$includeAlumni) { // we want only those who are not alumni $familyManager->setAlumni(false); } $multiTableManager->addRowManager($familyManager, new JoinPair($renManager->getJoinOnFamilyID(), $familyManager->getJoinOnFamilyID())); // STEP TWO COMPLETE // ------ STEP THREE: Check if region is needed if ($requireRegion) { // assignment $assManager = new RowManager_HrdbAssignmentManager(); $multiTableManager->addRowManager($assManager, new JoinPair($renManager->getJoinOnAssignmentID(), $assManager->getJoinOnAssignmentID())); // city $cityManager = new RowManager_HrdbCityManager(); $multiTableManager->addRowManager($cityManager, new JoinPair($assManager->getJoinOnCityID(), $cityManager->getJoinOnCityID())); // province $provinceManager = new RowManager_ProvinceManager(); $multiTableManager->addRowManager($provinceManager, new JoinPair($cityManager->getJoinOnProvinceID(), $provinceManager->getJoinOnProvinceID())); // region $regionManager = new RowManager_HrdbRegionManager(); $multiTableManager->addRowManager($regionManager, new JoinPair($provinceManager->getJoinOnRegionID(), $regionManager->getJoinOnRegionID())); } // STEP THREE COMPLETE $multiTableManager->setSortOrder($sortBy); parent::__construct($multiTableManager, 'RowManager_HrdbRenManager'); }
function get_AG($template, $errorMessages) { $accessGroupM = new RowManager_AccessGroupManager(); $multilingualLabelL = new RowManager_MultilingualLabelManager(); $join = new JoinPair($multilingualLabelL->getJoinOnFieldX('label_key'), $accessGroupM->getJoinOnFieldX('accessgroup_key')); $MTM = new MultiTableManager(); $MTM->addRowManager($multilingualLabelL); $MTM->addRowManager($accessGroupM, $join); $MTM->constructSearchCondition('language_id', '=', '1', true); $result = $MTM->find(); if (!isset($result)) { $errorMessages = 'Failed to join database to get label'; } else { $result->setFirst(); $count = 0; while ($resultMLM = $result->getNext($multilingualLabelL)) { $resultAGM = $result->getCurrent($accessGroupM); $agLabel[] = $resultMLM->getLabel(); $agID[] = $resultAGM->getID(); } $template->set('agLabel', $agLabel); $template->set('agID', $agID); } return $errorMessages; }
/** * 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); }
/** * function getListAccountPriviledgeAccess * <pre> * Returns a ListIterator for the list of accounts this viewer has access * to modify. * </pre> * @param $sortBy [STRING] the name of the field to sort by (can be a * comma seperated list). * @return [OBJECT] */ function getListAccountPriviledgeAccess($sortBy) { $multiTable = new MultiTableManager(); $genViewer = new RowManager_ViewerManager(); $joinFieldA = $genViewer->getJoinOnViewerID(); // if the current viewer is limited to the Group Access scope then // filter list based on current group. if ($this->hasGroupPriv()) { $viewerMgr = $this->getViewerManager(); $genViewer->setAccountGroupID($viewerMgr->getAccountGroupID()); } $multiTable->addRowManager($genViewer); $accessManager = new RowManager_AccountAdminAccessManager(); $joinFieldB = $accessManager->getJoinOnViewerID(); $joinPair = new JoinPair($joinFieldA, $joinFieldB); $multiTable->addRowManager($accessManager, $joinPair); $multiTable->constructSearchCondition('accountadminaccess_privilege', '<=', $this->getAccessPrivilege(), true); return $multiTable->getListIterator($sortBy); }
function process_Form($sqlResult, $template, $errorMessages) { //get the names that are being searched $fName = $_REQUEST['fName']; $lName = $_REQUEST['lName']; //create the needed row managers $personM = new RowManager_PersonManager(); $accessM = new RowManager_AccessManager(); $viewerM = new RowManager_ViewerManager(); //setup the join pair needed $join = new JoinPair($personM->getJoinOnFieldX('person_id'), $accessM->getJoinOnFieldX('person_id')); //create the multi table manager and initialize it $MTM = new MultiTableManager(); $MTM->addRowManager($personM); $MTM->addRowManager($accessM, $join); //if there is a first name being searched - add that as a condition if ($fName != "") { $MTM->constructSearchCondition('person_fname', ' LIKE ', '%' . $fName . '%', true); $personM->constructSearchCondition('person_fname', ' LIKE ', '%' . $fName . '%', true); } //if there is a last name being searched - add that as a condition if ($lName != "") { $MTM->constructSearchCondition('person_lname', ' LIKE ', '%' . $lName . '%', true); $personM->constructSearchCondition('person_lname', ' LIKE ', '%' . $lName . '%', true); } //jump to a display function to show what was reteived from the person database //$sqlResult = $personM->find(); //$rows = showContents($sqlResult, $personM, $personM->getFields()); //jump to a display function to show what was reteived after joining the databases $sqlResult = $MTM->find(); //$rows = showContents($sqlResult, $personM, $personM->getFields()); $sqlResult->setFirst(); //create a new viewer manager to keep data pure $viewM = new RowManager_ViewerManager(); //loop through the results saving them to be displayed for ($i = 0; $i < $sqlResult->getRowCount(); $i++) { //get the next result and the values $sqlResult->getNext($personM); $f_name[] = $personM->getValueByFieldName('person_fname'); $l_name[] = $personM->getValueByFieldName('person_lname'); $person_id[] = $personM->getValueByFieldName('person_id'); //get the current accessManager values $sqlResult->getCurrent($accessM); //create the join for access table -> viewer table and search the database for the record $join = new JoinPair($accessM->getJoinOnFieldX('viewer_id'), $viewerM->getJoinOnFieldX('viewer_id')); $MTM = new MultiTableManager(); $MTM->addRowManager($accessM); $MTM->addRowManager($viewerM, $join); $MTM->constructSearchCondition('viewer_id', '=', $accessM->getValueByFieldName('viewer_id'), true); $sqlResult2 = $MTM->find(); //add the needed information to the arrays to be displayed in the template file $sqlResult2->getNext($viewM); $viewer_id[] = $viewM->getValueByFieldName('viewer_id'); $user_id[] = $viewM->getValueByFieldName('viewer_userID'); } //check if there was any result from the initial database query, if not add an error message if ($sqlResult->getRowCount() < 1) { $errorMessages = 'Failed to join database to get label'; $template->set('f_name', null); } else { //add the needed information to the template $template->set('f_name', $f_name); $template->set('l_name', $l_name); $template->set('viewer_id', $viewer_id); $template->set('person_id', $person_id); $template->set('user_id', $user_id); } }
protected function getFieldValuesArray($regID = '', $personID = '', $eventID = '') { $FALSE = 0; $fields = new RowManager_FieldManager(); $fvalues = new RowManager_FieldValueManager(); $ftypes = new RowManager_FieldTypeManager(); // echo "personID = ".$personID; // echo "eventID = ".$eventID; if ($regID != '') { //$fields->setEventID($eventID); $fvalues->setRegID($regID); } else { if ($eventID != '' && $personID != '') { $registrations = new RowManager_RegistrationManager(); // $registrations->setRegID($regID); $person = new RowManager_PersonManager(); $person->setPersonID($personID); $event = new RowManager_EventManager(); $event->setEventID($eventID); $personReg = new MultiTableManager(); $personReg->addRowManager($registrations); $personReg->addRowManager($person, new JoinPair($registrations->getJoinOnPersonID(), $person->getJoinOnPersonID())); $personReg->addRowManager($event, new JoinPair($registrations->getJoinOnEventID(), $event->getJoinOnEventID())); $valIterator = $personReg->getListIterator(); $valArray = $valIterator->getDataList(); // go through results and store field types reset($valArray); foreach (array_keys($valArray) as $k) { $regValue = current($valArray); $regID = $regValue['registration_id']; //NOTE: assumes only 1 registration per person per event next($valArray); } // $fields->setEventID($eventID); $fvalues->setRegID($regID); } } // $fvalues->setSortByFieldID(); $fieldInfo = new MultiTableManager(); $fieldInfo->addRowManager($fields); $fieldInfo->addRowManager($fvalues, new JoinPair($fvalues->getJoinOnFieldID(), $fields->getJoinOnFieldID())); $fieldInfo->addRowManager($ftypes, new JoinPair($fields->getJoinOnFieldTypeID(), $ftypes->getJoinOnFieldTypeID())); if ($this->show_hidden == false) { $fieldInfo->constructSearchCondition('fields_hidden', '=', $FALSE, true); } $fieldInfo->setSortOrder('fields_priority'); $valuesIterator = $fieldInfo->getListIterator(); $valuesArray = $valuesIterator->getDataList(); // echo "field values:<br><pre>".print_r($valuesArray,true)."</pre>"; // store field ids associated with values already in database $initializedFieldIds = array_keys($valuesArray); // since each field value is located in a DB row the result array has several arrays - one per field value // need to extract each field value and store it as a non-array record in a result array $fieldValues = array(); $idx = 0; /** Go through all event fields and map each to existing field value, otherwise create new field value record **/ $fieldsArray = array_values($this->formFieldToFieldIDmapper); // store field IDs (ASSUMES formFieldToFieldIDmapper is initialized) // echo 'fieldsArray = <pre>'.print_r($fieldsArray,true).'</pre>'; reset($fieldsArray); reset($valuesArray); foreach (array_keys($fieldsArray) as $k) { $fieldID = current($fieldsArray); $form_value = ''; // default blank field value if none found $form_value_id = -1; // to be replaced with existing or newly-created field values ID if (in_array($fieldID, $initializedFieldIds) == true) { $record = $valuesArray[$fieldID]; $form_value = $record['fieldvalues_value']; $form_value_id = $record['fieldvalues_id']; } else { $updateValues = array(); $updateValues['fields_id'] = $fieldID; $updateValues['fieldvalues_value'] = $form_value; $updateValues['registration_id'] = $regID; $fieldvalues_manager = new RowManager_FieldValueManager(); // store values in table manager object. $fieldvalues_manager->loadFromArray($updateValues); // now update the DB with the values if (!$fieldvalues_manager->isLoaded()) { $fieldvalues_manager->createNewEntry(true); $form_value_id = $fieldvalues_manager->getID(); } } $fieldValues['form_field' . $idx] = $form_value; // store mapping associating form field label with fieldvalues_id $this->formFieldToValueIDmapper['form_field' . $idx] = $form_value_id; next($fieldsArray); $idx++; } // echo 'labels-values = <pre>'.print_r($this->formFieldToValueIDmapper,true).'</pre>'; // echo 'labels-fields = <pre>'.print_r($this->formFieldToFieldIDmapper,true).'</pre>'; return $fieldValues; }
protected function getFooterFieldValuesArray($personID = '', $formID = '', $isRepeatable = true) { $FALSE = 0; $fields = new RowManager_FormFieldManager(); $fields->setFieldGroupID(FormProcessor_EditStaffScheduleForm::NO_FIELDGROUP_ID); // HSMIT added $fvalues = new RowManager_FormFieldValueManager(); $ftypes = new RowManager_FieldTypeManager(); if ($personID != '') { //$fields->setFormID($formID); $fvalues->setPersonID($personID); } $fieldInfo = new MultiTableManager(); $fieldInfo->addRowManager($fields); $fieldInfo->addRowManager($fvalues, new JoinPair($fvalues->getJoinOnFieldID(), $fields->getJoinOnFieldID())); $fieldInfo->addRowManager($ftypes, new JoinPair($fields->getJoinOnFieldTypeID(), $ftypes->getJoinOnFieldTypeID())); if ($this->show_hidden == false) { $fieldInfo->constructSearchCondition('fields_hidden', '=', $FALSE, true); } // filter out repeatable fields if flag set to FALSE if ($isRepeatable == false) { $fieldInfo->constructSearchCondition('fieldgroup_id', '=', '0', true); } else { $fieldInfo->constructSearchCondition('fieldgroup_id', '!=', '0', true); } $fieldInfo->setSortOrder('fields_priority'); $valuesIterator = $fieldInfo->getListIterator(); $valuesArray = $valuesIterator->getDataList(); // echo "field values:<br><pre>".print_r($valuesArray,true)."</pre>"; // store field ids associated with values already in database $initializedFieldIds = array_keys($valuesArray); // since each field value is located in a DB row the result array has several arrays - one per field value // need to extract each field value and store it as a non-array record in a result array $fieldValues = array(); $idx = $this->total_nonrepeatable_fields; // initialize counter to first available form ID (some used already) /** Go through all event fields and map each to existing field value, otherwise create new field value record **/ $fieldsArray = array_values($this->footerFieldToFieldIDmapper); // store field IDs (ASSUMES formFieldToFieldIDmapper is initialized) // echo 'fieldsArray = <pre>'.print_r($fieldsArray,true).'</pre>'; reset($fieldsArray); reset($valuesArray); foreach (array_keys($fieldsArray) as $k) { $fieldID = current($fieldsArray); $form_value = ''; // default blank field value if none found $form_value_id = -1; // to be replaced with existing or newly-created field values ID if (in_array($fieldID, $initializedFieldIds) == true) { $record = $valuesArray[$fieldID]; $form_value = $record['fieldvalues_value']; $form_value_id = $record['fieldvalues_id']; } else { $updateValues = array(); $updateValues['fields_id'] = $fieldID; $updateValues['fieldvalues_value'] = $form_value; $updateValues['person_id'] = $personID; $fieldvalues_manager = new RowManager_FormFieldValueManager(); // store values in table manager object. $fieldvalues_manager->loadFromArray($updateValues); // now update the DB with the values if (!$fieldvalues_manager->isLoaded()) { // echo "new entry ".$fieldID.", ".$personID; $fieldvalues_manager->createNewEntry(); $form_value_id = $fieldvalues_manager->getID(); } } $fieldValues['form_field' . $idx] = $form_value; // store mapping associating form field label with fieldvalues_id $this->footerFieldToValueIDmapper['form_field' . $idx] = $form_value_id; next($fieldsArray); $idx++; } // echo 'labels-values = <pre>'.print_r($this->formFieldToValueIDmapper,true).'</pre>'; // echo 'labels-fields = <pre>'.print_r($this->formFieldToFieldIDmapper,true).'</pre>'; return $fieldValues; }
function process_Form($sqlResult, $template, $errorMessages) { //get the names that are being searched $fName = $_REQUEST['fName']; $lName = $_REQUEST['lName']; //create the needed row managers $personM = new RowManager_PersonManager(); $accessM = new RowManager_AccessManager(); $viewerM = new RowManager_ViewerManager(); //setup the join pair needed $join = new JoinPair($personM->getJoinOnFieldX('person_id'), $accessM->getJoinOnFieldX('person_id')); //create the multi table manager and initialize it $MTM = new MultiTableManager(); $MTM->addRowManager($personM); $MTM->addRowManager($accessM, $join); //if there is a first name being searched - add that as a condition if ($fName != "") { $MTM->constructSearchCondition('person_fname', ' LIKE ', '%' . $fName . '%', true); $personM->constructSearchCondition('person_fname', ' LIKE ', '%' . $fName . '%', true); } //if there is a last name being searched - add that as a condition if ($lName != "") { $MTM->constructSearchCondition('person_lname', ' LIKE ', '%' . $lName . '%', true); $personM->constructSearchCondition('person_lname', ' LIKE ', '%' . $lName . '%', true); } //jump to a display function to show what was reteived from the database $rows = showContents($personM->find(), $personM, $personM->getFields()); echo '<b>' . $rows . ' accounts found in the person table.</b><br><br>'; //jump to a display function to show what was reteived from the database $sqlResult = $MTM->find(); echo '<b>' . $sqlResult->getRowCount() . ' connections made between person table and access groups.</b><br>'; $rows = showContents($sqlResult, $personM, $personM->getFields()); $sqlResult->setFirst(); $viewM = new RowManager_ViewerManager(); for ($i = 0; $i < $sqlResult->getRowCount(); $i++) { $sqlResult->getNext($personM); $f_name[] = $personM->getValueByFieldName('person_fname'); $l_name[] = $personM->getValueByFieldName('person_lname'); $person_id[] = $personM->getValueByFieldName('person_id'); $sqlResult->getCurrent($accessM); $join = new JoinPair($accessM->getJoinOnFieldX('viewer_id'), $viewerM->getJoinOnFieldX('viewer_id')); $MTM = new MultiTableManager(); $MTM->addRowManager($accessM); $MTM->addRowManager($viewerM, $join); $MTM->constructSearchCondition('viewer_id', '=', $accessM->getValueByFieldName('viewer_id'), true); $sqlResult2 = $MTM->find(); $sqlResult2->getNext($viewM); $viewer_id[] = $viewM->getValueByFieldName('viewer_id'); $user_id[] = $viewM->getValueByFieldName('viewer_userID'); } if ($sqlResult->getRowCount() < 1) { $errorMessages = 'Failed to join database to get label'; $template->set('f_name', null); } else { $template->set('f_name', $f_name); $template->set('l_name', $l_name); $template->set('viewer_id', $viewer_id); $template->set('person_id', $person_id); $template->set('user_id', $user_id); } }