Page MenuHomeDevCentral

D4223.id11079.diff
No OneTemporary

D4223.id11079.diff

diff --git a/workspaces/src/Engines/Apps/ApplicationContext.php b/workspaces/src/Engines/Apps/ApplicationContext.php
--- a/workspaces/src/Engines/Apps/ApplicationContext.php
+++ b/workspaces/src/Engines/Apps/ApplicationContext.php
@@ -47,6 +47,7 @@
$applicationContext->workspace = $sourceContext->workspace;
$applicationContext->user = $sourceContext->user;
$applicationContext->session = $sourceContext->session;
+ $applicationContext->request = $sourceContext->request;
$applicationContext->url = $sourceContext->url;
$applicationContext->templateEngine = $sourceContext->templateEngine;
diff --git a/workspaces/src/Engines/Auth/Methods/AzharProvider.php b/workspaces/src/Engines/Auth/Methods/AzharProvider.php
--- a/workspaces/src/Engines/Auth/Methods/AzharProvider.php
+++ b/workspaces/src/Engines/Auth/Methods/AzharProvider.php
@@ -57,10 +57,10 @@
if ($action == "user.login.azhar.initialize") {
//Redirects user to Azhàr SSO service
- $callbackUrl =
- Request::getServerURL() . get_url($this->context->workspace->code)
- . '?action=user.login.azhar.success&authenticationMethodId='
- . $this->id;
+ $callbackUrl = Request::getServerURL()
+ . $this->context->request->buildUrl($this->context->workspace->code)
+ . '?action=user.login.azhar.success&authenticationMethodId='
+ . $this->id;
$url = $this->url . '?mode=provider&key=' . $this->clientKey
. '&sessionKey=' . $this->getSessionKey()
. '&url=' . urlencode($callbackUrl);
@@ -152,7 +152,8 @@
* @retrun string the login link
*/
public function getAuthenticationLink () {
- $url = Request::getServerURL() . get_url($this->context->workspace->code)
+ $url = Request::getServerURL()
+ . $this->context->request->buildUrl($this->context->workspace->code)
. '?action=user.login.azhar.initialize&authenticationMethodId=' . $this->id;
return $url;
}
diff --git a/workspaces/src/Engines/Framework/Application.php b/workspaces/src/Engines/Framework/Application.php
--- a/workspaces/src/Engines/Framework/Application.php
+++ b/workspaces/src/Engines/Framework/Application.php
@@ -7,6 +7,7 @@
use Keruald\Cache\CacheFactory;
use Keruald\Database\Database;
+use Keruald\OmniTools\HTTP\Requests\Request;
class Application {
@@ -27,7 +28,12 @@
$context->db,
$context->resources->users,
);
- $context->url = get_current_url_fragments();
+
+ $request = (new Request())
+ ->withBaseUrl($config["BaseURL"]);
+ $context->request = $request;
+ $context->url = self::getCurrentUrlFragments($request);
+
$context->initializeTemplateEngine($context->config['Theme']);
$context->cache = CacheFactory::load($context->config["cache"]);
@@ -35,4 +41,19 @@
return $context;
}
+ /**
+ * Gets an array of URL fragments to be processed by controller
+ *
+ * @return array an array containing URL fragments
+ */
+ private static function getCurrentUrlFragments (Request $request) : array {
+ $currentUrl = $request->getCurrentUrl();
+
+ if ($currentUrl === "/index.php") {
+ return [];
+ }
+
+ return explode("/", substr($currentUrl, 1));
+ }
+
}
diff --git a/workspaces/src/Engines/Framework/Context.php b/workspaces/src/Engines/Framework/Context.php
--- a/workspaces/src/Engines/Framework/Context.php
+++ b/workspaces/src/Engines/Framework/Context.php
@@ -18,6 +18,7 @@
namespace Waystone\Workspaces\Engines\Framework;
use Keruald\Database\DatabaseEngine;
+use Keruald\OmniTools\HTTP\Requests\Request;
use Psr\SimpleCache\CacheInterface;
use Smarty\Smarty;
use Waystone\Workspaces\Engines\Users\User;
@@ -57,6 +58,11 @@
*/
public Session $session;
+ /**
+ * @var Request the current HTTP request
+ */
+ public Request $request;
+
/**
* @var string[] the URL fragments
*/
diff --git a/workspaces/src/apps/documents/DocumentsApplication.php b/workspaces/src/apps/documents/DocumentsApplication.php
--- a/workspaces/src/apps/documents/DocumentsApplication.php
+++ b/workspaces/src/apps/documents/DocumentsApplication.php
@@ -104,7 +104,7 @@
$smarty->assign('documents', $documents);
$smarty->assign(
"docs_url",
- get_url($this->context->workspace->code, "docs")
+ $this->context->request->buildUrl($this->context->workspace->code, "docs")
);
$template = 'documents_list.tpl';
} else {
diff --git a/workspaces/src/controllers/anonymous.php b/workspaces/src/controllers/anonymous.php
--- a/workspaces/src/controllers/anonymous.php
+++ b/workspaces/src/controllers/anonymous.php
@@ -96,7 +96,10 @@
$smarty->assign('WAP', Language::get("AccountCreated"));
//Redirects users to homepage
- header('refresh: 5; url=' . get_url());
+ header(
+ 'refresh: 5; url='
+ . $context->request->buildUrl()
+ );
//Calls void controller
$smarty->assign('screen', 'user.create');
@@ -163,7 +166,9 @@
$smarty->assign('OpenID', $_COOKIE['LastOpenID']);
}
- $action = $context->workspace ? get_url($context->workspace->code) . '/' : get_url();
+ $action = $context->workspace
+ ? $context->request->buildUrl($context->workspace->code) . '/'
+ : $context->request->buildUrl();
$action .= implode('/', $context->url);
if (isset($LoginError)) {
diff --git a/workspaces/src/controllers/errorpage.php b/workspaces/src/controllers/errorpage.php
--- a/workspaces/src/controllers/errorpage.php
+++ b/workspaces/src/controllers/errorpage.php
@@ -56,7 +56,7 @@
*/
public function handleRequest () {
$smarty = $this->context->templateEngine;
- $smarty->assign("URL_HOME", get_url());
+ $smarty->assign("URL_HOME", $this->context->request->buildUrl());
switch ($this->errorCode) {
case 404:
diff --git a/workspaces/src/controllers/header.php b/workspaces/src/controllers/header.php
--- a/workspaces/src/controllers/header.php
+++ b/workspaces/src/controllers/header.php
@@ -36,10 +36,10 @@
$smarty->assign('workspaces_count', count($workspaces));
if ($this->context->workspace === null) {
- $smarty->assign('root_url', get_url());
+ $smarty->assign('root_url', $this->context->request->buildUrl());
} else {
$workspace = $this->context->workspace;
- $workspace_url = get_url($workspace->code);
+ $workspace_url = $this->context->request->buildUrl($workspace->code);
$smarty->assign('current_workspace', $workspace);
$smarty->assign('current_workspace_url', $workspace_url);
diff --git a/workspaces/src/controllers/help.php b/workspaces/src/controllers/help.php
--- a/workspaces/src/controllers/help.php
+++ b/workspaces/src/controllers/help.php
@@ -33,7 +33,7 @@
//Header
$context->templateEngine->assign('PAGE_TITLE', Language::get('Help'));
-$context->templateEngine->assign('help_url', get_url("help"));
+$context->templateEngine->assign('help_url', $context->request->buildUrl("help"));
$context->templateEngine->assign('controller_custom_nav', 'nav_help.tpl');
HeaderController::run($context);
diff --git a/workspaces/src/includes/GlobalFunctions.php b/workspaces/src/includes/GlobalFunctions.php
deleted file mode 100644
--- a/workspaces/src/includes/GlobalFunctions.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-use Waystone\Workspaces\Engines\Workspaces\Workspace;
-
-use Keruald\OmniTools\HTTP\Requests\Request;
-
-////////////////////////////////////////////////////////////////////////////////
-/// ///
-/// URL helpers functions ///
-/// ///
-////////////////////////////////////////////////////////////////////////////////
-
-/*
- * Gets URL
- * @return string URL
- */
-function get_url () {
- global $Config;
- if (func_num_args() > 0) {
- $pieces = func_get_args();
- return $Config['BaseURL'] . '/' . implode('/', $pieces);
- } elseif ($Config['BaseURL'] == "" || $Config['BaseURL'] == "/index.php") {
- return "/";
- } else {
- return $Config['BaseURL'];
- }
-}
-
-/*
- * Gets $_SERVER['PATH_INFO'] or computes the equivalent if not defined.
- * @return string the relevant URL part
- */
-function get_current_url () {
- global $Config;
-
- //Gets relevant URL part from relevant $_SERVER variables
- if (array_key_exists('PATH_INFO', $_SERVER)) {
- //Without mod_rewrite, and url like /index.php/controller
- //we use PATH_INFO. It's the easiest case.
- return $_SERVER["PATH_INFO"];
- }
-
- //In other cases, we'll need to get the relevant part of the URL
- $current_url = Request::getServerURL() . $_SERVER['REQUEST_URI'];
-
- //Relevant URL part starts after the site URL
- $len = strlen($Config['SiteURL']);
-
- //We need to assert it's the correct site
- if (substr($current_url, 0, $len) != $Config['SiteURL']) {
- dieprint_r(GENERAL_ERROR, "Edit includes/config.php and specify the correct site URL<br /><strong>Current value:</strong> $Config[SiteURL]<br /><strong>Expected value:</strong> a string starting by " . Request::getServerURL(), "Setup");
- }
-
- if (array_key_exists('REDIRECT_URL', $_SERVER)) {
- //With mod_rewrite, we can use REDIRECT_URL
- //We take the end of the URL, ie *FROM* $len position
- return substr(Request::getServerURL() . $_SERVER["REDIRECT_URL"], $len);
- }
-
- //Last possibility: use REQUEST_URI, but remove QUERY_STRING
- //If you need to edit here, use $_SERVER['REQUEST_URI']
- //but you need to discard $_SERVER['QUERY_STRING']
-
- //We take the end of the URL, ie *FROM* $len position
- $url = substr(Request::getServerURL() . $_SERVER["REQUEST_URI"], $len);
-
- //But if there are a query string (?action=... we need to discard it)
- if ($_SERVER['QUERY_STRING']) {
- return substr($url, 0, strlen($url) - strlen($_SERVER['QUERY_STRING']) - 1);
- }
-
- return $url;
-}
-
-/*
- * Gets an array of url fragments to be processed by controller
- * @return array an array containing URL fragments
- */
-function get_current_url_fragments () {
- $url_source = get_current_url();
- if ($url_source == '/index.php') return array();
- return explode('/', substr($url_source, 1));
-}
diff --git a/workspaces/src/includes/core.php b/workspaces/src/includes/core.php
--- a/workspaces/src/includes/core.php
+++ b/workspaces/src/includes/core.php
@@ -22,9 +22,6 @@
/// ///
////////////////////////////////////////////////////////////////////////////////
-//Loads global functions
-include_once("GlobalFunctions.php"); //Global functions
-
//Loads configuration
if (isset($_SERVER) && array_key_exists('OBSIDIAN_CONFIG', $_SERVER)) {
$configFile = $_SERVER['OBSIDIAN_CONFIG'];
diff --git a/workspaces/src/index.php b/workspaces/src/index.php
--- a/workspaces/src/index.php
+++ b/workspaces/src/index.php
@@ -44,7 +44,7 @@
//Loads workspace
try {
- if (Workspace::is_workspace($context->url[0])) {
+ if (isset($context->url[0]) && Workspace::is_workspace($context->url[0])) {
$context->workspace = Workspace::fromCode(array_shift($context->url));
$context->workspace->loadConfiguration($context);
}

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 30, 09:00 (22 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4137670
Default Alt Text
D4223.id11079.diff (11 KB)

Event Timeline