/** * @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); } }
/** * @method POST */ function get() { parse_str($this->request->data, $request); // parse request $siteUniqId = SITE_UNIQ_ID; $pageTypeUniqId = $request['pageTypeUniqId']; $pageSize = $request['pageSize']; $orderBy = $request['orderBy']; $page = $request['page']; $prefix = $request['prefix']; // get a categoryUniqId (if set) $categoryUniqId = '-1'; if (isset($request['category'])) { $categoryUniqId = $request['category']; } // get language $language = 'en'; if (isset($request['language'])) { $language = $request['language']; } if ($orderBy == 'Created' or $orderBy == 'BeginDate') { // need to check these to prevent SQL injections $orderBy = $orderBy . ' DESC'; } else { $orderBy = $orderBy . ' ASC'; } if ($pageSize == '') { $pageSize = 10; } $site = Site::GetBySiteUniqId($siteUniqId); $pageType = PageType::GetByPageTypeUniqId($pageTypeUniqId); // Get all pages $hasCategory = false; // if category is set, try to get pages by Category if ($categoryUniqId != '-1') { $category = Category::GetByCategoryUniqId($categoryUniqId); if (isset($category['CategoryId'])) { $hasCategory = true; $list = Page::GetPagesByCategory($site['SiteId'], $pageType['PageTypeId'], $pageSize, $page, $orderBy, $category['CategoryId'], true); } } // if the category did not work or is not set, just get a list by the other params if ($hasCategory == false) { $list = Page::GetPages($site['SiteId'], $pageType['PageTypeId'], $pageSize, $page, $orderBy, true); } $pages = array(); foreach ($list as $row) { $page = Page::GetByPageId($row['PageId']); // get name $name = $row['FirstName'] . ' ' . $row['LastName']; // get photo $hasPhoto = false; $photo = ''; if ($row['PhotoUrl'] != null && $row['PhotoUrl'] != '') { $hasPhoto = true; $photo = 'files/' . $row['PhotoUrl']; } // get image url $thumbUrl = ''; $imageUrl = ''; $mImageUrl = ''; $url = 'http://' . $site['Domain'] . '/' . strtolower($pageType['FriendlyId']) . '/' . $page['FriendlyId']; $local = new DateTimeZone($site['TimeZone']); // create a readable date $date = DateTime::createFromFormat('Y-m-d H:i:s', $page['LastModifiedDate']); $date->setTimezone($local); $readable = $date->format('D, M d y h:i a'); // create a readable event date $readableEventBeginDate = $readable; $eventBeginDate = DateTime::createFromFormat('Y-m-d H:i:s', $page['BeginDate']); if ($eventBeginDate != null) { $eventBeginDate->setTimezone($local); $readableEventBeginDate = $eventBeginDate->format('D, M d y h:i a'); } $item = array('PageUniqId' => $page['PageUniqId'], 'Name' => $page['Name'], 'Description' => $page['Description'], 'Callout' => $page['Callout'], 'Url' => $url, 'Image' => $imageUrl, 'Thumb' => $thumbUrl, 'LastModified' => $page['LastModifiedDate'], 'LastModifiedReadable' => $readable, 'BeginDateReadable' => $readableEventBeginDate, 'Author' => $name, 'HasPhoto' => $hasPhoto, 'Photo' => $photo); $fragment = '../fragments/render/' . $page['PageUniqId'] . '.php'; if (file_exists($fragment)) { // set language to the domain for the site $domain = '../locale'; Utilities::SetLanguage($language, $domain); ob_start(); // start output buffer textdomain($domain); include $fragment; $content = ob_get_contents(); // get contents of buffer ob_end_clean(); //$content = file_get_contents($fragment); #old } else { $content = 'Not found'; } // fix nested, relative URLs if displayed in the root if ($prefix == '') { $content = str_replace('src="../', 'src="', $content); $content = str_replace('href="../', 'href="', $content); } // update images with sites/[name] to a relative URL $content = str_replace('src="sites/' . $site['FriendlyId'] . '/', 'src="' . $prefix, $content); $item['Content'] = $content; array_push($pages, $item); } // return a json response $response = new Tonic\Response(Tonic\Response::OK); $response->contentType = 'applicaton/json'; $response->body = json_encode($pages); return $response; }
/** * @method POST */ function post() { parse_str($this->request->data, $request); // parse request $siteId = $request['siteId']; $friendlyId = $request['type']; $pageSize = $request['pagesize']; $orderBy = $request['orderby']; $current = $request['current']; // get language $language = 'en'; // set order if ($orderBy == 'Created' || $orderBy == 'BeginDate') { $orderBy = 'Pages.' . $orderBy . ' DESC'; } else { $orderBy = 'Pages.' . $orderBy . ' ASC'; } if ($pageSize == '') { $pageSize = 10; } $site = Site::GetBySiteId($siteId); $pageType = PageType::GetByFriendlyId($friendlyId, $siteId); $list = Page::GetPages($site['SiteId'], $pageType['PageTypeId'], $pageSize, $current, $orderBy, true); $pages = array(); foreach ($list as $row) { $page = Page::GetByPageId($row['PageId']); $name = $row['FirstName'] . ' ' . $row['LastName']; // get image url $thumbUrl = ''; $imageUrl = ''; $hasImage = false; if ($page['Image'] != '') { $hasImage = true; $thumbUrl = 'files/thumbs/' . $page['Image']; $imageUrl = 'files/' . substr($page['Image'], 2); } // check for callout $hasCallout = false; if ($page['Callout'] != '') { $hasCallout = true; } // build URL $url = strtolower($pageType['FriendlyId']) . '/' . $page['FriendlyId']; $beginDate = null; $beginReadable = ''; if ($page['BeginDate'] != null) { // create a readable begin date $begin = DateTime::createFromFormat('Y-m-d H:i:s', $page['BeginDate']); $local = new DateTimeZone($site['TimeZone']); $begin->setTimezone($local); $beginReadable = $begin->format('D, M d y h:i a'); $beginDate = $begin->format('Y-m-d H:i:s'); } $endDate = null; $endReadable = ''; if ($page['EndDate'] != null) { // create a readable end date $end = DateTime::createFromFormat('Y-m-d H:i:s', $page['EndDate']); $local = new DateTimeZone($site['TimeZone']); $end->setTimezone($local); $endReadable = $end->format('D, M d y h:i a'); $endDate = $end->format('Y-m-d H:i:s'); } $item = array('PageId' => $page['PageId'], 'Name' => $page['Name'], 'Description' => $page['Description'], 'Callout' => $page['Callout'], 'Location' => $page['Location'], 'LatLong' => $page['LatLong'], 'HasCallout' => $hasCallout, 'Url' => $url, 'Image' => $imageUrl, 'Thumb' => $thumbUrl, 'HasImage' => $hasImage, 'BeginDate' => $beginDate, 'BeginDateReadable' => $beginReadable, 'EndDate' => $endDate, 'EndDateReadable' => $endReadable, 'LastModified' => $page['LastModifiedDate'], 'Author' => $name, 'FirstName' => $row['FirstName'], 'LastName' => $row['LastName'], 'Photo' => $row['PhotoUrl'], 'Tags' => $page['Tags']); array_push($pages, $item); } // return a json response $response = new Tonic\Response(Tonic\Response::OK); $response->contentType = 'applicaton/json'; $response->body = json_encode($pages); return $response; return new Tonic\Response(Tonic\Response::CREATED); }
/** * @method GET */ function get($friendlyId) { // get an authuser $authUser = new AuthUser(); if (isset($authUser->UserUniqId)) { // check if authorized $siteId = $authUser->SiteId; $pageSize = 100; $orderBy = 'Created DESC'; $page = 0; $pageTypeId = -1; $dir = '/'; if ($friendlyId != 'root') { // get pagetype $pageType = PageType::GetByFriendlyId($friendlyId, $siteId); $pageTypeId = $pageType['PageTypeId']; $dir = strtolower($pageType['TypeS']) . '/'; } // get site url $site = Site::GetBySiteId($authUser->SiteId); $dir = 'sites/' . $site['FriendlyId'] . '/files/'; // get pages $list = Page::GetPages($siteId, $pageTypeId, $pageSize, $page, $orderBy); $pages = array(); foreach ($list as $row) { $page = Page::GetByPageId($row['PageId']); $fullName = $row['FirstName'] . ' ' . $row['LastName']; $page['LastModifiedFullName'] = $fullName; $thumbUrl = ''; if ($page['Image'] != '') { if (strpos($page['Image'], 't-') !== false) { $thumbUrl = $dir . $page['Image']; } else { $thumbUrl = $dir . 't-' . $page['Image']; } } // set thumb $page['Thumb'] = $thumbUrl; $url = $page['FriendlyId']; if ($page['PageTypeId'] != -1) { $pageType = PageType::GetByPageTypeId($page['PageTypeId']); $url = strtolower($pageType['TypeS']) . '/' . $page['FriendlyId']; } // set url $page['Url'] = $url; // permissions are not applicable to this API call $page['CanEdit'] = ''; $page['CanPublish'] = ''; $page['CanRemove'] = ''; $pages[$row['PageUniqId']] = $page; } // return a json response $response = new Tonic\Response(Tonic\Response::OK); $response->contentType = 'application/json'; $response->body = json_encode($pages); return $response; } else { // unauthorized access return new Tonic\Response(Tonic\Response::UNAUTHORIZED); } }