/home/coolpkct/www/websites/cake3.cool.rocks/admin/commands/advanced.php
<?php
/**
 * Part of Showkase web site management package
 *
 * @package Showkase
 * @author Jack Hardie {@link http://www.jhardie.com}
 * @copyright Copyright (c) 2013, SimpleViewer Inc.
 */
defined('SK_ACCESS')||die('<h1>403: Forbidden</h1>');
$sep = DIRECTORY_SEPARATOR;
require_once "commands{$sep}command.php";
require_once "classes{$sep}advancedscreen.php";
require_once "classes{$sep}pagefactory.php";
require_once "classes{$sep}pageset.php";
require_once "classes{$sep}publisher.php";
require_once "classes{$sep}helpers.php";
require_once "classes{$sep}nav.php";
require_once "classes{$sep}galleryindex.php";
require_once "classes{$sep}themeset.php";
 
/**
 * Command - Change individual viewer
 *
 * @package Showkase
 */
class Advanced extends Command
{
    function doExecute( Request $request )
    {
        $context = array('token' => $request->newToken());
        $config = SkConfig::getInstance();
        $themeSet = new ThemeSet();
        $pageTypes = $themeSet->getPageTypes();
        $pageSet = new PageSet;
        $pageIndex = $pageSet->getCurrentPageIndex($request);
        $_SESSION['pageIndex'] = $pageIndex;
        $pageRef = $pageSet->getPageRef($pageIndex);
        $pageType = $pageSet->getPageType($pageIndex);
        $pagePath = $pageSet->getPagePath($pageIndex);
        $pageFactory = new PageFactory($themeSet);
        $page = $pageFactory->make($pageType, $pageRef, $pagePath);
        $post = $request->getPost();
        try {
            switch(true) {
                case ($request->propertyIsSet('type')) :
                    if (!$request->validate()) {
                        throw new Exception('No action. Re-submission or remote submission is not allowed.');
                    }
                    $oldPageType = $pageType;
                    $pageType = $request->getProperty('type');
                    $page = $pageFactory->make($pageType, $pageRef, $pagePath);
                    $page->saveLayer();
                    $pageSet->setPageType($pageIndex, $pageType);
                    $pageSet->setPagesDataSupported($pageIndex, $page->isSupportedPageType());
                    $pageSet->savePagesData();
                    $page->cacheViewer($config->getAbsoluteViewersPath());
                    if(is_object($page->gallery)) $page->gallery->saveGallery();
                    $page->savePageHtml(new Nav($pageFactory, $pageSet), new GalleryIndex($pageSet));
                    Board::addMessage('Page type changed to '.$pageTypes[$pageType]['name']);
                    break;
                case ($request->propertyIsSet('rebuild')) :
                    if (!$request->validate()) {
                        throw new Exception('No action. Re-submission or remote submission is not allowed.');
                    }
                    $page = $pageFactory->make($pageType, $pageRef, $pagePath);
                    if (is_object($page->gallery)) {
                        $page->gallery->rebuild();
                        Board::addMessage('Gallery thumbnails re-created');
                        $page->gallery->saveGallery();
                        Board::addMessage('Gallery xml file rebuilt');
                    }
                    $page->savePageHtml(new Nav($pageFactory, $pageSet), new GalleryIndex($pageSet));
                    Board::addMessage('Page html rebuilt');
                }
        } catch (Exception $e) {Board::addExceptionMessage($e);}
        $context['pageTypes'] = $pageTypes;
        $screen = new AdvancedScreen($pageType, $page);
        print $screen->getHtml($context);
    }
}