<?php/* * This file is part of Sulu. * * (c) Sulu GmbH * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */namespace Sulu\Component\Content\Mapper\Translation;use Sulu\Component\Content\Compat\Property;use Sulu\Component\Content\Compat\PropertyInterface;use Sulu\Component\Content\Compat\Structure;use Sulu\Component\Content\Exception\NoSuchPropertyException;/** * enables to translate multiple properties. */class MultipleTranslatedProperties{ /** * @var PropertyInterface[] */ private $properties = []; /** * @var PropertyInterface[] */ private $translatedProperties; /** * @var string */ private $languageNamespace; /** * @var string */ private $structureType = Structure::TYPE_PAGE; public function __construct( $names, $languageNamespace, $namespace = '' ) { $this->languageNamespace = $languageNamespace; $this->properties = []; foreach ($names as $name) { $propertyName = (!empty($namespace) ? $namespace . '-' : '') . $name; $this->properties[$name] = new Property($propertyName, [], 'none', false, true); } } /** * set language of translated property names. * * @param string $languageKey */ public function setLanguage($languageKey) { $this->translatedProperties = []; foreach ($this->properties as $key => $property) { $this->translatedProperties[$key] = new TranslatedProperty( $property, $languageKey, $this->languageNamespace ); } } /** * returns translated property name. * * @param string $key * * @return string * * @throws \Sulu\Component\Content\Exception\NoSuchPropertyException */ public function getName($key) { // templates do not translate the template key if (Structure::TYPE_SNIPPET === $this->structureType) { if ('template' === $key) { return $key; } } if (isset($this->translatedProperties[$key])) { return $this->translatedProperties[$key]->getName(); } else { throw new NoSuchPropertyException($key); } } /** * Set the structure type. * * @param string $structureType */ public function setStructureType($structureType) { $this->structureType = $structureType; }}