/** * Get updates from b2evolution.net * * @return boolean True if there have been updates. */ function b2evonet_get_updates() { global $DB, $debug, $evonetsrv_host, $evonetsrv_port, $evonetsrv_uri, $servertimenow, $evo_charset; global $Messages, $Settings, $baseurl, $instance_name, $app_name, $app_version, $app_date; $update_every = 3600 * 12; // 12 hours $attempt_every = 3600 * 4; // 4 hours /* DEBUG: * $update_every = 10; $attempt_every = 5; */ $servertime_last_update = $Settings->get('evonet_last_update'); if ($servertime_last_update > $servertimenow - $update_every) { // The previous update was less than 12 hours ago, skip this // echo 'recent update'; return false; } $servertime_last_attempt = $Settings->get('evonet_last_attempt'); if ($servertime_last_attempt > $servertimenow - $attempt_every) { // The previous update attempt was less than 4 hours ago, skip this // This is so all b2evo's don't go crazy if the server ever is down // echo 'recent attempt'; return false; } if ($debug) { $Messages->add(T_('Getting updates from ') . $evonetsrv_host, 'notes'); } $Settings->set('evonet_last_attempt', $servertimenow); $Settings->dbupdate(); // Construct XML-RPC client: load_funcs('xmlrpc/model/_xmlrpc.funcs.php'); $client = new xmlrpc_client($evonetsrv_uri, $evonetsrv_host, $evonetsrv_port); // $client->debug = $debug; // Run system checks: load_funcs('tools/model/_system.funcs.php'); list($mediadir_status) = system_check_media_dir(); list($uid, $uname) = system_check_process_user(); list($gid, $gname) = system_check_process_group(); // Construct XML-RPC message: $message = new xmlrpcmsg('b2evo.getupdates', array(new xmlrpcval($baseurl, 'string'), new xmlrpcval($instance_name, 'string'), new xmlrpcval($app_name, 'string'), new xmlrpcval($app_version, 'string'), new xmlrpcval($app_date, 'string'), new xmlrpcval(array('this_update' => new xmlrpcval($servertimenow, 'string'), 'last_update' => new xmlrpcval($servertime_last_update, 'string'), 'db_version' => new xmlrpcval($DB->get_version(), 'string'), 'db_utf8' => new xmlrpcval(system_check_db_utf8() ? 1 : 0, 'int'), 'evo_charset' => new xmlrpcval($evo_charset, 'string'), 'php_version' => new xmlrpcval(PHP_VERSION, 'string'), 'php_xml' => new xmlrpcval(extension_loaded('xml') ? 1 : 0, 'int'), 'php_mbstring' => new xmlrpcval(extension_loaded('mbstring') ? 1 : 0, 'int'), 'php_memory' => new xmlrpcval(system_check_memory_limit(), 'int'), 'php_upload_max' => new xmlrpcval(system_check_upload_max_filesize(), 'int'), 'php_post_max' => new xmlrpcval(system_check_post_max_size(), 'int'), 'mediadir_status' => new xmlrpcval($mediadir_status, 'string'), 'install_removed' => new xmlrpcval(system_check_install_removed() ? 1 : 0, 'int'), 'php_uid' => new xmlrpcval($uid, 'int'), 'php_uname' => new xmlrpcval($uname, 'string'), 'php_gid' => new xmlrpcval($gid, 'int'), 'php_gname' => new xmlrpcval($gname, 'string'), 'php_reg_globals' => new xmlrpcval(ini_get('register_globals') ? 1 : 0, 'int'), 'gd_version' => new xmlrpcval(system_check_gd_version(), 'string')), 'struct'))); $result = $client->send($message); if ($ret = xmlrpc_logresult($result, $Messages, false)) { // Response is not an error, let's process it: $response = $result->value(); if ($response->kindOf() == 'struct') { // Decode struct: $response = xmlrpc_decode_recurse($response); /** * @var AbstractSettings */ global $global_Cache; if (isset($response['evo_links'])) { // Extract evo links into its own var: $evo_links = $response['evo_links']; unset($response['evo_links']); if (is_array($evo_links)) { // Save creds: $global_Cache->set('evo_links', serialize($evo_links)); } } if (isset($response['creds'])) { // Extract creds into its own var: $creds = $response['creds']; unset($response['creds']); if (is_array($creds)) { // Save creds: $global_Cache->set('creds', serialize($creds)); } } // Save other info: $global_Cache->set('evonet_updates', serialize($response)); $global_Cache->dbupdate(); $Settings->set('evonet_last_update', $servertimenow); $Settings->dbupdate(); return true; } else { $Messages->add(T_('Invalid updates received'), 'error'); } } return false; }
$block_item_Widget->title = 'b2evolution'; $block_item_Widget->disp_template_replaced('block_start'); // Version: $app_timestamp = mysql2timestamp($app_date); init_system_check('b2evolution version', $app_version . ' released on ' . date_i18n(locale_datefmt(), $app_timestamp)); $app_age = ($localtimenow - $app_timestamp) / 3600 / 24 / 30; // approx age in months if ($app_age > 12) { disp_system_check('error', sprintf(T_('This version is old. You should check for newer releases on <a %s>b2evolution.net</a>.'), ' href="http://b2evolution.net/downloads/"')); } elseif ($app_age > 6) { disp_system_check('warning', sprintf(T_('This version is aging. You may want to check for newer releases on <a %s>b2evolution.net</a>.'), ' href="http://b2evolution.net/downloads/"')); } else { disp_system_check('ok'); } // Media folder writable? list($mediadir_status, $mediadir_msg) = system_check_media_dir(); $mediadir_long = ''; if ($mediadir_status == 'error') { $mediadir_long = '<p>' . T_('You will not be able to upload files/images and b2evolution will not be able to generate thumbnails.') . "</p>\n" . '<p>' . T_('Your host requires that you set special file permissions on your media directory.') . get_manual_link('media_file_permission_errors') . "</p>\n"; } init_system_check('Media directory', $mediadir_msg . ' - ' . $media_path); disp_system_check($mediadir_status, $mediadir_long); // /install/ folder deleted? $install_removed = system_check_install_removed(); init_system_check('Install folder', $install_removed ? T_('Deleted') : T_('Not deleted') . ' - ' . $basepath . $install_subdir); if (!$install_removed) { disp_system_check('warning', T_('For maximum security, it is recommended that you delete your /blogs/install/ folder once you are done with install or upgrade.')); // Database reset allowed? init_system_check('Database reset', $allow_evodb_reset ? T_('Allowed!') : T_('Forbidden')); if ($allow_evodb_reset) { disp_system_check('error', '<p>' . T_('Currently, anyone who accesses your install folder could entirely reset your b2evolution database.') . "</p>\n" . '<p>' . T_('ALL YOUR DATA WOULD BE LOST!') . "</p>\n" . '<p>' . T_('As soon as possible, change the setting <code>$allow_evodb_reset = 0;</code> in your /conf/_basic.config.php.') . '</p>');