/**
  * Loads emails from an email server and save them into the database
  *
  * @param EmailFolder $folder
  * @param SearchQuery $searchQuery
  */
 protected function loadEmails(EmailFolder $folder, SearchQuery $searchQuery)
 {
     $this->log->notice(sprintf('Query: "%s".', $searchQuery->convertToSearchString()));
     $folder->setSynchronizedAt(new \DateTime('now', new \DateTimeZone('UTC')));
     $emails = $this->manager->getEmails($searchQuery);
     $needFolderFlush = true;
     $count = 0;
     $batch = array();
     foreach ($emails as $email) {
         $count++;
         $batch[] = $email;
         if ($count === self::DB_BATCH_SIZE) {
             $this->saveEmails($batch, $folder);
             $needFolderFlush = false;
             $count = 0;
             $batch = array();
         }
     }
     if ($count > 0) {
         $this->saveEmails($batch, $folder);
         $needFolderFlush = false;
     }
     if ($needFolderFlush) {
         $this->em->flush();
     }
 }