/** * @method GET */ function get($type) { $list = MenuItem::GetMenuItemsForType(SITE_ID, $type); $menu = array(); foreach ($list as $row) { $scope = 'external'; $pageUniqId = ''; // set the scope of the link if ($row['PageId'] != '-1') { $scope = 'internal'; $page = Page::GetByPageId($row['PageId']); if ($page != NULL) { $pageUniqId = $page['PageUniqId']; } } // set the item $item = array('MenuItemUniqId' => $row['MenuItemUniqId'], 'Name' => $row['Name'], 'Url' => $row['Url'], 'PageUniqId' => $pageUniqId, 'Scope' => $scope); // push the item to the array array_push($menu, $item); } // return a json response $response = new Tonic\Response(Tonic\Response::OK); $response->contentType = 'application/json'; $response->body = json_encode($menu); return $response; }
/** * @method POST */ function form() { // parse request parse_str($this->request->data, $request); $siteId = $request['siteId']; $pageId = $request['pageId']; $site = Site::GetBySiteId($siteId); $page = Page::GetByPageId($pageId); // create a form (sent to webhooks) $wh_form = array('SiteId' => $siteId, 'PageId' => $pageId); if ($site != null && $page != null) { $subject = BRAND . ': Form Submission [' . $site['Name'] . ': ' . $page['Name'] . ']'; $content = '<h3>Site Information</h3>' . '<table>' . '<tr>' . '<td style="width: 125px; padding: 5px 25px 5px 0;">Site</td>' . '<td style="padding: 5px 0">' . $site['Name'] . '</td>' . '</tr>' . '<tr>' . '<td style="width: 125px; padding: 5px 25px 5px 0;">Page</td>' . '<td style="padding: 5px 0">' . $page['Name'] . '</td>' . '</tr>' . '</table>' . '<h3>Form Details</h3>' . '<table>'; foreach ($request as $key => $value) { if ($key != 'siteId' && $key != 'pageId') { // clean up title $title = urldecode($key); $title = preg_replace('/(?!^)[A-Z]{2,}(?=[A-Z][a-z])|[A-Z][a-z]|[0-9]{1,}/', ' $0', $key); $title = ucwords($title); // decode value $value = urldecode($value); $content .= '<tr>' . '<td style="width: 125px; padding: 5px 25px 5px 0;">' . $title . '</td>' . '<td style="padding: 5px 0">' . $value . '</td>' . '</tr>'; $wh_form[$key] = $value; } } $content .= '</table>'; // sends the email $to = $site['PrimaryEmail']; $from = $site['PrimaryEmail']; $fromName = $site['Name']; // send site email Utilities::SendSiteEmail($site, $to, $site['PrimaryEmail'], $site['Name'], $subject, $content); // send webhook Webhooks::FormSubmit($wh_form); // return a successful response (200) return new Tonic\Response(Tonic\Response::OK); } else { // unauthorized access return new Tonic\Response(Tonic\Response::UNAUTHORIZED); } }
public static function PublishMenu($siteUniqId, $root = '../') { $site = Site::GetBySiteUniqId($siteUniqId); $list = MenuItem::GetMenuItems($site['SiteId']); $menu = array(); $count = 0; foreach ($list as $row) { if ($row['PageId'] != -1) { $page = Page::GetByPageId($row['PageId']); if ($page != null) { $pageUniqId = $page['PageUniqId']; } else { $pageUniqId = -1; } } else { $pageUniqId = -1; } $item = array('MenuItemUniqId' => $row['MenuItemUniqId'], 'Name' => $row['Name'], 'CssClass' => $row['CssClass'], 'Type' => $row['Type'], 'Url' => $row['Url'], 'PageUniqId' => $pageUniqId); $menu[$count] = $item; $count = $count + 1; } // encode to json $encoded = json_encode($menu); $dest = $root . 'sites/' . $site['FriendlyId'] . '/data/'; Utilities::SaveContent($dest, 'menu.json', $encoded); }
public static function PublishPage($pageId, $preview = false, $remove_draft = false) { $page = Page::GetByPageId($pageId); if ($page != null) { $site = Site::GetBySiteId($page['SiteId']); // test for now Publish::PublishTemplate($page, $site, $preview, $remove_draft); // do not publish a static page for include only pages if ($page['IncludeOnly'] == 0) { Publish::PublishStaticPage($page, $site, $preview, $remove_draft); } } }
public static function PublishPage($pageId, $preview = false, $remove_draft = false) { $page = Page::GetByPageId($pageId); if ($page != null) { $site = Site::GetBySiteId($page['SiteId']); // test for now if ($site['UrlMode'] == 'static') { // for sites using static html pages (URL-based routing) Publish::PublishDynamicPage($page, $site, $preview, $remove_draft); // do not publish a static page for include only pages if ($page['IncludeOnly'] == 0) { Publish::PublishStaticPage($page, $site, $preview, $remove_draft); } // inject controllers Publish::InjectControllers($site); } else { // publishes a dynamic version of the page (for sites using UI-ROUTER (html5, hashbang, etc) Publish::PublishDynamicPage($page, $site, $preview, $remove_draft); // inject states Publish::InjectStates($site); } } }
/** * @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 begin and end $beginDate = $request['beginDate']; $endDate = $request['endDate']; // 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']; } // set order $orderBy = 'BeginDate ASC'; if ($pageSize == '') { $pageSize = 10; } $site = Site::GetBySiteUniqId($siteUniqId); $pageType = PageType::GetByPageTypeUniqId($pageTypeUniqId); // set language to the domain for the site $domain = '../locale'; Utilities::SetLanguage($language, $domain); // 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::GetPagesByCategoryForDates($site['SiteId'], $pageType['PageTypeId'], $pageSize, $page, $orderBy, $category['CategoryId'], true, $beginDate, $endDate); } } // if the category did not work or is not set, just get a list by the other params if ($hasCategory == false) { $list = Page::GetPagesForDates($site['SiteId'], $pageType['PageTypeId'], $pageSize, $page, $orderBy, true, $beginDate, $endDate); } $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/t-' . $page['Image']; $imageUrl = 'files/' . substr($page['Image'], 2); } // check for callout $hasCallout = false; if ($page['Callout'] != '') { $hasCallout = true; } // get photo $hasPhoto = false; $photo = ''; if ($row['PhotoUrl'] != null && $row['PhotoUrl'] != '') { $hasPhoto = true; $photo = 'files/' . $row['PhotoUrl']; } $url = strtolower($pageType['FriendlyId']) . '/' . $page['FriendlyId']; // 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'); // 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'); $item = array('PageUniqId' => $page['PageUniqId'], 'Name' => _($page['Name']), 'Description' => _($page['Description']), 'Callout' => _($page['Callout']), 'HasCallout' => $hasCallout, 'Url' => $url, 'Image' => $imageUrl, 'Thumb' => $thumbUrl, 'HasImage' => $hasImage, 'BeginDate' => $begin->format('Y-m-d H:i:s'), 'BeginDateReadable' => $beginReadable, 'EndDate' => $end->format('Y-m-d H:i:s'), 'EndDateReadable' => $endReadable, 'LastModified' => $page['LastModifiedDate'], 'Author' => $name, 'HasPhoto' => $hasPhoto, 'Photo' => $photo); 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); } }