]> git.mxchange.org Git - friendica.git/commitdiff
ping.php improvement: improving get_baseurl
authorHypolite Petovan <mrpetovan@gmail.com>
Tue, 1 Nov 2016 21:05:23 +0000 (17:05 -0400)
committerHypolite Petovan <mrpetovan@gmail.com>
Tue, 1 Nov 2016 21:05:26 +0000 (17:05 -0400)
- Adding more documentation
- Trying hard to make @annando happy

boot.php

index 8dd43101c044070ccf8524c964c7e7e3820dd915..eb91b26bafdb1c3b2633f228f5997c55e021bf72 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -788,10 +788,18 @@ class App {
        /**
         * @brief Retrieves the Friendica instance base URL
         *
-        * Caches both SSL and non-SSL version for performance
+        * This function assembles the base URL from multiple parts:
+        * - Protocol is determined either by the request or a combination of
+        * system.ssl_policy and the $ssl parameter.
+        * - Host name is determined either by system.hostname or inferred from request
+        * - Path is inferred from SCRIPT_NAME
         *
-        * @param bool $ssl
-        * @return string
+        * Caches the result (depending on $ssl value) for performance.
+        *
+        * Note: $ssl parameter value doesn't directly correlate with the resulting protocol
+        *
+        * @param bool $ssl Whether to append http or https under SSL_POLICY_SELFSIGN
+        * @return string Friendica server base URL
         */
        function get_baseurl($ssl = false) {
 
@@ -800,34 +808,39 @@ class App {
                        return self::$a->get_baseurl($ssl);
                }
 
+               // Arbitrary values, the resulting url protocol can be different
                $cache_index = $ssl ? 'https' : 'http';
 
-               if (!isset($this->baseurl[$cache_index])) {
-                       $scheme = $this->scheme;
-
-                       if ((x($this->config, 'system')) && (x($this->config['system'], 'ssl_policy'))) {
-                               if (intval($this->config['system']['ssl_policy']) === SSL_POLICY_FULL) {
-                                       $scheme = 'https';
-                               }
+               // Cached value found, nothing to process
+               if (isset($this->baseurl[$cache_index])) {
+                       return $this->baseurl[$cache_index];
+               }
 
-                               //      Basically, we have $ssl = true on any links which can only be seen by a logged in user
-                               //      (and also the login link). Anything seen by an outsider will have it turned off.
+               $scheme = $this->scheme;
 
-                               if ($this->config['system']['ssl_policy'] == SSL_POLICY_SELFSIGN) {
-                                       if ($ssl) {
-                                               $scheme = 'https';
-                                       } else {
-                                               $scheme = 'http';
-                                       }
-                               }
+               if ((x($this->config, 'system')) && (x($this->config['system'], 'ssl_policy'))) {
+                       if (intval($this->config['system']['ssl_policy']) === SSL_POLICY_FULL) {
+                               $scheme = 'https';
                        }
 
-                       if (get_config('config', 'hostname') != '') {
-                               $this->hostname = get_config('config', 'hostname');
+                       //      Basically, we have $ssl = true on any links which can only be seen by a logged in user
+                       //      (and also the login link). Anything seen by an outsider will have it turned off.
+
+                       if ($this->config['system']['ssl_policy'] == SSL_POLICY_SELFSIGN) {
+                               if ($ssl) {
+                                       $scheme = 'https';
+                               } else {
+                                       $scheme = 'http';
+                               }
                        }
+               }
 
-                       $this->baseurl[$cache_index] = $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' );
+               if (get_config('config', 'hostname') != '') {
+                       $this->hostname = get_config('config', 'hostname');
                }
+
+               $this->baseurl[$cache_index] = $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' );
+
                return $this->baseurl[$cache_index];
        }