diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 1869f6f..3d70517 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -61,6 +61,9 @@ private function getProjectNode() ->requiresAtLeastOneElement() ->prototype('scalar')->end() ->end() + ->arrayNode('tags') + ->prototype('scalar')->end() + ->end() ->end() ->end(); diff --git a/src/Service/Loco.php b/src/Service/Loco.php index ecd5e04..ebcdf88 100644 --- a/src/Service/Loco.php +++ b/src/Service/Loco.php @@ -429,6 +429,16 @@ protected function getUrls(array &$data, array $config, $domain, $useDomainAsFil $fileName = sprintf('%s.%s.%s', $domain, $locale, $this->filesystemService->getFileExtension()); $data[$url] = $fileName; + + if (!empty($config['tags'])) { + $query_tags = $this->getExportQueryParams($config['api_key'], $config['tags']); + + // Build url + $url = sprintf('%sexport/locale/%s.%s?%s', self::BASE_URL, $locale, $this->filesystemService->getFileExtension(), http_build_query($query_tags)); + $fileName = sprintf('%s.%s.%s', $domain.'-'.(implode($config['tags'], '-')), $locale, $this->filesystemService->getFileExtension()); + + $data[$url] = $fileName; + } } } @@ -437,13 +447,18 @@ protected function getUrls(array &$data, array $config, $domain, $useDomainAsFil * * @return array */ - private function getExportQueryParams($key) + private function getExportQueryParams($key, $tags=null) { $data = array( 'index' => 'id', 'status' => 'translated', 'key' => $key, ); + + if ($tags !== null) { + $data['filter'] = implode($tags, ','); + } + switch ($this->filesystemService->getFileExtension()) { case 'php': $data['format'] = 'zend'; // 'Zend' will give us a flat array