From d91f894ccbeed6612727c3fb3bffa3504a14ecea Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 14 Oct 2010 00:46:32 -0400 Subject: try to show HTTPS-encrypted theme files for HTTPS-encrypted pages --- lib/theme.php | 81 ++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/lib/theme.php b/lib/theme.php index 992fce870..500e168fb 100644 --- a/lib/theme.php +++ b/lib/theme.php @@ -38,7 +38,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * Themes are directories with some expected sub-directories and files * in them. They're found in either local/theme (for locally-installed themes) * or theme/ subdir of installation dir. - * + * * Note that the 'local' directory can be overridden as $config['local']['path'] * and $config['local']['dir'] etc. * @@ -104,56 +104,73 @@ class Theme /** * Build a full URL to the given theme's base directory, possibly * using an offsite theme server path. - * + * * @param string $group configuration section name to pull paths from * @param string $fallbackSubdir default subdirectory under INSTALLDIR * @param string $name theme name - * + * * @return string URL - * + * * @todo consolidate code with that for other customizable paths */ protected function relativeThemePath($group, $fallbackSubdir, $name) { - $path = common_config($group, 'path'); + if (StatusNet::isHTTPS()) { - if (empty($path)) { - $path = common_config('site', 'path') . '/'; - if ($fallbackSubdir) { - $path .= $fallbackSubdir . '/'; + $sslserver = common_config($group, 'sslserver'); + + if (empty($sslserver)) { + $server = common_config('site', 'server'); + $path = common_config('site', 'path') . '/'; + if ($fallbackSubdir) { + $path .= $fallbackSubdir . '/'; + } + } else { + $server = $sslserver; + $path = common_config($group, 'sslpath'); + if (empty($path)) { + $path = common_config($group, 'path'); + } } - } - if ($path[strlen($path)-1] != '/') { - $path .= '/'; - } + if ($path[strlen($path)-1] != '/') { + $path .= '/'; + } - if ($path[0] != '/') { - $path = '/'.$path; - } + if ($path[0] != '/') { + $path = '/'.$path; + } - $server = common_config($group, 'server'); + return 'https://'.$server.$path.$name; - if (empty($server)) { - $server = common_config('site', 'server'); - } + } else { - $ssl = common_config($group, 'ssl'); + $path = common_config($group, 'path'); - if (is_null($ssl)) { // null -> guess - if (common_config('site', 'ssl') == 'always' && - !common_config($group, 'server')) { - $ssl = true; - } else { - $ssl = false; + if (empty($path)) { + $path = common_config('site', 'path') . '/'; + if ($fallbackSubdir) { + $path .= $fallbackSubdir . '/'; + } } - } - $protocol = ($ssl) ? 'https' : 'http'; + if ($path[strlen($path)-1] != '/') { + $path .= '/'; + } - $path = $protocol . '://'.$server.$path.$name; - return $path; + if ($path[0] != '/') { + $path = '/'.$path; + } + + $server = common_config($group, 'server'); + + if (empty($server)) { + $server = common_config('site', 'server'); + } + + return 'http://'.$server.$path.$name; + } } /** @@ -221,7 +238,7 @@ class Theme /** * Pull data from the theme's theme.ini file. * @fixme calling getFile will fall back to default theme, this may be unsafe. - * + * * @return associative array of strings */ function getMetadata() -- cgit v1.2.3-54-g00ecf