/**
  * 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;
    }