/** * Return the sql statement - needed for distance query * * @param Tx_Typo3Agencies_Domain_Model_Filter $filter The filter the references must apply to * @param array $latLong Array of latitude and longitude * @param string $nearbyAdditionalWhere * @return array The references */ protected function getStatement(Tx_Typo3Agencies_Domain_Model_Filter $filter, $latLong = array(), $nearbyAdditionalWhere = '') { $where = array(); $where[] = '(first_name <> \'\' OR last_name <> \'\' OR name <> \'\')'; // Membership case $members = $filter->getMembers(); $memberArray = array(0); if (!empty($members)) { foreach ($members as $member) { $memberArray[] = intval($member); } } if (!empty($memberArray)) { $where[] = 'member IN (' . implode(',', $memberArray) . ')'; } // Service case if ($filter->getTrainingService()) { $where[] = 'training_service = ' . intval($filter->getTrainingService()); } if ($filter->getHostingService()) { $where[] = 'hosting_service = ' . intval($filter->getHostingService()); } if ($filter->getDevelopmentService()) { $where[] = 'development_service = ' . intval($filter->getDevelopmentService()); } // Country case if ($filter->getCountry()) { $where[] = 'country = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($filter->getCountry(), 'tx_typo3agencies_domain_model_agency'); } if (!empty($latLong) && $nearbyAdditionalWhere != '') { $where[] = str_replace(array('###LONGITUDE###', '###LATITUDE###'), array(floatval($latLong['long']), floatval($latLong['lat'])), $nearbyAdditionalWhere); } if ($filter->getFeUser() > 0) { $where[] = '(approved = 1 or FIND_IN_SET(administrator, ' . intval($filter->getFeUser()) . '))'; } else { $where[] = 'approved = 1'; } $sql = 'SELECT * FROM tx_typo3agencies_domain_model_agency WHERE ' . implode(' AND ', $where) . $GLOBALS['TSFE']->sys_page->enableFields('tx_typo3agencies_domain_model_agency') . ' ORDER BY member DESC, name ASC, last_name ASC'; return $sql; }