budde377/Part

View on GitHub
lib/controller/ajax/type_handler/PageTypeHandlerImpl.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php
/**
 * Created by PhpStorm.
 * User: budde
 * Date: 3/3/15
 * Time: 9:08 PM
 */

namespace ChristianBudde\Part\controller\ajax\type_handler;


use ChristianBudde\Part\BackendSingletonContainer;
use ChristianBudde\Part\model\page\Page;
use ChristianBudde\Part\util\traits\TypeHandlerTrait;

class PageTypeHandlerImpl extends GenericObjectTypeHandlerImpl
{

    use TypeHandlerTrait;

    private $container;

    function __construct(BackendSingletonContainer $container, Page $page)
    {
        $this->container = $container;
        parent::__construct($page, 'Page');
        $this->whitelistFunction('Page',
            'isHidden',
            'hide',
            'show',
            'getID',
            'getTitle',
            'getTemplate',
            'getAlias',
            'getContent',
            'setID',
            'setTitle',
            'setTemplate',
            'setAlias',
            'delete',
            'match',
            'isEditable',
            'isValidID',
            'isValidAlias',
            'lastModified',
            'modify',
            'getInstance'
        );

        $this->addFunctionAuthFunction('Page', 'setID', $this->wrapFunction([$this, "hasPagePrivilegesAuthFunction"]));
        $this->addFunctionAuthFunction('Page', 'setTitle', $this->wrapFunction([$this, "hasPagePrivilegesAuthFunction"]));
        $this->addFunctionAuthFunction('Page', 'setTemplate', $this->wrapFunction([$this, "hasPagePrivilegesAuthFunction"]));
        $this->addFunctionAuthFunction('Page', 'setAlias', $this->wrapFunction([$this, "hasPagePrivilegesAuthFunction"]));
        $this->addFunctionAuthFunction('Page', 'modify', $this->wrapFunction([$this, "hasPagePrivilegesAuthFunction"]));
        $this->addFunctionAuthFunction('Page', 'delete', $this->currentUserSitePrivilegesAuthFunction($this->container));
        $this->addFunctionAuthFunction('Page', 'hide', $this->currentUserSitePrivilegesAuthFunction($this->container));
        $this->addFunctionAuthFunction('Page', 'show', $this->currentUserSitePrivilegesAuthFunction($this->container));
        $this->addGetInstanceFunction("Page");
    }


    function hasPagePrivilegesAuthFunction(/** @noinspection PhpUnusedParameterInspection */
        $type, Page $instance)
    {
        $currentUser = $this->container->getUserLibraryInstance()->getUserLoggedIn();
        if ($currentUser == null) {
            return false;
        }
        return $currentUser->getUserPrivileges()->hasPagePrivileges($instance);
    }

}