Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/panel/page/check_in.php
Строк: 126
<?php
namespace ConcreteControllerPanelPage;

use 
ConcreteControllerBackendUserInterfacePage as BackendInterfacePageController;
use 
Permissions;
use 
CollectionVersion;
use 
Loader;
use 
Page;
use 
User;
use 
Response;
use 
ConcreteCoreErrorError as ValidationErrorHelper;
use 
Redirect;
use 
ConcreteCoreWorkflowRequestApprovePageRequest as ApprovePagePageWorkflowRequest;
use 
ConcreteCoreWorkflowProgressResponse as WorkflowProgressResponse;
use 
PageEditResponse;
use 
ConcreteCorePageTypeComposerControlControl as PageTypeComposerControl;

class 
CheckIn extends BackendInterfacePageController
{

    protected 
$viewPath '/panels/page/check_in';

    public function 
canAccess()
    {
        return 
$this->permissions->canApprovePageVersions() || $this->permissions->canEditPageContents();
    }

    public function 
on_start()
    {
        
parent::on_start();
        if (
$this->page) {
            
$this->set('publishErrors'$this->checkForPublishing());
        }
    }

    protected function 
checkForPublishing()
    {
        
$c $this->page;
        
// verify this page type has all the items necessary to be approved.
        
$e Loader::helper('validation/error');
        if (
$c->isPageDraft()) {
            if (!
$c->getPageDraftTargetParentPageID()) {
                
$e->add(t('You haven't chosen where to publish this page.'));
            }
        }
        $pagetype = $c->getPageTypeObject();
        if (is_object($pagetype)) {
            $validator = $pagetype->getPageTypeValidatorObject();
            $e->add($validator->validatePublishDraftRequest($c));
        }

        if ($c->isPageDraft() && !$e->has()) {
            $targetParentID = $c->getPageDraftTargetParentPageID();
            if ($targetParentID) {
                $tp = Page::getByID($targetParentID, '
ACTIVE');
                $pp = new Permissions($tp);
                if (!is_object($tp) || $tp->isError()) {
                    $e->add(t('
Invalid target page.'));
                } else {
                    if (!$pp->canAddSubCollection($pagetype)) {
                        $e->add(
                            t(
                                '
You do not have permissions to add a page of this type in the selected location.'
                            )
                        );
                    }
                }
            }
        }
        return $e;
    }

    public function submit()
    {
        if ($this->validateAction()) {
            $c = $this->page;
            $u = new User();
            $v = CollectionVersion::get($c, "RECENT");
            $v->setComment($_REQUEST['
comments']);
            $pr = new PageEditResponse();
            if ($this->request->request->get('
action') == 'publish' && $this->permissions->canApprovePageVersions()) {
                $e = $this->checkForPublishing();
                $pr->setError($e);
                if (!$e->has()) {
                    $pkr = new ApprovePagePageWorkflowRequest();
                    $pkr->setRequestedPage($c);
                    $pkr->setRequestedVersionID($v->getVersionID());
                    $pkr->setRequesterUserID($u->getUserID());
                    $u->unloadCollectionEdit($c);
                    $response = $pkr->trigger();

                    if ($c->isPageDraft()) {
                        $pagetype = $c->getPageTypeObject();
                        $pagetype->publish($c);
                    }
                }
            } else {
                if ($this->request->request->get('
action') == 'discard') {
                    if ($c->isPageDraft() && $this->permissions->canDeletePage()) {
                        $this->page->delete();
                        $u = new User();
                        $cID = $u->getPreviousFrontendPageID();
                        $pr->setRedirectURL(DIR_REL . '
/' . DISPATCHER_FILENAME . '?cID=' . $cID);
                    } else {
                        if ($v->canDiscard()) {
                            $v->discard();
                        }
                    }
                } else {
                    $v->removeNewStatus();
                }
            }
            $nc = Page::getByID($c->getCollectionID(), $v->getVersionID());
            $u->unloadCollectionEdit();
            $pr->setRedirectURL(Loader::helper('
navigation')->getLinkToCollection($nc, true));
            $pr->outputJSON();
        }
    }

    protected function validateAction()
    {
        if (parent::validateAction()) {
            if ($this->permissions->canEditPageContents() || $this->permissions->canEditPageProperties(
                ) || $this->permissions->canApprovePageVersions()
            ) {
                return true;
            }
        }
    }
}
Онлайн: 1
Реклама