You are here

drd_server.domain.inc in Drupal Remote Dashboard Server 7

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);
  }
  if (module_exists('mollom')) {
    $mollom_status = _mollom_status(TRUE);
    if (is_array($mollom_status)) {
      if (empty($mollom_status['isVerified'])) {

        /*
         * The index 'isVerified' is either not defined (pre Mollom version 2.9)
         * or it is set to false, from version 2.9 onwards.
         *
         * In both cases, mollom doesn't work and therefore gets disabled.
         */
        module_disable(array(
          'mollom',
        ));
      }
    }
  }
  $result = array(
    'site_name' => variable_get('site_name', ''),
    'base_url' => url('<front>', array(
      'absolute' => TRUE,
    )),
  );

  // Load .install files
  include_once DRUPAL_ROOT . '/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();
  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) {

    // The function got called from a local module and we are already authenticated
  }
  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());
}