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 draft_pdf() { $html_inner = ''; $marketplace_type = $this->request->param('MARKETPLACETYPE'); $instance_id = intval($this->request->param('ID')); $base = Director::baseFolder(); $query = new QueryObject(); $query->addAndCondition(QueryCriteria::id('ID', $instance_id)); switch (strtolower($marketplace_type)) { case 'distribution': $distribution = $this->distribution_draft_repository->getBy($query); if (!$distribution) { throw new NotFoundEntityException('', ''); } $render = new DistributionSapphireRender($distribution); $distribution->IsPreview = true; $html_inner = $render->pdf(); $css = @file_get_contents($base . "/marketplace/code/ui/admin/css/pdf.css"); break; case 'appliance': $appliance = $this->appliance_draft_repository->getBy($query); $appliance->IsPreview = true; $render = new ApplianceSapphireRender($appliance); $html_inner = $render->pdf(); $css = @file_get_contents($base . "/marketplace/code/ui/admin/css/pdf.css"); break; case 'public_cloud': $public_cloud = $this->public_clouds_draft_repository->getBy($query); $public_cloud->IsPreview = true; if (!$public_cloud) { throw new NotFoundEntityException('', ''); } $render = new PublicCloudSapphireRender($public_cloud); $html_inner = $render->pdf(); $css = @file_get_contents($base . "/marketplace/code/ui/admin/css/pdf.css"); break; case 'private_cloud': $private_cloud = $this->private_clouds_draft_repository->getBy($query); $private_cloud->IsPreview = true; $render = new PrivateCloudSapphireRender($private_cloud); $html_inner = $render->pdf(); $css = @file_get_contents($base . "/marketplace/code/ui/admin/css/pdf.css"); break; case 'consultant': $consultant = $this->consultant_draft_repository->getBy($query); if (!$consultant) { throw new NotFoundEntityException('', ''); } $consultant->IsPreview = true; $render = new ConsultantSapphireRender($consultant); $html_inner = $render->pdf(); $css = @file_get_contents($base . "/marketplace/code/ui/admin/css/pdf.css"); break; default: $this->httpError(404); break; } //create pdf $file = FileUtils::convertToFileName('preview') . '.pdf'; $html_outer = sprintf("<html><head><style>%s</style></head><body><div class='container'>%s</div></body></html>", str_replace("@host", $base, $css), $html_inner); try { $html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8', array(15, 5, 15, 5)); //$html2pdf->addFont('Open Sans', '', $base.'/themes/openstack/assets/fonts/PT-Sans/PTC75F-webfont.ttf'); $html2pdf->setTestIsImage(false); $html2pdf->WriteHTML($html_outer); //clean output buffer ob_end_clean(); $html2pdf->Output($file, "D"); } catch (HTML2PDF_exception $e) { $message = array('errno' => '', 'errstr' => $e->__toString(), 'errfile' => 'UserStory.php', 'errline' => '', 'errcontext' => ''); SS_Log::log($message, SS_Log::ERR); $this->httpError(404, 'There was an error on PDF generation!'); } }
/** * Test if current user can administrate a particular program * use should be training admin of program owner company * @param $training_id * @return bool */ public function canEditTraining($training_id) { $managed_companies = $this->owner->ManagedCompanies(); foreach ($managed_companies as $company) { $groups = $company->getAdminGroupsByMember($this->getIdentifier()); if (is_null($groups) || count($groups) == 0) { continue; } if (array_key_exists(ITraining::MarketPlaceGroupSlug, $groups)) { $query = new QueryObject(new TrainingService()); $query->addAndCondition(QueryCriteria::equal('ClassName', 'TrainingService')); $query->addAndCondition(QueryCriteria::id('ID', (int) $training_id)); $training = $company->Services((string) $query); if ($training && count($training) > 0) { return true; } } } return false; }
/** * @return INews[] */ public function getNewsByID($articleID) { $query = new QueryObject(new News()); $query->addAndCondition(QueryCriteria::id('ID', $articleID)); return $this->getBy($query); }
/** * @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; }