/** * Copies a specific content. */ public function copy() { $object = $this->getSingleObject(); $data = $object->getDecoratedObject()->getData(); $childs = $object->getDecoratedObject()->getChildren(); $oldID = $data['contentID']; unset($data['contentID']); $data['contentData'] = serialize($data['contentData']); $this->parameters['data'] = $data; $content = $this->create(); $contentID = $content->contentID; $tmp = array(); $tmp[$oldID] = $contentID; $affectedIDs = array(); foreach ($childs as $child) { $childID = $child->getDecoratedObject()->contentID; $data = $child->getDecoratedObject()->getData(); unset($data['contentID']); $data['contentData'] = serialize($data['contentData']); $this->parameters['data'] = $data; $new = $this->create(); $tmp[$childID] = $new->contentID; $affectedIDs[] = $new->contentID; } foreach ($affectedIDs as $affectedID) { $update = array(); $affectedObject = new Content($affectedID); if (isset($tmp[$affectedObject->parentID])) { $editor = new ContentEditor($affectedObject); $update['parentID'] = $tmp[$affectedObject->parentID]; $editor->update($update); } } }
/** * Copies a specific page. */ public function copy() { $object = $this->getSingleObject(); $data = $object->getDecoratedObject()->getData(); // remove unique or irrelevant properties unset($data['pageID']); unset($data['isHome']); unset($data['clicks']); // ensure unique aliases $i = 1; $alias = $data['alias'] . '-copy'; do { $data['alias'] = $alias . $i; $i++; } while (!PageUtil::isAvailableAlias($data['alias'], $object->parentID)); // perform creation of copy $this->parameters['data'] = $data; $page = $this->create(); $pageID = $page->pageID; // copy contents $contents = $object->getContents(); $tmp = array(); foreach (array('body', 'sidebar') as $position) { foreach ($contents[$position] as $content) { //recreate $data = $content->getDecoratedObject()->getData(); $oldID = $data['contentID']; unset($data['contentID']); $data['pageID'] = $pageID; $action = new ContentAction(array(), 'create', array('data' => $data)); $return = $action->executeAction(); $tmp[$oldID] = $return['returnValues']->contentID; } } // setting new IDs $contents = new ContentList(); $contents->getConditionBuilder()->add('pageID = ?', array($pageID)); $contents->readObjects(); $contents = $contents->getObjects(); foreach ($contents as $content) { $update = array(); if (isset($tmp[$content->parentID])) { $editor = new ContentEditor($content); $update['parentID'] = $tmp[$content->parentID]; $editor->update($update); } } }
/** * @see \wcf\form\IForm::save() */ public function save() { parent::save(); $data = array('title' => $this->title, 'pageID' => $this->pageID, 'parentID' => $this->parentID ?: null, 'cssClasses' => $this->cssClasses, 'showOrder' => $this->showOrder, 'position' => $this->position, 'contentData' => $this->contentData, 'contentTypeID' => $this->objectType->objectTypeID); $this->objectAction = new ContentAction(array(), 'create', array('data' => $data)); $returnValues = $this->objectAction->executeAction(); $contentID = $returnValues['returnValues']->contentID; $contentData = $returnValues['returnValues']->contentData; $update = array(); // save polls if ($this->objectType->objectType == 'de.codequake.cms.content.type.poll') { $pollID = PollManager::getInstance()->save($returnValues['returnValues']->contentID); if ($pollID) { $contentData['pollID'] = $pollID; } } if (!I18nHandler::getInstance()->isPlainValue('title')) { I18nHandler::getInstance()->save('title', 'cms.content.title' . $contentID, 'cms.content', PACKAGE_ID); $update['title'] = 'cms.content.title' . $contentID; } foreach ($this->objectType->getProcessor()->multilingualFields as $field) { if (!I18nHandler::getInstance()->isPlainValue($field)) { I18nHandler::getInstance()->save($field, 'cms.content.' . $field . $contentID, 'cms.content', PACKAGE_ID); $contentData[$field] = 'cms.content.' . $field . $contentID; } } $update['contentData'] = serialize($contentData); if (!empty($update)) { $editor = new ContentEditor($returnValues['returnValues']); $editor->update($update); } // create revision $objectAction = new PageAction(array($this->pageID), 'createRevision', array('action' => 'content.create')); $objectAction->executeAction(); // update search index $objectAction = new PageAction(array($returnValues['returnValues']->pageID), 'refreshSearchIndex'); $objectAction->executeAction(); $this->saved(); HeaderUtil::redirect(LinkHandler::getInstance()->getLink('ContentList', array('application' => 'cms', 'pageID' => $this->pageID))); }
/** * @author Jens Krumsieck * @copyright 2013 - 2015 codeQuake * @license GNU Lesser General Public License <http://www.gnu.org/licenses/lgpl-3.0.txt> * @package de.codequake.cms */ $id = ObjectTypeCache::getInstance()->getObjectTypeIDByName('de.codequake.cms.content.type', 'de.codequake.cms.content.type.headline'); $list = new ContentList(); $list->getConditionBuilder()->add('content.position', array('sidebar')); $list->getConditionBuilder()->add('content.contentTypeID', array($id)); $list->readObjects(); $affectedObjects = $list->getObjects(); //delete all headlines $action = new ContentAction($affectedObjects, 'delete', array()); $action->executeAction(); $id = ObjectTypeCache::getInstance()->getObjectTypeIDByName('de.codequake.cms.content.type', 'de.codequake.cms.content.type.template'); $list = new ContentList(); $list->getConditionBuilder()->add('content.contentTypeID', array($id)); $list->readObjects(); $affectedObjects = $list->getObjects(); // clear compiled foreach ($affectedObjects as $content) { if (!empty($content->compiled)) { $contentData = $content->contentData; $tmpArray = unserialze($contentData); unset($tmpArray['compiled']); $contentData = serialze($tmpArray); $contentEditor = new ContentEditor($content); $contentEditor->update(array('contentData' => $contentData)); } }