/** * @see \wcf\data\AbstractDatabaseObjectAction::create() */ public function create() { // set default values for author and last editor if (!isset($this->parameters['data']['authorID'])) { $this->parameters['data']['authorID'] = WCF::getUser()->userID; $this->parameters['data']['authorName'] = WCF::getUser()->username; } if (!isset($this->parameters['data']['lastEditorID'])) { $this->parameters['data']['lastEditorID'] = $this->parameters['data']['authorID']; $this->parameters['data']['lastEditorName'] = $this->parameters['data']['authorName']; } // set default values for creation- and last edit time if (!isset($this->parameters['data']['creationTime'])) { $this->parameters['data']['creationTime'] = TIME_NOW; } if (!isset($this->parameters['data']['lastEditTime'])) { $this->parameters['data']['lastEditTime'] = $this->parameters['data']['creationTime']; } // create page itself $page = parent::create(); $pageEditor = new PageEditor($page); // handle stylesheets if (isset($this->parameters['stylesheetIDs']) && !empty($this->parameters['stylesheetIDs'])) { $pageEditor->updateStylesheetIDs($this->parameters['stylesheetIDs']); } // check if first page if (PageCache::getInstance()->getHomePage() === null) { $pageEditor->setAsHome(); } // trigger publication if (!$page->isDisabled && $page->isPublished) { $action = new PageAction(array($pageEditor), 'triggerPublication'); $action->executeAction(); } return $page; }
/** * @see \wcf\page\IPage::show() */ public function show() { parent::show(); // register visit VisitCountHandler::getInstance()->count(); // count click $pageEditor = new PageEditor($this->page); $pageEditor->updateCounters(array('clicks' => 1)); }
/** * @see \wcf\form\IForm::save() */ public function save() { parent::save(); $data = array('title' => $this->title, 'alias' => $this->alias, 'description' => $this->description, 'metaDescription' => $this->metaDescription, 'metaKeywords' => $this->metaKeywords, 'allowIndexing' => $this->allowIndexing, 'parentID' => $this->parentID ?: null, 'showOrder' => $this->showOrder, 'invisible' => $this->invisible, 'menuItemID' => $this->menuItemID ?: null, 'isCommentable' => $this->isCommentable, 'availableDuringOfflineMode' => $this->availableDuringOfflineMode, 'allowSubscribing' => $this->allowSubscribing, 'styleID' => $this->styleID ?: null, 'sidebarOrientation' => $this->sidebarOrientation); // publication if ($this->enableDelayedPublication) { $data['isPublished'] = 0; $dateTime = \DateTime::createFromFormat('Y-m-d H:i', $this->publicationDate, WCF::getUser()->getTimeZone()); $data['publicationDate'] = $dateTime->getTimestamp(); } if ($this->enableDelayedDeactivation) { $dateTime = \DateTime::createFromFormat('Y-m-d H:i', $this->deactivationDate, WCF::getUser()->getTimeZone()); $data['deactivationDate'] = $dateTime->getTimestamp(); } $pageData = array('data' => $data, 'stylesheetIDs' => $this->stylesheetIDs); $this->objectAction = new PageAction(array(), 'create', $pageData); $returnValues = $this->objectAction->executeAction(); $pageEditor = new PageEditor($returnValues['returnValues']); $updateData = array(); // save ACL ACLHandler::getInstance()->save($pageEditor->pageID, $this->objectTypeID); // save multilingual inputs if (!I18nHandler::getInstance()->isPlainValue('title')) { $updateData['title'] = 'cms.page.title' . $pageEditor->pageID; I18nHandler::getInstance()->save('title', $updateData['title'], 'cms.page'); } if (!I18nHandler::getInstance()->isPlainValue('description')) { $updateData['description'] = 'cms.page.description' . $pageEditor->pageID; I18nHandler::getInstance()->save('description', $updateData['description'], 'cms.page'); } if (!I18nHandler::getInstance()->isPlainValue('metaDescription')) { $updateData['metaDescription'] = 'cms.page.metaDescription' . $pageEditor->pageID; I18nHandler::getInstance()->save('metaDescription', $updateData['metaDescription'], 'cms.page'); } if (!I18nHandler::getInstance()->isPlainValue('metaKeywords')) { $updateData['metaKeywords'] = 'cms.page.metaKeywords' . $pageEditor->pageID; I18nHandler::getInstance()->save('metaKeywords', $updateData['metaKeywords'], 'cms.page'); } // create menu item for page if ($this->createMenuItem) { // set menu item of parent page as parent menu item if ($pageEditor->getParentPage() !== null && $pageEditor->getParentPage()->menuItemID) { $parentMenuItem = new PageMenuItem($pageEditor->getParentPage()->menuItemID); } $menuItemData = array('className' => 'cms\\system\\menu\\page\\CMSPageMenuItemProvider', 'menuItemController' => 'cms\\page\\PagePage', 'menuItemLink' => 'id=' . $pageEditor->pageID, 'menuPosition' => 'header', 'packageID' => PACKAGE_ID, 'parentMenuItem' => isset($parentMenuItem) && $parentMenuItem->menuItemID ? $parentMenuItem->menuItem : '', 'showOrder' => 0); $menuItemAction = new PageMenuItemAction(array(), 'create', array('data' => $menuItemData)); $menuItemReturnValues = $menuItemAction->executeAction(); $menuItem = $menuItemReturnValues['returnValues']; // save multilingual title I18nHandler::getInstance()->register('menuItemTitle'); I18nHandler::getInstance()->setValues('menuItemTitle', I18nHandler::getInstance()->getValues('title')); $menuItemData = array('menuItem' => 'wcf.page.menuItem' . $menuItem->menuItemID); I18nHandler::getInstance()->save('menuItemTitle', $menuItemData['menuItem'], 'wcf.page'); $menuItemEditor = new PageMenuItemEditor($menuItem); $menuItemEditor->update($menuItemData); // save menu item with page $updateData['menuItemID'] = $menuItem->menuItemID; } // save new information $pageEditor->update($updateData); // create revision $objectAction = new PageAction(array($pageEditor->pageID), 'createRevision', array('action' => 'create')); $objectAction->executeAction(); // update search index $objectAction = new PageAction(array($pageEditor->pageID), 'refreshSearchIndex'); $objectAction->executeAction(); $this->saved(); WCF::getTPL()->assign('success', true); // reset values $this->alias = $this->deactivationDate = $this->description = $this->metaDescription = $this->metaKeywords = $this->publicationDate = ''; $this->enableDelayedDeactivation = $this->enableDelayedPublication = $this->invisible = $this->menuItemID = $this->parentID = $this->showOrder = $this->styleID = 0; $this->stylesheetIDs = array(); $this->allowIndexing = CMS_PAGES_DEFAULT_ALLOW_INDEXING; $this->allowSubscribing = CMS_PAGES_DEFAULT_ALLOW_SUBSCRIBING; $this->availableDuringOfflineMode = CMS_PAGES_DEFAULT_OFFLINE; $this->createMenuItem = CMS_PAGES_DEFAULT_MENU_ITEM; $this->isCommentable = CMS_PAGES_DEFAULT_COMMENTS; $this->sidebarOrientation = CMS_PAGES_DEFAULT_SIDEBAR; I18nHandler::getInstance()->reset(); ACLHandler::getInstance()->disableAssignVariables(); }
/** * @see \wcf\system\comment\manager\ICommentManager::updateCounter() */ public function updateCounter($objectID, $value) { $page = PageCache::getInstance()->getPage($objectID); $editor = new PageEditor($page); $editor->updateCounters(array('comments' => $value)); }