/** * Prepares list object to read available parent menu items. */ protected function initAvailableParentMenuItems() { $this->availableParentMenuItems = new PageMenuItemList(); $this->availableParentMenuItems->getConditionBuilder()->add("page_menu_item.parentMenuItem = ''"); $this->availableParentMenuItems->getConditionBuilder()->add('page_menu_item.menuPosition = ?', array('header')); $this->availableParentMenuItems->sqlOrderBy = "page_menu_item.showOrder ASC"; }
/** * @see \wcf\system\cache\builder\AbstractCacheBuilder::rebuild() */ public function rebuild(array $parameters) { $data = array(); $menuItemList = new PageMenuItemList(); $menuItemList->getConditionBuilder()->add("(page_menu_item.isDisabled = ? OR page_menu_item.isLandingPage = ?)", array(0, 1)); $menuItemList->sqlOrderBy = "page_menu_item.showOrder ASC"; $menuItemList->readObjects(); foreach ($menuItemList as $menuItem) { $index = $menuItem->parentMenuItem ? $menuItem->parentMenuItem : $menuItem->menuPosition; $data[$index][] = $menuItem; } return $data; }
/** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); // set default values if (empty($_POST)) { $dateTime = DateUtil::getDateTimeByTimestamp(TIME_NOW); $dateTime->setTimezone(WCF::getUser()->getTimeZone()); $this->deactivationDate = $this->publicationDate = $dateTime->format('c'); } $pageNodeTree = new PageNodeTree(); $this->pageList = $pageNodeTree->getIterator(); $this->stylesheetList = new StylesheetList(); $this->stylesheetList->readObjects(); // load menu items $menuItemList = new PageMenuItemList(); $menuItemList->getConditionBuilder()->add('page_menu_item.menuPosition = ?', array('header')); $menuItemList->sqlOrderBy = 'page_menu_item.parentMenuItem ASC, page_menu_item.showOrder ASC'; $menuItemList->readObjects(); foreach ($menuItemList as $menuItem) { if ($menuItem->parentMenuItem) { if (isset($this->menuItems[$menuItem->parentMenuItem])) { $this->menuItems[$menuItem->parentMenuItem]->addChild($menuItem); } } else { $this->menuItems[$menuItem->menuItem] = new ViewablePageMenuItem($menuItem); } } }
/** * @see \wcf\data\ISortableAction::validateUpdatePosition() */ public function validateUpdatePosition() { WCF::getSession()->checkPermissions(array('admin.display.canManagePageMenu')); if (!isset($this->parameters['data']) || !isset($this->parameters['data']['structure']) || !is_array($this->parameters['data']['structure'])) { throw new UserInputException('structure'); } if (!isset($this->parameters['menuPosition']) || !in_array($this->parameters['menuPosition'], array('footer', 'header'))) { throw new UserInputException('structure'); } if ($this->parameters['menuPosition'] == 'footer') { if (count($this->parameters['data']['structure']) > 1 || !isset($this->parameters['data']['structure'][0])) { throw new UserInputException('structure'); } } $menuItemIDs = array(); foreach ($this->parameters['data']['structure'] as $menuItems) { $menuItemIDs = array_merge($menuItemIDs, $menuItems); } $menuItemList = new PageMenuItemList(); $menuItemList->getConditionBuilder()->add("page_menu_item.menuItemID IN (?)", array($menuItemIDs)); $menuItemList->getConditionBuilder()->add("page_menu_item.menuPosition = ?", array($this->parameters['menuPosition'])); $menuItemList->readObjects(); $this->menuItems = $menuItemList->getObjects(); if (count($this->menuItems) != count($menuItemIDs)) { throw new UserInputException('structure'); } foreach ($this->parameters['data']['structure'] as $parentMenuItemID => $menuItems) { if ($parentMenuItemID && !isset($this->menuItems[$parentMenuItemID])) { throw new UserInputException('structure'); } } }