Пример #1
0
 /**
  * Updates provided content's elements with data
  *
  * @param  AbstractClassContent $content
  * @param  array         $elementsData
  * @return self
  */
 private function updateElements(AbstractClassContent $content, array $elementsData)
 {
     if ($content instanceof ContentSet) {
         $content->clear();
         foreach ($elementsData as $data) {
             $element = $this->findOneByTypeAndUid($data['type'], $data['uid']);
             if ($content->isAccepted($element)) {
                 $content->push($element);
             }
         }
     } else {
         foreach ($elementsData as $key => $values) {
             if (is_scalar($values) && $content->isAccepted($values, $key)) {
                 $content->{$key} = $values;
             } elseif (is_array($values)) {
                 if (isset($values['type']) && isset($values['uid'])) {
                     $values = [$values];
                 }
                 $elements = [];
                 foreach ($values as $data) {
                     $element = $this->findOneByTypeAndUid($data['type'], $data['uid']);
                     if ($content->isAccepted($element, $key)) {
                         $elements[] = $element;
                     }
                 }
                 $content->{$key} = $elements;
             }
         }
     }
     return $this;
 }