Example #1
0
 /**
  * @method POST
  */
 function post()
 {
     // get token
     $token = Utilities::ValidateJWTToken(apache_request_headers());
     // check if token is not null
     if ($token != NULL) {
         $site = Site::GetBySiteId($token->SiteId);
         $user = User::GetByUserId($token->UserId);
         // creates an access object
         $access = Utilities::SetAccess($user);
         parse_str($this->request->data, $request);
         // parse request
         $pageId = $request['pageId'];
         $content = $request['content'];
         $status = $request['status'];
         // draft or publish
         $image = $request['image'];
         // get page and site
         $page = Page::GetByPageId($pageId);
         // default is root
         $pageTypeId = -1;
         $pageType = NULL;
         // determine if file is in sub-direcotry
         if ($page['PageTypeId'] != -1) {
             $pageType = PageType::GetByPageTypeId($page['PageTypeId']);
             // set page type
             $pageTypeId = $pageType['PageTypeId'];
         }
         // get permissions
         $canEdit = Utilities::CanPerformAction($pageTypeId, $access['CanEdit']);
         $canPublish = Utilities::CanPerformAction($pageTypeId, $access['CanPublish']);
         // check permissions
         if ($canEdit == false && $canPublish == false) {
             return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
         }
         // save content
         if ($status == 'publish') {
             Page::EditContent($pageId, $content, $token->UserId);
         } else {
             // save draft
             Page::EditDraft($pageId, $content, $token->UserId);
         }
         $url = '';
         // publish if status is set to publish and the user can publish
         if ($status == 'publish' && $canPublish == true) {
             // set active
             Page::SetIsActive($page['PageId'], 1);
             // publish page
             $url = Publish::PublishPage($page['PageId'], false, true);
             // edit image
             Page::EditImage($page['PageId'], $image, $token->UserId);
             // if page is include only, republish content
             if ($page['IncludeOnly'] == 1) {
                 Publish::PublishContent($page['SiteId']);
             }
         }
         // return successful response
         $response = new Tonic\Response(Tonic\Response::OK);
         $response->contentType = 'text/html';
         $response->body = $url;
         return $response;
     } else {
         // unauthorized access
         return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
     }
 }