Example #1
0
 /**
  * @method POST
  */
 function add()
 {
     // get an authuser
     $authUser = new AuthUser();
     if (isset($authUser->UserUniqId)) {
         // check if authorized
         parse_str($this->request->data, $request);
         // parse request
         // get the page type (if applicable)
         $pageTypeId = -1;
         $pageTypeUniqId = $request['pageTypeUniqId'];
         // get page type
         // check permissions
         if (Utilities::CanPerformAction($pageTypeUniqId, $authUser->CanCreate) == false) {
             return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
         }
         // default layout and stylesheet is content
         $layout = 'content';
         $stylesheet = 'content';
         if ($pageTypeUniqId != '-1') {
             $pageType = PageType::GetByPageTypeUniqId($pageTypeUniqId);
             if ($pageType != null) {
                 $pageTypeId = $pageType['PageTypeId'];
                 $layout = $pageType['Layout'];
                 $stylesheet = $pageType['Stylesheet'];
             }
         }
         $name = $request['name'];
         $friendlyId = $request['friendlyId'];
         $description = $request['description'];
         $page = Page::Add($friendlyId, $name, $description, $layout, $stylesheet, $pageTypeId, $authUser->SiteId, $authUser->UserId);
         // add categories to the page (if set)
         if (isset($request['categories'])) {
             $categories = $request['categories'];
             $arr = explode(',', $categories);
             foreach ($arr as $categoryUniqId) {
                 $category = Category::GetByCategoryUniqId($categoryUniqId);
                 if ($category != NULL) {
                     Page::AddCategory($page['PageId'], $category['CategoryId']);
                 }
             }
         }
         // return a json response
         $response = new Tonic\Response(Tonic\Response::OK);
         $response->contentType = 'application/json';
         $response->body = json_encode($page);
         return $response;
     } else {
         // unauthorized access
         return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
     }
 }
