/** * Selects training locations along with facilities * * @param unknown_type $num_tiers * @return unknown */ public static function selectAllLocations($num_tiers = 4) { $db = Zend_Db_Table_Abstract::getDefaultAdapter(); list($field_name, $location_sub_query) = Location::subquery($num_tiers, false, false); $sql = 'SELECT training_location.id, training_location.training_location_name, ' . implode(',', $field_name) . ' FROM training_location LEFT JOIN (' . $location_sub_query . ') as l ON training_location.location_id = l.id WHERE training_location.is_deleted = 0 ORDER BY province_name' . ($num_tiers > 2 ? ', district_name' : '') . ', training_location_name'; return $db->fetchAll($sql); }
public function searchAction() { if (!$this->hasACL('edit_employee')) { $this->doNoAccessError(); } $criteria = $this->getAllParams(); if ($criteria['go']) { // process search $where = array(); list($a, $location_tier, $location_id) = $this->getLocationCriteriaValues($criteria); list($locationFlds, $locationsubquery) = Location::subquery($this->setting('num_location_tiers'), $location_tier, $location_id, true); $sql = "SELECT DISTINCT\r\n\t\t\t\t\temployee.*, " . implode(',', $locationFlds) . "\r\n\t\t\t\t\t,CONCAT(supervisor.first_name, CONCAT(' ', supervisor.last_name)) as supervisor,\r\n\t\t\t\t\tqual.qualification_phrase as staff_cadre,\r\n\t\t\t\t\tsite.facility_name,\r\n\t\t\t\t\tcategory.category_phrase as staff_category\r\n\t\t\t\t\tFROM employee LEFT JOIN ({$locationsubquery}) as l ON l.id = employee.location_id\r\n\t\t\t\t\tLEFT JOIN employee supervisor ON supervisor.id = employee.supervisor_id\r\n\t\t\t\t\tLEFT JOIN facility site ON site.id = employee.site_id\r\n\t\t\t\t\tLEFT JOIN employee_qualification_option qual ON qual.id = employee.employee_qualification_option_id\r\n\t\t\t\t\tLEFT JOIN employee_category_option category on category.id = employee.employee_category_option_id\r\n\t\t\t\t\tLEFT JOIN partner ON partner.id = employee.partner_id\r\n\t\t\t\t\t"; #if ($criteria['partner_id']) $sql .= ' INNER JOIN partner_to_subpartner subp ON partner.id = ' . $criteria['partner_id']; // 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' #if($org_allowed_ids) # $where[] = " partner.organizer_option_id in ($org_allowed_ids) "; $locationWhere = $this->getLocationCriteriaWhereClause($criteria, '', ''); if ($locationWhere) { $where[] = $locationWhere; } if ($criteria['first_name']) { $where[] = "employee.first_name = '{$criteria['first_name']}'"; } if ($criteria['last_name']) { $where[] = "employee.last_name = '{$criteria['last_name']}'"; } if ($criteria['partner_id']) { $where[] = 'employee.partner_id = ' . $criteria['partner_id']; } //todo if ($criteria['facilityInput']) { $where[] = 'employee.site_id = ' . $criteria['facilityInput']; } if ($criteria['employee_qualification_option_id']) { $where[] = 'employee.employee_qualification_option_id = ' . $criteria['employee_qualification_option_id']; } if ($criteria['category_option_id']) { $where[] = 'employee.staff_category_id = ' . $criteria['category_option_id']; } if (count($where)) { $sql .= ' WHERE ' . implode(' AND ', $where); } $db = $this->dbfunc(); $rows = $db->fetchAll($sql); $this->viewAssignEscaped('results', $rows); $this->viewAssignEscaped('count', count($rows)); } // assign form drop downs $helper = new Helper(); $this->view->assign('status', $status); $this->viewAssignEscaped('criteria', $criteria); $this->viewAssignEscaped('locations', Location::getAll()); $this->view->assign('partners', DropDown::generateHtml('partner', 'partner', $criteria['partner_id'], false, $this->view->viewonly, false)); $this->view->assign('subpartners', DropDown::generateHtml('partner', 'partner', $criteria['partner_id'], false, $this->view->viewonly, false, false, array('name' => 'subpartner_id'), true)); $this->view->assign('cadres', DropDown::generateHtml('employee_qualification_option', 'qualification_phrase', $criteria['employee_qualification_option_id'], false, $this->view->viewonly, false)); $this->viewAssignEscaped('sites', $helper->getFacilities()); $this->view->assign('categories', DropDown::generateHtml('employee_category_option', 'category_phrase', $criteria['employee_category_option_id'], false, $this->view->viewonly, false)); }
public function facilityReport() { require_once 'models/table/TrainingLocation.php'; $criteria = array(); //find the first date in the database $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $sql = "SELECT MIN(training_start_date) as \"start\" FROM training WHERE is_deleted = 0"; $rowArray = $db->fetchAll($sql); $start_default = $rowArray[0]['start']; $parts = explode('-', $start_default); $criteria['start-year'] = $parts[0]; $criteria['start-month'] = $parts[1]; $criteria['start-day'] = $parts[2]; if ($this->getSanParam('start-year')) { $criteria['start-year'] = $this->getSanParam('start-year'); } if ($this->getSanParam('start-month')) { $criteria['start-month'] = $this->getSanParam('start-month'); } if ($this->getSanParam('start-day')) { $criteria['start-day'] = $this->getSanParam('start-day'); } if ($this->view->mode == 'search') { $sql = "SELECT MAX(training_start_date) as \"start\" FROM training "; $rowArray = $db->fetchAll($sql); $end_default = $rowArray[0]['start']; $parts = explode('-', $end_default); $criteria['end-year'] = $parts[0]; $criteria['end-month'] = $parts[1]; $criteria['end-day'] = $parts[2]; } else { $criteria['end-year'] = date('Y'); $criteria['end-month'] = date('m'); $criteria['end-day'] = date('d'); } if ($this->getSanParam('end-year')) { $criteria['end-year'] = $this->getSanParam('end-year'); } if ($this->getSanParam('end-month')) { $criteria['end-month'] = $this->getSanParam('end-month'); } if ($this->getSanParam('end-day')) { $criteria['end-day'] = $this->getSanParam('end-day'); } list($criteria, $location_tier, $location_id) = $this->getLocationCriteriaValues($criteria); $criteria['training_title_option_id'] = $this->getSanParam('training_title_option_id'); $criteria['training_title_id'] = $this->getSanParam('training_title_id'); $criteria['training_location_id'] = $this->getSanParam('training_location_id'); $criteria['training_organizer_id'] = $this->getSanParam('training_organizer_id'); $criteria['training_pepfar_id'] = $this->getSanParam('training_pepfar_id'); $criteria['training_topic_id'] = $this->getSanParam('training_topic_id'); $criteria['training_level_id'] = $this->getSanParam('training_level_id'); $criteria['facility_type_id'] = $this->getSanParam('facility_type_id'); $criteria['facility_sponsor_id'] = $this->getSanParam('facility_sponsor_id'); $criteria['facilityInput'] = $this->getSanParam('facilityInput'); $criteria['is_tot'] = $this->getSanParam('is_tot'); $criteria['go'] = $this->getSanParam('go'); $criteria['doCount'] = $this->view->mode == 'count'; $criteria['showProvince'] = ($this->getSanParam('showProvince') or $criteria['doCount'] and ($criteria['province_id'] or $criteria['province_id'] === '0')); $criteria['showDistrict'] = ($this->getSanParam('showDistrict') or $criteria['doCount'] and ($criteria['district_id'] or $criteria['district_id'] === '0')); /*$criteria ['showCadre'] = ($this->getSanParam ( 'showCadre' ) or ($criteria ['doCount'] and ($criteria ['cadre'] or $criteria ['cadre'] === '0')));*/ $criteria['showRegionC'] = ($this->getSanParam('showRegionC') or $criteria['doCount'] and ($criteria['region_c_id'] or $criteria['region_c_id'] === '0')); $criteria['showTrainingTitle'] = ($this->getSanParam('showTrainingTitle') or $criteria['doCount'] and ($criteria['training_title_option_id'] or $criteria['training_title_option_id'] === '0' or $criteria['training_title_id'])); $criteria['showLocation'] = ($this->getSanParam('showLocation') or $criteria['doCount'] and $criteria['training_location_id']); $criteria['showOrganizer'] = ($this->getSanParam('showOrganizer') or $criteria['doCount'] and ($criteria['training_organizer_id'] or $criteria['training_organizer_id'] === '0')); $criteria['showPepfar'] = ($this->getSanParam('showPepfar') or $criteria['doCount'] and ($criteria['training_pepfar_id'] or $criteria['training_pepfar_id'] === '0')); $criteria['showTopic'] = ($this->getSanParam('showTopic') or $criteria['doCount'] and ($criteria['training_topic_id'] or $criteria['training_topic_id'] === '0')); $criteria['showLevel'] = ($this->getSanParam('showLevel') or $criteria['doCount'] and $criteria['training_level_id']); $criteria['showType'] = ($this->getSanParam('showType') or $criteria['doCount'] and ($criteria['facility_type_id'] or $criteria['facility_type_id'] === '0')); $criteria['showSponsor'] = ($this->getSanParam('showSponsor') or $criteria['doCount'] and $criteria['facility_sponsor_id']); $criteria['showFacility'] = true; //($this->getSanParam('showFacility') OR ($criteria['doCount'] and $criteria['facility_name'])); $criteria['showTot'] = ($this->getSanParam('showTot') or ($criteria['doCount'] and $criteria['is_tot'] !== '' or $criteria['is_tot'] === '0')); if ($criteria['go']) { $sql = 'SELECT '; if ($criteria['doCount']) { $sql .= ' COUNT(pt.person_id) as "cnt", pt.facility_name '; } else { $sql .= ' DISTINCT pt.id as "id", pt.facility_name, pt.training_start_date '; } if ($criteria['showFacility']) { $sql .= ', pt.facility_name '; } if ($criteria['showTrainingTitle'] or $this->view->mode == 'search') { $sql .= ', pt.training_title '; } if ($criteria['showDistrict']) { $sql .= ', pt.district_name, pt.district_id '; } if ($criteria['showCadre']) { $sql .= ', cad.id, cad.cadrename '; } if ($criteria['showProvince']) { $sql .= ', pt.province_name, pt.province_id '; } if ($criteria['showRegionC']) { $sql .= ', pt.region_c_name, pt.region_c_id '; } if ($criteria['showLocation']) { $sql .= ', pt.training_location_name '; } if ($criteria['showOrganizer']) { $sql .= ', torg.training_organizer_phrase '; } if ($criteria['showLevel']) { $sql .= ', tlev.training_level_phrase '; } if ($criteria['showType']) { $sql .= ', fto.facility_type_phrase '; } if ($criteria['showSponsor']) { $sql .= ', fso.facility_sponsor_phrase '; } if ($criteria['showPepfar']) { if ($criteria['doCount']) { $sql .= ', tpep.pepfar_category_phrase '; } else { $sql .= ', GROUP_CONCAT(DISTINCT tpep.pepfar_category_phrase) as "pepfar_category_phrase" '; } } if ($criteria['showTopic']) { if ($criteria['doCount']) { $sql .= ', ttopic.training_topic_phrase '; } else { $sql .= ', GROUP_CONCAT(DISTINCT ttopic.training_topic_phrase ORDER BY training_topic_phrase) AS "training_topic_phrase" '; } } if ($criteria['showTot']) { //$sql .= ', pt.is_tot '; $sql .= ", IF(pt.is_tot,'" . t('Yes') . "','" . t('No') . "') AS is_tot"; } //JOIN with the participants to get facility $num_locs = $this->setting('num_location_tiers'); list($field_name, $location_sub_query) = Location::subquery($num_locs, $location_tier, $location_id, true); if ($criteria['doCount']) { $sql .= ' FROM (SELECT training.*, fac.person_id as "person_id", fac.facility_id as "facility_id", fac.type_option_id, fac.sponsor_option_id, fac.facility_name as "facility_name" , tto.training_title_phrase AS training_title,training_location.training_location_name, l.' . implode(', l.', $field_name) . ' FROM training ' . ' JOIN training_title_option tto ON (`training`.training_title_option_id = tto.id)' . ' JOIN training_location ON training.training_location_id = training_location.id ' . ' JOIN (SELECT person_id, facility_name, facility_id, location_id, type_option_id, sponsor_option_id,training_id FROM person JOIN person_to_training ON person_to_training.person_id = person.id ' . ' JOIN facility as f ON person.facility_id = f.id) as fac ON training.id = fac.training_id JOIN (' . $location_sub_query . ') as l ON fac.location_id = l.id WHERE training.is_deleted=0) as pt '; } else { $sql .= ' FROM (SELECT training.*, fac.facility_id as "facility_id", fac.type_option_id, fac.sponsor_option_id ,fac.facility_name as "facility_name" , tto.training_title_phrase AS training_title,training_location.training_location_name, l.' . implode(', l.', $field_name) . ' FROM training ' . ' JOIN training_title_option tto ON (`training`.training_title_option_id = tto.id) ' . ' JOIN training_location ON training.training_location_id = training_location.id ' . ' JOIN (SELECT DISTINCT facility_name, facility_id, location_id, training_id, type_option_id, sponsor_option_id FROM person JOIN person_to_training ON person_to_training.person_id = person.id ' . ' JOIN facility as f ON person.facility_id = f.id) as fac ON training.id = fac.training_id JOIN (' . $location_sub_query . ') as l ON fac.location_id = l.id WHERE training.is_deleted=0) as pt '; } if ($criteria['showOrganizer']) { $sql .= ' JOIN training_organizer_option as torg ON torg.id = pt.training_organizer_option_id '; } if ($criteria['showLevel']) { $sql .= ' JOIN training_level_option as tlev ON tlev.id = pt.training_level_option_id '; } if ($criteria['showType']) { $sql .= ' JOIN facility_type_option as fto ON fto.id = pt.type_option_id '; } /*if ($criteria ['showCadre']) { $sql .= ' Inner JOIN cadres as cad'; }*/ if ($criteria['showSponsor']) { $sql .= ' JOIN facility_sponsor_option as fso ON fso.id = pt.sponsor_option_id '; } if ($criteria['showPepfar']) { $sql .= ' LEFT JOIN (SELECT training_id, ttpco.training_pepfar_categories_option_id, pepfar_category_phrase FROM training_to_training_pepfar_categories_option as ttpco JOIN training_pepfar_categories_option as tpco ON ttpco.training_pepfar_categories_option_id = tpco.id) as tpep ON tpep.training_id = pt.id '; } if ($criteria['showTopic']) { //$sql .= ' LEFT JOIN training_topic_option as ttopic ON ttopic.id = ttopic.training_topic_option_id '; $sql .= ' LEFT JOIN (SELECT training_id, ttto.training_topic_option_id, training_topic_phrase FROM training_to_training_topic_option as ttto JOIN training_topic_option as tto ON ttto.training_topic_option_id = tto.id) as ttopic ON ttopic.training_id = pt.id '; } $where = array(' pt.is_deleted=0 '); if ($criteria['training_title_option_id'] or $criteria['training_title_option_id'] === '0') { $where[] = ' pt.training_title_option_id = ' . $criteria['training_title_option_id']; } if ($criteria['training_title_id'] or $criteria['training_title_id'] === '0') { $where[] = ' pt.training_title_option_id = ' . $criteria['training_title_id']; } if ($criteria['facilityInput']) { $where[] = ' pt.facility_id = \'' . $criteria['facilityInput'] . '\''; } if ($criteria['training_location_id']) { $where[] = ' pt.training_location_id = \'' . $criteria['training_location_id'] . '\''; } if ($criteria['training_organizer_id'] or $criteria['training_organizer_id'] === '0') { $where[] = ' pt.training_organizer_option_id = \'' . $criteria['training_organizer_id'] . '\''; } if ($criteria['training_topic_id'] or $criteria['training_topic_id'] === '0') { $where[] = ' ttopic.training_topic_option_id = \'' . $criteria['training_topic_id'] . '\''; } if ($criteria['facility_type_id'] or $criteria['facility_type_id'] === '0') { $where[] = ' pt.type_option_id = \'' . $criteria['facility_type_id'] . '\''; } if ($criteria['facility_sponsor_id'] or $criteria['facility_sponsor_id'] === '0') { $where[] = ' pt.sponsor_option_id = \'' . $criteria['facility_sponsor_id'] . '\''; } if ($criteria['training_level_id']) { $where[] = ' pt.training_level_option_id = \'' . $criteria['training_level_id'] . '\''; } if ($criteria['training_pepfar_id'] or $criteria['training_pepfar_id'] === '0') { $where[] = ' tpep.training_pepfar_categories_option_id = \'' . $criteria['training_pepfar_id'] . '\''; } if (intval($criteria['end-year']) and $criteria['start-year']) { $startDate = $criteria['start-year'] . '-' . $criteria['start-month'] . '-' . $criteria['start-day']; $endDate = $criteria['end-year'] . '-' . $criteria['end-month'] . '-' . $criteria['end-day']; $where[] = ' training_start_date >= \'' . $startDate . '\' AND training_start_date <= \'' . $endDate . '\' '; } if ($criteria['is_tot'] or $criteria['is_tot'] === '0') { $where[] = ' pt.is_tot = ' . $criteria['is_tot']; } if ($where) { $sql .= ' WHERE ' . implode(' AND ', $where); } if ($criteria['doCount']) { $groupBy = array(); if ($criteria['showFacility']) { $groupBy[] = ' pt.facility_id'; } if ($criteria['showTrainingTitle']) { $groupBy[] = ' pt.training_title_option_id'; } if ($criteria['showProvince']) { $groupBy[] = ' pt.province_id'; } if ($criteria['showDistrict']) { $groupBy[] = ' pt.district_id'; } if ($criteria['showCadre']) { $groupBy[] = ' pt.id'; } if ($criteria['showRegionC']) { $groupBy[] = ' pt.region_c_id'; } if ($criteria['showLocation']) { $groupBy[] = ' pt.training_location_id'; } if ($criteria['showOrganizer']) { $groupBy[] = ' pt.training_organizer_option_id'; } if ($criteria['showTopic']) { $groupBy[] = ' ttopic.training_topic_option_id'; } if ($criteria['showLevel']) { $groupBy[] = ' pt.training_level_option_id'; } if ($criteria['showPepfar']) { $groupBy[] = ' tpep.training_pepfar_categories_option_id'; } if ($criteria['showType']) { $groupBy[] = ' pt.type_option_id'; } if ($criteria['showSponsor']) { $groupBy[] = ' pt.sponsor_option_id'; } if ($criteria['showTot']) { $groupBy[] = ' pt.is_tot'; } if ($groupBy) { $groupBy = ' GROUP BY ' . implode(', ', $groupBy); } $sql .= $groupBy; } else { if ($criteria['showPepfar'] || $criteria['showTopic']) { $sql .= ' GROUP BY pt.id'; } } $rowArray = $db->fetchAll($sql . ' ORDER BY facility_name ASC '); if ($criteria['doCount']) { $count = 0; foreach ($rowArray as $row) { $count += $row['cnt']; } } else { $count = count($rowArray); } if ($this->_getParam('outputType')) { $this->sendData($this->reportHeaders(false, $rowArray)); } } else { $count = 0; $rowArray = array(); } $criteria['go'] = $this->getSanParam('go'); //not sure why we are getting multiple PEPFARS foreach ($rowArray as $key => $row) { if (isset($row['pepfar_category_phrase'])) { $rowArray[$key]['pepfar_category_phrase'] = implode(',', array_unique(explode(',', $row['pepfar_category_phrase']))); } } $this->viewAssignEscaped('results', $rowArray); $this->view->assign('count', $count); $this->view->assign('criteria', $criteria); //facilities list $fArray = OptionList::suggestionList('facility', array('facility_name', 'id'), false, 9999); $facilitiesArray = array(); foreach ($fArray as $key => $val) { if ($val['id'] != 0) { $facilitiesArray[] = $val; } } $this->viewAssignEscaped('facilities', $facilitiesArray); //locations $locations = Location::getAll(); $this->viewAssignEscaped('locations', $locations); //facility types $typesArray = OptionList::suggestionList('facility_type_option', 'facility_type_phrase', false, false); $this->viewAssignEscaped('facility_types', $typesArray); //sponsor types $sponsorsArray = OptionList::suggestionList('facility_sponsor_option', 'facility_sponsor_phrase', false, false); $this->viewAssignEscaped('facility_sponsors', $sponsorsArray); //course //$courseArray = Course::suggestionList(false,10000); //$this->viewAssignEscaped('courses',$courseArray); //location // location drop-down $tlocations = TrainingLocation::selectAllLocations($this->setting('num_location_tiers')); $this->viewAssignEscaped('tlocations', $tlocations); //organizers $organizersArray = OptionList::suggestionList('training_organizer_option', 'training_organizer_phrase', false, false, false); $this->viewAssignEscaped('organizers', $organizersArray); //topics $topicsArray = OptionList::suggestionList('training_topic_option', 'training_topic_phrase', false, false, false); $this->viewAssignEscaped('topics', $topicsArray); //levels $levelArray = OptionList::suggestionList('training_level_option', 'training_level_phrase', false, false); $this->viewAssignEscaped('levels', $levelArray); //pepfar $organizersArray = OptionList::suggestionList('training_pepfar_categories_option', 'pepfar_category_phrase', false, false, false); $this->viewAssignEscaped('pepfars', $organizersArray); //facilities list $rowArray = OptionList::suggestionList('facility', array('facility_name', 'id'), false, 9999); $facilitiesArray = array(); foreach ($rowArray as $key => $val) { if ($val['id'] != 0) { $facilitiesArray[] = $val; } } $this->viewAssignEscaped('facilities', $facilitiesArray); }
public function searchAction() { if (!$this->hasACL('edit_employee')) { $this->doNoAccessError(); } $criteria = $this->getAllParams(); if ($criteria['go']) { // process search $where = array(); list($a, $location_tier, $location_id) = $this->getLocationCriteriaValues($criteria); list($locationFlds, $locationsubquery) = Location::subquery($this->setting('num_location_tiers'), $location_tier, $location_id); $sql = "SELECT DISTINCT\r\n\t\t\t\t\tpartner.id,partner.partner,partner.location_id," . implode(',', $locationFlds) . "\r\n\t\t\t\t\t,GROUP_CONCAT(funderopt.funder_phrase) as funder\r\n\t\t\t\t\t,GROUP_CONCAT(funders.funder_end_date) as funding_end_date\r\n\t\t\t\t\t,GROUP_CONCAT(subp.partner) as subpartners\r\n\t\t\t\t\tFROM partner LEFT JOIN ({$locationsubquery}) as l ON l.id = partner.location_id\r\n\t\t\t\t\tLEFT JOIN partner_to_funder funders ON partner.id = funders.partner_id\r\n\t\t\t\t\tLEFT JOIN partner_funder_option funderopt ON funders.partner_funder_option_id = funderopt.id\r\n\t\t\t\t\tLEFT JOIN partner_to_subpartner subpartners ON subpartners.partner_id = partner.id\r\n\t\t\t\t\tLEFT JOIN partner subp ON subp.id = subpartners.subpartner_id "; // 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' #if($org_allowed_ids) # $where[] = " 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 #if ($site_orgs) # $where[] = " partner.organizer_option_id in ($site_orgs) "; $locationWhere = $this->getLocationCriteriaWhereClause($criteria, '', ''); if ($locationWhere) { $where[] = $locationWhere; } if ($criteria['subpartner_id']) { $where[] = 'subpartners.subpartner_id = ' . $criteria['subpartner_id']; } if ($criteria['partner_id']) { $where[] = 'partner.id = ' . $criteria['partner_id']; } if ($criteria['start_date']) { $where[] = 'funder_end_date >= \'' . $this->_date_to_sql($criteria['start_date']) . ' 00:00:00\''; } if ($criteria['end_date']) { $where[] = 'funder_end_date <= \'' . $this->_date_to_sql($criteria['end_date']) . ' 23:59:59\''; } if (count($where)) { $sql .= ' WHERE ' . implode(' AND ', $where); } $sql .= ' GROUP BY partner.id '; $db = $this->dbfunc(); $rows = $db->fetchAll($sql); $this->viewAssignEscaped('results', $rows); $this->view->assign('count', count($rows)); } // assign form drop downs $this->view->assign('status', $status); $this->viewAssignEscaped('criteria', $criteria); $this->viewAssignEscaped('locations', Location::getAll()); $this->view->assign('partners', DropDown::generateHtml('partner', 'partner', $criteria['partner_id'], false, $this->view->viewonly, false)); $this->view->assign('subpartners', DropDown::generateHtml('partner', 'partner', $criteria['subpartner_id'], false, $this->view->viewonly, false, true, array('name' => 'subpartner_id'), true)); }
public function searchAction() { require_once 'models/table/OptionList.php'; //facilities list $criteria = array(); list($criteria, $location_tier, $location_id) = $this->getLocationCriteriaValues($criteria); $criteria['facility_name'] = $this->getSanParam('facility_name'); $criteria['type_id'] = $this->getSanParam('type_id'); $criteria['sponsor_id'] = $this->getSanParam('sponsor_id'); $criteria['outputType'] = $this->getSanParam('outputType'); $criteria['go'] = $this->getSanParam('go'); if ($criteria['go']) { $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $num_locs = $this->setting('num_location_tiers'); list($field_name, $location_sub_query) = Location::subquery($num_locs, $location_tier, $location_id, true); $sql = 'SELECT facility_sponsor_option.facility_sponsor_phrase, facility.location_id, facility_type_option.facility_type_phrase, facility.facility_name, facility.id , ' . implode(',', $field_name) . ' FROM facility LEFT JOIN (' . $location_sub_query . ') as l ON facility.location_id = l.id LEFT OUTER JOIN facility_sponsor_option ON facility.sponsor_option_id = facility_sponsor_option.id LEFT OUTER JOIN facility_type_option ON facility.type_option_id = facility_type_option.id '; $where = array(); $where[] = ' facility.is_deleted = 0 '; $locationWhere = $this->getLocationCriteriaWhereClause($criteria, '', ''); if ($locationWhere) { $where[] = $locationWhere; } if ($criteria['type_id'] or $criteria['type_id'] === '0') { $where[] = ' type_option_id = "' . $criteria['type_id'] . '"'; } if ($criteria['sponsor_id'] or $criteria['sponsor_id'] === '0') { $where[] = ' sponsor_option_id = ' . $criteria['sponsor_id'] . ' '; } if ($criteria['facility_name']) { $where[] = " facility_name = '" . mysql_escape_string($criteria['facility_name']) . "'"; } if ($where) { $sql .= ' WHERE ' . implode(' AND ', $where); } $sql .= " ORDER BY " . " facility_name ASC "; $rowArray = $db->fetchAll($sql); if ($criteria['outputType']) { $this->sendData($rowArray); } $this->viewAssignEscaped('results', $rowArray); $this->view->assign('count', count($rowArray)); } $this->view->assign('criteria', $criteria); //facility name $nameArray = OptionList::suggestionListValues('facility', 'facility_name', false, false, false); $this->viewAssignEscaped('facility_names', $nameArray); //locations $this->viewAssignEscaped('locations', Location::getAll()); //facility types $typesArray = OptionList::suggestionList('facility_type_option', 'facility_type_phrase', false, false); $this->viewAssignEscaped('facility_types', $typesArray); //sponsor types $sponsorsArray = OptionList::suggestionList('facility_sponsor_option', 'facility_sponsor_phrase', false, false); $this->viewAssignEscaped('facility_sponsors', $sponsorsArray); }
public function facilitiesNewFacilitiesAction() { require_once 'views/helpers/Location.php'; $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $criteria = array(); list($criteria, $location_tier, $location_id) = $this->getLocationCriteriaValues($criteria); $num_locs = $this->setting('num_location_tiers'); list($field_name, $location_sub_query) = Location::subquery($num_locs, $location_tier, $location_id); $rows = $db->fetchAll("\r\n\t\t\tselect loc.*,facility.*,types.facility_type_phrase,sponsors.facility_sponsor_phrase,facility.id as id\r\n\t\t\tfrom facility\r\n\t\t\tleft join ({$location_sub_query}) as loc on loc.id = location_id\r\n\t\t\tleft join facility_type_option as types on types.id = type_option_id\r\n\t\t\tleft join facility_sponsor_option as sponsors on sponsors.id = sponsor_option_id\r\n\t\t\twhere facility.approved is null and facility.is_deleted = 0\r\n\t\t\torder by facility_name"); $go = $this->getSanParam('go'); if ($go) { require_once 'FacilityController.php'; $c = new FacilityController($this->getRequest(), $this->getResponse()); $c->searchAction(); } // fill form dropdowns $this->viewAssignEscaped('primary_results', $rows); // facility name $nameArray = OptionList::suggestionListValues('facility', 'facility_name', false, false, false); $this->viewAssignEscaped('facility_names', $nameArray); // locations $this->viewAssignEscaped('locations', Location::getAll()); // facility types $typesArray = OptionList::suggestionList('facility_type_option', 'facility_type_phrase', false, false); $this->viewAssignEscaped('facility_types', $typesArray); // sponsor types $sponsorsArray = OptionList::suggestionList('facility_sponsor_option', 'facility_sponsor_phrase', false, false); $this->viewAssignEscaped('facility_sponsors', $sponsorsArray); }
public function doMySearch() { $helper = new Helper(); require_once 'models/table/Person.php'; if (!$this->hasACL('view_people') and !$this->hasACL('edit_people')) { $this->doNoAccessError(); } $criteria = array(); list($criteria, $location_tier, $location_id) = $this->getLocationCriteriaValues($criteria); $criteria['facility_name'] = $this->getSanParam('facility_name'); $criteria['facilityInput'] = $this->getSanParam('facilityInput'); $criteria['first_name'] = $this->getSanParam('first_name'); $criteria['last_name'] = $this->getSanParam('last_name'); $criteria['training_title_option_id'] = $this->getSanParam('training_title_option_id'); $criteria['persal'] = $this->getSanParam('persal'); $criteria['person_type'] = $this->getSanParam('person_type'); $criteria['is_complete'] = $this->getSanParam('is_complete'); if (!$criteria['person_type']) { $criteria['person_type'] = 'is_participant'; } // $criteria['type_id'] = $this->getSanParam('trainer_type_id'); $criteria['qualification_id'] = $this->getSanParam('qualification_id'); $criteria['outputType'] = $this->getSanParam('outputType'); // $criteria['language_id'] = $this->getSanParam('trainer_language_id'); $criteria['go'] = $this->getSanParam('go'); if ($criteria['go']) { $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $num_locs = $this->setting('num_location_tiers'); list($field_name, $location_sub_query) = Location::subquery($num_locs, $location_tier, $location_id, true); if ($criteria['person_type'] == 'is_everyone') { // left join instead of inner for everyone $sql = ' SELECT DISTINCT p.id, p.last_name, p.middle_name, p.first_name, p.gender, p.birthdate, q.qualification_phrase, ' . implode(',', $field_name) . ' ,q.parent_id, (SELECT COUNT(`comp`.`id`) FROM `comp` WHERE `comp`.`person` = `p`.`id` AND `comp`.`active` = \'Y\') `cmp`,p.comments as "persal",IFNULL(cmpr.res,10) `res` FROM person as p LEFT JOIN person_qualification_option as q ON p.primary_qualification_option_id = q.id LEFT JOIN facility as f ON p.facility_id = f.id LEFT JOIN compres as cmpr ON cmpr.person = p.id AND cmpr.active=\'Y\' LEFT JOIN (' . $location_sub_query . ') as l ON f.location_id = l.id '; } else { # removing from query, filtering happens on front-end #if($criteria ['is_complete']=='is_complete'){ # $sql = 'select DISTINCT p.id, p.last_name, p.middle_name, p.first_name, p.gender, p.birthdate, q.qualification_phrase, '.implode(',',$field_name).',q.parent_id, (SELECT COUNT(`comp`.`id`) FROM `comp` WHERE `comp`.`person` = `p`.`id` AND `comp`.`active` = \'Y\') `cmp`,p.comments as "persal", cmpr.res from person as p, person_qualification_option as q, facility as f, ('.$location_sub_query.') as l, compres as cmpr'; #} else { $sql = 'select DISTINCT p.id, p.last_name, p.middle_name, p.first_name, p.gender, p.birthdate, q.qualification_phrase, ' . implode(',', $field_name) . ',q.parent_id, (SELECT COUNT(`comp`.`id`) FROM `comp` WHERE `comp`.`person` = `p`.`id` AND `comp`.`active` = \'Y\') `cmp`,p.comments as "persal", IFNULL((SELECT `res` FROM `compres` WHERE `compres`.`person` = `p`.`id` AND `compres`.`active` = \'Y\'),10) `res` from person as p, person_qualification_option as q, facility as f, (' . $location_sub_query . ') as l'; #} } if ($criteria['person_type'] == 'is_participant') { $sql .= ', person_to_training as ptt '; } if ($criteria['person_type'] == 'is_trainer') { $sql .= ', trainer as trn'; if ($criteria['training_title_option_id']) { $sql .= ', training_to_trainer as ttt '; } } $where = array('p.is_deleted = 0'); /* 'f.location_id = l.id'); */ // bugfix - is shrinkings results if ($criteria['person_type'] != 'is_everyone') { // was left joined (see above) $where[] = 'p.primary_qualification_option_id = q.id and p.facility_id = f.id and f.location_id = l.id '; } $locationWhere = $this->getLocationCriteriaWhereClause($criteria, '', 'pt'); if ($locationWhere) { $where[] = $locationWhere; } # removing from query, filtering happens on front-end #if($criteria ['is_complete']=='is_complete'){ # $where []= 'cmpr.person = p.id'; #} if ($criteria['person_type'] == 'is_participant') { $where[] = 'p.id = ptt.person_id '; } if ($criteria['person_type'] == 'is_trainer') { $where[] = 'p.id = trn.person_id '; } if ($criteria['person_type'] == 'is_unattached_person') { $where[] = 'p.id NOT IN (SELECT person_id FROM trainer) AND p.id NOT IN (SELECT person_id FROM person_to_training) '; } if ($criteria['facilityInput']) { $where[] = ' p.facility_id = "' . $criteria['facilityInput'] . '"'; } if ($criteria['training_title_option_id'] or $criteria['training_title_option_id'] === '0') { $sql .= ', training as tr '; if ($criteria['person_type'] == 'is_participant') { $where[] = ' p.id = ptt.person_id AND ptt.training_id = tr.id AND tr.training_title_option_id = ' . $criteria['training_title_option_id'] . ' '; } if ($criteria['person_type'] == 'is_trainer') { $where[] = ' p.id = trn.person_id AND trn.person_id = ttt.trainer_id AND ttt.training_id = tr.id AND tr.training_title_option_id = ' . $criteria['training_title_option_id'] . ' '; } } if ($criteria['qualification_id'] or $criteria['qualification_id'] === '0') { $where[] = '(primary_qualification_option_id = ' . $criteria['qualification_id'] . ' OR primary_qualification_option_id IN (SELECT id FROM person_qualification_option WHERE parent_id = ' . $criteria['qualification_id'] . ')) '; } if ($criteria['first_name']) { $where[] = 'p.first_name LIKE "' . $criteria['first_name'] . '%"'; } if ($criteria['last_name']) { $where[] = 'p.last_name LIKE "' . $criteria['last_name'] . '%"'; } # removing from query, filtering happens on front-end #if($criteria ['is_complete']=='is_complete'){ # $where []= 'cmpr.active = \'Y\''; #} #if($criteria ['is_complete']=='is_complete'){ # $where []= 'cmpr.res = 0'; #} if ($where) { $sql .= ' WHERE ' . implode(' AND ', $where); } $sql .= " ORDER BY " . " `p`.`last_name` ASC, " . " `p`.`first_name` ASC"; #echo "Search query = " . $sql . "<br>"; $rowArray = $db->fetchAll($sql); foreach ($rowArray as $key => $row) { if (strpos($rowArray[$key]['qualification_phrase'], "_Ot") == 1) { $rowArray[$key]['qualification_phrase'] = substr($rowArray[$key]['qualification_phrase'], 2); } if (strpos(strrev($rowArray[$key]['qualification_phrase']), "_") == 1) { $rowArray[$key]['qualification_phrase'] = strrev(substr(strrev($rowArray[$key]['qualification_phrase']), 2)); } } $_arr = array(); foreach ($rowArray as $key => $row) { $comps = $helper->getPersonCompetencies($row['id'], true); $row['comps'] = $comps; $_arr[$key] = $row; } $rowArray = $_arr; foreach ($rowArray as $key => $row) { $splt = split("§", $rowArray[$key]['persal']); if (strlen($splt[1]) > 0) { $rowArray[$key]['persal'] = $splt[1]; if (strlen($criteria['persal']) > 0) { if (strcasecmp($splt[1], $criteria['persal']) == 0) { } else { unset($rowArray[$key]); } } } else { $rowArray[$key]['persal'] = ''; } } if ($criteria['outputType']) { foreach ($rowArray as $key => $row) { unset($rowArray[$key]['cmp']); unset($rowArray[$key]['parent_id']); } $this->sendData($rowArray); } foreach ($rowArray as $key => $row) { if (isset($row['gender']) and $row['gender']) { $rowArray[$key]['gender'] = t(trim($row['gender'])); } } $this->viewAssignEscaped('results', $rowArray); $this->view->assign('count', count($rowArray)); } $this->view->assign('criteria', $criteria); //locations $this->viewAssignEscaped('locations', Location::getAll()); //training titles require_once 'models/table/TrainingTitleOption.php'; $titleArray = TrainingTitleOption::suggestionList(false, 10000); $this->viewAssignEscaped('courses', $titleArray); //types $qualificationsArray = OptionList::suggestionListHierarchical('person_qualification_option', 'qualification_phrase', false, false); $this->viewAssignEscaped('qualifications', $qualificationsArray); //facilities list $rowArray = OptionList::suggestionList('facility', array('facility_name', 'id'), false, 9999); $facilitiesArray = array(); foreach ($rowArray as $key => $val) { if ($val['id'] != 0) { $facilitiesArray[] = $val; } } $this->viewAssignEscaped('facilities', $facilitiesArray); }
public function partnersAction() { require_once 'models/table/Helper.php'; require_once 'views/helpers/FormHelper.php'; require_once 'views/helpers/DropDown.php'; require_once 'views/helpers/Location.php'; require_once 'views/helpers/CheckBoxes.php'; require_once 'views/helpers/TrainingViewHelper.php'; $criteria = $this->getAllParams(); if ($criteria['go']) { $where = array(); $criteria['last_selected_rgn'] = regionFiltersGetLastID('', $criteria); list($a, $location_tier, $location_id) = $this->getLocationCriteriaValues($criteria); list($locationFlds, $locationsubquery) = Location::subquery($this->setting('num_location_tiers'), $location_tier, $location_id); $sql = "SELECT\r\n\t\t\t\t\tpartner.*,\r\n\t\t\t\t\tpartner.id,partner.partner,partner.location_id," . implode(',', $locationFlds) . "\r\n\t\t\t\t\t,GROUP_CONCAT(distinct facility.facility_name) as facilities\r\n\t\t\t\t\t,CASE WHEN annual_cost REGEXP '[^!0-9,\\.][0-9\\.,]+' THEN SUBSTRING(annual_cost, 2) ELSE annual_cost END AS 'annual_cost_to_compare'\r\n\t\t\t\t\t,COUNT(e.id) AS pcnt\r\n\t\t\t\t\tFROM partner LEFT JOIN ({$locationsubquery}) as l ON l.id = partner.location_id\r\n\t\t\t\t\tLEFT JOIN partner_to_funder funders ON partner.id = funders.partner_id\r\n\t\t\t\t\tLEFT JOIN partner_funder_option funderopt ON funders.partner_funder_option_id = funderopt.id\r\n\t\t\t\t\tLEFT JOIN partner_to_subpartner subpartners ON subpartners.partner_id = partner.id\r\n\t\t\t\t\tLEFT JOIN employee e on e.partner_id = partner.id\r\n\t\t\t\t\tLEFT JOIN facility ON e.site_id = facility.id\r\n\t\t\t\t\t"; if ($criteria['facility_type_option_id']) { $sql .= " LEFT JOIN facility_type_option fto ON fto.id = facility.type_option_id "; } // 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' #if ($org_allowed_ids) $where[] = "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 if ($site_orgs) { $where[] = "partner.organizer_option_id in ({$site_orgs})"; } // criteria if ($criteria['partner_id']) { $where[] = 'partner.id = ' . $criteria['partner_id']; } if ($criteria['last_selected_rgn']) { $where[] = 'province_name is not null'; } // bugfix - location subquery is not working like a inner join or where, not sure why if ($criteria['facilityInput']) { $where[] = 'facility.id = ' . $criteria['facilityInput']; } if ($criteria['facility_type_option_id']) { $where[] = 'facility.type_option_id = ' . $criteria['facility_type_option_id']; } if ($criteria['employee_qualification_option_id']) { $where[] = 'employee_qualification_option_id = ' . $criteria['employee_qualification_option_id']; } if ($criteria['employee_category_option_id']) { $where[] = 'employee_category_option_id = ' . $criteria['employee_category_option_id']; } if ($criteria['hours_min']) { $where[] = 'e.funded_hours_per_week >=' . $criteria['hours_min']; } if ($criteria['hours_max']) { $where[] = 'e.funded_hours_per_week <=' . $criteria['hours_min']; } if ($criteria['cost_min']) { $where[] = 'e.annual_cost_to_compare >=' . $criteria['cost_min']; } if ($criteria['cost_max']) { $where[] = 'e.annual_cost_to_compare <=' . $criteria['cost_max']; } if ($criteria['employee_role_option_id']) { $where[] = 'funder_end_date >= \'' . $this->_date_to_sql($criteria['start_date']) . ' 00:00:00\''; } if ($criteria['partner_importance_option_id']) { $where[] = 'partner_importance_option_id = ' . $criteria['partner_importance_option_id']; } if ($criteria['start_date']) { $where[] = 'funder_end_date >= \'' . $this->_date_to_sql($criteria['start_date']) . ' 00:00:00\''; } if ($criteria['end_date']) { $where[] = 'funder_end_date <= \'' . $this->_date_to_sql($criteria['end_date']) . ' 23:59:59\''; } if ($criteria['employee_transition_option_id']) { $where[] = 'employee_transition_option_id = ' . $criteria['employee_transition_option_id']; } if ($criteria['transition_confirmed']) { $where[] = 'transition_confirmed = 1'; } if (count($where)) { $sql .= ' WHERE ' . implode(' AND ', $where); } $sql .= ' GROUP BY partner.id '; $db = $this->dbfunc(); $rowArray = $db->fetchAll($sql); $this->viewAssignEscaped('results', $rowArray); $this->view->assign('count', count($rowArray)); if ($criteria['outputType']) { $this->sendData($this->reportHeaders(false, $rowArray)); } } // assign form drop downs $this->view->assign('status', $status); $this->view->assign('criteria', $criteria); $this->view->assign('pageTitle', t('Reports')); $this->viewAssignEscaped('locations', Location::getAll()); $this->view->assign('partners', DropDown::generateHtml('partner', 'partner', $criteria['partner_id'], false, $this->view->viewonly, false)); //table, col, selected_value $this->view->assign('subpartners', DropDown::generateHtml('partner', 'partner', $criteria['subpartner_id'], false, $this->view->viewonly, false, true, array('name' => 'subpartner_id'), true)); $this->view->assign('importance', DropDown::generateHtml('partner_importance_option', 'importance_phrase', $criteria['partner_importance_option_id'], false, $this->view->viewonly, false)); $this->view->assign('transitions', DropDown::generateHtml('employee_transition_option', 'transition_phrase', $criteria['employee_transition_option_id'], false, $this->view->viewonly, false)); $this->view->assign('incomingPartners', DropDown::generateHtml('partner', 'partner', $criteria['incoming_partner'], false, $this->view->viewonly, false, true, array('name' => 'incoming_partner'), true)); $helper = new Helper(); $this->viewAssignEscaped('facilities', $helper->getFacilities()); $this->view->assign('facilitytypes', DropDown::generateHtml('facility_type_option', 'facility_type_phrase', $criteria['facility_type_option_id'], false, $this->view->viewonly, false)); $this->view->assign('cadres', DropDown::qualificationsDropDown('employee_qualification_option_id', $criteria['employee_qualification_option_id'])); $this->view->assign('categories', DropDown::generateHtml('employee_category_option', 'category_phrase', $criteria['employee_category_option_id'], false, $this->view->viewonly, false)); $this->view->assign('roles', DropDown::generateHtml('employee_role_option', 'role_phrase', $criteria['employee_role_option_id'], false, $this->view->viewonly, false)); $this->view->assign('transitions', DropDown::generateHtml('employee_transition_option', 'transition_phrase', $criteria['employee_transition_option_id'], false, $this->view->viewonly, false)); }