diff options
Diffstat (limited to 'mod/updateclient/start.php')
-rw-r--r-- | mod/updateclient/start.php | 59 |
1 files changed, 59 insertions, 0 deletions
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 |