* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Adapter\Product\Update\Filler; use PrestaShop\PrestaShop\Core\Domain\Product\Command\UpdateProductCommand; use Product; /** * Fills product properties which can be considered as a basic product information */ class BasicInformationFiller implements ProductFillerInterface { /** * @var int */ private $defaultLanguageId; /** * @param int $defaultLanguageId */ public function __construct( int $defaultLanguageId ) { $this->defaultLanguageId = $defaultLanguageId; } /** * {@inheritDoc} */ public function fillUpdatableProperties(Product $product, UpdateProductCommand $command): array { $updatableProperties = []; $localizedNames = $command->getLocalizedNames(); if (null !== $localizedNames) { $defaultName = $localizedNames[$this->defaultLanguageId]; // Go through all the product languages and make sure name is filled for each of them $productLanguages = array_keys($product->name); foreach ($productLanguages as $languageId) { if (empty($localizedNames[$languageId])) { $localizedNames[$languageId] = $defaultName; } } $product->name = $localizedNames; $updatableProperties['name'] = array_keys($localizedNames); } $localizedDescriptions = $command->getLocalizedDescriptions(); if (null !== $localizedDescriptions) { $product->description = $localizedDescriptions; $updatableProperties['description'] = array_keys($localizedDescriptions); } $localizedShortDescriptions = $command->getLocalizedShortDescriptions(); if (null !== $localizedShortDescriptions) { $product->description_short = $localizedShortDescriptions; $updatableProperties['description_short'] = array_keys($localizedShortDescriptions); } return $updatableProperties; } }