aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mod/updateclient/languages/en.php11
-rw-r--r--mod/updateclient/start.php59
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