verify.provision.inc 3.71 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() {
drumm's avatar
drumm committed
9
  if (d()->type === 'site') {
10 11
    drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
    provision_prepare_environment();
12

drumm's avatar
drumm committed
13 14 15
    _provision_drupal_create_settings_file();
    drush_errors_on();
    drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
16 17
  }

drumm's avatar
drumm committed
18 19
  // 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
20 21 22 23 24 25 26
  _provision_drupal_valid_site();
}


/**
 * implementation of provision_verify
 */
27
function drush_provision_drupal_provision_verify() {
drumm's avatar
drumm committed
28
  if (d()->type === 'server') {
29 30 31
    d()->service('file')->create_dir(d()->config_path, dt('Provision configuration'), 0711);
    d()->service('file')->create_dir(d()->config_path . '/includes', dt('Provision PHP configuration'), 0711);
    if (!d()->service('file')->exists(d()->config_path . '/includes/global.inc')->succeed('Global configuration file exists')->status()) {
32 33
      // Create an empty global.inc so the include doesn't fail with
      // open_basedir restrictions
34
      $config = new provisionConfig_global_settings(d()->name);
35
      $config->write();
36
    }
37
    d()->service('file')->create_dir(d()->backup_path, dt('Backup'), 0700);
38
  }
drumm's avatar
drumm committed
39
  elseif (d()->type === 'platform') {
40
    d()->service('file')->writable(d()->root . '/sites')
41 42
      ->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');
43

44
    drush_set_option('sites', array_keys((array) provision_drupal_find_sites()), 'drupal'); 
45
    drush_log(dt("This platform is running @short_name @version", array('@short_name' => 'drupal', '@version' => VERSION)));
46
    drush_set_option('packages', _scrub_object(provision_find_packages()), 'drupal');
47
  }
drumm's avatar
drumm committed
48
  elseif (d()->type === 'site') {
49
    drush_set_option('packages', _scrub_object(provision_drupal_system_map()), 'site');
50 51 52
    // This is the actual drupal provisioning requirements. 
    _provision_drupal_create_directories();
    _provision_drupal_maintain_aliases();
53
    // Requires at least the database settings to complete.
54
   _provision_drupal_create_settings_file();
55 56 57
  }
}

58 59 60 61 62
class provisionConfig_global_settings extends provisionConfig {
  public $template = 'global_settings.tpl.php';
  public $description = 'Global settings.php file';

  function filename() {
63
    return $this->config_path . '/includes/global.inc';
64 65 66 67 68
  }

  function process() {
  }
}
69 70 71 72

/**
 * Implementation of hook_provision_post_verify
 */
73
function drush_provision_drupal_post_provision_verify() {
drumm's avatar
drumm committed
74
  if (d()->type === 'site') {
75
    _provision_drupal_rebuild_caches();
76
    drush_set_option('aliases', drush_get_option('aliases'), 'site');
77
    drush_set_option('redirection', drush_get_option('redirection'), 'site');
78
    drush_set_option('installed', TRUE, 'site');
79 80 81
  }
}

82
/**
anarcat's avatar
anarcat committed
83 84 85 86 87 88 89 90
 * 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()
91 92
 */
function provision_drupal_provision_apache_dir_config($data = null) {
93
  $htaccess = <<<EOF
94
<IfModule mod_rewrite.c>
95
  RewriteEngine on
96 97 98 99
  # allow files to be accessed without /sites/fqdn/
  RewriteRule ^files/(.*)$ /sites/%{HTTP_HOST}/files/$1 [L]
</IfModule>

100 101
EOF;

102
  $htaccess .= file_get_contents(d()->root . '/.htaccess');
103 104
  $htaccess .= <<<EOF

105 106
# Do not read the platform's .htaccess
AllowOverride none
anarcat's avatar
anarcat committed
107

108
EOF;
anarcat's avatar
anarcat committed
109
  # the trailing newline above is necessary
110
  return $htaccess;
111
}