Example #2
0
 /**
  * @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);
     }
 }
Example #3
0
 /**
  * @method POST
  */
 function post()
 {
     parse_str($this->request->data, $request);
     // parse request
     $friendlyId = $request['friendlyId'];
     $name = $request['name'];
     $s_passcode = $request['passcode'];
     $timeZone = $request['timeZone'];
     $email = '';
     $password = '';
     $language = 'en-us';
     // language for the app
     $userId = -1;
     $theme = DEFAULT_THEME;
     // set theme
     if (isset($request['theme'])) {
         $theme = $request['theme'];
     }
     // set language if set
     if (isset($request['language'])) {
         $language = $request['language'];
     }
     // check for email and password
     if (isset($request['email'])) {
         $userLanguage = 'en-us';
         if (isset($request['userLanguage'])) {
             $userLanguage = $request['userLanguage'];
         }
         $email = $request['email'];
         $password = $request['password'];
     } else {
         // get an authuser
         $authUser = new AuthUser();
         if ($authUser->UserUniqId && $authUser->IsSuperAdmin == true) {
             // check if authorized
             $userId = $authUser->UserId;
         } else {
             return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
         }
     }
     // defaults
     $firstName = 'New';
     $lastName = 'User';
     $domain = APP_URL . '/sites/' . $friendlyId;
     $domain = str_replace('http://', '', $domain);
     $logoUrl = 'sample-logo.png';
     if ($s_passcode == PASSCODE) {
         // check for uniqueness of email
         if ($email != '') {
             $isUserUnique = User::IsLoginUnique($email);
             if ($isUserUnique == false) {
                 return new Tonic\Response(Tonic\Response::CONFLICT);
             }
         }
         $isFriendlyIdUnique = Site::IsFriendlyIdUnique($friendlyId);
         if ($isFriendlyIdUnique == false) {
             return new Tonic\Response(Tonic\Response::CONFLICT);
         }
         // add the site
         $site = Site::Add($domain, $name, $friendlyId, $logoUrl, $theme, $email, $timeZone, $language);
         // add the site
         // add the admin
         if ($email != '') {
             $isActive = 1;
             // admins by default are active
             $user = User::Add($email, $password, $firstName, $lastName, 'Admin', $userLanguage, $isActive, $site['SiteId']);
             $userId = $user['UserId'];
         }
         // set the stripe plan, customer id, status
         if (DEFAULT_STRIPE_PLAN != '') {
             Stripe::setApiKey(STRIPE_API_KEY);
             $customer = Stripe_Customer::create(array("plan" => DEFAULT_STRIPE_PLAN, "email" => $email));
             $customerId = $customer->id;
             Site::EditCustomer($site['SiteUniqId'], $customerId);
         }
         // read the defaults file
         $default_json_file = '../themes/' . $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;
             // 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'];
                 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, 'Page', 'Pages', $layout, $stylesheet, 0, $siteId, $userId, $userId);
                     }
                     // get newly minted page type
                     $pageTypeId = $pageType['PageTypeId'];
                 } else {
                     // root, no pagetype
                     $pageFriendlyId = $url;
                     $pageTypeId = -1;
                 }
                 // create a page
                 $page = Page::Add($pageFriendlyId, $name, $description, $layout, $stylesheet, $pageTypeId, $site['SiteId'], $userId);
                 // set the page to active
                 Page::SetIsActive($page['PageUniqId'], 1);
                 // build the content file
                 $filename = '../themes/' . $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}}', 'sites/' . $site['FriendlyId'], $content);
                 }
                 // publish the fragment
                 Publish::PublishFragment($site['FriendlyId'], $page['PageUniqId'], 'publish', $content);
                 // build the primary menu
                 if ($primaryMenu == true) {
                     MenuItem::Add($name, '', 'primary', $url, $page['PageId'], $primaryMenuCount, $site['SiteId'], $userId, $userId);
                     $primaryMenuCount++;
                 }
                 // build the footer menu
                 if ($footerMenu == true) {
                     MenuItem::Add($name, '', 'footer', $url, $page['PageId'], $footerMenuCount, $site['SiteId'], $userId, $userId);
                     $footerMenuCount++;
                 }
             }
         } else {
             return new Tonic\Response(Tonic\Response::BADREQUEST);
         }
         // publishes a theme for a site
         Publish::PublishTheme($site, $theme);
         // publish the site
         Publish::PublishSite($site['SiteUniqId']);
         // send welcome email
         if (SEND_WELCOME_EMAIL == true && $email != '') {
             $to = $email;
             $from = REPLY_TO;
             $fromName = REPLY_TO_NAME;
             $subject = BRAND . ': Welcome to ' . BRAND;
             $file = 'emails/new-user.html';
             // create strings to replace
             $loginUrl = APP_URL;
             $newSiteUrl = APP_URL . '/sites/' . $site['FriendlyId'];
             $replace = array('{{brand}}' => BRAND, '{{reply-to}}' => REPLY_TO, '{{new-site-url}}' => $newSiteUrl, '{{login-url}}' => $loginUrl);
             // send email from file
             Utilities::SendEmailFromFile($to, $from, $fromName, $subject, $replace, $file);
         }
         return new Tonic\Response(Tonic\Response::OK);
     } else {
         return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
     }
 }
Example #4
0
 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++;
                 }
             }
         }
     }
 }
