/**
  * {@inheritdoc}
  */
 public function getResult(array $params)
 {
     if (isset($params['filter']) && !is_array($params['filter'])) {
         $params['filter'] = array();
     }
     $total = $this->getCount($params);
     $entities = array();
     if ($total > 0) {
         $entities = $this->getPersistenceHandler()->query(TranslationToken::clazz(), $params);
     }
     return array('success' => true, 'items' => $entities, 'total' => $total);
 }
 public function testImport()
 {
     $tokens = self::$em->getRepository(TranslationToken::clazz())->findAll();
     $this->assertEquals(0, count($tokens));
     $this->launchImportCommand();
     $tokens = self::$em->getRepository(TranslationToken::clazz())->findAll();
     $this->assertEquals(2, count($tokens));
     $token = self::$em->getRepository(TranslationToken::clazz())->findOneBy(array('source' => 'template'));
     $this->assertToken($token);
     $token = self::$em->getRepository(TranslationToken::clazz())->findOneBy(array('source' => 'php-classes'));
     $this->assertToken($token);
     $token = self::$em->getRepository(TranslationToken::clazz())->findOneBy(array('source' => 'undefined'));
     $this->assertFalse($token instanceof TranslationToken);
 }
 public function testUpdateTranslationToken()
 {
     $token = new TranslationToken();
     $token->setSource('test');
     $token->setBundleName('test');
     $token->setDomain('test');
     $token->setTokenName('test');
     self::$em->persist($token);
     self::$em->flush();
     $data = array(array('en', 'test'), array('ru', 'тест'));
     foreach ($data as $trans) {
         $translation = $this->createLanguageTranslationToken($trans[0], $trans[1], $token);
         // postPersist
         $this->compareTranslationsData($token);
         $this->updateLanguageTranslationToken($translation);
         // postUpdate
         $this->compareTranslationsData($token);
     }
 }
 public static function dropDatabase()
 {
     self::$st->dropSchema([self::$em->getClassMetadata(Language::clazz())]);
     self::$st->dropSchema([self::$em->getClassMetadata(TranslationToken::clazz())]);
     self::$st->dropSchema([self::$em->getClassMetadata(LanguageTranslationToken::clazz())]);
 }
 /**
  * @param $source
  * @param $bundleName
  * @param $domain
  * @param $tokenName
  *
  * @return TranslationToken
  */
 private function findOrCreateTranslationToken($source, $bundleName, $domain, $tokenName)
 {
     /* @var EntityManager $em */
     $em = $this->getContainer()->get('doctrine.orm.entity_manager');
     $token = $em->getRepository(TranslationToken::clazz())->findOneBy(array('source' => $source, 'bundleName' => $bundleName, 'domain' => $domain, 'tokenName' => $tokenName));
     if (!$token) {
         $token = new TranslationToken();
         $token->setSource($source);
         $token->setBundleName($bundleName);
         $token->setDomain($domain);
         $token->setTokenName($tokenName);
         $em->persist($token);
         $em->flush();
     }
     return $token;
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $outputFormat = 'yml';
     /* @var EntityManager $em */
     $em = $this->getContainer()->get('doctrine.orm.entity_manager');
     /* @var TranslationWriter $writer */
     $writer = $this->getContainer()->get('translation.writer');
     // check format
     $supportedFormats = $writer->getFormats();
     if (!in_array($outputFormat, $supportedFormats)) {
         $output->writeln('<error>Wrong output format</error>');
         $output->writeln('>>> Supported formats are ' . implode(', ', $supportedFormats) . '.');
         return 1;
     }
     $tokens = $em->getRepository(TranslationToken::clazz())->findBy(array('isObsolete' => false));
     $bundles = array();
     /* @var TranslationToken $token */
     foreach ($tokens as $token) {
         $bundleName = $token->getBundleName();
         if (!isset($bundles[$bundleName])) {
             $bundles[$bundleName] = array();
         }
         $ltts = $token->getLanguageTranslationTokens();
         /* @var LanguageTranslationToken $ltt */
         foreach ($ltts as $ltt) {
             if (!$ltt->getLanguage()->getEnabled()) {
                 continue;
             }
             $locale = $ltt->getLanguage()->getLocale();
             if (!isset($bundles[$bundleName][$locale])) {
                 $bundles[$bundleName][$locale] = new MessageCatalogue($locale);
             }
             $catalogue = $bundles[$bundleName][$locale];
             $catalogue->set($token->getTokenName(), $ltt->getTranslation(), $token->getDomain());
         }
     }
     if (count($bundles)) {
         $fs = new Filesystem();
         $resourcesDir = 'app/Resources';
         $basePath = dirname($this->getContainer()->get('kernel')->getRootdir());
         foreach ($bundles as $bundleName => $catalogues) {
             if (!count($catalogues)) {
                 continue;
             }
             $bundleTransDir = $resourcesDir . '/translations' . '/' . $bundleName;
             $bundleTransPath = $basePath . '/' . $bundleTransDir;
             $output->writeln('>>> ' . $bundleName . ': ' . $bundleTransDir);
             if ($fs->exists($bundleTransPath)) {
                 $output->writeln('    <fg=red>Removing old files</>');
                 $fs->remove($bundleTransPath);
             }
             try {
                 if (!$fs->exists(dirname($bundleTransPath))) {
                     $fs->mkdir(dirname($bundleTransPath));
                     $fs->chmod(dirname($bundleTransPath), 0777);
                 }
                 $fs->mkdir($bundleTransPath);
             } catch (IOExceptionInterface $e) {
                 echo 'An error occurred while creating your directory at ' . $e->getPath();
             }
             $output->writeln('    <fg=green>Creating new files</>');
             foreach ($catalogues as $locale => $catalogue) {
                 $writer->writeTranslations($catalogue, $outputFormat, array('path' => $bundleTransPath));
             }
             $fs->chmod($bundleTransPath, 0777, 00, true);
         }
         $output->writeln('>>> Translations have been successfully compiled');
     } else {
         $output->writeln('>>> Nothing to compile');
     }
 }
 /**
  * @return array
  */
 public function getConfig()
 {
     return array('entity' => TranslationToken::clazz(), 'hydration' => array('groups' => array('list' => ['id', 'source', 'bundleName', 'domain', 'tokenName', 'isObsolete', 'translations']), 'profiles' => array('list')));
 }