verify.provision.inc 3.63 KB
Newer Older
1 2 3 4 5 6 7
<?php

/**
 * Provision verify command
 *
 * Disable an enabled and installed site
 */
8
function drush_provision_drupal_provision_verify_validate($url = null) {
9
  if ($url) {
10 11
    drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
    provision_prepare_environment();
12 13 14 15

      _provision_drupal_create_settings_file($url);
     drush_errors_on();
     drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
16 17
  }

18 19 20 21 22 23 24 25
  // This will not have an effect if you are running it on a platform, just tests that if a site is provided it is an existing one
  _provision_drupal_valid_site();
}


/**
 * implementation of provision_verify
 */
26
function drush_provision_drupal_provision_verify($url = null) {
27
  if (PROVISION_CONTEXT_PLATFORM) {
28 29
    provision_service('file')->create_dir(drush_get_option('config_path'), dt('Provision configuration'), 0711);
    provision_service('file')->create_dir(drush_get_option('config_path') . '/includes', dt('Provision PHP configuration'), 0711);
30
    if (!provision_service('file')->exists(drush_get_option('config_path') . '/includes/global.inc')->succeed('Global configuration file exists')->status()) {
31 32
      # create an empty global.inc so the include doesn't fail with
      # open_basedir restrictions
33
      if (!$file = provision_service('file')->path('fopen', drush_get_option('config_path') .  '/includes/global.inc', 'a')) {
34 35 36 37 38 39
        drush_set_error('PROVISION_FRAMEWORK_ERROR', dt('Cannot create global settings configuration'));
      } else {
        fwrite($file, "<?php # global settings.php");
        fclose($file);
      }
    }
40
    provision_service('file')->create_dir(drush_get_option('backup_path'), dt('Backup'), 0700);
41 42 43
    provision_service('file')->writable(drush_get_option('sites_path'))
      ->succeed('Drupal sites directory @path is writable by the provisioning script')
      ->fail('Drupal sites directory @path is not writable by the provisioning script', 'PROVISION_SITES_DIR_NOT_WRITABLE');
44

45
    drush_set_option('sites', array_keys((array) provision_drupal_find_sites()), 'drupal'); 
46
    drush_log(dt("This platform is running @short_name @version", array('@short_name' => 'drupal', '@version' => VERSION)));
47
    drush_set_option('packages', _scrub_object(provision_find_packages()), 'drupal');
48
    _provision_drupal_create_directories('all');
49 50
  }
  else {
51
    drush_set_option('packages', _scrub_object(provision_drupal_system_map()), 'site');
52
      // This is the actual drupal provisioning requirements. 
53 54
    _provision_drupal_create_directories($url);
    _provision_drupal_maintain_aliases($url);
55
    // Requires at least the database settings to complete.
56
   _provision_drupal_create_settings_file($url);
57 58 59 60 61 62 63
  }
}


/**
 * Implementation of hook_provision_post_verify
 */
64
function drush_provision_drupal_post_provision_verify($url = NULL) {
65
  if (PROVISION_CONTEXT_SITE) {
66
    _provision_drupal_rebuild_caches($url);
67
    drush_set_option('aliases', drush_get_option('aliases'), 'site');
68
    drush_set_option('redirection', drush_get_option('redirection'), 'site');
69
    drush_set_option('installed', TRUE, 'site');
70 71 72
  }
}

73
/**
anarcat's avatar
anarcat committed
74 75 76 77 78 79 80 81
 * Inject the relevant .htacces configuration into the global apache
 * configuration
 *
 * This basically loads the regular .htacess but adds an AllowOverride
 * none so the .htaccess are ignored, as a performance improvement.
 *
 * @see platform/provision_drupal_htaccess.tpl.php
 * @see hook_provision_apache_dir_config()
82 83
 */
function provision_drupal_provision_apache_dir_config($data = null) {
84 85
  $htaccess = file_get_contents(dirname(__FILE__) . "/provision_drupal_htaccess.tpl.php");
  $htaccess .= <<<EOF
anarcat's avatar
anarcat committed
86

87 88
# Do not read the platform's .htaccess
AllowOverride none
anarcat's avatar
anarcat committed
89

90
EOF;
anarcat's avatar
anarcat committed
91
  # the trailing newline above is necessary
92
  return $htaccess;
93
}