/**
  * Returns all translations for the given file.
  *
  * @param ModelFile $file
  * @param boolean   $onlyUpdated
  * @return array
  */
 public function getTranslationsForFile(ModelFile $file, $onlyUpdated)
 {
     $builder = $this->createQueryBuilder('tu')->select('tu.key, te.content')->leftJoin('tu.translations', 'te')->where('te.file = :file')->setParameter('file', $file->getId())->orderBy('te.id', 'asc');
     if ($onlyUpdated) {
         $builder->andWhere($builder->expr()->gt('te.updatedAt', 'te.createdAt'));
     }
     $results = $builder->getQuery()->getArrayResult();
     $translations = array();
     foreach ($results as $result) {
         $translations[$result['key']] = $result['content'];
     }
     return $translations;
 }
 /**
  * Returns all translations for the given file.
  *
  * @param ModelFile $file
  * @param boolean   $onlyUpdated
  * @return array
  */
 public function getTranslationsForFile(ModelFile $file, $onlyUpdated)
 {
     $builder = $this->createQueryBuilder()->hydrate(false)->select('key', 'translations')->field('translations.file.$id')->equals(new \MongoId($file->getId()))->sort('translations.created_at', 'asc');
     $results = $builder->getQuery()->execute();
     $translations = array();
     foreach ($results as $result) {
         $content = null;
         $i = 0;
         while ($i < count($result['translations']) && null == $content) {
             if ($file->getLocale() == $result['translations'][$i]['locale']) {
                 if ($onlyUpdated) {
                     $updated = $result['translations'][$i]['created_at']->sec < $result['translations'][$i]['updated_at']->sec;
                     $content = $updated ? $result['translations'][$i]['content'] : null;
                 } else {
                     $content = $result['translations'][$i]['content'];
                 }
             }
             $i++;
         }
         if (null != $content) {
             $translations[$result['key']] = $content;
         }
     }
     return $translations;
 }