aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--application/ApplicationUtils.php18
-rw-r--r--index.php32
-rw-r--r--tests/ApplicationUtilsTest.php14
-rw-r--r--tpl/page.footer.html12
4 files changed, 55 insertions, 21 deletions
diff --git a/application/ApplicationUtils.php b/application/ApplicationUtils.php
index c7414b77..6d878110 100644
--- a/application/ApplicationUtils.php
+++ b/application/ApplicationUtils.php
@@ -5,7 +5,7 @@
5class ApplicationUtils 5class ApplicationUtils
6{ 6{
7 private static $GIT_URL = 'https://raw.githubusercontent.com/shaarli/Shaarli'; 7 private static $GIT_URL = 'https://raw.githubusercontent.com/shaarli/Shaarli';
8 private static $GIT_BRANCH = 'master'; 8 private static $GIT_BRANCHES = array('master', 'stable');
9 private static $VERSION_FILE = 'shaarli_version.php'; 9 private static $VERSION_FILE = 'shaarli_version.php';
10 private static $VERSION_START_TAG = '<?php /* '; 10 private static $VERSION_START_TAG = '<?php /* ';
11 private static $VERSION_END_TAG = ' */ ?>'; 11 private static $VERSION_END_TAG = ' */ ?>';
@@ -52,8 +52,12 @@ class ApplicationUtils
52 * 52 *
53 * @return mixed the new version code if available and greater, else 'false' 53 * @return mixed the new version code if available and greater, else 'false'
54 */ 54 */
55 public static function checkUpdate( 55 public static function checkUpdate($currentVersion,
56 $currentVersion, $updateFile, $checkInterval, $enableCheck, $isLoggedIn) 56 $updateFile,
57 $checkInterval,
58 $enableCheck,
59 $isLoggedIn,
60 $branch='stable')
57 { 61 {
58 if (! $isLoggedIn) { 62 if (! $isLoggedIn) {
59 // Do not check versions for visitors 63 // Do not check versions for visitors
@@ -75,10 +79,16 @@ class ApplicationUtils
75 return false; 79 return false;
76 } 80 }
77 81
82 if (! in_array($branch, self::$GIT_BRANCHES)) {
83 throw new Exception(
84 'Invalid branch selected for updates: "' . $branch . '"'
85 );
86 }
87
78 // Late Static Binding allows overriding within tests 88 // Late Static Binding allows overriding within tests
79 // See http://php.net/manual/en/language.oop5.late-static-bindings.php 89 // See http://php.net/manual/en/language.oop5.late-static-bindings.php
80 $latestVersion = static::getLatestGitVersionCode( 90 $latestVersion = static::getLatestGitVersionCode(
81 self::$GIT_URL . '/' . self::$GIT_BRANCH . '/' . self::$VERSION_FILE 91 self::$GIT_URL . '/' . $branch . '/' . self::$VERSION_FILE
82 ); 92 );
83 93
84 if (! $latestVersion) { 94 if (! $latestVersion) {
diff --git a/index.php b/index.php
index 90045d60..a1005639 100644
--- a/index.php
+++ b/index.php
@@ -92,7 +92,8 @@ $GLOBALS['config']['ENABLE_THUMBNAILS'] = true;
92$GLOBALS['config']['ENABLE_LOCALCACHE'] = true; 92$GLOBALS['config']['ENABLE_LOCALCACHE'] = true;
93 93
94// Update check frequency for Shaarli. 86400 seconds=24 hours 94// Update check frequency for Shaarli. 86400 seconds=24 hours
95$GLOBALS['config']['UPDATECHECK_INTERVAL'] = 86400 ; 95$GLOBALS['config']['UPDATECHECK_BRANCH'] = 'stable';
96$GLOBALS['config']['UPDATECHECK_INTERVAL'] = 86400;
96 97
97 98
98/* 99/*
@@ -631,18 +632,23 @@ class pageBuilder
631 private function initialize() 632 private function initialize()
632 { 633 {
633 $this->tpl = new RainTPL; 634 $this->tpl = new RainTPL;
634 $this->tpl->assign( 635
635 'newversion', 636 try {
636 escape( 637 $version = ApplicationUtils::checkUpdate(
637 ApplicationUtils::checkUpdate( 638 shaarli_version,
638 shaarli_version, 639 $GLOBALS['config']['UPDATECHECK_FILENAME'],
639 $GLOBALS['config']['UPDATECHECK_FILENAME'], 640 $GLOBALS['config']['UPDATECHECK_INTERVAL'],
640 $GLOBALS['config']['UPDATECHECK_INTERVAL'], 641 $GLOBALS['config']['ENABLE_UPDATECHECK'],
641 $GLOBALS['config']['ENABLE_UPDATECHECK'], 642 isLoggedIn(),
642 isLoggedIn() 643 $GLOBALS['config']['UPDATECHECK_BRANCH']
643 ) 644 );
644 ) 645 $this->tpl->assign('newVersion', escape($version));
645 ); 646
647 } catch (Exception $exc) {
648 logm($exc->getMessage());
649 $this->tpl->assign('versionError', escape($exc->getMessage()));
650 }
651
646 $this->tpl->assign('feedurl', escape(index_url($_SERVER))); 652 $this->tpl->assign('feedurl', escape(index_url($_SERVER)));
647 $searchcrits = ''; // Search criteria 653 $searchcrits = ''; // Search criteria
648 if (!empty($_GET['searchtags'])) { 654 if (!empty($_GET['searchtags'])) {
diff --git a/tests/ApplicationUtilsTest.php b/tests/ApplicationUtilsTest.php
index 437c21fd..6064357d 100644
--- a/tests/ApplicationUtilsTest.php
+++ b/tests/ApplicationUtilsTest.php
@@ -75,7 +75,7 @@ class ApplicationUtilsTest extends PHPUnit_Framework_TestCase
75 public function testGetLatestGitVersionCodeInvalidUrl() 75 public function testGetLatestGitVersionCodeInvalidUrl()
76 { 76 {
77 $this->assertFalse( 77 $this->assertFalse(
78 ApplicationUtils::getLatestGitVersionCode('htttp://null.io', 0) 78 ApplicationUtils::getLatestGitVersionCode('htttp://null.io', 1)
79 ); 79 );
80 } 80 }
81 81
@@ -102,7 +102,7 @@ class ApplicationUtilsTest extends PHPUnit_Framework_TestCase
102 /** 102 /**
103 * A newer version is available 103 * A newer version is available
104 */ 104 */
105 public function testCheckUpdateNewVersionNew() 105 public function testCheckUpdateNewVersionAvailable()
106 { 106 {
107 $newVersion = '1.8.3'; 107 $newVersion = '1.8.3';
108 FakeApplicationUtils::$VERSION_CODE = $newVersion; 108 FakeApplicationUtils::$VERSION_CODE = $newVersion;
@@ -135,6 +135,16 @@ class ApplicationUtilsTest extends PHPUnit_Framework_TestCase
135 } 135 }
136 136
137 /** 137 /**
138 * Test update checks - invalid Git branch
139 * @expectedException Exception
140 * @expectedExceptionMessageRegExp /Invalid branch selected for updates/
141 */
142 public function testCheckUpdateInvalidGitBranch()
143 {
144 ApplicationUtils::checkUpdate('', 'null', 0, true, true, 'unstable');
145 }
146
147 /**
138 * Shaarli is up-to-date 148 * Shaarli is up-to-date
139 */ 149 */
140 public function testCheckUpdateNewVersionUpToDate() 150 public function testCheckUpdateNewVersionUpToDate()
diff --git a/tpl/page.footer.html b/tpl/page.footer.html
index 6c29850f..b20aae54 100644
--- a/tpl/page.footer.html
+++ b/tpl/page.footer.html
@@ -4,8 +4,16 @@
4 {$value} 4 {$value}
5 {/loop} 5 {/loop}
6</div> 6</div>
7{if="$newversion"} 7{if="$newVersion"}
8 <div id="newversion"><span id="version_id">&#x25CF;</span> Shaarli {$newversion} is <a href="https://github.com/shaarli/Shaarli/releases">available</a>.</div> 8<div id="newversion">
9 <span id="version_id">&#x25CF;</span> Shaarli {$newVersion} is
10 <a href="https://github.com/shaarli/Shaarli/releases">available</a>.
11</div>
12{/if}
13{if="$versionError"}
14<div id="newversion">
15 Error: {$versionError}
16</div>
9{/if} 17{/if}
10{if="isLoggedIn()"} 18{if="isLoggedIn()"}
11<script>function confirmDeleteLink() { var agree=confirm("Are you sure you want to delete this link ?"); if (agree) return true ; else return false ; }</script> 19<script>function confirmDeleteLink() { var agree=confirm("Are you sure you want to delete this link ?"); if (agree) return true ; else return false ; }</script>