1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
<?php
namespace Commercetools\Core\Model\Product;
use Commercetools\Core\Error\InvalidArgumentException;
use Commercetools\Core\Error\Message;
use Commercetools\Core\Model\Common\Collection;
use Commercetools\Core\Model\Common\Context;
class LocalizedSuggestionCollection extends Collection
{
const COLLECTION_TYPE = Collection::TYPE_MAP;
protected $type = SuggestionCollection::class;
public function __get($locale)
{
$context = new Context();
$context->setGraceful($this->getContext()->isGraceful())
->setLanguages([$locale]);
return $this->get($context);
}
protected function getLanguage(Context $context)
{
$locale = null;
foreach ($context->getLanguages() as $language) {
if (isset($this[$language])) {
$locale = $language;
break;
}
}
return $locale;
}
public function get(Context $context = null)
{
if (is_null($context)) {
$context = $this->getContext();
}
$locale = $this->getLanguage($context);
if (!isset($this[$locale])) {
if (!$context->isGraceful()) {
throw new InvalidArgumentException(Message::NO_VALUE_FOR_LOCALE);
}
return new SuggestionCollection();
}
return $this->getAt($locale);
}
}