sonarrradarrplexorganizrnginxdashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboard
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							126 lines
						
					
					
						
							3.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							126 lines
						
					
					
						
							3.8 KiB
						
					
					
				| <?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\MessageCatalogue; | |
| use Symfony\Component\Translation\Exception\InvalidArgumentException; | |
| use Symfony\Component\Translation\Exception\RuntimeException; | |
| 
 | |
| /** | |
|  * FileDumper is an implementation of DumperInterface that dump a message catalogue to file(s). | |
|  * Performs backup of already existing files. | |
|  * | |
|  * 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%'; | |
| 
 | |
|     /** | |
|      * Make file backup before the dump. | |
|      * | |
|      * @var bool | |
|      */ | |
|     private $backup = true; | |
| 
 | |
|     /** | |
|      * 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 | |
|      */ | |
|     public function setBackup($backup) | |
|     { | |
|         $this->backup = $backup; | |
|     } | |
| 
 | |
|     /** | |
|      * {@inheritdoc} | |
|      */ | |
|     public function dump(MessageCatalogue $messages, $options = array()) | |
|     { | |
|         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) { | |
|             // backup | |
|             $fullpath = $options['path'].'/'.$this->getRelativePath($domain, $messages->getLocale()); | |
|             if (file_exists($fullpath)) { | |
|                 if ($this->backup) { | |
|                     @trigger_error('Creating a backup while dumping a message catalogue is deprecated since Symfony 3.1 and will be removed in 4.0. Use TranslationWriter::disableBackup() to disable the backup.', E_USER_DEPRECATED); | |
|                     copy($fullpath, $fullpath.'~'); | |
|                 } | |
|             } else { | |
|                 $directory = dirname($fullpath); | |
|                 if (!file_exists($directory) && !@mkdir($directory, 0777, true)) { | |
|                     throw new RuntimeException(sprintf('Unable to create directory "%s".', $directory)); | |
|                 } | |
|             } | |
|             // save file | |
|             file_put_contents($fullpath, $this->formatCatalogue($messages, $domain, $options)); | |
|         } | |
|     } | |
| 
 | |
|     /** | |
|      * Transforms a domain of a message catalogue to its string representation. | |
|      * | |
|      * @param MessageCatalogue $messages | |
|      * @param string           $domain | |
|      * @param array            $options | |
|      * | |
|      * @return string representation | |
|      */ | |
|     abstract public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array()); | |
| 
 | |
|     /** | |
|      * Gets the file extension of the dumper. | |
|      * | |
|      * @return string file extension | |
|      */ | |
|     abstract protected function getExtension(); | |
| 
 | |
|     /** | |
|      * Gets the relative file path using the template. | |
|      * | |
|      * @param string $domain The domain | |
|      * @param string $locale The locale | |
|      * | |
|      * @return string The relative file path | |
|      */ | |
|     private function getRelativePath($domain, $locale) | |
|     { | |
|         return strtr($this->relativePathTemplate, array( | |
|             '%domain%' => $domain, | |
|             '%locale%' => $locale, | |
|             '%extension%' => $this->getExtension(), | |
|         )); | |
|     } | |
| }
 | |
| 
 |