<?php
/**
 * Part of Showkase web site management package
 *
 * @package Showkase
 * @author Jack Hardie {@link http://www.jhardie.com}
 * @copyright Copyright (c) 2014, SimpleViewer Inc.
 */
defined('SK_ACCESS')||die('<h1>403: Forbidden</h1>');
$sep = DIRECTORY_SEPARATOR;
require_once "commands{$sep}command.php";
require_once "classes{$sep}site.php";
require_once "classes{$sep}theme.php";
require_once "classes{$sep}viewer.php";
require_once "classes{$sep}viewercustomizescreen.php";
require_once "classes{$sep}viewerselectscreen.php";
require_once "classes{$sep}pageset.php";
require_once "classes{$sep}publisher.php";
 
/**
 * Command - Viewer Customize
 *
 * @package Showkase
 */
class ViewerCustomize extends Command
{
    function doExecute( Request $request )
    {
        $pageSet = new PageSet();
        $config = SkConfig::getInstance();
        $themeSet = new ThemeSet();
        $context = array('token' => $request->newToken());
        $viewerName = $request->getProperty('viewer');
        $context['pageTypes'] = $themeSet->getViewerPageTypes();
        if (is_null($viewerName)) {
            $screen = new ViewerSelectScreen('Showkase – viewer customize', 'viewerselect', 'site viewercustomize viewerselect');
            print $screen->getHtml($context);
            return;
        }
        $viewer = new Viewer(
            new Theme(
                new Site(
                    $themeSet
                )
            ),
            $viewerName
        );
        if ($request->propertyIsSet('showPro')) {
                $pageSet->setPagesPref('showPro', (boolean)$request->getProperty('showPro'));
                $pageSet->savePagesPrefs();
            }
        if ($request->propertyIsSet('customizesubmitted')) {
            try {
                if (!$request->validatePost()) {
                    throw new Exception('No action. Re-submission or remote submission is not allowed.');
                }
                $post = $request->getPost();
                $viewer->customize($post);
                $viewer->saveLayer();
                $pageSet->setPagesPref('publishing', 'unpublished');
                $pageSet->savePagesPrefs();
                Board::addMessage('Viewer settings saved');
            } catch (Exception $e) {
                Board::addExceptionMessage($e);
            }
        }
        $context['showPro'] = $pageSet->getPagesPref('showPro');
        $screen = new ViewerCustomizeScreen($viewer, 'site viewer viewercustomize customize');
        print $screen->getHtml($context);
    }
}