/** * @method POST */ function add() { // get token $token = Utilities::ValidateJWTToken(); // check if token is not null if ($token != NULL) { parse_str($this->request->data, $request); // parse request $friendlyId = $request['friendlyId']; $layout = $request['layout']; $stylesheet = $request['stylesheet']; $isSecure = $request['isSecure']; $siteId = $token->SiteId; $lastModifiedBy = $token->UserId; // add pagetype $pageType = PageType::Add($friendlyId, $layout, $stylesheet, $isSecure, $siteId, $lastModifiedBy); // duplicate pages in pagetype (if set) if (isset($request['pageTypeId'])) { $pageTypeId = $request['pageTypeId']; // set order $pageSize = 100; $page = 0; $orderBy = 'Pages.PageId ASC'; // get pages $list = Page::GetPages($siteId, $pageTypeId, $pageSize, $page, $orderBy); // walk through pages foreach ($list as $row) { // duplicate page $page = Page::Add($row['FriendlyId'], $row['Name'], $row['Description'], $row['Layout'], $row['Stylesheet'], $pageType['PageTypeId'], $token->SiteId, $token->UserId); // set content for page Page::EditContent($page['PageId'], $row['Content'], $token->UserId); } } // return a json response $response = new Tonic\Response(Tonic\Response::OK); $response->contentType = 'application/json'; $response->body = json_encode($pageType); return $response; } else { // unauthorized access return new Tonic\Response(Tonic\Response::UNAUTHORIZED); } }
public static function PublishDefaultContent($site, $theme, $userId) { // read the defaults file $default_json_file = APP_LOCATION . THEMES_FOLDER . '/' . $theme . '/default.json'; // set $siteId $siteId = $site['SiteId']; // check to make sure the defaults.json exists if (file_exists($default_json_file)) { // get json from the file $json_text = file_get_contents($default_json_file); // decode json $json = json_decode($json_text, true); // pagetypes $pagetypes = array(); // menu counts $primaryMenuCount = 0; $footerMenuCount = 0; // clear default types MenuItem::RemoveForType('primary', $siteId); MenuItem::RemoveForType('footer', $siteId); // walk through defaults array foreach ($json as &$value) { // get values from array $url = $value['url']; $source = $value['source']; $name = $value['name']; $description = $value['description']; $layout = $value['layout']; $stylesheet = $value['stylesheet']; $primaryMenu = $value['primaryMenu']; $footerMenu = $value['footerMenu']; $includeOnly = 0; // set includeOnly (if specified in default) if (isset($value['includeOnly'])) { if ($value['includeOnly'] == true) { $includeOnly = 1; } } // initialize PT $pageType = NULL; if (strpos($url, '/') !== false) { // the url has a pagetype $arr = explode('/', $url); // get friendly ids from $url $pageTypeFriendlyId = $arr[0]; $pageFriendlyId = $arr[1]; $pageTypeId = -1; $pageType = PageType::GetByFriendlyId($pageTypeFriendlyId, $siteId); // create a new pagetype if ($pageType == NULL) { $pageType = PageType::Add($pageTypeFriendlyId, $layout, $stylesheet, 0, $siteId, $userId); } // get newly minted page type $pageTypeId = $pageType['PageTypeId']; } else { // root, no pagetype $pageFriendlyId = $url; $pageTypeId = -1; } // determine if page is unique $isUnique = Page::IsFriendlyIdUnique($pageFriendlyId, $pageTypeId, $site['SiteId']); // initialize page $page = NULL; // if page has not been created, create a page if ($isUnique == true) { // create a page $page = Page::Add($pageFriendlyId, $name, $description, $layout, $stylesheet, $pageTypeId, $site['SiteId'], $userId); } else { // get the page $page = Page::GetByFriendlyId($pageFriendlyId, $pageTypeId, $site['SiteId']); } // quick check if ($page != NULL) { // set the page to active Page::SetIsActive($page['PageId'], 1); // set include only Page::SetIncludeOnly($page['PageId'], $includeOnly); // build the content file $filename = APP_LOCATION . THEMES_FOLDER . '/' . $theme . '/' . $source; $content = ''; // get the content for the page if (file_exists($filename)) { $content = file_get_contents($filename); // fix images $content = str_replace('{{site-dir}}', $site['Domain'], $content); } // edit the page content Page::EditContent($page['PageId'], $content, $userId); // build the primary menu if ($primaryMenu == true) { MenuItem::Add($name, '', 'primary', $url, $page['PageId'], $primaryMenuCount, $site['SiteId'], $userId); $primaryMenuCount++; } // build the footer menu if ($footerMenu == true) { MenuItem::Add($name, '', 'footer', $url, $page['PageId'], $footerMenuCount, $site['SiteId'], $userId); $footerMenuCount++; } } } } }
/** * @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); } }