/** * @method POST */ function post() { // get token $token = Utilities::ValidateJWTToken(apache_request_headers()); // check if token is not null if ($token != NULL) { parse_str($this->request->data, $request); // parse request $theme = $request['theme']; // convert string to a boolean $replaceContent = $request['replaceContent'] === 'true'; $site = Site::GetBySiteId($token->SiteId); // edits the theme for the site Site::EditTheme($token->SiteId, $theme); // publishes a theme for a site Publish::PublishTheme($site, $theme); // publish default content for the theme if ($replaceContent == true) { echo 'publish default content, $replaceContent=' . $replaceContent; Publish::PublishDefaultContent($site, $theme, $token->UserId); } // republish site with the new theme Publish::PublishSite($site['SiteId']); // return a json response return new Tonic\Response(Tonic\Response::OK); } else { // return an unauthorized exception (401) return new Tonic\Response(Tonic\Response::UNAUTHORIZED); } }
/** * @method POST */ function post() { parse_str($this->request->data, $request); // parse request $friendlyId = trim($request['friendlyId']); $name = trim($request['name']); $s_passcode = $request['passcode']; $timeZone = $request['timeZone']; $email = ''; $password = ''; $language = DEFAULT_LANGUAGE; // language for the app $direction = DEFAULT_DIRECTION; $userId = -1; // get first name and lastname $firstName = $request['firstName']; $lastName = $request['lastName']; // validate name and friendlyId if ($friendlyId == '' || $name == '') { return new Tonic\Response(Tonic\Response::BADREQUEST); } $theme = DEFAULT_THEME; // set theme if (isset($request['theme'])) { $theme = $request['theme']; } // set language if set if (isset($request['language'])) { $language = $request['language']; } // set direction if set if (isset($request['direction'])) { $direction = $request['direction']; } // 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']; // valide email and password if ($email == '' || $password == '') { return new Tonic\Response(Tonic\Response::BADREQUEST); } } else { // get an authuser $authUser = new AuthUser(); if ($authUser->UserId && $authUser->IsSuperAdmin == true) { // check if authorized $userId = $authUser->UserId; } else { return new Tonic\Response(Tonic\Response::UNAUTHORIZED); } } // defaults $domain = SITE_URL; $domain = str_replace('{{friendlyId}}', $friendlyId, $domain); $logoUrl = 'sample-logo.png'; $altLogoUrl = ''; if ($s_passcode == PASSCODE) { $isFriendlyIdUnique = Site::IsFriendlyIdUnique($friendlyId); // check for reserved names if ($friendlyId == 'app' || $friendlyId == 'sites' || $friendlyId == 'api' || $friendlyId == 'triangulate' || $friendlyId == 'developer') { $isFriendlyIdUnique = false; } if ($isFriendlyIdUnique == false) { return new Tonic\Response(Tonic\Response::CONFLICT); } // default is blank $welcomeEmail = ''; $receiptEmail = ''; // files for emails $welcome_file = APP_LOCATION . '/site/emails/welcome.html'; $receipt_file = APP_LOCATION . '/site/emails/receipt.html'; // make sure the welcome email exists if (file_exists($welcome_file)) { // get default email file $welcomeEmail = file_get_contents($welcome_file); } // make sure the receipt email exists if (file_exists($receipt_file)) { // get default email file $receiptEmail = file_get_contents($receipt_file); } // add the site $site = Site::Add($domain, $name, $friendlyId, $logoUrl, $altLogoUrl, $theme, $email, $timeZone, $language, $direction, $welcomeEmail, $receiptEmail); // 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 $siteId $siteId = $site['SiteId']; // publishes a theme for a site Publish::PublishTheme($site, $theme); // publish default content for the theme Publish::PublishDefaultContent($site, $theme, $user['UserId']); // publish the site Publish::PublishSite($site['SiteId']); // create a locale directory $locales_dir = SITES_LOCATION . '/' . $site['FriendlyId'] . '/locales'; // create locales directory if it does not exist if (!file_exists($locales_dir)) { mkdir($locales_dir, 0755, true); } // set directory for locale $locale_dir = $locales_dir . '/' . $site['Language'] . '/'; // make the locale dir if it does not exist if (!file_exists($locale_dir)) { mkdir($locale_dir, 0755, true); } // set filename $filename = 'translation.json'; if (!file_exists($locale_dir . $filename)) { // create a blank translation file Utilities::SaveContent($locale_dir, $filename, '{}'); } // send welcome email if (SEND_WELCOME_EMAIL == true && $email != '') { $to = $email; $from = EMAILS_FROM; $fromName = EMAILS_FROM_NAME; $subject = WELCOME_EMAIL_SUBJECT; $file = WELCOME_EMAIL_FILE; // create strings to replace $loginUrl = APP_URL . '/login/' . $site['FriendlyId']; $newSiteUrl = $domain; $replace = array('{{brand-logo}}' => '<img src="' . BRAND_LOGO . '" style="max-height:50px">', '{{brand}}' => BRAND, '{{reply-to}}' => EMAILS_FROM, '{{new-site-url}}' => $newSiteUrl, '{{login-url}}' => $loginUrl); // send email from file Utilities::SendEmailFromFile($to, $from, $fromName, $subject, $replace, $file); } // send new site hook Webhooks::NewSite($site); // send new user hook Webhooks::NewUser($user); return new Tonic\Response(Tonic\Response::OK); } else { return new Tonic\Response(Tonic\Response::UNAUTHORIZED); } }