diff options
author | Angus Gratton <gus@projectgus.com> | 2014-10-11 12:06:30 +1100 |
---|---|---|
committer | Angus Gratton <gus@projectgus.com> | 2014-10-11 12:26:55 +1100 |
commit | 86c04d87ee7a9a39ec8838fd53e3797f51949719 (patch) | |
tree | 12abd1e198d63caa53ef0c2709b759b2cfa06c15 /inc | |
parent | b2e6a1f4afcd548dbd5bc6af110940b08b9f1a88 (diff) | |
download | rpg-86c04d87ee7a9a39ec8838fd53e3797f51949719.tar.gz rpg-86c04d87ee7a9a39ec8838fd53e3797f51949719.tar.bz2 |
Fix for update messages never completely going away
The existing logic for messages.txt requires some valid update
response (ending in %) to the messages update check before it clears
the current messages.
However update.dokuwiki.org appears to return an empty string response
if everything is up to date. (ie http://update.dokuwiki.org/check/46.1 )
As a result if there are update messages in messages.txt they don't
automatically go away after updating to the current version. The only
time they change is when a newer release comes out. The upgrade plugin
has logic in it to force a re-download of messages.txt, but currently
this just re-downloads the old update messages.
This change explicitly allows for "" as a valid "no messages"
indicator (distinct from false, which is the HTTP error indicator.)
Diffstat (limited to 'inc')
-rw-r--r-- | inc/infoutils.php | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/inc/infoutils.php b/inc/infoutils.php index f9ba11560..e2b64d3ca 100644 --- a/inc/infoutils.php +++ b/inc/infoutils.php @@ -29,18 +29,19 @@ function checkUpdateMessages(){ dbglog("checkUpdateMessages(): downloading messages.txt"); $http = new DokuHTTPClient(); $http->timeout = 12; - $data = $http->get(DOKU_MESSAGEURL.$updateVersion); - if(substr(trim($data), -1) != '%') { - // this doesn't look like one of our messages, maybe some WiFi login interferred - $data = ''; - }else { - io_saveFile($cf,$data); + $resp = $http->get(DOKU_MESSAGEURL.$updateVersion); + if(is_string($resp) && ($resp == "" || substr(trim($resp), -1) == '%')) { + // basic sanity check that this is either an empty string response (ie "no messages") + // or it looks like one of our messages, not WiFi login or other interposed response + io_saveFile($cf,$resp); + } else { + dbglog("checkUpdateMessages(): unexpected HTTP response received"); } }else{ dbglog("checkUpdateMessages(): messages.txt up to date"); - $data = io_readFile($cf); } + $data = io_readFile($cf); // show messages through the usual message mechanism $msgs = explode("\n%\n",$data); foreach($msgs as $msg){ |