]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - application/ApplicationUtils.php
Replace $GLOBALS configuration with the configuration manager in the whole code base
[github/shaarli/Shaarli.git] / application / ApplicationUtils.php
index c7414b776e56fdef23e5aef76f358566e7d50e21..ed9abc39bdbfbae0ebdc092ff0512ad142aec388 100644 (file)
@@ -5,7 +5,7 @@
 class ApplicationUtils
 {
     private static $GIT_URL = 'https://raw.githubusercontent.com/shaarli/Shaarli';
-    private static $GIT_BRANCH = 'master';
+    private static $GIT_BRANCHES = array('master', 'stable');
     private static $VERSION_FILE = 'shaarli_version.php';
     private static $VERSION_START_TAG = '<?php /* ';
     private static $VERSION_END_TAG = ' */ ?>';
@@ -19,7 +19,7 @@ class ApplicationUtils
      */
     public static function getLatestGitVersionCode($url, $timeout=2)
     {
-        list($headers, $data) = get_http_url($url, $timeout);
+        list($headers, $data) = get_http_response($url, $timeout);
 
         if (strpos($headers[0], '200 OK') === false) {
             error_log('Failed to retrieve ' . $url);
@@ -50,10 +50,16 @@ class ApplicationUtils
      * @param bool   $enableCheck    whether to check for new versions
      * @param bool   $isLoggedIn     whether the user is logged in
      *
+     * @throws Exception an invalid branch has been set for update checks
+     *
      * @return mixed the new version code if available and greater, else 'false'
      */
-    public static function checkUpdate(
-        $currentVersion, $updateFile, $checkInterval, $enableCheck, $isLoggedIn)
+    public static function checkUpdate($currentVersion,
+                                       $updateFile,
+                                       $checkInterval,
+                                       $enableCheck,
+                                       $isLoggedIn,
+                                       $branch='stable')
     {
         if (! $isLoggedIn) {
             // Do not check versions for visitors
@@ -75,10 +81,16 @@ class ApplicationUtils
             return false;
         }
 
+        if (! in_array($branch, self::$GIT_BRANCHES)) {
+            throw new Exception(
+                'Invalid branch selected for updates: "' . $branch . '"'
+            );
+        }
+
         // Late Static Binding allows overriding within tests
         // See http://php.net/manual/en/language.oop5.late-static-bindings.php
         $latestVersion = static::getLatestGitVersionCode(
-            self::$GIT_URL . '/' . self::$GIT_BRANCH . '/' . self::$VERSION_FILE
+            self::$GIT_URL . '/' . $branch . '/' . self::$VERSION_FILE
         );
 
         if (! $latestVersion) {
@@ -120,32 +132,32 @@ class ApplicationUtils
     /**
      * Checks Shaarli has the proper access permissions to its resources
      *
-     * @param array $globalConfig The $GLOBALS['config'] array
-     *
      * @return array A list of the detected configuration issues
      */
-    public static function checkResourcePermissions($globalConfig)
+    public static function checkResourcePermissions()
     {
         $errors = array();
+        $conf = ConfigManager::getInstance();
 
         // Check script and template directories are readable
         foreach (array(
             'application',
             'inc',
             'plugins',
-            $globalConfig['RAINTPL_TPL']
+            $conf->get('config.RAINTPL_TPL'),
         ) as $path) {
             if (! is_readable(realpath($path))) {
                 $errors[] = '"'.$path.'" directory is not readable';
             }
         }
 
+        $datadir = $conf->get('config.DATADIR');
         // Check cache and data directories are readable and writeable
         foreach (array(
-            $globalConfig['CACHEDIR'],
-            $globalConfig['DATADIR'],
-            $globalConfig['PAGECACHE'],
-            $globalConfig['RAINTPL_TMP']
+            $conf->get('config.CACHEDIR'),
+            $datadir,
+            $conf->get('config.PAGECACHE'),
+            $conf->get('config.RAINTPL_TMP'),
         ) as $path) {
             if (! is_readable(realpath($path))) {
                 $errors[] = '"'.$path.'" directory is not readable';
@@ -157,11 +169,11 @@ class ApplicationUtils
 
         // Check configuration files are readable and writeable
         foreach (array(
-            $globalConfig['CONFIG_FILE'],
-            $globalConfig['DATASTORE'],
-            $globalConfig['IPBANS_FILENAME'],
-            $globalConfig['LOG_FILE'],
-            $globalConfig['UPDATECHECK_FILENAME']
+            $conf->getConfigFile(),
+            $conf->get('config.DATASTORE'),
+            $conf->get('config.IPBANS_FILENAME'),
+            $conf->get('config.LOG_FILE'),
+            $conf->get('config.UPDATECHECK_FILENAME'),
         ) as $path) {
             if (! is_file(realpath($path))) {
                 # the file may not exist yet