Example #5
0
 /**
  * @method POST
  */
 function add()
 {
     // get token
     $token = Utilities::ValidateJWTToken(apache_request_headers());
     // check if token is not null
     if ($token != NULL) {
         // get a reference to the site, user
         $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
         // get request paramters
         $pageTypeId = $request['pageTypeId'];
         $name = $request['name'];
         $friendlyId = $request['friendlyId'];
         $description = $request['description'];
         // check permissions
         if (Utilities::CanPerformAction($pageTypeId, $access['CanCreate']) == false) {
             return new Tonic\Response(Tonic\Response::BADREQUEST);
         }
         // default layout and stylesheet is content
         $layout = 'content';
         $stylesheet = 'content';
         if ($pageTypeId != '-1') {
             $pageType = PageType::GetByPageTypeId($pageTypeId);
             if ($pageType != null) {
                 $pageTypeId = $pageType['PageTypeId'];
                 $layout = $pageType['Layout'];
                 $stylesheet = $pageType['Stylesheet'];
             }
         }
         // add page
         $page = Page::Add($friendlyId, $name, $description, $layout, $stylesheet, $pageTypeId, $token->SiteId, $token->UserId);
         $fullName = $user['FirstName'] . ' ' . $user['LastName'];
         $row['LastModifiedFullName'] = $fullName;
         // init url
         $url = $page['FriendlyId'];
         // init PT
         $pageType = NULL;
         // get url, permissions
         if ($page['PageTypeId'] != -1) {
             $pageType = PageType::GetByPageTypeId($page['PageTypeId']);
             if ($pageType != NULL) {
                 $url = strtolower($pageType['FriendlyId']) . '/' . $page['FriendlyId'];
                 // set edit permissions
                 if ($access['CanEdit'] == 'All' || strpos($access['CanEdit'], $pageType['PageTypeId']) !== FALSE) {
                     $canEdit = true;
                 }
                 // set publish permissions
                 if ($access['CanPublish'] == 'All' || strpos($access['CanPublish'], $pageType['PageTypeId']) !== FALSE) {
                     $canPublish = true;
                 }
                 // set remove permissions
                 if ($access['CanRemove'] == 'All' || strpos($access['CanRemove'], $pageType['PageTypeId']) !== FALSE) {
                     $canRemove = true;
                 }
             }
         } else {
             // set edit permissions
             if ($access['CanEdit'] == 'All' || strpos($access['CanEdit'], 'root') !== FALSE) {
                 $canEdit = true;
             }
             // set publish permissions
             if ($access['CanPublish'] == 'All' || strpos($access['CanPublish'], 'root') !== FALSE) {
                 $canPublish = true;
             }
             // set remove permissions
             if ($access['CanRemove'] == 'All' || strpos($access['CanRemove'], 'root') !== FALSE) {
                 $canRemove = true;
             }
         }
         // init
         $imageURL = '';
         $thumbURL = '';
         // get thumb url
         if ($page['Image'] != '') {
             // set images URL
             if (FILES_ON_S3 == true) {
                 $bucket = $site['Bucket'];
                 $imagesURL = str_replace('{{bucket}}', $bucket, S3_URL);
                 $imagesURL = str_replace('{{site}}', $site['FriendlyId'], $imagesURL);
             } else {
                 $imagesURL = $site['Domain'];
             }
             $thumbURL = $imagesURL . '/files/thumbs/' . $page['Image'];
             $imageURL = $imagesURL . '/files/' . $page['Image'];
         }
         $page['Image'] = $imageURL;
         $page['Thumb'] = $thumbURL;
         // set permissions
         $page['CanEdit'] = $canEdit;
         $page['CanPublish'] = $canPublish;
         $page['CanRemove'] = $canRemove;
         // set url
         $page['Url'] = $url;
         // no drafts on new page
         $page['HasDraft'] = false;
         // return a json response
         $response = new Tonic\Response(Tonic\Response::OK);
         $response->contentType = 'application/json';
         $response->body = json_encode($page);
         return $response;
     } else {
         // unauthorized access
         return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
     }
 }
Example #6
0
<?php

include 'core/Page.php';
if (!Session::logged_in()) {
    Page::Redirect('login');
}
$df = new DataForm('changeMyPassword.txt');
$df->form->Prepare();
$p = new Page();
if (!$p->ajax) {
    $p->HTML('header.html');
    $p->title = 'Form Test';
    $p->CSS('main.css');
    $p->Jquery();
    $p->JS(CDN_JQ_CHOSEN);
    $p->CSS(CDN_JQ_CHOSEN_CSS);
}
$p->Add(new DataForm('changeMyPassword.txt'));
if (!$p->ajax) {
    $p->HTML('footer.html');
}
$p->Render();