diff options
Diffstat (limited to 'mod')
| -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 | 
