Esempio n. 1
0
 /**
  * @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;
 }
Esempio n. 2
0
 /**
  * @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));
 }
Esempio n. 3
0
 /**
  * @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();
 }
Esempio n. 4
0
 /**
  * @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));
 }