/** * return all news objects since the date * * @param $date * @return mixed */ private function getLastObjects($date) { $locales = array('eng-'); foreach( glob('extension/cluster_*/settings/site.ini*') as $f ) { $ini = eZINI::fetchFromFile( $f ); foreach( $ini->variable('RegionalSettings', 'SiteLanguageList') as $locale ) { if( !in_array(substr($locale, 0, 4), $locales) ) $locales[] = substr($locale, 0, 4); } } $filters = array( "meta_modified_dt:[$date TO NOW]", '('.implode(' OR ', SolrTool::solrLanguageFilter($locales)).')', 'meta_class_identifier_ms:article', 'meta_installation_id_ms:'.eZSolr::installationID() ); $locale = 'eng'; $continue = true; $offset = 0; while($continue) { $params = array( 'indent' => 'on', 'start' => $offset, 'rows' => 2000, 'q' => '', 'fq' => implode( ' AND ', $filters ), 'fl' => 'meta_id_si, meta_name_t, meta_modified_dt', 'qt' => 'ezpublish', 'explainOther' => '', 'hl.fl' => '', 'sort' => 'meta_modified_dt asc' ); $raw = SolrTool::rawSearch($params, 'php', false); $continue = count($raw['response']['docs']); $offset += 2000; foreach($raw['response']['docs'] as $result) { fputcsv( $this->csvFile(), array($result['meta_id_si'], str_replace( array("\n", "\r"), array(' ', ''), $result['meta_name_t'] )) ); if(!isset($lastDate) || $result['meta_modified_dt'] > $lastDate) { $lastDate = $result['meta_modified_dt']; } } } // security overlap to to avoid delayed indexing gap $overlap = eZINI::instance('merck.ini')->variable( 'AnalyticsExportSettings', 'LastDateOverlap' ); $d = gmdate( 'Y-m-d\TH:i:s\Z', strtotime( $lastDate ) - $overlap ); $this->saveNewLastDate($d); return $raw['response']['numFound']; }
/** * @param $publisherFolder PublisherFolder * @return string */ public function publisherFolderFilter ( $publisherFolder ) { $languageFilters = array(); $path = $publisherFolder->attribute('path'); if ( is_array($publisherFolder->attribute('languages')) ) $languages = $publisherFolder->attribute('languages'); else $languages = LocaleTool::languageList(); if ( $publisherFolder->attribute('fallback') ) $languageFilters = SolrTool::solrLanguageFilter( $languages ); else $languageFilters[] = "meta_language_code_ms:{$languages[0]}"; $publisherFilter = '( subattr_publisher_folder___source_id____s:"'.$path.'"' .' AND ( ' . implode(' OR ', $languageFilters) . ' ) )'; //#48332 - get content for quiz_train_your_brain from 13th August 2015 $dateRestrictions = SolrSafeOperatorHelper::clusterIni('MedicalQuizDateRestriction','PublisherFolderDateRestriction','merck.ini'); if(!empty($dateRestrictions) && array_key_exists($path, $dateRestrictions)){ if($dateRestrictions[$path]){ $publisherFilter = '( subattr_publisher_folder___source_id____s:"'.$path.'"' .' AND (attr_online_date_dt:["'.$dateRestrictions[$path].'" TO NOW])' .' AND ( ' . implode(' OR ', $languageFilters) . ' ) )'; } } return $publisherFilter; }