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()); }
protected function validateAndSave($facilityRow, $checkName = true) { $districtText = $this->tr('Region B (Health District)'); $provinceText = $this->tr('Region A (Province)'); $localRegionText = $this->tr('Region C (Local Region)'); //validate $status = ValidationContainer::instance(); //check for required fields if ($checkName) { $status->checkRequired($this, 'facility_name', 'Facility name'); //check for unique if ($this->_getParam('facility_name') and !Facility::isUnique($this->_getParam('facility_name'), $this->_getParam('id'))) { $status->addError('facility_name', t('That name already exists.')); } } // validate lat & long require_once 'Zend/Validate/Float.php'; require_once 'Zend/Validate/Between.php'; $lat = $this->getSanParam('facility_latitude'); $long = $this->getSanParam('facility_longitude'); $validator = new Zend_Validate_Float(); $validbetween = new Zend_Validate_Between('-180', '180'); if ($lat && (!$validator->isValid($lat) || !$validbetween->isValid($lat))) { $status->addError('facility_latitude', t('That latitude and longitude does not appear to be valid.')); } if ($long && (!$validator->isValid($long) || !$validbetween->isValid($long))) { $status->addError('facility_longitude', t('That latitude and longitude does not appear to be valid.')); } $status->checkRequired($this, 'facility_type_id', t('Facility type')); $status->checkRequired($this, 'facility_province_id', $provinceText); if ($this->setting('display_region_b')) { $status->checkRequired($this, 'facility_district_id', $districtText); } if ($this->setting('display_region_c')) { $status->checkRequired($this, 'facility_region_c_id', $localRegionText); } //$status->checkRequired ( $this, 'facility_city', t ( "City is required." ) ); list($location_params, $facility_location_tier, $facility_location_id) = $this->getLocationCriteriaValues(array(), 'facility'); $city_id = false; if ($this->getSanParam('facility_city') && !$this->getSanParam('is_new_city')) { $city_id = Location::verifyHierarchy($location_params['facility_city'], $location_params['facility_city_parent_id'], $this->setting('num_location_tiers')); if ($city_id === false) { $status->addError('facility_city', t("That city does not appear to be located in the chosen region. If you want to create a new city, check the new city box.")); } } $sponsor_date_array = $this->getSanParam('sponsor_start_date'); // may or may not be array $sponsor_end_date_array = $this->getSanParam('sponsor_end_date'); $sponsor_id = $this->getSanParam('facility_sponsor_id') ? $this->getSanParam('facility_sponsor_id') : null; if (is_array($sponsor_id)) { $sponsor_array = $sponsor_id; $sponsor_id = $sponsor_id[0]; } // todo case where multip array and no_allow_multi if (@$this->setting('require_sponsor_dates')) { $status->checkRequired($this, 'sponsor_option_id', t('Sponsor dates are required.') . "\n"); if ($this->setting('allow_multi_sponsors')) { // and multiple sponsors option if (!is_array($this->getSanParam('sponsor_option_id'))) { $status->addError('sponsor_end_date', t('Sponsor dates are required.') . "\n"); } foreach ($sponsor_array as $i => $val) { if (empty($sponsor_date_array[$i]) || !empty($val)) { $status->addError('sponsor_start_date', t('Sponsor dates are required.') . "\n"); } if (empty($sponsor_end_date_array[$i]) || !empty($val)) { $status->addError('sponsor_end_date', t('Sponsor dates are required.') . "\n"); } } } } // end validation if ($status->hasError()) { $status->setStatusMessage(t('The facility could not be saved.')); } else { $location_id = null; if ($city_id === false && $this->getSanParam('is_new_city')) { $location_id = Location::insertIfNotFound($location_params['facility_city'], $location_params['facility_city_parent_id'], $this->setting('num_location_tiers')); if ($location_id === false) { $status->addError('facility_city', t('Could not save that city.')); } } else { if ($city_id) { $location_id = $city_id; } else { if ($this->setting('display_region_c')) { $location_id = $this->getSanParam('facility_region_c_id'); } else { if ($this->setting('display_region_b')) { $location_id = $this->getSanParam('facility_district_id'); } else { $location_id = $this->getSanParam('facility_province_id'); } } } if (strstr($location_id, '_')) { $parts = explode('_', $location_id); $location_id = $parts[count($parts) - 1]; } } // save row if ($location_id) { //map db field names to FORM field names $facilityRow->facility_name = $this->getSanParam('facility_name'); $facilityRow->location_id = $location_id; $facilityRow->type_option_id = $this->getSanParam('facility_type_id') ? $this->getSanParam('facility_type_id') : null; $facilityRow->facility_comments = $this->_getParam('facility_comments'); $facilityRow->address_1 = $this->getSanParam('facility_address1'); $facilityRow->address_2 = $this->getSanParam('facility_address2'); $facilityRow->lat = $lat; $facilityRow->long = $long; $facilityRow->postal_code = $this->getSanParam('facility_postal_code'); $facilityRow->phone = $this->getSanParam('facility_phone'); $facilityRow->fax = $this->getSanParam('facility_fax'); $facilityRow->sponsor_option_id = $sponsor_id; //dupecheck $dupe = new Facility(); $select = $dupe->select()->where('location_id =' . $facilityRow->location_id . ' and facility_name = "' . $facilityRow->facility_name . '"'); if (!$facilityRow->id && $dupe->fetchRow($select)) { $status->status = ''; $status->setStatusMessage(t('The facility could not be saved. A facility with this name already exists in that location.')); return false; } $obj_id = $facilityRow->save(); $_SESSION['status'] = t('The facility was saved.'); if ($obj_id) { if (!Facility::saveSponsors($obj_id, $sponsor_array, $sponsor_date_array, $sponsor_end_date_array)) { $status->setStatusMessage(t('There was an error saving sponsor data though.')); return false; } $status->setStatusMessage(t('The facility was saved.')); $status->setRedirect('/facility/view/id/' . $obj_id); return $obj_id; } else { unset($_SESSION['status']); $status->setStatusMessage(t('ERROR: The facility could not be saved.')); } } } return false; }
public function doAddEditView() { try { //validate $status = ValidationContainer::instance(); require_once 'models/table/OptionList.php'; require_once 'models/table/MultiOptionList.php'; require_once 'models/table/Location.php'; $request = $this->getRequest(); $validateOnly = $request->isXmlHttpRequest(); $person_id = $this->getSanParam('id'); $personObj = new Person(); $personrow = $personObj->findOrCreate($person_id); $personArray = $personrow->toArray(); $helper = new Helper(); $ssl = $helper->getSkillSmartLookups(); $this->view->assign('skillsmart', $ssl); // nationality dropdown data $this->view->assign('lookupnationalities', $helper->getNationalities()); $train = $helper->getPersonTraining($person_id); $this->view->assign('persontraining', $train); //locations $locations = Location::getAll(); $this->viewAssignEscaped('locations', $locations); if ($validateOnly) { $this->setNoRenderer(); } // Figure out reason code "Other" for checking posted data, // and for enabling/disabling reason_other field $other_reason_option_id = -1; $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $sql = "SELECT * FROM person_attend_reason_option where LCASE(attend_reason_phrase) LIKE '%other%'"; $rowArray = $db->fetchAll($sql); if ($rowArray) { $other_reason_option_id = $rowArray[0]['id']; } $this->viewAssignEscaped('other_reason_option_id', $other_reason_option_id); if ($request->isPost()) { $errortext = ""; if ($dupe_id = $this->getSanParam('dupe_id')) { if ($this->getSanParam('maketrainer')) { // require user to add trainer info $status->setRedirect('/person/edit/id/' . $dupe_id . '/trainingredirect/' . $this->getSanParam('trainingredirect') . '/maketrainer/1'); } else { if ($this->_getParam('trainingredirect')) { $status->setStatusMessage(t('The person was saved. Refreshing history...')); $_SESSION['status'] = t('The person was saved.'); $this->trainingRedirect($dupe_id); } else { $status->setRedirect('/person/edit/id/' . $dupe_id); } } return; } $status->checkRequired($this, 'first_name', $this->tr('First Name')); $status->checkRequired($this, 'last_name', $this->tr('Last Name')); $status->checkRequired($this, 'primary_qualification_option_id', t('Professional qualification')); if ($this->setting('display_gender') != '0') { $status->checkRequired($this, 'gender', t('Gender')); } if ($this->setting('display_mod_skillsmart')) { //$status->checkRequired ( $this, 'occupational_category_id', t ( 'Occupational category' ) ); if ($this->getSanParam('govemp_option_id')) { //$status->checkRequired ( $this, 'govemp_option_id', t ( 'Government Employee' ) ); //$status->checkRequired ( $this, 'occupational_category_id', t ( 'Occupational category' ) ); $status->checkRequired($this, 'persal_number', t('Persal Number')); } } else { $status->checkRequired($this, 'primary_qualification_option_id', t('Professional qualification')); } $birthParam = @$this->getSanParam('birth-year') . '-' . @$this->getSanParam('birth-month') . '-' . @$this->getSanParam('birth-day'); if ($birthParam !== '--' and $birthParam !== '0000-00-00') { $status->isValidDate($this, 'birth-day', t('Birthdate'), $birthParam); } //trainer only if ($this->getSanParam('is_trainer') || $this->getSanParam('active_trainer_option_id') || $this->getSanParam('trainer_type_option_id')) { $status->checkRequired($this, 'trainer_type_option_id', t('Trainer') . ' ' . t('type')); // 10/02/2011 Sean Smith: Removed at client request. //if ($this->setting ( 'display_trainer_affiliations' )) { // $status->checkRequired ( $this, 'trainer_affiliation_option_id', t ( 'Trainer').' '.t('affiliation' ) ); //} //at least one skill $status->checkRequired($this, 'trainer_skill_id', t('Trainer') . ' ' . t('skill')); } // Check for manual reason for attending entry (if pulldown reason is 'other') if ($this->setting('display_attend_reason')) { //if ($status->checkRequired ( $this, 'attend_reason_option_id', t ( 'Reason For Attending' ))) { $reason_id = $this->getSanParam('attend_reason_option_id'); $other_reason = $this->getSanParam('attend_reason_other'); if (($reason_id || $reason_id == 0) && $other_reason_option_id >= 0) { if ($reason_id == $other_reason_option_id) { if ($other_reason == "") { $status->addError('attend_reason_other', t('Enter a reason, or select a different reason above.')); $errortext .= "Enter a reason, or select a different reason above.<br>"; error_log("Enter a reason, or select a different reason above."); } } else { if ($other_reason != "") { $status->addError('attend_reason_other', t('You can not type in a reason with the reason selected above.')); $errortext .= "You can not type in a reason with the reason selected above.<br>"; error_log("You can not type in a reason with the reason selected above."); } } } //} } //check facility if ($status->checkRequired($this, 'facilityInput', t('Facility'))) { $facility_id = $this->getSanParam('facilityInput'); if (is_array($facility_id)) { $fac_arr = array(); foreach ($facility_id as $fac_id) { if ($strrpos = strrpos($fac_id, '_')) { $fac_arr[] = substr($fac_id, $strrpos + 1); } } $personrow->multi_facility_ids = json_encode($fac_arr); $facility_id = current($facility_id); } else { $personrow->multi_facility_ids = ''; } if ($strrpos = strrpos($facility_id, '_')) { $facility_id = array_pop(explode('_', $facility_id)); } //find by name if ($facility_id) { $facilityByName = new Facility(); $row = $facilityByName->fetchRow('id = ' . $facility_id); //$row = $facilityByName->fetchRow($facilityByName->select()->where('facility_name = ?', $this->getSanParam('facilityInput'))); } if (@$row->id) { $personrow->facility_id = $row->id; } else { $status->addError('facilityInput', t('That facility name could not be found.')); $errortext .= "That facility name could not be found.<br>"; error_log("That facility name could not be found."); } } //get home city name $city_id = false; $criteria = $this->_getAllParams(); require_once 'views/helpers/Location.php'; $home_city_parent_id = regionFiltersGetLastID('home', $criteria); if ($criteria['home_city'] && !$criteria['is_new_home_city']) { $city_id = Location::verifyHierarchy($criteria['home_city'], $home_city_parent_id, $this->setting('num_location_tiers')); if ($city_id === false) { $status->addError('home_city', t("That city does not appear to be located in the chosen region. If you want to create a new city, check the new city box.")); $errortext .= "That city does not appear to be located in the chosen region. If you want to create a new city, check the new city box.<br>"; error_log("That city does not appear to be located in the chosen region. If you want to create a new city, check the new city box."); } } if ($status->hasError()) { foreach ($status->messages as $k => $v) { $errortext .= $v . "<br>"; } $status->setStatusMessage(t('The person could not be saved. <br>' . $errortext)); } else { $personrow = self::fillFromArray($personrow, $this->_getAllParams()); if ($city_id === false && $this->getSanParam('is_new_home_city')) { $city_id = Location::insertIfNotFound($criteria['home_city'], $home_city_parent_id, $this->setting('num_location_tiers')); if ($city_id === false) { $status->addError('home_city', t('Could not save that city.')); } } if ($city_id) { $personrow->home_location_id = $city_id; } else { $home_location_id = Location::verifyHierarchy($criteria['home_city'], $home_city_parent_id, $this->setting('num_location_tiers')); if ($home_location_id) { $personrow->home_location_id = $home_location_id; } } //these are transitionary database fields, will go away soon // $personrow->home_district_id = null; // $personrow->home_province_id = null; if (!$personrow->home_city) { $personrow->home_city = ''; } // bugfix, field cannot be null. if ($this->getSanParam('active')) { $personrow->active = 'active'; } else { $personrow->active = 'inactive'; } $personrow->birthdate = @$this->getSanParam('birth-year') . '-' . @$this->getSanParam('birth-month') . '-' . @$this->getSanParam('birth-day'); //lookup custom 1 and 2 if ($this->getSanParam('custom1Input')) { $id = OptionList::insertIfNotFound('person_custom_1_option', 'custom1_phrase', $this->getSanParam('custom1Input')); $personrow->person_custom_1_option_id = $id; } else { $personrow->person_custom_1_option_id = null; } if ($this->getSanParam('custom2Input')) { $id = OptionList::insertIfNotFound('person_custom_2_option', 'custom2_phrase', $this->getSanParam('custom2Input')); $personrow->person_custom_2_option_id = $id; } else { $personrow->person_custom_2_option_id = null; } if ($this->setting('display_mod_skillsmart')) { $personrow->govemp_option_id = $this->getSanParam('govemp_option_id'); $personrow->occupational_category_id = $this->getSanParam('occupational_category_id'); $personrow->persal_number = $this->getSanParam('persal_number'); $personrow->bodies_id = $this->getSanParam('professionalbodies_id'); $personrow->race_option_id = $this->getSanParam('race_option_id'); $personrow->disability_option_id = $this->getSanParam('disability_option_id'); $personrow->professional_reg_number = $this->getSanParam('professional_reg_number'); $personrow->nationality_id = $this->getSanParam('nationality_id'); $personrow->nurse_training_id = $this->getSanParam('nurse_training_id'); $personrow->care_start_year = $this->getSanParam('care_start_year'); $personrow->timespent_rank_pregnant = $this->getSanParam('timespent_rank_pregnant'); $personrow->timespent_rank_adults = $this->getSanParam('timespent_rank_adults'); $personrow->timespent_rank_children = $this->getSanParam('timespent_rank_children'); $personrow->timespent_rank_pregnant_pct = $this->getSanParam('timespent_rank_pregnant_pct'); $personrow->timespent_rank_adults_pct = $this->getSanParam('timespent_rank_adults_pct'); $personrow->timespent_rank_children_pct = $this->getSanParam('timespent_rank_children_pct'); $personrow->supervised_id = $this->getSanParam('supervised_id'); $personrow->supervision_frequency_id = $this->getSanParam('supervision_frequency_id'); $personrow->supervisors_profession = $this->getSanParam('supervisors_profession'); $personrow->facilitydepartment_id = $this->getSanParam('facilitydepartment_id'); $training_recieved_arr = array(); $training_recieved_data = ''; $training_recieved_results = array(); foreach ($ssl['training'] as $trainingnode) { $training_recieved_arr[$trainingnode['id']] = $trainingnode['label']; } // build and insert training recieved vars in json foreach ($_POST as $postvar => $postval) { if (strstr($postvar, 'trainingrecieved_') && (isset($_POST[$postvar]) && $_POST[$postvar] != '')) { $recv_str = ''; $recv_num = explode('_', $postvar); if (isset($training_recieved_arr[intval($recv_num[1])])) { $recv_str = $training_recieved_arr[intval($recv_num[1])]; $training_recieved_results[$recv_str][$recv_num[2]] = $postval; } } } if (!empty($training_recieved_results)) { $training_recieved_data = json_encode($training_recieved_results); } $personrow->training_recieved_data = $training_recieved_data; //$personrow->comments_skillsmart = $this->getSanParam('govemp_option_id');//0 /* $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('custom1Input');//1 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('race_option_id');//2 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('disability_option_id');//3 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('disability');//4 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('custom2Input');//5 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('rank1_option_id');//6 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('rank2_option_id');//7 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('rank3_option_id');//8 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('percent1');//9 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('percent2');//10 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('percent3');//11 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('supervised_option_id');//12 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('sfreq_option_id');//13 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('specifyfreqinput');//14 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('svoccu');//15 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother');//16 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother');//17 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother');//18 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother');//19 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('specifyoccupationinput');//20 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('trainer_type_option_id1');//21 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother0');//22 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother0');//23 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother0');//24 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother0');//25 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother1');//26 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother1');//27 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother1');//28 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother1');//29 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother2');//30 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother2');//31 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother2');//32 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother2');//33 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother3');//34 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother3');//35 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother3');//36 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother3');//37 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother4');//38 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother4');//39 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother4');//40 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother4');//41 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother5');//42 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother5');//43 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother5');//44 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother5');//45 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother6');//46 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother6');//47 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother6');//48 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother6');//49 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother7');//50 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother7');//51 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother7');//52 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother7');//53 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainother8');//54 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('checktrainother8');//55 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('selecttrainother8');//56 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('texttrainotherother8');//57 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('bodies_id');//58 $personrow->comments_skillsmart = $personrow->comments_skillsmart."§".$this->getSanParam('nationality_id');//59 */ if ($person_id) { $trainsaved = array(); $train = $this->getSanParam('train'); foreach ($train as $key => $t) { if (isset($t['check'])) { if ($t['originalid'] != 0) { // UPDATING EXISTING // moving this - cant really use $person_id before $personrow->save on adding a new user... probably should happen later or only on edits... im not sure $trainid = $t['originalid']; $query = "UPDATE link_person_training SET\n\t\t\t\t\t\t\t\t\tpersonid = '" . $person_id . "',\n\t\t\t\t\t\t\t\t\tyear = '" . addslashes($t['year']) . "',\n\t\t\t\t\t\t\t\t\tinstitution = '" . addslashes($t['text']) . "',\n\t\t\t\t\t\t\t\t\tothername = '' WHERE id = " . $trainid; error_log($query); $db->query($query); } else { // ADDING NEW $query = "INSERT INTO link_person_training SET\n\t\t\t\t\t\t\t\t\t\t\tpersonid = '" . $person_id . "',\n\t\t\t\t\t\t\t\t\t\t\ttrainingid = '" . addslashes($key) . "',\n\t\t\t\t\t\t\t\t\t\t\tyear = '" . addslashes($t['year']) . "',\n\t\t\t\t\t\t\t\t\t\t\tinstitution = '" . addslashes($t['text']) . "',\n\t\t\t\t\t\t\t\t\t\t\tothername = ''"; error_log($query); $db->query($query); $trainid = $db->lastInsertId(); } $trainsaved[] = $trainid; } } if (count($trainsaved) > 0) { // REMOVE ALL NON-SAVED TRAINING IDS FOR PERSON $query = "DELETE FROM link_person_training WHERE personid = " . $person_id . " AND id NOT IN (" . implode(",", $trainsaved) . ")"; error_log($query); $db->query($query); } else { // REMOVE ALL TRAINING IDS FOR PERSON $query = "DELETE FROM link_person_training WHERE personid = " . $person_id; error_log($query); $db->query($query); } } } if ($personrow->save()) { $status->setStatusMessage(t('The person was saved. Refreshing change history...')); $_SESSION['status'] = t('The person was saved.'); $person_id = $personrow->id; if ($this->setting('display_mod_skillsmart')) { if (strlen($this->getSanParam('Facilities')) > 0) { $db->query('UPDATE `facs` SET `Active`=\'N\' WHERE `person`=' . $person_id . ' AND `Active`=\'Y\';'); $Facs = split('\\$', $this->getSanParam('Facilities')); foreach ($Facs as $kys => $vls) { $Locs = split("~", $vls); $Fac = $Locs[0]; if ($strrpos = strrpos($Fac, '_')) { $Fac = substr($Fac, $strrpos + 1); } $db->query('INSERT INTO `facs` ( `person`, `facility`, `facstring`, `active`) VALUES (' . $person_id . ', ' . $Fac . ', \'' . $vls . '\', \'Y\');'); } } $co = 0; for ($co = 1; $co <= 20; $co++) { $db->query('UPDATE `trans` SET `Active`=\'N\' WHERE `person`=' . $person_id . ' AND `id`=' . $co . ' AND `Active`=\'Y\';'); if ($this->getSanParam('checktrain' . $co) == 'on') { $db->query('INSERT INTO `trans` ( `person`, `id`, `chk`, `yr`, `transstring`, `active`) VALUES (' . $person_id . ', ' . $co . ', \'' . $this->getSanParam('checktrain' . $co) . '\', \'' . $this->getSanParam('selecttrain' . $co) . '\', \'' . $this->getSanParam('texttrain' . $co) . '\', \'Y\');'); } } } //get trainer information $trainerTable = new Trainer(); $trainerRow = $trainerTable->fetchRow('person_id = ' . $person_id); if (!$trainerRow and ($this->getSanParam('active_trainer_option_id') or $this->getSanParam('trainer_type_option_id'))) { // add trainer $trainerRow = $trainerTable->createRow(); $trainerRow->person_id = $personrow->id; } if ($trainerRow) { //trainer info $trainerRow->is_active = 1; //deprecated //($this->getSanParam ( 'is_trainer' ) ? 1 : 0); $trainerRow->active_trainer_option_id = $this->getSanParam('active_trainer_option_id'); $trainerRow->type_option_id = $this->getSanParam('trainer_type_option_id'); $trainerRow->affiliation_option_id = $this->setting('display_trainer_affiliations') ? $this->getSanParam('trainer_affiliation_option_id') ? $this->getSanParam('trainer_affiliation_option_id') : 0 : 0; if (!$trainerRow->save()) { $status->setStatusMessage(t('The') . ' ' . t('trainer') . ' ' . t('information could not be saved.')); } else { MultiOptionList::updateOptions('trainer_to_trainer_skill_option', 'trainer_skill_option', 'trainer_id', $person_id, 'trainer_skill_option_id', $this->getSanParam('trainer_skill_id')); $language_ids = $this->getSanParam('trainer_language_id'); $planguage_id = $this->getSanParam('primary_language_id'); $primary_settings = array(); $found = false; if ($language_ids) { foreach ($language_ids as $lid) { if ($lid == $planguage_id) { $primary_settings[] = 1; $found = true; } else { $primary_settings[] = 0; } } } if (!$found) { $primary_settings[] = 1; $language_ids[] = $planguage_id; } MultiOptionList::updateOptions('trainer_to_trainer_language_option', 'trainer_language_option', 'trainer_id', $person_id, 'trainer_language_option_id', $language_ids, 'is_primary', $primary_settings); } } TrainingRecommend::saveRecommendedforPerson($person_id, $this->getSanParam('training_recommend')); if ($this->_getParam('redirectUrl')) { $status->redirect = $this->_getParam('redirectUrl'); } else { if ($this->_getParam('trainingredirect')) { // redirect back to training session $this->trainingRedirect($person_id); } else { //if it's an add then redirect to the view page if ($this->setting('display_mod_skillsmart')) { //$status->setRedirect ( '/person/view/id/' . $person_id ); $qs = OptionList::suggestionListHierarchical('person_qualification_option', 'qualification_phrase', false, false, array('0 AS is_default', 'child.is_default')); $parent_id = $this->getSanParam('primary_qualification_option_id'); foreach ($qs as $k => $v) { if ($v['id'] == $parent_id) { $parent_id = $v['parent_id']; break; } } $comps = $helper->getPersonCompetenciesDetailed($person_id); // Disabled redirect to competency page as per Robert's request, 11/19/2012, CDL // if (count($comps) > 0){ // $status->setRedirect ( '/person/editcompetency/id/' . $person_id ); // } else { $status->setRedirect('/person/edit/id/' . $person_id); // } /* if($parent_id=="6") { $status->setRedirect ( '/person/addcomc/id/' . $person_id ); } if($parent_id=="7") { $status->setRedirect ( '/person/addcomd/id/' . $person_id ); } if($parent_id=="8") { $status->setRedirect ( '/person/addcomn/id/' . $person_id ); } if($parent_id=="9") { $status->setRedirect ( '/person/addcomp/id/' . $person_id ); } */ } else { $status->setRedirect('/person/edit/id/' . $person_id); } } } } else { $status->setStatusMessage(t('ERROR: The person could not be saved. ' . __LINE__)); } } if ($validateOnly) { $this->sendData($status); } else { $this->view->assign('status', $status); } } if ($this->setting('display_mod_skillsmart')) { if ($person_id) { $rows = $db->fetchAll('SELECT `facstring` FROM `facs` INNER JOIN `facility` ON `facs`.`facility` = `facility`.`id` WHERE `facility`.`is_deleted`=0 AND `facs`.`person`=' . $person_id . ' AND `facs`.`Active`=\'Y\' ORDER BY `facs`.`sno` ASC;'); $Fcs = ""; foreach ($rows as $rw) { $Fcs = $Fcs . $rw['facstring'] . '$'; } $Fcs = trim($Fcs, '$'); $this->view->assign('Fcs', $Fcs); $rows = $db->fetchAll('SELECT `id`, `chk`, `yr`, `transstring` FROM `trans` WHERE `person`=' . $person_id . ' AND `Active`=\'Y\' ORDER BY sno ASC;'); $Trs = array(); $c*k = 0; for ($c*k = 1; $c*k <= 20; $c*k++) { $Trs[$c*k] = NULL; } foreach ($rows as $rw) { $Trs[$rw['id']] = $rw; } $this->view->assign('Trs', $Trs); } } //view it $facilityObj = new Facility(); $facilityrow = $facilityObj->findOrCreate($personrow->facility_id); $personArray['facility'] = $facilityrow->toArray(); //facility location $region_ids = Location::getCityInfo($facilityrow->location_id, $this->setting('num_location_tiers')); $region_ids = Location::regionsToHash($region_ids, 'person_facility'); $personArray = array_merge($personArray, $region_ids); //audit history $creatorObj = new User(); $updaterObj = new User(); $creatorrow = $creatorObj->findOrCreate($personrow->created_by); $personArray['creator'] = addslashes($creatorrow->first_name . ' ' . $creatorrow->last_name); $updaterrow = $updaterObj->findOrCreate($personrow->modified_by); $personArray['updater'] = addslashes($updaterrow->first_name . ' ' . $updaterrow->last_name); $personArray['birthdate-year'] = ''; $personArray['birthdate-month'] = ''; $personArray['birthdate-day'] = ''; //split birthdate fields if ($person_id and $personrow->birthdate) { $parts = explode(' ', $personrow->birthdate); $parts = explode('-', $parts[0]); $personArray['birthdate-year'] = $parts[0]; $personArray['birthdate-month'] = $parts[1]; $personArray['birthdate-day'] = $parts[2]; } //custom fields if ($person_id) { $personArray['custom1'] = ITechTable::getCustomValue('person_custom_1_option', 'custom1_phrase', $personArray['person_custom_1_option_id']); $personArray['custom2'] = ITechTable::getCustomValue('person_custom_2_option', 'custom2_phrase', $personArray['person_custom_2_option_id']); } //qualifications $qualificationsArray = OptionList::suggestionListHierarchical('person_qualification_option', 'qualification_phrase', false, false, array('0 AS is_default', 'child.is_default')); $personQualificationId = $personArray['primary_qualification_option_id']; // get parent qualification id, if user has sub qualification selected $personArray['primary_qualification_option_id_parent'] = $personQualificationId; foreach ($qualificationsArray as $k => $qualArray) { if ($qualArray['parent_phrase'] == 'unknown') { unset($qualificationsArray[$k]); //remove unknown as an option } if ($qualArray['id'] == $personQualificationId) { $personArray['primary_qualification_option_id_parent'] = $qualArray['parent_id']; } } $this->viewAssignEscaped('qualifications', $qualificationsArray); // occupational categories $occupationalsArray = OptionList::suggestionListHierarchical('occupational_categories', 'category_phrase', false, false, array('0 AS is_default', 'child.is_default')); $personQualificationId = $personArray['primary_qualification_option_id']; // get parent occupational category id, if user has sub qualification selected $personArray['occupational_category_id_parent'] = $personQualificationId; foreach ($occupationalsArray as $k => $catArray) { if ($catArray['category_phrase'] == 'unknown') { unset($qualificationsArray[$k]); //remove unknown as an option } if ($catArray['id'] == $personQualificationId) { $personArray['occupational_category_id'] = $catArray['parent_id']; } } $this->viewAssignEscaped('occupationalcats', $occupationalsArray); // get recommended trainings class topics $training_recommend = TrainingRecommend::getRecommendedTrainingTopics($personArray['primary_qualification_option_id_parent']); $this->viewAssignEscaped('training_recommend', $training_recommend); // get saved recommended trainings class titles $training_recommend_saved = TrainingRecommend::getRecommendedforPerson($person_id); $this->viewAssignEscaped('training_recommend_saved', $training_recommend_saved); //$classes = TrainingRecommend::getRecommendedClassesforPerson ( $person_id ); //responsibilities if ($this->setting('display_mod_skillsmart')) { $responsibilitiesArray = OptionList::suggestionList('person_responsibility_option', 'responsibility_phrase', false, false); $this->viewAssignEscaped('responsibilities', $responsibilitiesArray); } $primaryResponsibilitiesArray = OptionList::suggestionList('person_primary_responsibility_option', 'responsibility_phrase', false, false); $this->viewAssignEscaped('primaryResponsibilities', $primaryResponsibilitiesArray); $secondaryResponsibilitiesArray = OptionList::suggestionList('person_secondary_responsibility_option', 'responsibility_phrase', false, false); $this->viewAssignEscaped('secondaryResponsibilities', $secondaryResponsibilitiesArray); $educationlevelsArray = OptionList::suggestionList('person_education_level_option', 'education_level_phrase', false, false); $this->viewAssignEscaped('educationlevels', $educationlevelsArray); $attendreasonsArray = OptionList::suggestionList('person_attend_reason_option', 'attend_reason_phrase', false, false); $this->viewAssignEscaped('attendreasons', $attendreasonsArray); $activeTrainerArray = OptionList::suggestionList('person_active_trainer_option', 'active_trainer_phrase', false, false); $this->viewAssignEscaped('active_trainer', $activeTrainerArray); $titlesArray = OptionList::suggestionList('person_title_option', 'title_phrase', false, false); $this->viewAssignEscaped('titles', $titlesArray); $suffixesArray = OptionList::suggestionList('person_suffix_option', 'suffix_phrase', false, false); $this->viewAssignEscaped('suffixes', $suffixesArray); //training types //attach Trainer attributes $trainerTable = new Trainer(); $trainerrow = $trainerTable->findOrCreate($person_id); $personArray['trainer_is_active'] = $this->getSanParam('maketrainer') ? 1 : $trainerrow->is_active; $personArray['active_trainer_option_id'] = $trainerrow->active_trainer_option_id; $personArray['trainer_type_option_id'] = $trainerrow->type_option_id; $personArray['trainer_affiliation_option_id'] = $trainerrow->affiliation_option_id; $titlesArray = OptionList::suggestionList('person_title_option', 'title_phrase', false, false); $this->viewAssignEscaped('titles', $titlesArray); $trainerTypesArray = OptionList::suggestionList('trainer_type_option', 'trainer_type_phrase', false, false); $this->viewAssignEscaped('trainer_types', $trainerTypesArray); $trainerAffiliationArray = OptionList::suggestionList('trainer_affiliation_option', 'trainer_affiliation_phrase', false, false); $this->viewAssignEscaped('trainer_affiliations', $trainerAffiliationArray); $trainerSkillsArray = MultiOptionList::choicesList('trainer_to_trainer_skill_option', 'trainer_id', $person_id, 'trainer_skill_option', 'trainer_skill_phrase'); $this->viewAssignEscaped('trainer_skills', $trainerSkillsArray); $trainerLanguagesArray = MultiOptionList::choicesList('trainer_to_trainer_language_option', 'trainer_id', $person_id, 'trainer_language_option', 'language_phrase', 'is_primary'); $this->viewAssignEscaped('trainer_languages', $trainerLanguagesArray); foreach ($trainerLanguagesArray as $lang) { if ($lang['is_primary']) { $personArray['primary_language_id'] = $lang['id']; } } //has training history $hasTrainerHistory = false; if ($trainerrow->person_id) { $hasTrainerHistory = true; //we could also look up any history now, but we'll be lazy } $this->view->assign('hasTrainerHistory', $hasTrainerHistory); //facility types $typesArray = OptionList::suggestionList('facility_type_option', 'facility_type_phrase', false, false); $this->viewAssignEscaped('facility_types', $typesArray); //get home city name if ($personrow->home_location_id) { $region_ids = Location::getCityInfo($personrow->home_location_id, $this->setting('num_location_tiers')); $personArray['home_city'] = $region_ids[0]; $region_ids = Location::regionsToHash($region_ids, 'home'); $personArray = array_merge($personArray, $region_ids); } //sponsor types $sponsorsArray = OptionList::suggestionList('facility_sponsor_option', 'facility_sponsor_phrase', false, false); $this->viewAssignEscaped('facility_sponsors', $sponsorsArray); $this->viewAssignEscaped('person', $personArray); //facilities list //$rowArray = OptionList::suggestionList('facility',array('facility_name','id'),false,9999); $rowArray = Facility::selectAllFacilities($this->setting('num_location_tiers')); $this->viewAssignEscaped('facilities', $rowArray); if ($this->hasACL('edit_facility')) { $this->view->assign('insertFacilityLink', '<a href="#" id="show">' . str_replace(' ', ' ', t('Insert new facility')) . '</a>'); } //see if it is referenced anywhere $this->view->assign('okToDelete', !$person_id or !Person::isReferenced($person_id)); // create reference for GET paramaters if ($this->_getParam('trainingredirect')) { $this->view->assign('trainingredirect', $this->_getParam('trainingredirect')); } if ($this->_getParam('maketrainer')) { $this->view->assign('maketrainer', $this->_getParam('maketrainer')); } if ($this->_getParam('days')) { $this->view->assign('days', $this->_getParam('days')); } } catch (Exception $e) { print $e->getMessage(); } }
/** * New training location */ public function locationAddAction() { require_once 'models/table/TrainingLocation.php'; require_once 'models/table/Location.php'; $request = $this->getRequest(); $validateOnly = $request->isXmlHttpRequest(); if ($validateOnly) { $this->setNoRenderer(); } if ($request->isPost()) { $tableObj = new TrainingLocation(); $location = $this->_getParam('training_location_name'); list($location_params, $location_tier, $location_id) = $this->getLocationCriteriaValues(array()); //validate $status = ValidationContainer::instance(); $districtText = $this->tr('Region B (Health District)'); $provinceText = $this->tr('Region A (Province)'); $localRegionText = $this->tr('Region C (Local Region)'); $regionDText = $this->tr('Region D'); $regionEText = $this->tr('Region E'); $regionFText = $this->tr('Region F'); $regionGText = $this->tr('Region G'); $regionHText = $this->tr('Region H'); $regionIText = $this->tr('Region I'); $status->checkRequired($this, 'province_id', $provinceText); if ($this->setting('display_region_b')) { $status->checkRequired($this, 'district_id', $districtText); } if ($this->setting('display_region_c')) { $status->checkRequired($this, 'region_c_id', $localRegionText); } if ($this->setting('display_region_d')) { $status->checkRequired($this, 'region_d_id', $regionDText); } if ($this->setting('display_region_e')) { $status->checkRequired($this, 'region_e_id', $regionEText); } if ($this->setting('display_region_f')) { $status->checkRequired($this, 'region_f_id', $regionFText); } if ($this->setting('display_region_g')) { $status->checkRequired($this, 'region_g_id', $regionGText); } if ($this->setting('display_region_h')) { $status->checkRequired($this, 'region_h_id', $regionHText); } if ($this->setting('display_region_i')) { $status->checkRequired($this, 'region_i_id', $regionIText); } //$status->checkRequired ( $this, 'city', t ( "City is required." ) ); $city_id = false; if ($this->getSanParam('city') && !$this->getSanParam('is_new_city')) { $city_id = Location::verifyHierarchy($location_params['city'], $location_params['city_parent_id'], $this->setting('num_location_tiers')); if ($city_id === false) { $status->addError('city', t("That city does not appear to be located in the chosen region. If you want to create a new city, check the new city box.")); } } // save if (!$status->hasError()) { $location_id = null; if ($city_id === false && $this->getSanParam('is_new_city')) { $location_id = Location::insertIfNotFound($location_params['city'], $location_params['city_parent_id'], $this->setting('num_location_tiers')); if ($location_id === false) { $status->addError('city', t('Could not save that city.')); } } else { if ($city_id) { $location_id = $city_id; } else { if ($this->setting('display_region_i')) { $location_id = $this->getSanParam('region_i_id'); } else { if ($this->setting('display_region_h')) { $location_id = $this->getSanParam('region_h_id'); } else { if ($this->setting('display_region_g')) { $location_id = $this->getSanParam('region_g_id'); } else { if ($this->setting('display_region_f')) { $location_id = $this->getSanParam('region_f_id'); } else { if ($this->setting('display_region_e')) { $location_id = $this->getSanParam('region_e_id'); } else { if ($this->setting('display_region_d')) { $location_id = $this->getSanParam('region_d_id'); } else { if ($this->setting('display_region_c')) { $location_id = $this->getSanParam('region_c_id'); } else { if ($this->setting('display_region_b')) { $location_id = $this->getSanParam('district_id'); } else { $location_id = $this->getSanParam('province_id'); } } } } } } } } } if (strstr($location_id, '_')) { $parts = explode('_', $location_id); $location_id = $parts[count($parts) - 1]; } } if ($location_id) { // update or insert? if ($this->_getParam('update')) { $data = array(); $data['location_id'] = $location_id; $data['training_location_name'] = $location; $tableObj = new TrainingLocation(); $tableObj->update($data, "id = " . $this->_getParam('update')); $status->setStatusMessage(t('The') . ' ' . t('Training Center') . ' ' . t('has been updated.')); $_SESSION['status'] = t('The') . ' ' . t('Training Center') . ' ' . t('has been updated.'); //refresh the page, so the picker dropdown is refreshed as well $status->setRedirect('/facility/view-location/id/' . $this->_getParam('update')); } else { $id = TrainingLocation::insertIfNotFound($location, $location_id); if ($this->_getParam('info') == 'extra') { $status->setStatusMessage(t('The') . ' ' . t('Training Center') . ' ' . t('has been saved.')); $_SESSION['status'] = t('The') . ' ' . t('Training Center') . ' ' . t('has been saved.'); $status->setRedirect('/facility/view-location/id/' . $id); } } if ($this->_getParam('info') == 'extra') { $this->sendData($status); } else { $this->sendData(array('location_id' => $id)); } } } else { $status->setStatusMessage(t('The') . ' ' . t('Training Center') . ' ' . t('could not be saved.')); $this->sendData($status); } } }
/** * Import a training location */ public function importLocationAction() { $this->view->assign('pageTitle', t('Import a training location')); require_once 'models/table/Location.php'; require_once 'models/table/TrainingLocation.php'; // template redirect if ($this->getSanParam('download')) { return $this->importLocationTemplateAction(); } if (!$this->hasACL('import_training_location')) { $this->doNoAccessError(); } //CSV STUFF $filename = $_FILES['upload']['tmp_name']; if ($filename) { $trainingLocationObj = new TrainingLocation(); $errs = array(); while ($row = $this->_csv_get_row($filename)) { $values = array(); if (!is_array($row)) { continue; } // sanity? if (!isset($cols)) { // set headers (field names) $cols = $row; // first row is headers (field names) continue; } $countValidFields = 0; if (!empty($row)) { // add foreach ($row as $i => $v) { // proccess each column if (empty($v) && $v !== '0') { continue; } if ($v == 'n/a') { // has to be able to process values from a data export $v = NULL; } $countValidFields++; $delimiter = strpos($v, ','); // is this field a comma seperated list too (or array)? if ($delimiter && $v[$delimiter - 1] != '\\') { // handle arrays as field values(Export), and comma seperated values(import manual entry), and strings or int $values[$cols[$i]] = explode(',', $this->sanitize($v)); } else { $values[$cols[$i]] = $this->sanitize($v); } } } // done now all fields are named and in $values['my_field'] if ($countValidFields) { //validate if (isset($values['uuid'])) { unset($values['uuid']); } if (isset($values['id'])) { unset($values['id']); } if (isset($values['is_deleted'])) { unset($values['is_deleted']); } if (isset($values['created_by'])) { unset($values['created_by']); } if (isset($values['modified_by'])) { unset($values['modified_by']); } if (isset($values['timestamp_created'])) { unset($values['timestamp_created']); } if (isset($values['timestamp_updated'])) { unset($values['timestamp_updated']); } //required if (empty($values['training_location_name'])) { $errs[] = t('Error adding training location, training location name cannot be empty.'); } //locations $num_location_tiers = $this->setting('num_location_tiers'); $bSuccess = true; $location_id = null; if ($values['location_id']) { $location_id = $values['location_id']; } $tier = 1; if (!$location_id) { for ($i = 0; $i <= $num_location_tiers; $i++) { // insert/find locations $r = 1 + $i; // first location field in csv row // could use this too: $values[t('Region A (Province)')] if (empty($row[$r]) || $bSuccess == false) { continue; } $location_id = Location::insertIfNotFound($row[$r], $location_id, $tier); if (!$location_id) { $bSuccess = false; break; } $tier++; } } if (!$bSuccess || !$location_id) { $errs[] = t('Error locating/creating region or city:') . ' ' . $row[$r] . ' ' . t('Training Location') . ': ' . $values['training_location_name']; continue; // couldnt save location } $values['location_id'] = $location_id; //dupecheck $dupe = new TrainingLocation(); $select = $dupe->select()->where('location_id =' . $location_id . ' and training_location_name = "' . $values['training_location_name'] . '"'); if ($dupe->fetchRow($select)) { $errs[] = t('The training location could not be saved. A training location with this name already exists in that location.') . ' ' . t('training location') . ': ' . $values['training_location_name']; $bSuccess = false; } if (!$bSuccess) { continue; } //save try { $tableObj = $trainingLocationObj->createRow(); $tableObj->training_location_name = $values['training_location_name']; $tableObj->location_id = $location_id; $row_id = $tableObj->save(); } catch (Exception $e) { $errored = 1; $errs[] = nl2br($e->getMessage()) . ' ' . t('ERROR: The training location could not be saved.'); } if (!$row_id) { $errored = 1; } //sucess - done } //loop } // done processing rows $_POST['redirect'] = null; $status = ValidationContainer::instance(); if (empty($errored) && empty($errs)) { $stat = t('Your changes have been saved.'); } else { $stat = t('Error importing data. Some data may have been imported and some may not have.'); } foreach ($errs as $errmsg) { $stat .= '<br>' . 'Error: ' . htmlspecialchars($errmsg, ENT_QUOTES); } $status->setStatusMessage($stat); $this->view->assign('status', $status); } // done with import }