You are here

drd_server.domain.inc in Drupal Remote Dashboard Server 6

File

drd_server.domain.inc
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);
  }
  $result = array(
    'site_name' => variable_get('site_name', ''),
    'base_url' => url('<front>', array(
      'absolute' => TRUE,
    )),
  );

  // Load .install files
  include_once './includes/install.inc';
  drupal_load_updates();

  // Check run-time requirements and status information.
  $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) {

    //include more details in the result array for domains

    // e.g. info from the settings.php
  }
  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();
  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);
  }
  module_load_include('inc', 'update', 'update.fetch');
  module_load_include('inc', 'update', 'update.report');
  if (_update_refresh()) {
    drupal_set_message(t('Attempted to fetch information about all available new releases and updates.'));
  }
  else {
    drupal_set_message(t('Unable to fetch any information about available new releases and updates.'), 'error');
  }
  $result = array(
    'msg' => theme('status_messages'),
    'upd' => update_status($form),
  );
  return drd_server_result('list.updates', $result);
}
function drd_server_domain_run_update($sid) {
  global $user;
  $user = drd_server_load_user($sid);
  if (is_string($user)) {
    return drd_server_error($user);
  }
  $old_user = $user;
  $user = user_load(1);
  variable_set('site_offline', TRUE);
  $batch = array(
    'operations' => array(
      array(
        'drd_server_domain_find_required_updates',
        array(),
      ),
    ),
  );
  batch_set($batch);
  $batch =& batch_get();
  $batch['progressive'] = FALSE;
  $_GET['token'] = drupal_get_token('update');
  $_REQUEST['op'] = 'Update';
  $_POST['start'] = array();
  include_once './update.php';
  variable_set('site_offline', 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);
  }
  drupal_set_message('Update translation is not available on Drupal 6');
  $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('site_offline', FALSE);
  variable_set('site_offline', !$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 = update_script_selection_form();
  $operations = array();
  foreach ($form['start'] as $module => $def) {
    if (isset($def['#default_value'])) {
      $version = $def['#default_value'];
      drupal_set_installed_schema_version($module, $version - 1);
      $updates = drupal_get_schema_versions($module);
      if ($updates) {
        $max_version = max($updates);
        if ($version <= $max_version) {
          foreach ($updates as $update) {
            if ($update >= $version) {
              $operations[] = array(
                'update_do_one',
                array(
                  $module,
                  $update,
                ),
              );
              watchdog('DRD', 'Updating ' . $module . ': version ' . $update);
              drupal_set_message('Updating ' . $module . ': version ' . $update);
            }
          }
        }
      }
    }
  }
  $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());
}