<?php
/**
 * Part of Showkase web site management package
 *
 * @package Showkase
 * @author Jack Hardie {@link http://www.jhardie.com}
 * @copyright Copyright (c) 2012, SimpleViewer Inc.
 */
defined('SK_ACCESS')||die('<h1>403: Forbidden</h1>');
$sep = DIRECTORY_SEPARATOR;
require_once "commands{$sep}command.php" ;
require_once "classes{$sep}pagesscreen.php";
require_once "classes{$sep}pageset.php";
require_once "classes{$sep}themeset.php";
require_once "classes{$sep}site.php";
require_once "classes{$sep}theme.php";
require_once "classes{$sep}pagefactory.php";
 
/**
 * Command - Trash
 *
 * @package Showkase
 */
class Trash extends Command
{
    function doExecute( Request $request )
    {
        unset($_SESSION['pageIndex']);
        $config = SkConfig::getInstance();
        $pageSet = new PageSet();
        $themeSet = new ThemeSet();
        $site = new Site($themeSet);
        $theme = new Theme($site);
        $pageFactory = new PageFactory($themeSet, $theme);
        // get OLD token
        $context = array('token' => $request->getToken());
        try {
            if (!$request->validate()) {
                throw new Exception('No action. Re-submission or remote submission is not allowed.');
            }
            if(!file_exists($config->getAbsoluteSiteTrashPath())) {
                if(
                    !Filer::skMkdir($config->getAbsoluteSiteTrashPath(), NEW_DIR_MODE)
                ) {
                    throw new Exception('Cannot create trash folder');
                }
            }
            $pageIndex = $request->getProperty('pageIndex');
            $pageSet->removePage($pageIndex);
            $pageSet->removeDeletedParents($pageFactory, $themeSet);
            $pageSet->savePagesData();
            $pagesData = $pageSet->getPagesData();
            $publishState = count($pagesData)>0 ? 'unpublished' : 'published';
            $pageSet->setPagesPref('publishing', $publishState);
            $pageSet->savePagesPrefs();
        } catch(Exception $e) {
            Board::addExceptionMessage($e);
        }
        $context['pageTypes'] = $themeSet->getPageTypes();
        $context['siteTitle'] = $site->getLayerVar('ss_siteTitle');
        $screen = new PagesScreen('Showkase – pages', 'pages', 'pages');
        print $screen->getHtml($context);
    }
}