1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
<?php
/**
* Update client.
*
* @package ElggUpdateClient
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
* @author Marcus Povey
* @copyright Curverider Ltd 2008
* @link http://elgg.com/
*/
$DEFAULT_UPDATE_SERVER;
/**
* Client update initialisation.
*/
function updateclient_init()
{
global $DEFAULT_UPDATE_SERVER;
$DEFAULT_UPDATE_SERVER = 'http://updates.elgg.org/services/api/rest.php';
// 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();
}
}
/**
* Handle pages.
*
* @param unknown_type $page
*/
function updateclient_page_handler($page)
{
global $CONFIG;
if (isset($page[0]))
{
add_submenu_item(elgg_echo('updateclient:label:core'), $CONFIG->url . "pg/updateclient/core/");
//add_submenu_item(elgg_echo('updateclient:label:plugins'), $CONFIG->url . "pg/updateclient/plugins/");
// See what context we're using
switch($page[0])
{
case "core" :
include($CONFIG->pluginspath . "updateclient/index.php");
break;
case "plugins" :
include($CONFIG->pluginspath . "updateclient/plugin.php");
break;
default:
include($CONFIG->pluginspath . "updateclient/index.php");
}
}
else
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)
{
return send_admin_message($subject, $message);
}
/**
* Get updates.
*
* @return unknown
*/
function updateclient_check_core()
{
global $CONFIG, $DEFAULT_UPDATE_SERVER;
// Phone home and check core
$url = get_plugin_setting('updateserver', 'updateclient');
if (!$url) $url = $DEFAULT_UPDATE_SERVER;
$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'),
$result['release'],
$result['version'],
$result['codename'],
$result['url'],
$result['notes']
)
);
}
}
// Set last_checked
set_plugin_setting('last_checked', time(), 'updateclient');
return true;
}
// Initialise
register_elgg_event_handler('init','system','updateclient_init');
?>
|