/home/coolpkct/www/websites/cake3.cool.rocks/admin/commands/allviewers.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}allviewersscreen.php";
require_once "classes{$sep}themeset.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";
 
/**
 * Command - change all viewers
 *
 * @package Showkase
 */
class AllViewers extends Command
{
    function doExecute( Request $request ) {
        unset ($_SESSION['pageIndex']);
        $context = array('token' => $request->newToken());
        $config = skConfig::getInstance();
        $themeSet = new ThemeSet();
        $context['pageTypes'] = $themeSet->getViewerPageTypes();
        $pageSet = new PageSet;
        $pagesData = $pageSet->getPagesData();
        $pageFactory = new PageFactory($themeSet);
        $message = 'No viewers found';
        if ($request->propertyIsSet('type')) {
            $newPageType = $request->getProperty('type');
            $nav = new Nav($pageFactory, $pageSet);
            $galleryIndex = new GalleryIndex($pageSet);
            $viewersPath = $config->getAbsoluteViewersPath();
            $cachedViewers = array();
            try {
                if (!$request->validate()) {
                    throw new Exception('No action. Re-submission or remote submission is not allowed.');
                }
                $count = 0;
                foreach($pagesData as $pageIndex=>$pageData) {
                    if (!$pageData['isGallery']) continue;
                    $page = $pageFactory->make($newPageType, $pageData['pageRef'], $pageData['path']);
                    if (!isset($cachedViewers[$newPageType])) {
                        $page->cacheViewer($viewersPath);
                        $cachedViewers[$newPageType] = true;
                    }
                    $page->gallery->saveGallery();
                    $page->saveLayer();
                    $page->savePageHtml($nav, $galleryIndex);
                    $pageSet->setPageType($pageIndex, $newPageType);
                    $pageSet->setPagesDataSupported($pageIndex, $page->isSupportedPageType());
                    $pageSet->savePagesData();
                    $pageSet->setPagesPref('publishing', 'unpublished');
                    $pageSet->savePagesPrefs();
                    $count++;
                }
                if ($count > 0) {
                    $message = 'Viewers changed to '.$context['pageTypes'][$newPageType]['shortName'];
                }
                Board::addMessage($message);
            } catch (Exception $e) {
                // reset changes here?
                Board::addExceptionMessage($e);
            }
        }
        $screen = new AllViewersScreen('Showkase – viewers', 'viewers', 'site viewers allviewers');
        print $screen->getHtml($context);
    }
}