Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function setValue($value)
 {
     switch (gettype($value)) {
         case 'array':
             $this->attribute_type = AttributeTypes::ARRAY_TYPE;
             $this->string_value = serialize($value);
             break;
         case 'object':
             $this->attribute_type = Yii::$app->get('typesRegister')->getEntityType($value);
             $this->relatedValueEntity = $value;
             break;
         default:
             if ($this->getType() === 'value') {
                 $this->value_id = (int) $value;
             } elseif (in_array($this->getType(), AttributeTypes::getTypes())) {
                 $this->string_value = $value;
             } else {
                 $this->value_entity_id = $value;
             }
     }
 }
Exemplo n.º 2
0
 /**
  * @param AttributeValueInterface[] $attributes
  * @param string $column
  * @return AttributeValueInterface[]
  */
 protected function groupEAttributesBy($attributes, $column)
 {
     /** @var AttributeValue[] $grouped */
     $grouped = [];
     foreach ($attributes as $attribute) {
         if (isset($grouped[$attribute->{$column}])) {
             $grouped[$attribute->{$column}] = clone $grouped[$attribute->{$column}];
             if (!in_array($grouped[$attribute->{$column}]->getType(), AttributeTypes::getTypes())) {
                 $v = $grouped[$attribute->{$column}]->getValue();
                 $grouped[$attribute->{$column}]->setValue($v);
             }
             $v1 = $grouped[$attribute->{$column}]->getValue();
             $v2 = $attribute->getValue();
             $v1 = is_array($v1) ? $v1 : [$v1];
             $v2 = is_array($v2) ? $v2 : [$v2];
             $value = array_merge($v1, $v2);
             if (!in_array($grouped[$attribute->{$column}]->getType(), AttributeTypes::getTypes())) {
                 $grouped[$attribute->{$column}]->populateRelation('relatedValueEntity', $value);
             } else {
                 $grouped[$attribute->{$column}]->string_value = $value;
             }
         } else {
             $grouped[$attribute->{$column}] = $attribute;
         }
     }
     return $grouped;
 }