Source for file edit_book.php
Documentation is available at edit_book.php
* Copyright (c) 2004 bitweaver.org
* Copyright (c) 2003 tikwiki.org
* Copyright (c) 2002-2003, Luis Argerich, Garland Foster, Eduardo Polidor, et. al.
* All Rights Reserved. See below for details and a complete list of authors.
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details
require_once( '../kernel/setup_inc.php' );
if( isset ( $_COOKIE['book_section'] ) && $_COOKIE['book_section'] == 'o' ) {
$gBitSmarty->assign( 'book_section',$book_section );
include_once( LIBERTY_PKG_PATH. 'LibertyStructure.php');
include_once( WIKI_PKG_PATH. 'BitBook.php');
* first pass at trying to bring books up to speed with modern perm checking
* we initialize an object here since books dont have an include
if( @BitBase::verifyId( $_REQUEST["structure_id"] ) || @BitBase::verifyId( $_REQUEST["content_id"] ) ) {
include_once( LIBERTY_PKG_PATH. 'lookup_content_inc.php' );
if( empty( $gContent ) ){
$gBitSystem->fatalError( 'Error: Invalid structure id, the book you requested could not be found.' );
} elseif( empty( $_REQUEST["structure_id"] ) ) {
// we were passed a valid content_id. Make sure the root node exists, and if not, create it.
// alias => '' is a temporary setting until alias stuff has been removed
if( !$node = $newStructure->getNode( NULL, $gContent->mContentId ) ) {
$structureHash = array( 'content_id' => $gContent->mContentId, 'alias' => '' );
$_REQUEST["structure_id"] = $newStructure->storeNode( $structureHash );
$_REQUEST["structure_id"] = $node['structure_id'];
if( !empty( $_REQUEST['name'] ) ){
if( $pageId = $gContent->findByPageName( $_REQUEST['name'] ) ){
$gContent->mPageId = $pageId;
}elseif( empty( $_REQUEST["createstructure"] ) ){
$gBitSystem->fatalError( 'Error: Invalid name, the book you requested could not be found.' );
// end overly elaborate lookup now we can check the permission on the book.
// this is what we're really interested in doing check if we can edit the book or create one
if( $gContent->isValid() ){
$gContent->verifyUpdatePermission();
$gContent->verifyCreatePermission();
if( isset ($_REQUEST["createstructure"]) ) {
if ((empty($_REQUEST['name']))) {
$gBitSmarty->assign('msg', tra("You must specify a name."));
$gBitSystem->display( 'error.tpl' , NULL, array( 'display_mode' => 'edit' ));
//try to add a new structure
$pageId = $gContent->findByPageName( $_REQUEST['name'] );
$gContent->mPageId = $pageId;
$params['title'] = $_REQUEST['name'];
$params['edit'] = '{toc}';
$gContent->store( $params );
if( $gContent->isValid() ) {
// alias => '' is a temporary setting until alias stuff has been removed
$structureHash = array( 'content_id' => $gContent->mContentId, 'alias' => '' );
$structure_id = $gStructure->storeNode( $structureHash );
//Cannot create a structure if a structure already exists
if (!isset ($structure_id)) {
$gBitSmarty->assign('msg', $_REQUEST['name'] . " " . tra("page not added (Exists)"));
$gBitSystem->display( 'error.tpl' , NULL, array( 'display_mode' => 'edit' ));
$chapters = explode("\n", $_REQUEST["chapters"]);
foreach ($chapters as $chapter) {
$chapterName = trim($chapter);
if( !empty( $chapterName ) ) {
$nodeHash['parent_id'] = $structure_id;
$nodeHash['root_structure_id'] = $structure_id;
//try to add a new structure
$pageId = $nodePage->findByPageName( $chapterName );
$nodePage->mPageId = $pageId;
$params['title'] = trim($chapterName);
if( !$nodePage->store( $params ) ) {
$gBitSystem->fatalError( "There was an error storing the page: ". vc( $gContent->mErrors ));
$nodeHash['content_id'] = $nodePage->mContentId;
$nodeHash['after_ref_id'] = $gStructure->storeNode( $nodeHash );
header( "location: ". WIKI_PKG_URL. "edit_book.php?structure_id=". $structure_id );
$gBitSmarty->assign_by_ref( 'errors', $gContent->mErrors );
$gBitSmarty->assign( 'name', $_REQUEST['name']);
$gBitSmarty->assign( 'chapters', $_REQUEST['chapters']);
$mid = 'bitpackage:wiki/create_book.tpl';
} elseif( $gContent->isValid() ) {
// Get all wiki pages for the select box
$_REQUEST['content_type_guid'] = !isset ( $_REQUEST['content_type_guid'] ) ? 'bitpage' : $_REQUEST['content_type_guid'];
// verify the book permission on structure load
$verifyStructurePermission = 'p_wiki_admin_book';
// set the correct display template
$mid = 'bitpackage:wiki/edit_book.tpl';
include_once( LIBERTY_PKG_PATH. 'edit_structure_inc.php');
if( $gBitThemes->isAjaxRequest() ) {
$gBitSmarty->display( 'bitpackage:kernel/feedback_inc.tpl' );
// user is just trying to create a new book - give them the form
$gBitSystem->setBrowserTitle( 'Create Wiki Book' );
$mid = 'bitpackage:wiki/create_book.tpl';
$gBitSystem->setBrowserTitle( !empty($gStructure) && $gStructure->isValid() ? 'Edit Wiki Book:'. $gStructure->getField( 'title' ) : NULL );
$gBitSystem->display( $mid , NULL, array( 'display_mode' => 'edit' ));
|