public function search() { $output = ''; if (!$this->isJson()) { return $this->httpError(500, 'Content Type not allowed'); } try { $search_params = json_decode($this->request->getBody(), true); $query = new QueryObject(new Consultant()); $query->addAlias(QueryAlias::create('Company')); $query->addAndCondition(QueryCriteria::equal("Active", true)); $location = @explode(',', @$search_params['location_term']); $name = @$search_params['name_term']; $service = @$search_params['service_term']; $region = @$search_params['region_term']; if (!empty($name)) { $query->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name)))); } if (!empty($service) || !empty($region)) { $query->addAlias(QueryAlias::create('ServicesOffered')); if (!empty($service)) { $query->addAndCondition(QueryCriteria::like("ConsultantServiceOfferedType.Type", $service)); } if (!empty($region)) { $region_id = Region::get()->filter('Name', $region)->first()->ID; $query->addAndCondition(QueryCriteria::id("Consultant_ServicesOffered.RegionID", $region_id)); } } if (is_array($location) && !empty($location[0])) { $query->addAlias(QueryAlias::create('Offices')); $query->addAndCondition(QueryCriteria::like("Office.City", $location[0])); } $countries = array_flip(Geoip::getCountryDropDown()); if (is_array($location) && count($location) == 2) { $country = trim($location[1]); if (!empty($country) && array_key_exists($country, $countries)) { $query->addAndCondition(QueryCriteria::like("Office.Country", $countries[$country])); } } else { if (is_array($location) && count($location) == 3) { $state = trim($location[1]); $country = trim($location[2]); if (!empty($country) && array_key_exists($country, $countries)) { $query->addAndCondition(QueryCriteria::like("Office.Country", $countries[$country])); } if (!empty($state)) { $query->addAndCondition(QueryCriteria::like("Office.State", $state)); } } } list($list, $size) = $this->consultants_repository->getAll($query, 0, 1000); foreach ($list as $public_cloud) { $output .= $public_cloud->renderWith('ConsultantsDirectoryPage_CloudBox', array('ConsultantLink' => $this->Link())); } } catch (Exception $ex) { return $this->httpError(500, 'Server Error'); } return empty($output) ? $this->httpError(404, '') : $output; }
public function search() { $output = ''; if (!$this->isJson()) { return $this->httpError(500, 'Content Type not allowed'); } try { $search_params = json_decode($this->request->getBody(), true); $query = new QueryObject($this->getCloudTypeClass()); $query->addAlias(QueryAlias::create('Company')); $query->addAndCondition(QueryCriteria::equal("Active", true)); $location = @explode(',', @$search_params['location_term']); $name = @$search_params['name_term']; $service = @$search_params['service_term']; if (!empty($name)) { $query->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name)))); } if (!empty($service)) { $service = explode('-', $service); $query->addAlias(QueryAlias::create('Capabilities')->addAlias(QueryAlias::create('ReleaseSupportedApiVersion')->addAlias(QueryAlias::create('OpenStackComponent')))); $query->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('OpenStackComponent.Name', trim($service[0])), QueryCriteria::like('OpenStackComponent.CodeName', trim($service[1]))))); } $query->addAlias(QueryAlias::create('DataCenters', QueryAlias::LEFT)); if (is_array($location) && !empty($location[0])) { $query->addAndCondition(QueryCriteria::like("DataCenterLocation.City", trim($location[0]))); } $countries = array_flip(Geoip::getCountryDropDown()); if (is_array($location) && count($location) == 2) { $country = trim($location[1]); if (!empty($country) && array_key_exists($country, $countries)) { $query->addAndCondition(QueryCriteria::like("DataCenterLocation.Country", $countries[$country])); } } else { if (is_array($location) && count($location) == 3) { $state = trim($location[1]); $country = trim($location[2]); if (!empty($country) && array_key_exists($country, $countries)) { $query->addAndCondition(QueryCriteria::like("DataCenterLocation.Country", $countries[$country])); } if (!empty($state)) { $query->addAndCondition(QueryCriteria::like("DataCenterLocation.State", $state)); } } } list($list, $size) = $this->cloud_repository->getAll($query, 0, 1000); foreach ($list as $public_cloud) { $output .= $public_cloud->renderWith('CloudsDirectoryPage_CloudBox', array('CloudLink' => $this->Link())); } } catch (Exception $ex) { return $this->httpError(500, 'Server Error'); } return empty($output) ? $this->httpError(404, '') : $output; }
public function getDistributions() { if (!$this->canAdmin('implementations')) { return $this->httpError(401, 'Unauthorized: you do not have the proper rights to access this page.'); } $product_name = trim(Convert::raw2sql($this->request->getVar('name'))); $implementation_type_id = intval($this->request->getVar('implementation_type_id')); $company_id = intval($this->request->getVar('company_id')); $sort = $this->request->getVar('sort'); $query = new QueryObject(new CompanyService()); $query_draft = new QueryObject(new CompanyServiceDraft()); $query_draft->addAndCondition(QueryCriteria::equal('LiveServiceID', 0)); if (!empty($product_name)) { $query->addAndCondition(QueryCriteria::like('Name', $product_name)); $query_draft->addAndCondition(QueryCriteria::like('Name', $product_name)); } if ($implementation_type_id > 0) { $query->addAndCondition(QueryCriteria::equal('MarketPlaceType.ID', $implementation_type_id)); $query_draft->addAndCondition(QueryCriteria::equal('MarketPlaceType.ID', $implementation_type_id)); } if ($company_id > 0) { $query->addAndCondition(QueryCriteria::equal('Company.ID', $company_id)); $query_draft->addAndCondition(QueryCriteria::equal('Company.ID', $company_id)); } //set sorting if (!empty($sort)) { $dir = $this->getSortDir('distributions'); $this->sortCompanyService($query, $sort, $dir); $this->sortCompanyService($query_draft, $sort, $dir); } //get distributions $list1 = array(); $list2 = array(); $list3 = array(); $list4 = array(); if ($this->canAdmin('distributions')) { list($list1, $size1) = $this->distribution_repository->getAll($query, 0, 1000); list($list2, $size2) = $this->distribution_draft_repository->getAll($query_draft, 0, 1000); } if ($this->canAdmin('appliances')) { list($list3, $size3) = $this->appliance_repository->getAll($query, 0, 1000); list($list4, $size4) = $this->appliance_draft_repository->getAll($query_draft, 0, 1000); } //return on view model return new ArrayList(array_merge($list1, $list2, $list3, $list4)); }
function search() { $output = ''; if (!$this->isJson()) { return $this->httpError(500, 'Content Type not allowed'); } try { $search_params = json_decode($this->request->getBody(), true); $query1 = new QueryObject(new Distribution()); $query2 = new QueryObject(new Appliance()); $query1->addAlias(QueryAlias::create('Company')); $query2->addAlias(QueryAlias::create('Company')); $name = @$search_params['name_term']; $service = @$search_params['service_term']; if (!empty($name)) { $query1->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name)))); $query2->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name)))); } if (!empty($service)) { $service = explode('-', $service); $query1->addAlias(QueryAlias::create('OpenStackImplementationApiCoverage')->addAlias(QueryAlias::create('OpenStackReleaseSupportedApiVersion')->addAlias(QueryAlias::create('OpenStackComponent')))); $query1->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('OpenStackComponent.Name', trim($service[0])), QueryCriteria::like('OpenStackComponent.CodeName', trim($service[1]))))); $query2->addAlias(QueryAlias::create('OpenStackImplementationApiCoverage')->addAlias(QueryAlias::create('OpenStackReleaseSupportedApiVersion')->addAlias(QueryAlias::create('OpenStackComponent')))); $query2->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('OpenStackComponent.Name', trim($service[0])), QueryCriteria::like('OpenStackComponent.CodeName', trim($service[1]))))); } $query1->addAndCondition(QueryCriteria::equal("Active", true)); $query2->addAndCondition(QueryCriteria::equal("Active", true)); list($list1, $size1) = $this->distribution_repository->getAll($query1, 0, 1000); list($list2, $size2) = $this->appliance_repository->getAll($query2, 0, 1000); $implementations = array_merge($list1, $list2); foreach ($implementations as $implementation) { $type = $implementation->getMarketPlace()->getName() == IDistribution::MarketPlaceType ? 'distribution' : 'appliance'; $output .= $implementation->renderWith('DistributionsDirectoryPage_ImplementationBox', array('DistroLink' => $this->Link("distribution"), 'ApplianceLink' => $this->Link("appliance"))); } } catch (Exception $ex) { return $this->httpError(500, 'Server Error'); } return empty($output) ? $this->httpError(404, '') : $output; }