function processOptions($options) { if ($options['clusterIdentifier'] == null) { throw new Exception("No clusters given. Should pass argument clusterIdentifier with value 'all' if all clusters are requested"); } $allClusters = ClusterTool::getAllClusters(); if ($options['clusterIdentifier'] == 'all') { $clusters = $allClusters; } else { $clusters = explode(',', $options['clusterIdentifier']); $clusters = array_filter($clusters, function($v) use ($allClusters) { return in_array($v, $allClusters); }); } $exclude = isset($options['exclude']) ? filter_var($options['exclude'], FILTER_VALIDATE_BOOLEAN) : false; if ($exclude) { $clusters = array_diff($allClusters, $clusters); } $parsedOptions = array( 'clusters' => $clusters, 'exclude' => $exclude, ); return $parsedOptions; }
<?php /* @type $Params string[] */ $applicationIdentifier = $Params['ApplicationIdentifier']; $bannerType = $Params['BannerType']; $clusterAndExtension = isset( $Params['ClusterIdentifier'] ) ? $Params['ClusterIdentifier'] : ClusterTool::clusterIdentifier(); $properClusters = ClusterTool::getAllClusters(); $start = strrpos( $clusterAndExtension, 'cluster_'); $end = strrpos( $clusterAndExtension, '.png'); $clusterIdentifier = $clusterAndExtension; if ( !$end ) { $clusterIdentifier = substr($cluster, $start, $end - $start); } // make sure cluster identifier is correct. if ( !in_array( $clusterIdentifier, $properClusters ) ) { $clusterIdentifier = ClusterTool::clusterIdentifier(); } if( $applicationIdentifier && $bannerType ) { $filename = BannerPathTool::getStaticPath($clusterIdentifier, $applicationIdentifier, $bannerType); if( !empty($filename) && file_exists($filename) ) { if (strrpos($filename, 'png', strlen($filename) - 3)) { header( 'Content-type: image/png' ); } else {
public function importTrial($trialId) { $url = $this->buildUrl('GetTrialDetails', array( 'TrialIDnum' => $trialId, 'username' => self::TRIAL_DETAILS_USERNAME, 'password' => self::TRIAL_DETAILS_PASSWORD, )); $contents = $this->executeCurl($url); $trialData = $this->buildTrialData($trialId, $contents); if ($trialData == null) { return null; } $coreContentFields = array( $trialData['title'], $trialData['details']['scientific_title'], $trialData['details']['sponsor'], $trialData['conditions'], $trialData['details']['interventions'], implode(',', $trialData['country']), $trialData['id'], implode(',', $trialData['details']['secondary_id']), ); $articleData = array( 'meta_installation_id_ms' => keZSolr::installationID(), //'meta_path_id_si' => self::getMetaPathId(), 'meta_guid_ms' => md5('clinical_trials' . $trialData['id']), 'meta_remote_id_ms' => md5('clinical_trials' . $trialData['id']), 'meta_section_id_si' => 1, 'attr_cluster_uk_url_s' => md5('clinical_trials' . $trialData['link']), 'attr_date_dt' => $trialData['details']['update_date'], 'attr_offline_date_dt' => '1970-01-01T01:00:00Z', 'attr_archived_date_dt' => '1970-01-01T01:00:00Z', 'attr_headline_t' => $trialData['title'], 'attr_headline_s' => $trialData['title'], 'attr_headline_lc_s' => iconv('UTF-8', 'ASCII//TRANSLIT', strtolower($trialData['title'])), 'attr_is_invisible_cluster_uk_b' => false, 'attr_depth_cluster_uk_i' => 0, 'attr_relative_depth_i' => 0, 'subattr_customer_type___source_id____s' => self::getCustomerTypes(), 'subattr_language___source_id____s' => 'en', 'subattr_local_application___source_id____s' => $this->application->id, 'subattr_publisher_folder___source_id____s' => "clinical_trials_oncology", 'meta_language_code_ms' => 'eng-GB', 'meta_class_identifier_ms' => 'article', 'attr_exclude_from_search_cluster_uk_b' => false, 'attr_hide_in_search_b' => false, "attr_clinical_trials_details_s" => json_encode($trialData['details']), 'attr_core_content_t' => implode(',', $coreContentFields), 'subattr_recruitment_status___source_id____s' => $trialData['status'], 'attr_clinical_trials_conditions_s' => $trialData['conditions'], 'subattr_gender___source_id____s' => $trialData['sex'], 'attr_clinical_trials_min_age_i' => $trialData['min_age'], 'attr_clinical_trials_max_age_i' => $trialData['max_age'], "attr_clinical_trials_country____s" => $trialData['country'], ); $clusters = ClusterTool::getAllClusters(); foreach ($clusters as $cluster) { $articleData["attr_{$cluster}_url_s"] = $trialData['id']; $articleData["subattr_language_{$cluster}____s"] = 'en'; $articleData['subattr_local_application___source_mixed____s'][] = "{$cluster}##unused##{$this->application->id}"; $articleData["attr_is_invisible_{$cluster}_b"] = false; } $data = json_encode($articleData); $solrIndexationJob = new SolrIndexationJob(); $solrIndexationJob->setAttribute('data', $data); $solrIndexationJob->store(); return true; }