/** * Change URL path of page * * @param string $pageId * @param string $newUrlPath * @return bool|null */ protected static function changePageUrlPath($pageId, $newUrlPath) { $pageBeforeChange = ipPage($pageId); if (ipGetOption('Config.trailingSlash', 1)) { if (mb_substr($newUrlPath, -1) != '/') { $newUrlPath .= '/'; } } else { if (mb_substr($newUrlPath, -1) == '/') { $newUrlPath = mb_substr($newUrlPath, 0, -1); } } if ($newUrlPath == $pageBeforeChange->getUrlPath()) { return false; } $allocatedPath = UrlAllocator::allocatePath($pageBeforeChange->getLanguageCode(), $newUrlPath); ipDb()->update('page', array('urlPath' => $allocatedPath), array('id' => $pageId)); $pageAfterChange = ipPage($pageId); $oldUrl = $pageBeforeChange->getLink(); if (substr($oldUrl, -1) == '/') { $oldUrl = substr($oldUrl, 0, -1); } $newUrl = $pageAfterChange->getLink(); if (substr($newUrl, -1) == '/') { $newUrl = substr($newUrl, 0, -1); } ipEvent('ipUrlChanged', array('oldUrl' => $oldUrl, 'newUrl' => $newUrl)); return null; }
/** * Insert new page * * @param int $parentId * @param string $title * @param array $data * @return int page id * @throws \Ip\Exception */ public static function addPage($parentId, $title, $data = array()) { $data['title'] = $title; if (!isset($data['createdAt'])) { $data['createdAt'] = date('Y-m-d H:i:s'); } if (!isset($data['updatedAt'])) { $data['updatedAt'] = date('Y-m-d H:i:s'); } if (!isset($data['isVisible'])) { $data['isVisible'] = !ipGetOption('Pages.hideNewPages'); } if (!isset($data['languageCode'])) { $data['languageCode'] = ipDb()->selectValue('page', 'languageCode', array('id' => $parentId)); if (empty($data['languageCode'])) { $data['languageCode'] = ipDb()->selectValue('page', 'languageCode', array('alias' => $parentId)); } if (empty($data['languageCode'])) { throw new \Ip\Exception('Page languageCode should be set if parent is absent'); } } if (!isset($data['urlPath'])) { $dataForPath = $data; $dataForPath['parentId'] = $parentId; $data['urlPath'] = UrlAllocator::allocatePathForNewPage($dataForPath); } $newPageId = Model::addPage($parentId, $data); return $newPageId; }