/** * {@inheritdoc} */ public function jsonSerialize() { $this->getContent()->setDraft(null); $sourceData = $this->getContent()->jsonSerialize(self::JSON_CONCISE_FORMAT); $this->getContent()->setDraft($this); $draftData = parent::jsonSerialize(self::JSON_CONCISE_FORMAT); $draftData['uid'] = $sourceData['uid']; $draftData['type'] = $sourceData['type']; $draftData['elements'] = $this->computeElements($sourceData['elements'], $draftData['elements']); $parameters = []; foreach ($draftData['parameters'] as $key => $parameter) { if ($parameter['value'] !== $sourceData['parameters'][$key]['value']) { $parameters[$key] = ['current' => $sourceData['parameters'][$key]['value'], 'draft' => $parameter['value']]; } } $draftData['parameters'] = $parameters; if ($this->getRevision() !== $this->getContent()->getRevision()) { $draftData['state'] = self::STATE_CONFLICTED; } return array_merge(parent::jsonSerialize(self::JSON_INFO_FORMAT), $draftData); }
/** * {@inheritdoc} */ public function jsonSerialize($format = self::JSON_DEFAULT_FORMAT) { $data = parent::jsonSerialize($format); if (self::JSON_INFO_FORMAT === $format) { return $data; } if (!isset($data['label'])) { $data['label'] = $this->getProperty('name'); } if (self::JSON_CONCISE_FORMAT === $format) { $data['image'] = $this->getImageName(); return $data; } if (self::JSON_DEFINITION_FORMAT === $format) { $data['parameters'] = 0 === count($this->getDefaultParams()) ? new \ArrayObject() : $this->getDefaultParams(); } $properties = $this->getProperty(); unset($properties['indexation'], $properties['labelized-by'], $properties['clonemode'], $properties['cache-lifetime']); $data = array_merge(['defaultOptions' => 0 === count($this->defaultOptions) ? new \ArrayObject() : $this->defaultOptions, 'properties' => $properties, 'image' => self::JSON_DEFINITION_FORMAT === $format ? $this->getDefaultImageName() : $this->getImageName()], $data); return $data; }