| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 
							- <?php
 
- /*
 
-  * This file is part of the Symfony package.
 
-  *
 
-  * (c) Fabien Potencier <fabien@symfony.com>
 
-  *
 
-  * For the full copyright and license information, please view the LICENSE
 
-  * file that was distributed with this source code.
 
-  */
 
- namespace Symfony\Component\Translation\Dumper;
 
- use Symfony\Component\Translation\Exception\InvalidArgumentException;
 
- use Symfony\Component\Translation\Exception\RuntimeException;
 
- use Symfony\Component\Translation\MessageCatalogue;
 
- /**
 
-  * FileDumper is an implementation of DumperInterface that dump a message catalogue to file(s).
 
-  *
 
-  * Options:
 
-  * - path (mandatory): the directory where the files should be saved
 
-  *
 
-  * @author Michel Salib <michelsalib@hotmail.com>
 
-  */
 
- abstract class FileDumper implements DumperInterface
 
- {
 
-     /**
 
-      * A template for the relative paths to files.
 
-      *
 
-      * @var string
 
-      */
 
-     protected $relativePathTemplate = '%domain%.%locale%.%extension%';
 
-     /**
 
-      * Sets the template for the relative paths to files.
 
-      *
 
-      * @param string $relativePathTemplate A template for the relative paths to files
 
-      */
 
-     public function setRelativePathTemplate($relativePathTemplate)
 
-     {
 
-         $this->relativePathTemplate = $relativePathTemplate;
 
-     }
 
-     /**
 
-      * Sets backup flag.
 
-      *
 
-      * @param bool $backup
 
-      *
 
-      * @deprecated since Symfony 4.1
 
-      */
 
-     public function setBackup($backup)
 
-     {
 
-         @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1.', __METHOD__), \E_USER_DEPRECATED);
 
-         if (false !== $backup) {
 
-             throw new \LogicException('The backup feature is no longer supported.');
 
-         }
 
-     }
 
-     /**
 
-      * {@inheritdoc}
 
-      */
 
-     public function dump(MessageCatalogue $messages, $options = [])
 
-     {
 
-         if (!\array_key_exists('path', $options)) {
 
-             throw new InvalidArgumentException('The file dumper needs a path option.');
 
-         }
 
-         // save a file for each domain
 
-         foreach ($messages->getDomains() as $domain) {
 
-             $fullpath = $options['path'].'/'.$this->getRelativePath($domain, $messages->getLocale());
 
-             if (!file_exists($fullpath)) {
 
-                 $directory = \dirname($fullpath);
 
-                 if (!file_exists($directory) && !@mkdir($directory, 0777, true)) {
 
-                     throw new RuntimeException(sprintf('Unable to create directory "%s".', $directory));
 
-                 }
 
-             }
 
-             $intlDomain = $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX;
 
-             $intlMessages = $messages->all($intlDomain);
 
-             if ($intlMessages) {
 
-                 $intlPath = $options['path'].'/'.$this->getRelativePath($intlDomain, $messages->getLocale());
 
-                 file_put_contents($intlPath, $this->formatCatalogue($messages, $intlDomain, $options));
 
-                 $messages->replace([], $intlDomain);
 
-                 try {
 
-                     if ($messages->all($domain)) {
 
-                         file_put_contents($fullpath, $this->formatCatalogue($messages, $domain, $options));
 
-                     }
 
-                     continue;
 
-                 } finally {
 
-                     $messages->replace($intlMessages, $intlDomain);
 
-                 }
 
-             }
 
-             file_put_contents($fullpath, $this->formatCatalogue($messages, $domain, $options));
 
-         }
 
-     }
 
-     /**
 
-      * Transforms a domain of a message catalogue to its string representation.
 
-      *
 
-      * @param string $domain
 
-      *
 
-      * @return string representation
 
-      */
 
-     abstract public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = []);
 
-     /**
 
-      * Gets the file extension of the dumper.
 
-      *
 
-      * @return string file extension
 
-      */
 
-     abstract protected function getExtension();
 
-     /**
 
-      * Gets the relative file path using the template.
 
-      */
 
-     private function getRelativePath(string $domain, string $locale): string
 
-     {
 
-         return strtr($this->relativePathTemplate, [
 
-             '%domain%' => $domain,
 
-             '%locale%' => $locale,
 
-             '%extension%' => $this->getExtension(),
 
-         ]);
 
-     }
 
- }
 
 
  |