public function editAction() { if (!$this->hasACL('edit_employee')) { $this->doNoAccessError(); } $db = $this->dbfunc(); $status = ValidationContainer::instance(); $params = $this->getAllParams(); $id = $params['id']; #// restricted access?? only show partners by organizers that we have the ACL to view #$org_allowed_ids = allowed_org_access_full_list($this); #if ($org_allowed_ids && $this->view->mode != 'add') { // doesnt have acl 'training_organizer_option_all' # $validID = $db->fetchCol("SELECT partner.id FROM partner WHERE partner.id = $id AND partner.organizer_option_id in ($org_allowed_ids)"); // check for both # if(empty($validID)) # $this->doNoAccessError (); #} if ($this->getRequest()->isPost()) { //validate then save $params['location_id'] = regionFiltersGetLastID('', $params); $params['dob'] = $this->_date_to_sql($params['dob']); $params['agreement_end_date'] = $this->_date_to_sql($params['agreement_end_date']); $params['transition_date'] = $this->_date_to_sql($params['transition_date']); $params['transition_complete_date'] = $this->_date_to_sql($params['transition_complete_date']); $params['site_id'] = $params['facilityInput']; $params['option_nationality_id'] = $params['lookup_nationalities_id']; $params['facility_type_option_id'] = $params['employee_site_type_option_id']; $status->checkRequired($this, 'first_name', t('Frist Name')); $status->checkRequired($this, 'last_name', t('Last Name')); $status->checkRequired($this, 'last_name', t('Name')); $status->checkRequired($this, 'dob', t('Name')); if ($this->setting('display_employee_nationality')) { $status->checkRequired($this, 'lookup_nationalities_id', t('Employee Nationality')); } $status->checkRequired($this, 'employee_qualification_option_id', t('Staff Cadre')); if ($this->setting('display_employee_salary')) { $status->checkRequired($this, 'salary', t('Salary')); } if ($this->setting('display_employee_benefits')) { $status->checkRequired($this, 'benefits', t('Benefits')); } if ($this->setting('display_employee_additional_expenses')) { $status->checkRequired($this, 'additional_expenses', t('Additional Expenses')); } if ($this->setting('display_employee_stipend')) { $status->checkRequired($this, 'stipend', t('Stipend')); } if ($this->setting('display_employee_partner')) { $status->checkRequired($this, 'partner_id', t('Partner')); } if ($this->setting('display_employee_sub_partner')) { $status->checkRequired($this, 'subpartner_id', t('Sub Partner')); } if ($this->setting('display_employee_intended_transition')) { $status->checkRequired($this, 'employee_transition_option_id', t('Intended Transition')); } if ($this->setting('display_employee_base') && !$params['employee_base_option_id'] || !$this->setting('display_employee_base')) { // either one is OK, javascript disables regions if base is on & has a value choice $status->checkRequired($this, 'province_id', t('Region A (Province)')); } if ($this->setting('display_employee_base')) { $status->checkRequired($this, 'employee_base_option_id', t('Employee Based at')); } if (!$status->hasError()) { $id = $this->_findOrCreateSaveGeneric('employee', $params); if (!$id) { $status->setStatusMessage(t('That person could not be saved.')); } else { # converted to optionlist, link table not needed TODO. marking for removal. #MultiOptionList::updateOptions ( 'employee_to_role', 'employee_role_option', 'employee_id', $id, 'employee_role_option_id', $params['employee_role_option_id'] ); $status->setStatusMessage(t('The person was saved.')); $this->_redirect("employee/edit/id/{$id}"); } } else { $status->setStatusMessage(t('That person could not be saved.')); } } if ($id && !$status->hasError()) { // read data from db $sql = 'SELECT * FROM employee WHERE employee.id = ' . $id; $row = $db->fetchRow($sql); if ($row) { $params = $row; } else { $status->setStatusMessage(t('Error finding that record in the database.')); } $region_ids = Location::getCityInfo($params['location_id'], $this->setting('num_location_tiers')); $region_ids = Location::regionsToHash($region_ids); $params = array_merge($params, $region_ids); #$params['roles'] = $db->fetchCol("SELECT employee_role_option_id FROM employee_to_role WHERE employee_id = $id"); } // assign form drop downs $params['dob'] = formhelperdate($params['dob']); $params['agreement_end_date'] = formhelperdate($params['agreement_end_date']); $params['transition_date'] = formhelperdate($params['transition_date']); $params['transition_complete_date'] = formhelperdate($params['transition_complete_date']); $params['courses'] = $this->getCourses($id); $params['lookup_nationalities_id'] = $params['option_nationality_id']; $params['employee_site_type_option_id'] = $params['facility_type_option_id']; $this->viewAssignEscaped('employee', $params); $validCHWids = $db->fetchCol("select id from employee_qualification_option qual\r\n\t\t\t\t\t\t\t\t\t\tinner join (select id as success from employee_qualification_option where qualification_phrase in ('Community Based Worker','Community Health Worker','NC02 -Community health workers')) parentIDs\r\n\t\t\t\t\t\t\t\t\t\ton (parentIDs.success = qual.id)"); $this->view->assign('validCHWids', $validCHWids); $this->view->assign('expandCHWFields', !(array_search($params['employee_qualification_option_id'], $validCHWids) === false)); // i.e $validCHWids.contains($employee[qualification]) $this->view->assign('status', $status); $this->view->assign('pageTitle', $this->view->mode == 'add' ? t('Add Employee') : t('Edit Employee')); $this->viewAssignEscaped('locations', Location::getAll()); $titlesArray = OptionList::suggestionList('person_title_option', 'title_phrase', false, 9999); $this->view->assign('titles', DropDown::render('title_option_id', $this->translation['Title'], $titlesArray, 'title_phrase', 'id', $params['title_option_id'])); $this->view->assign('partners', DropDown::generateHtml('partner', 'partner', $params['partner_id'], false, $this->view->viewonly, false)); $this->view->assign('subpartners', DropDown::generateHtml('partner', 'partner', $params['subpartner_id'], false, $this->view->viewonly, false, false, array('name' => 'subpartner_id'), true)); $this->view->assign('bases', DropDown::generateHtml('employee_base_option', 'base_phrase', $params['employee_base_option_id'])); $this->view->assign('site_types', DropDown::generateHtml('employee_site_type_option', 'site_type_phrase', $params['facility_type_option_id'])); $this->view->assign('cadres', DropDown::generateHtml('employee_qualification_option', 'qualification_phrase', $params['employee_qualification_option_id'])); $this->view->assign('categories', DropDown::generateHtml('employee_category_option', 'category_phrase', $params['employee_category_option_id'], false, $this->view->viewonly, false)); $this->view->assign('fulltime', DropDown::generateHtml('employee_fulltime_option', 'fulltime_phrase', $params['employee_fulltime_option_id'], false, $this->view->viewonly, false)); $this->view->assign('roles', DropDown::generateHtml('employee_role_option', 'role_phrase', $params['employee_role_option_id'], false, $this->view->viewonly, false)); #$this->view->assign ( 'roles', CheckBoxes::generateHtml ( 'employee_role_option', 'role_phrase', $this->view, $params['roles'] ) ); $this->view->assign('transitions', DropDown::generateHtml('employee_transition_option', 'transition_phrase', $params['employee_transition_option_id'], false, $this->view->viewonly, false)); $this->view->assign('transitions_complete', DropDown::generateHtml('employee_transition_option', 'transition_phrase', $params['employee_transition_complete_option_id'], false, $this->view->viewonly, false, false, array('name' => 'employee_transition_complete_option_id'), true)); $helper = new Helper(); $this->viewAssignEscaped('facilities', $helper->getFacilities()); $this->view->assign('relationships', DropDown::generateHtml('employee_relationship_option', 'relationship_phrase', $params['employee_relationship_option_id'], false, $this->view->viewonly, false)); $this->view->assign('referrals', DropDown::generateHtml('employee_referral_option', 'referral_phrase', $params['employee_referral_option_id'], false, $this->view->viewonly, false)); $this->view->assign('provided', DropDown::generateHtml('employee_training_provided_option', 'training_provided_phrase', $params['employee_training_provided_option_id'], false, $this->view->viewonly, false)); $employees = OptionList::suggestionList('employee', array('first_name', 'CONCAT(first_name, CONCAT(" ", last_name)) as name'), false, 99999); $this->view->assign('supervisors', DropDown::render('supervisor_id', $this->translation['Supervisor'], $employees, 'name', 'id', $params['supervisor_id'])); $this->view->assign('nationality', DropDown::generateHtml('lookup_nationalities', 'nationality', $params['lookup_nationalities_id'], false, $this->view->viewonly, false)); $this->view->assign('race', DropDown::generateHtml('person_race_option', 'race_phrase', $params['race_option_id'], false, $this->view->viewonly, false)); }
public function editAction() { if (!$this->hasACL('edit_employee')) { $this->doNoAccessError(); } $db = $this->dbfunc(); $status = ValidationContainer::instance(); $params = $this->getAllParams(); $id = $params['id']; #// restricted access?? only show partners by organizers that we have the ACL to view // - removed 5/1/13, they dont want this, its used by site-rollup (datashare), and user-restrict by org. #$org_allowed_ids = allowed_org_access_full_list($this); // doesnt have acl 'training_organizer_option_all' #$site_orgs = allowed_organizer_in_this_site($this); // for sites to host multiple training organizers on one domain #$siteOrgsClause = $site_orgs ? " AND partner.organizer_option_id IN ($site_orgs)" : ""; #if ($org_allowed_ids && $this->view->mode != 'add') { # $validID = $db->fetchCol("SELECT partner.id FROM partner WHERE partner.id = $id AND partner.organizer_option_id in ($org_allowed_ids) $siteOrgsClause"); # if(empty($validID)) # $this->doNoAccessError (); # #} if ($this->getRequest()->isPost()) { //validate then save $status->checkRequired($this, 'partner', t('Partner')); if ($this->setting('display_partner_type')) { $status->checkRequired($this, 'partner_type_option_id', t('Type of Partner')); } $status->checkRequired($this, 'address1', t('Address 1')); $status->checkRequired($this, 'address2', t('Address 2')); $status->checkRequired($this, 'province_id', t('Region A (Province)')); $status->checkRequired($this, 'phone', t('Phone')); $status->checkRequired($this, 'fax', t('Fax')); if ($this->setting('display_employee_funder')) { $status->checkRequired($this, 'partner_funder_option_id[]', t('Funder')); } #$status->checkRequired ( $this, 'funding_end_date[]', t ( 'Funding End Date' ) ); #if ($this->setting('display_employee_intended_transition')) # $status->checkRequired ( $this, 'employee_transition_option_id', t ( 'Intended Transition' ) ); if ($this->setting('display_employee_agreement_end_date')) { $status->checkRequired($this, 'agreement_end_date', t('Agreement End Date')); } if ($this->setting('display_employee_importance')) { $status->checkRequired($this, 'partner_importance_option_id', t('Importance')); } #$status->checkRequired ( $this, 'comments', t ( 'Partner Comments' ) ); #$status->checkRequired ( $this, 'subpartner_id[]', t ( 'Sub Partner' ) ); $params['funding_end_date'] = $this->_array_me($params['funding_end_date']); foreach ($params['funding_end_date'] as $i => $value) { $params['funding_end_date'][$i] = $this->_date_to_sql($value); } $params['transition_confirmed'] = $params['transition_confirmed'] == 'on' ? 1 : 0; $params['agreement_end_date'] = $this->_date_to_sql($params['agreement_end_date']); $params['subpartner_id'] = $this->_array_me($params['subpartner_id']); foreach ($params['subpartner_id'] as $i => $value) { // strip empty values (it breaks MultiOptionList apparently) if (empty($value)) { unset($params['subpartner_id'][$i]); } } //location save stuff $params['location_id'] = regionFiltersGetLastID(null, $params); // formprefix, criteria if ($params['city']) { $params['location_id'] = Location::insertIfNotFound($params['city'], $params['location_id'], $this->setting('num_location_tiers')); } if (!$status->hasError()) { $id = $this->_findOrCreateSaveGeneric('partner', $params); if (!$id) { $status->setStatusMessage(t('That partner could not be saved.')); } else { MultiOptionList::updateOptions('partner_to_funder', 'partner_funder_option', 'partner_id', $id, 'partner_funder_option_id', $params['partner_funder_option_id'], 'funder_end_date', $params['funding_end_date']); $db->query("DELETE FROM partner_to_subpartner WHERE partner_id = {$id}"); // updateOptions is not clearing the old options, I dont know why... todo MultiOptionList::updateOptions('partner_to_subpartner', 'partner', 'partner_id', $id, 'subpartner_id', $params['subpartner_id']); $status->setStatusMessage(t('The partner was saved.')); $this->_redirect("partner/edit/id/{$id}"); } } } if ($id) { // read data from db #// restricted access?? only show partners by organizers that we have the ACL to view #$org_allowed_ids = allowed_org_access_full_list($this); // doesnt have acl 'training_organizer_option_all' #$orgWhere = ($org_allowed_ids) ? " AND partner.organizer_option_id in ($org_allowed_ids) " : ""; #// restricted access?? only show organizers that belong to this site if its a multi org site #$site_orgs = allowed_organizer_in_this_site($this); // for sites to host multiple training organizers on one domain #$allowedWhereClause .= $site_orgs ? " AND partner.organizer_option_id in ($site_orgs) " : ""; // continue reading data $sql = 'SELECT * FROM partner WHERE id = ' . $id . space . $orgWhere; $row = $db->fetchRow($sql); if (!$row) { $status->setStatusMessage(t('Error finding that record in the database.')); } else { $params = $row; // reassign form data $region_ids = Location::getCityInfo($params['location_id'], $this->setting('num_location_tiers')); $params['city'] = $region_ids[0]; $region_ids = Location::regionsToHash($region_ids); $params = array_merge($params, $region_ids); //get linked table data from option tables $sql = "SELECT partner_funder_option_id,funder_end_date FROM partner_to_funder WHERE partner_id = {$id}"; $params['funder'] = $db->fetchAll($sql); $sql = "SELECT subpartner_id FROM partner_to_subpartner WHERE partner_id = {$id}"; $params['subpartners'] = $db->fetchCol($sql); } } // make sure form data is valid for display if (empty($params['funder'])) { $params['funder'] = array(array()); } if (empty($params['subpartners'])) { $params['subpartners'] = array(' '); } // assign form drop downs $this->view->assign('status', $status); $this->view->assign('pageTitle', $this->view->mode == 'add' ? t('Add Partner') : t('View Partner')); $this->viewAssignEscaped('partner', $params); $this->viewAssignEscaped('locations', Location::getAll()); $this->view->assign('partners', DropDown::generateHtml('partner', 'partner', $params['partner_type_option_id'], false, $this->view->viewonly, false)); //table, col, selected_value $this->view->assign('subpartners', DropDown::generateHtml('partner', 'partner', 0, false, $this->view->viewonly, false, true, array('name' => 'subpartner_id[]'), true)); $this->view->assign('types', DropDown::generateHtml('partner_type_option', 'type_phrase', $params['partner_type_option_id'], false, $this->view->viewonly, false)); $this->view->assign('importance', DropDown::generateHtml('partner_importance_option', 'importance_phrase', $params['partner_importance_option_id'], false, $this->view->viewonly, false)); $this->view->assign('transitions', DropDown::generateHtml('employee_transition_option', 'transition_phrase', $params['employee_transition_option_id'], false, $this->view->viewonly, false)); $this->view->assign('incomingPartners', DropDown::generateHtml('partner', 'partner', $params['incoming_partner'], false, $this->view->viewonly, false, true, array('name' => 'incoming_partner'), true)); $this->view->assign('organizers', DropDown::generateHtml('training_organizer_option', 'training_organizer_phrase', $params['organizer_option_id'], false, $this->view->viewonly, false, true, array('name' => 'organizer_option_id'), true)); $helper = new Helper(); $this->viewAssignEscaped('facilities', $helper->getFacilities()); }
public function personsAction() { try { require_once 'models/table/Person.php'; $personTable = new Person(); $select = $personTable->select()->from('person', array('*'))->setIntegrityCheck(false); $rowRay = $personTable->fetchAll($select); $rowRay = @$rowRay->toArray(); //sort by id $sorted = array(); foreach ($rowRay as $row) { unset($row['suffix_option_id']); unset($row['title_option_id']); $sorted[$row['id']] = $row; } /* $sorted = $personTable->_fill_lookup($sorted, 'location_city', 'home_city_id', 'city_name'); $sorted = $personTable->_fill_lookup($sorted, 'location_district', 'home_district_id', 'district_name'); $sorted = $personTable->_fill_lookup($sorted, 'location_province', 'home_province_id', 'province_name'); */ $locations = Location::getAll(); foreach ($sorted as $id => $row) { $city_info = Location::getCityInfo($row['home_location_id'], $this->setting('num_location_tiers'), $locations); if (count($city_info)) { if ($city_info[0]) { $sorted[$id]['city_name'] = $city_info[0]; } if ($city_info[1]) { $sorted[$id]['province_name'] = $locations[$city_info[1]]['name']; } if ($city_info[2]) { $sorted[$id]['district_name'] = $locations[$city_info[2]]['name']; } if ($city_info[3]) { $sorted[$id]['region_c_name'] = $locations[$city_info[3]]['name']; } if ($city_info[4]) { $sorted[$id]['region_d_name'] = $locations[$city_info[4]]['name']; } if ($city_info[5]) { $sorted[$id]['region_e_name'] = $locations[$city_info[5]]['name']; } if ($city_info[6]) { $sorted[$id]['region_f_name'] = $locations[$city_info[6]]['name']; } if ($city_info[7]) { $sorted[$id]['region_g_name'] = $locations[$city_info[7]]['name']; } if ($city_info[8]) { $sorted[$id]['region_h_name'] = $locations[$city_info[8]]['name']; } if ($city_info[9]) { $sorted[$id]['region_i_name'] = $locations[$city_info[9]]['name']; } } unset($sorted[$id]['home_location_id']); } $sorted = $personTable->_fill_lookup($sorted, 'person_qualification_option', 'primary_qualification_option_id', 'qualification_phrase'); $sorted = $personTable->_fill_lookup($sorted, 'person_primary_responsibility_option', 'primary_responsibility_option_id', 'responsibility_phrase'); $sorted = $personTable->_fill_lookup($sorted, 'person_secondary_responsibility_option', 'secondary_responsibility_option_id', 'responsibility_phrase'); $sorted = $personTable->_fill_lookup($sorted, 'person_custom_1_option', 'person_custom_1_option_id', 'custom1_phrase'); $sorted = $personTable->_fill_lookup($sorted, 'person_custom_2_option', 'person_custom_2_option_id', 'custom2_phrase'); $sorted = $personTable->_fill_lookup($sorted, 'facility', 'facility_id', 'facility_name'); //fill participants $select = $personTable->select()->from('person', array('id'))->setIntegrityCheck(false)->join(array('pt' => 'person_to_training'), "pt.person_id = person.id", array('training_id'))->join(array('t' => 'training'), "pt.training_id = t.id", array())->join(array('tt' => 'training_title_option'), "t.training_title_option_id = tt.id", array('training_title_phrase')); $rows = $personTable->fetchAll($select); foreach ($rows as $row) { $pid = $row->id; $ra = $row->toArray(); unset($ra['id']); $sorted[$pid]['courses'][] = $ra; } //fill trainers $select = $personTable->select()->from('trainer', array('person_id'))->setIntegrityCheck(false)->join(array('pt' => 'training_to_trainer'), "pt.trainer_id = trainer.person_id", array('training_id'))->join(array('t' => 'training'), "pt.training_id = t.id", array())->join(array('tt' => 'training_title_option'), "t.training_title_option_id = tt.id", array('training_title_phrase')); $rows = $personTable->fetchAll($select); foreach ($rows as $row) { $pid = $row->person_id; $ra = $row->toArray(); unset($ra['person_id']); $sorted[$pid]['trained'][] = $ra; } if ($this->getSanParam('outputType') == 'csv') { $this->sendData($this->reportHeaders(false, $sorted)); } $this->view->assign('data', $sorted); } catch (Exception $e) { echo $e->getMessage() . "<br>" . PHP_EOL; } }
function viewlocationAction() { if (!$this->hasACL('edit_course')) { $this->view->assign('viewonly', 'disabled="disabled"'); } require_once 'models/table/TrainingLocation.php'; $this->view->assign('id', $this->_getParam('id')); if ($this->_getParam('id')) { require_once 'views/helpers/DropDown.php'; $rowLocation = TrainingLocation::selectLocation($this->_getParam('id'))->toArray(); //locations list($cname, $prov, $dist, $regc) = Location::getCityInfo($rowLocation['location_id'], $this->setting('num_location_tiers')); $rowLocation['city_name'] = $cname; $rowLocation['region_c_id'] = $regc; $rowLocation['district_id'] = $dist; $rowLocation['province_id'] = $prov; $this->viewAssignEscaped('rowLocation', $rowLocation); //see if it is referenced anywhere $this->view->assign('okToDelete', !TrainingLocation::isReferenced($this->_getParam('id'))); } // location drop-down $locations = TrainingLocation::selectAllLocations($this->setting('num_location_tiers')); $this->viewAssignEscaped('tlocations', $locations); }
/** * Training Roster */ public function rosterAction() { $training_id = $this->_getParam('id'); $this->view->assign('url', Settings::$COUNTRY_BASE_URL . "/training/roster/id/{$training_id}"); $tableObj = new Training(); $rowRay = $tableObj->getTrainingInfo($training_id); // calculate end date switch ($rowRay['training_length_interval']) { case 'week': $days = $rowRay['training_length_value'] * 7; break; case 'day': $days = $rowRay['training_length_value'] - 1; // start day counts as a day? break; default: $days = false; break; } if ($days) { $rowRay['training_end_date'] = strtotime("+{$days} day", strtotime($rowRay['training_start_date'])); $rowRay['training_end_date'] = date('Y-m-d', $rowRay['training_end_date']); } else { $rowRay['training_end_date'] = $rowRay['training_start_date']; } $rowRay['duration'] = $rowRay['training_length_value'] . ' ' . $rowRay['training_length_interval'] . ($rowRay['training_length_value'] == 1 ? "" : "s"); $this->viewAssignEscaped('row', $rowRay); // trainer/person tables require_once 'views/helpers/EditTableHelper.php'; /* Trainers */ $trainers = TrainingToTrainer::getTrainers($training_id)->toArray(); $trainerFields = array('last_name' => $this->tr('Last Name'), 'first_name' => $this->tr('First Name'), 'duration_days' => t('Days')); $colStatic = array_keys($trainerFields); // all $editLinkInfo = array('disabled' => 1); // no edit/remove links $html = EditTableHelper::generateHtmlTraining('Trainer', $trainers, $trainerFields, $colStatic, array(), $editLinkInfo); $this->view->assign('tableTrainers', $html); /* Participants */ $persons = PersonToTraining::getParticipants($training_id)->toArray(); $personsFields = array('last_name' => $this->tr('Last Name'), 'first_name' => $this->tr('First Name')); if ($this->setting('module_attendance_enabled')) { if (strtotime($rowRay['training_start_date']) < time()) { $personsFields = array_merge($personsFields, array('duration_days' => t('Days'))); // already had class(es) - show the days attended } $personsFields['award_phrase'] = $this->tr('Complete'); } $personsFields = array_merge($personsFields, array('birthdate' => t('Date of Birth'), 'facility_name' => t('Facility'))); if ($this->setting('display_viewing_location')) { $personsFields['location_phrase'] = $this->tr('Viewing Location'); } if ($this->setting('display_budget_code')) { $personsFields['budget_code_phrase'] = $this->tr('Budget Code'); } //if ($this->setting ( 'display_region_b' )) $personsFields['location_name'] = t('Location'); //add location $locations = Location::getAll(); foreach ($persons as $pid => $person) { $region_ids = Location::getCityInfo($person['location_id'], $this->setting('num_location_tiers')); $ordered_l = array($region_ids['cityname']); foreach ($region_ids as $key => $value) { if (!empty($value) && isset($locations[$value]['name'])) { $ordered_l[] = $locations[$value]['name']; } else { break; } } $persons[$pid]['location_name'] = implode(', ', $ordered_l); } $colStatic = array_keys($personsFields); // all $editLinkInfo = array('disabled' => 1); // no edit/remove links $html = EditTableHelper::generateHtmlTraining('Persons', $persons, $personsFields, $colStatic, array(), $editLinkInfo); $this->view->assign('tablePersons', $html); if ($this->_getParam('outputType') && $this->_getParam('trainers')) { $this->sendData($trainers); } if ($this->_getParam('outputType') && $this->_getParam('persons')) { $this->sendData($persons); } }
private function _attach_locations($rowArray) { if ($rowArray) { $num_tiers = $this->setting('num_location_tiers'); $locations = Location::getAll(); foreach ($rowArray as $id => $row) { $region_ids = Location::getCityInfo($row['location_id'], $num_tiers); //todo rUserious? ::getcityinfo is such an expensive call(I think), it loads the entire Location table every call... todo investigate $rowArray[$id]['province_name'] = $locations[$region_ids['province_id']]['name']; $rowArray[$id]['district_name'] = $locations[$region_ids['district_id']]['name']; $rowArray[$id]['region_c_name'] = $locations[$region_ids['region_c_id']]['name']; $rowArray[$id]['region_d_name'] = $locations[$region_ids['region_d_id']]['name']; $rowArray[$id]['region_e_name'] = $locations[$region_ids['region_e_id']]['name']; $rowArray[$id]['region_f_name'] = $locations[$region_ids['region_f_id']]['name']; $rowArray[$id]['region_g_name'] = $locations[$region_ids['region_g_id']]['name']; $rowArray[$id]['region_h_name'] = $locations[$region_ids['region_h_id']]['name']; $rowArray[$id]['region_i_name'] = $locations[$region_ids['region_i_id']]['name']; } } return $rowArray; }
public function psFacilityReportAction() { $db = Zend_Db_Table_Abstract::getDefaultAdapter(); //locations $this->viewAssignEscaped('locations', Location::getAll()); $helper = new Helper(); $this->view->assign('mode', 'id'); $this->view->assign('institutions', $helper->getInstitutions()); $this->view->assign('cadres', $helper->getCadres()); $this->view->assign('institutiontypes', $helper->AdminInstitutionTypes()); $this->view->assign('cohorts', $helper->getCohorts()); $this->view->assign('nationalities', $helper->getNationalities()); $this->view->assign('funding', $helper->getFunding()); $this->view->assign('tutors', $helper->getTutors()); $this->view->assign('facilities', $helper->getFacilities()); $this->view->assign('facilitytypes', $helper->getFacilityTypes()); $this->view->assign('sponsors', $helper->getOldSponsors()); $this->view->assign('coursetypes', $helper->AdminCourseTypes()); $this->view->assign('degrees', $helper->getDegrees()); $this->view->assign('tutortypes', $helper->AdminTutortypes()); if ($this->getSanParam('process')) { // INITIALIZING ARRAYS $headers = array(); $select = array(); $from = array(); $join = array(); // // $join[] = array( // "type" => "inner", // "table" => "tablename t", // "field1" => "t.field1", // "field2" => "t2.field2", // ); // $where = array(); $sort = array(); $locations = Location::getAll(); $translation = Translation::getAll(); $showfacility = isset($_GET['showfacility']); $showProvince = isset($_GET['showProvince']); $showDistrict = isset($_GET['showDistrict']); $showRegionC = isset($_GET['showRegionC']); $showfacilitytype = isset($_GET['showfacilitytype']); $showinstitutionsponsors = isset($_GET['showinstitutionsponsors']); $showcadre = isset($_GET['showcadre']); $showgraduates = isset($_GET['showgraduates']); $showgraduatesyear = isset($_GET['showgraduatesyear']); $showpatients = isset($_GET['showpatients']); $startday = isset($_GET['startday']); $facility = $this->getSanParam('facility'); $province_id = $this->getSanParam('province_id'); $district_id = $this->getSanParam('district_id'); $region_c_id = $this->getSanParam('region_c_id'); $facilitytype = $this->getSanParam('facilitytype'); $institutionsponsors = $this->getSanParam('institutionsponsors'); $cadre = $this->getSanParam('cadre'); $from[] = "facility f"; //if ($showfacility){ $headers[] = "Facility"; $select[] = "f.facility_name"; $sort[] = "f.facility_name"; //} if ($facility != "") { $where[] = "f.id = " . $facility; } if ($showfacilitytype || $facilitytype) { // Need join on facility type to show OR filter if ($showfacilitytype) { // Only add header and select if showing field $headers[] = "Facility type"; $select[] = "fto.facility_type_phrase"; } $join[] = array("type" => "inner", "table" => "facility_type_option fto", "field1" => "fto.id", "field2" => "f.type_option_id"); if ($facilitytype) { $where[] = "fto.id = " . $facilitytype; } $sort[] = "fto.facility_type_phrase"; } if ($showinstitutionsponsors || $institutionsponsors) { // Need join on facility type to show OR filter if ($showinstitutionsponsors) { // Only add header and select if showing field $headers[] = "Sponsor"; $select[] = "fso.facility_sponsor_phrase"; } // OPTIONAL LINK - LEFT JOINING $join[] = array("type" => "left", "table" => "facility_sponsor_option fso", "field1" => "fso.id", "field2" => "f.sponsor_option_id"); if ($institutionsponsors) { $where[] = "fso.id = " . $institutionsponsors; } $sort[] = "fso.facility_sponsor_phrase"; } // INCLUDING LOCATION IDENTIFYER, IF NECESSARY if ($region_c_id != "" || $district_id != "" || $province_id != "" || $showProvince != "" || $showDistrict != "" || $showRegionC != "") { $select[] = "f.location_id"; } if ($showcadre || $cadre) { $join[] = array("type" => "left", "table" => "person_qualification_option pqo", "field1" => "pqo.id", "field2" => "f.sponsor_option_id"); } $query = "SELECT "; $query .= implode(", ", $select); $query .= " FROM "; $query .= implode(", ", $from) . " "; if (count($join) > 0) { foreach ($join as $j) { $query .= strtoupper($j['type']) . " JOIN " . $j['table'] . " ON " . $j['field1'] . " = " . $j['field2'] . " "; } } if (count($where) > 0) { $query .= " WHERE " . implode(" AND ", $where); } if (count($sort) > 0) { $query .= " ORDER BY " . implode(", ", $sort); } //echo $query . "<br>"; $rows = $db->fetchAll($query); $regions = array(); # var_dump ($rows); // Filtering by locations if ($region_c_id != "" || $district_id != "" || $province_id != "") { $__rows = array(); if ($region_c_id != "") { // 3 levels selected. Going with this one first $regions = explode("_", $region_c_id[0]); } elseif ($district_id != "") { // 2 levels selected $regions = explode("_", $district_id[0]); } elseif ($province_id != "") { // 1 level selected $regions = explode("_", $province_id[0]); } // Include headers once if ($showProvince) { $headers[] = @$translation['Region A (Province)']; } if ($showDistrict) { $headers[] = @$translation['Region B (Health District)']; } if ($showRegionC) { $headers[] = @$translation['Region C (Local Region)']; } foreach ($rows as $row) { list($cname, $prov, $dist, $regc) = Location::getCityInfo($row['location_id'], $this->setting('num_location_tiers')); if ($showProvince) { $loc = $locations[$prov]; $row[@$translation['Region A (Province)']] = $loc['name']; } if ($showDistrict) { $loc = $locations[$dist]; $row[@$translation['Region B (Health District)']] = $loc['name']; } if ($showRegionC) { $loc = $locations[$regc]; $row[@$translation['Region C (Local Region)']] = $loc['name']; } unset($row['location_id']); $userow = true; if (count($regions) > 0) { switch (count($regions)) { case 1: // Selected province if ($prov != $regions[0]) { $userow = false; } break; case 2: // Selected province, district if ($prov != $regions[0] || $dist != $regions[1]) { $userow = false; } break; case 3: // Selected province, district, regionc if ($prov != $regions[0] || $dist != $regions[1] || $regc != $regions[2]) { $userow = false; } break; } } if ($userow) { $__rows[] = $row; } } $rows = $__rows; } elseif ($showProvince != "" || $showDistrict != "" || $showRegionC != "") { // NOT FILTERING, BUT STILL INCLUDING LOCATION COLUMNS // Include headers once if ($showProvince) { $headers[] = @$translation['Region A (Province)']; } if ($showDistrict) { $headers[] = @$translation['Region B (Health District)']; } if ($showRegionC) { $headers[] = @$translation['Region C (Local Region)']; } $__rows = array(); foreach ($rows as $row) { list($cname, $prov, $dist, $regc) = Location::getCityInfo($row['location_id'], $this->setting('num_location_tiers')); if ($showProvince) { $loc = $locations[$prov]; $row[@$translation['Region A (Province)']] = $loc['name']; } if ($showDistrict) { $loc = $locations[$dist]; $row[@$translation['Region B (Health District)']] = $loc['name']; } if ($showRegionC) { $loc = $locations[$regc]; $row[@$translation['Region C (Local Region)']] = $loc['name']; } unset($row['location_id']); $__rows[] = $row; } $rows = $__rows; } # var_dump ($head); # var_dump ($rows); /* //locations $this->viewAssignEscaped ( 'locations', $locations ); list ( $cname, $prov, $dist, $regc ) = Location::getCityInfo ( $facilityRow->location_id, $this->setting ( 'num_location_tiers' ) ); $facilityArray ['facility_city'] = $cname; $facilityArray ['region_c_id'] = $regc; $facilityArray ['district_id'] = $dist; $facilityArray ['province_id'] = $prov; */ $this->viewAssignEscaped("headers", $headers); $this->viewAssignEscaped("output", $rows); } }
function viewlocationAction() { if (!$this->hasACL('edit_course')) { $this->view->assign('viewonly', 'disabled="disabled"'); } require_once 'models/table/TrainingLocation.php'; $this->view->assign('id', $this->_getParam('id')); if ($this->_getParam('id')) { require_once 'views/helpers/DropDown.php'; $rowLocation = TrainingLocation::selectLocation($this->_getParam('id'))->toArray(); //locations $this->viewAssignEscaped('locations', Location::getAll()); $region_ids = Location::getCityInfo($rowLocation['location_id'], $this->setting('num_location_tiers')); $rowLocation['city_name'] = $region_ids[0]; $region_ids = Location::regionsToHash($region_ids); $rowLocation = array_merge($rowLocation, $region_ids); $this->viewAssignEscaped('rowLocation', $rowLocation); //see if it is referenced anywhere $this->view->assign('okToDelete', !TrainingLocation::isReferenced($this->_getParam('id'))); } // location drop-down $locations = TrainingLocation::selectAllLocations($this->setting('num_location_tiers')); $this->viewAssignEscaped('tlocations', $locations); }