diff options
Diffstat (limited to 'mod/updateclient')
-rw-r--r-- | mod/updateclient/languages/en.php | 11 | ||||
-rw-r--r-- | mod/updateclient/start.php | 59 |
2 files changed, 69 insertions, 1 deletions
diff --git a/mod/updateclient/languages/en.php b/mod/updateclient/languages/en.php index bde861d8f..734e5400e 100644 --- a/mod/updateclient/languages/en.php +++ b/mod/updateclient/languages/en.php @@ -18,7 +18,16 @@ 'updateclient:settings:days' => 'Check for updates every', 'updateclient:days' => 'days', - 'updateclient:settings:server' => 'Update server' + 'updateclient:settings:server' => 'Update server', + + 'updateclient:message:title' => 'New version of Elgg released!', + 'updateclient:message:body' => 'A new version of Elgg (%s %s) codenamed %s has been released! + +Go here to download: %s + +Or scroll down and read the release notes: + +%s', ); add_translation("en", $english); diff --git a/mod/updateclient/start.php b/mod/updateclient/start.php index 0f52146f9..8e5a5a4f7 100644 --- a/mod/updateclient/start.php +++ b/mod/updateclient/start.php @@ -18,6 +18,13 @@ // Register a page handler, so we can have nice URLs register_page_handler('updateclient','updateclient_page_handler'); + $now = time(); + $time = get_plugin_setting('days', 'updateclient'); + $last_checked = get_plugin_setting('last_checked', 'updateclient'); + if (($time) && ($last_checked < $now - (86400 * $time))) + { + updateclient_check_core(); + } } /** @@ -53,9 +60,61 @@ include($CONFIG->pluginspath . "updateclient/index.php"); } + /** + * Send a message to the admin notifications page. + * + * @param unknown_type $subject + * @param unknown_type $message + */ + function updateclient_notify_message($subject, $message) + { + notify_user(2,1,$subject,$message); + } + + /** + * Get updates. + * + * @return unknown + */ function updateclient_check_core() { + global $CONFIG; + + // Phone home and check core + $url = get_plugin_setting('updateserver', 'updateclient'); + + $result = send_api_get_call($url, array('method' => 'elgg.system.getlatestversion'), array()); + + if (($result) && ($result->status == 0)) + { + $result = $result->result; + + include_once($CONFIG->url . "version.php"); + + if ( + ($version != $result['version']) || + ($release != $result['release']) + ) + { + // Notify + updateclient_notify_message( + elgg_echo('updateclient:message:title'), + sprintf(elgg_echo('updateclient:message:body'), + $release['release'], + $release['version'], + $release['codename'], + $release['url'], + $release['notes'] + ) + ); + + } + } + + // Set last_checked + set_plugin_setting('last_checked', time(), 'updateclient'); + return true; } // Initialise |