Beispiel #1
0
 /**
  * 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);
         }
     }
 }
Beispiel #2
0
 /**
  * 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);
         }
     }
 }
Beispiel #3
0
 /**
  * @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)));
 }
Beispiel #4
0
/**
 * @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));
    }
}