View source
<?php
function drd_server_domain_info($sid, $domain = FALSE) {
$user = drd_server_load_user($sid);
if (is_string($user)) {
return drd_server_error($user);
}
if (module_exists('mollom')) {
$mollom_status = _mollom_status(TRUE);
if (is_array($mollom_status)) {
if (empty($mollom_status['isVerified'])) {
module_disable(array(
'mollom',
));
}
}
}
$result = array(
'site_name' => variable_get('site_name', ''),
'base_url' => url('<front>', array(
'absolute' => TRUE,
)),
);
include_once DRUPAL_ROOT . '/includes/install.inc';
drupal_load_updates();
$requirements = module_invoke_all('requirements', 'runtime');
usort($requirements, '_system_sort_requirements');
$result['system_status_warning'] = drupal_requirements_severity($requirements) == REQUIREMENT_WARNING;
$result['system_status_error'] = drupal_requirements_severity($requirements) == REQUIREMENT_ERROR;
$server_values = array(
t('Drupal'),
t('Coder Upgrade directory'),
t('Drupal core update status'),
t('File system'),
t('GD library'),
t('PHP'),
t('PHP memory limit'),
t('PHP register globals'),
t('Unicode library'),
t('Upload progress'),
t('Web server'),
);
$result['items'] = array();
foreach ($requirements as $key => $values) {
if (in_array($values['title'], $server_values, TRUE) !== $domain) {
$result['items'][] = $requirements[$key];
}
}
if ($domain) {
}
return drd_server_result('info', $result, $domain);
}
function drd_server_domain_flush_cache($sid) {
$user = drd_server_load_user($sid);
if (is_string($user)) {
return drd_server_error($user);
}
drupal_flush_all_caches();
registry_rebuild();
drupal_set_message('Caches cleared');
$result = theme('status_messages');
return drd_server_result('cache.flush', $result);
}
function drd_server_domain_run_cron($sid) {
$user = drd_server_load_user($sid);
if (is_string($user)) {
return drd_server_error($user);
}
drupal_cron_run();
$result = theme('status_messages');
return drd_server_result('run.cron', $result);
}
function drd_server_domain_list_updates($sid) {
$user = drd_server_load_user($sid);
if (is_string($user)) {
return drd_server_error($user);
}
if (!module_exists('update')) {
module_enable(array(
'update',
));
}
module_load_include('inc', 'update', 'update.fetch');
module_load_include('inc', 'update', 'update.manager');
_update_refresh();
$context = array();
update_fetch_data_batch($context);
$form = drupal_get_form('update_manager_update_form', 'report');
$result = array(
'msg' => theme('status_messages'),
'upd' => drupal_render($form),
);
return drd_server_result('list.updates', $result);
}
function drd_server_domain_run_update($sid) {
global $user;
if ($sid === TRUE) {
}
else {
$user = drd_server_load_user($sid);
if (is_string($user)) {
return drd_server_error($user);
}
}
$old_user = $user;
$user = user_load(1);
variable_set('maintenance_mode', TRUE);
$batch = array(
'operations' => array(
array(
'drd_server_domain_find_required_updates',
array(),
),
),
);
batch_set($batch);
$batch =& batch_get();
$batch['progressive'] = FALSE;
$base_url = DRUPAL_ROOT;
$_GET['token'] = drupal_get_token('update');
$_REQUEST['op'] = 'Apply pending updates';
$_POST['start'] = array();
include_once './update.php';
variable_set('maintenance_mode', FALSE);
drupal_set_message('Update completed');
$result = theme('status_messages');
$user = $old_user;
return drd_server_result('run.update', $result);
}
function drd_server_domain_update_translation($sid) {
$user = drd_server_load_user($sid);
if (is_string($user)) {
return drd_server_error($user);
}
module_load_include('inc', 'drd_server', 'drd_server.admin');
drd_server_admin_update_translation(FALSE);
$result = theme('status_messages');
return drd_server_result('update.translation', $result);
}
function drd_server_domain_switch_maintenance($sid) {
global $user;
$user = drd_server_load_user($sid);
if (is_string($user)) {
return drd_server_error($user);
}
$current = variable_get('maintenance_mode', FALSE);
variable_set('maintenance_mode', !$current);
$result = $current ? 'Turned maintenance mode off' : 'Turned maintenance mode on';
return drd_server_result('switch.maintenance', '<p>' . $result . '</p>');
}
function drd_server_domain_find_required_updates() {
drupal_get_messages();
$form = array();
$form_state = array();
$form = update_script_selection_form($form, $form_state);
$operations = array();
if (isset($form) && isset($form['start'])) {
$start = array();
foreach ($form['start'] as $module => $def) {
if (isset($def['#value']) && module_exists($module)) {
$start[$module] = $def['#value'];
}
}
$updates = update_resolve_dependencies($start);
$dependency_map = array();
foreach ($updates as $function => $update) {
$dependency_map[$function] = !empty($update['reverse_paths']) ? array_keys($update['reverse_paths']) : array();
}
foreach ($updates as $update) {
if ($update['allowed']) {
if (isset($start[$update['module']])) {
drupal_set_installed_schema_version($update['module'], $update['number'] - 1);
unset($start[$update['module']]);
}
$function = $update['module'] . '_update_' . $update['number'];
$operations[] = array(
'update_do_one',
array(
$update['module'],
$update['number'],
$dependency_map[$function],
),
);
watchdog('DRD', 'Updating ' . $update['module'] . ': version ' . $update['number']);
drupal_set_message('Updating ' . $update['module'] . ': version ' . $update['number']);
}
}
}
$operations[] = array(
'drd_server_domain_capture_update_messages',
array(),
);
$batch = array(
'operations' => $operations,
'title' => 'Updating',
'init_message' => 'Starting updates',
'error_message' => 'An unrecoverable error has occurred. You can find the error message below. It is advised to copy it to the clipboard for reference.',
);
batch_set($batch);
}
function drd_server_domain_capture_update_messages() {
$batch_set =& _batch_current_set();
update_finished(TRUE, $batch_set['results'], array(), format_interval($batch_set['elapsed'] / 1000));
drupal_set_message(update_results_page());
}