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