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 getJobsByKeywordTypeAndSortedBy($keywords, $type_id, $sort_by) { $query = new QueryObject(new Job()); $now = new DateTime(); $six_months_ago = new DateTime(); $post_date = $six_months_ago->sub(new DateInterval('P6M')); $query->addAndCondition(QueryCriteria::equal('IsActive', 1)); $query->addAndCondition(QueryCriteria::greaterOrEqual('PostedDate', $post_date->format('Y-m-d H:i:s'))); $query->addAndCondition(QueryCriteria::greaterOrEqual('ExpirationDate', $now->format('Y-m-d H:i:s'))); if (!empty($keywords)) { $query->addAndCondition(QueryCompoundCriteria::compoundOr([QueryCriteria::like('Title', trim($keywords)), QueryCriteria::like('Description', trim($keywords))])); } if (intval($type_id) > 0) { $query->addAndCondition(QueryCriteria::equal('TypeID', $type_id)); } if (!empty($sort_by)) { switch (strtolower($sort_by)) { case 'coa': $query = $query->addOrder(QueryOrder::desc('IsCOANeeded')); break; case 'foundation': $query = $query->addOrder(QueryOrder::desc('IsFoundationJob')); break; case 'company': $query = $query->addOrder(QueryOrder::asc('CompanyName')); break; case 'posted': $query = $query->addOrder(QueryOrder::desc('PostedDate')); $query = $query->addOrder(QueryOrder::desc('ID')); break; case 'location': $query = $query->addOrder(QueryOrder::asc('LocationType')); break; } } list($jobs, $size) = $this->getAll($query, 0, PHP_INT_MAX); return new ArrayList($jobs); }
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; }
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; }
/** * @param SS_HTTPRequest $request * @param string $template_class * @param string $ss_tpl_name * @return array */ private function buildList(SS_HTTPRequest $request, $template_class = 'SurveyTemplate', $ss_tpl_name = 'SurveyBuilderListSurveys') { Requirements::javascript('themes/openstack/javascript/querystring.jquery.js'); Requirements::javascript('survey_builder/js/survey.sangria.surveys.list.filter.js'); $query_templates = new QueryObject(new SurveyTemplate()); $query_templates->addAndCondition(QueryCriteria::equal('ClassName', $template_class)); list($templates, $count) = $this->survey_template_repository->getAll($query_templates, 0, PHP_INT_MAX); $page = intval($request->getVar('page')); $survey_template_id = intval($request->getVar('survey_template_id')); $question_id = intval($request->getVar('question_id')); $question_value = Convert::raw2sql($request->getVar('question_value')); $question_value2 = Convert::raw2sql($request->getVar('question_value2')); $question_value = !empty($question_value) ? $question_value : $question_value2; $order = Convert::raw2sql($request->getVar('order')); $order_dir = Convert::raw2sql($request->getVar('dir')); if ($page === 0) { $page = 1; } $offset = ($page - 1) * self::SurveysPageSize; $sort_fields = ['id' => 'ID', 'created' => 'Created', 'updated' => 'LastEdited']; $query_surveys = new QueryObject(new Survey()); $selected_template = $survey_template_id > 0 ? $this->survey_template_repository->getById($survey_template_id) : $templates[0]; if ($survey_template_id === 0) { Controller::curr()->redirect($request->getURL(true) . '?survey_template_id=' . $selected_template->ID); } $query_surveys->addAndCondition(QueryCriteria::id('Survey.TemplateID', $selected_template->getIdentifier()))->addAndCondition(QueryCriteria::id('Survey.IsTest', 0)); if ($question_id > 0 && !empty($question_value)) { // filter by question ... $query_surveys->addAlias(QueryAlias::create('Steps')->addAlias(QueryAlias::create('Answers')->addAlias(QueryAlias::create('Question')))); $query_surveys->addAndCondition(QueryCompoundCriteria::compoundAnd([QueryCriteria::id('SurveyQuestionTemplate.ID', $question_id), QueryCriteria::like('SurveyAnswer.Value', $question_value)])); } if (empty($order)) { $query_surveys->addOrder(QueryOrder::asc('ID')); } else { if ($order_dir === 'ASC') { $query_surveys->addOrder(QueryOrder::asc($sort_fields[$order])); } else { $query_surveys->addOrder(QueryOrder::desc($sort_fields[$order])); } } list($surveys, $count_surveys) = $this->survey_repository->getAll($query_surveys, $offset, self::SurveysPageSize); // build pager $pages = ''; $max_page = intval(ceil($count_surveys / self::SurveysPageSize)); for ($i = 1; $i < $max_page; $i++) { $pages .= sprintf("<li %s ><a href=\"%s?%s\">%s</a></li>", $page === $i ? "class=\"active\"" : "", $this->owner->Link($ss_tpl_name), $this->getPagerLink($i), $i); } $pager = <<<HTML <nav> <ul class="pagination pagination-sm"> {$pages} </ul> </nav> HTML; $result = ['Templates' => new ArrayList($templates), 'Surveys' => new ArrayList($surveys), 'Questions' => new ArrayList($selected_template->getAllFilterableQuestions()), 'Pager' => $pager]; return $result; }