/** * Executes revert action on content and its draft. * * @param AbstractClassContent $content * @param Revision $draft * @param array $data * @return self */ private function executeRevert(AbstractClassContent $content, Revision $draft, array $data) { if ($content instanceof ContentSet) { if (isset($data['elements']) && true === $data['elements']) { $draft->clear(); foreach ($content->getData() as $element) { $draft->push($element); } } } else { foreach ($content->getData() as $key => $element) { if (isset($data['elements']) && in_array($key, $data['elements'])) { $draft->{$key} = $content->{$key}; } } } if (isset($data['parameters'])) { foreach ($content->getDefaultParams() as $key => $params) { if (in_array($key, $data['parameters'])) { $draft->setParam($key, $content->getParamValue($key)); } } } return $this; }
/** * Prepares draft for commit. * * @param AbstractClassContent $content * @param Revision $draft * @param array $data * * @return ClassContentManager */ private function prepareDraftForCommit(AbstractClassContent $content, Revision $draft, array $data) { if ($content instanceof ContentSet) { if (!isset($data['elements']) || false === $data['elements']) { $draft->clear(); foreach ($content->getData() as $element) { $draft->push($element); } } } elseif (AbstractClassContent::STATE_NORMAL === $content->getState()) { foreach ($content->getData() as $key => $element) { if (!isset($data['elements']) || !in_array($key, $data['elements'])) { $draft->{$key} = $content->{$key}; } } } if (isset($data['parameters'])) { foreach ($content->getAllParams() as $key => $params) { if (!in_array($key, $data['parameters'])) { $draft->setParam($key, $content->getParamValue($key)); } } } if (isset($data['message'])) { $draft->setComment($data['message']); } return $this; }
/** * Returns the indexed parameter value. * * @param AbstractClassContent $content The content flushed. * @param string $indexedParam The parameter to index. * * @return array An array of the parameter value and the content owner. */ private static function getParamValue(AbstractClassContent $content, $indexedParam) { $value = (array) $content->getParamValue($indexedParam); $owner = $content; return [implode(',', $value), $owner]; }