Newer
Older
Adrian Rossouw
committed
<?php
/**
* Provision verify command
*
* Disable an enabled and installed site
*/
function drush_provision_drupal_provision_verify_validate() {
drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
provision_prepare_environment();
if (drush_drupal_major_version() < 8 && d()->profile != 'hostmaster') {
Grazyna Jaworska
committed
provision_backend_invoke(d()->name, 'registry-rebuild');
drush_log(dt('Rebuilt registry without --no-cache-clear option'));
}
}
Adrian Rossouw
committed
}
/**
* implementation of provision_verify
*/
function drush_provision_drupal_pre_provision_verify() {
$config_root = dirname(d()->config_path);
provision_file()->create_dir($config_root, dt('Provision configuration root'), 0711);
Adrian Rossouw
committed
provision_file()->create_dir(d()->config_path, dt('Provision configuration'), 0711);
provision_file()->create_dir(d()->clients_path, dt('Provision client home'), 0750);
Adrian Rossouw
committed
if (d()->name == '@server_master') {
provision_file()->create_dir(d()->backup_path, dt('Backup'), 0750);
Adrian Rossouw
committed
provision_file()->create_dir(d()->include_path, dt('Provision PHP configuration'), 0711);
if (!provision_file()->exists(d()->include_path . '/global.inc')->succeed('Global configuration file exists')->status()) {
// Create an empty global.inc so the include doesn't fail with
// open_basedir restrictions
$config = new Provision_Config_Global_Settings(d()->name);
Adrian Rossouw
committed
$config->write();
}
}
else {
if (provision_file()->exists(d()->include_path)) {
d()->service('http')->sync(d()->include_path);
}
Adrian Rossouw
committed
}
Adrian Rossouw
committed
}
// create a platform from a makefile, if it doesnt already exist and the makefile does.
if (!provision_file()->exists(d()->root)->status() && !empty(d()->makefile)) {
drush_log(dt("Platform path does not exist, fetching from drush makefile"));
$arguments = array();
$options = array();
// propagate working-copy args downward
Steven Jones
committed
if (drush_get_option('working-copy') || !empty(d()->make_working_copy)) {
$options[] = '--working-copy';
$arguments[] = d()->makefile;
$arguments[] = d()->root;
drush_invoke_process('@none', "make", $arguments, $options);
if (drush_get_error()) {
return drush_set_error("DRUSH_MAKE_FAILED",
"Could not download platform using drush make. No platform present");
}
}
// If we couldn't bootstrap, there's no sense in continuing past this point.
if(drush_get_error()) {
return drush_set_error("DRUSH_INVALID_DRUPAL_ROOT",
"Drush could not bootstrap this platform. Please check the platform directory exists and is readable.");
}
provision_file()->writable(d()->root . '/sites')
->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');
Adrian Rossouw
committed
drush_set_option('sites', array_keys((array) provision_drupal_find_sites()), 'drupal');
drush_log(dt("This platform is running @short_name @version", array('@short_name' => 'drupal', '@version' => VERSION)));
Adrian Rossouw
committed
drush_set_option('packages', _scrub_object(provision_find_packages()), 'drupal');
Grazyna Jaworska
committed
Grazyna Jaworska
committed
// Determine latest BOA contrib directory name and add INI template if missing.
Grazyna Jaworska
committed
$pathAll = '/data/all/';
Grazyna Jaworska
committed
$iniFile = d()->root . '/sites/all/modules/default.boa_platform_control.ini';
$iniTpl = '/data/conf/default.boa_platform_control.ini';
if (!provision_file()->exists($iniFile)->status() && provision_file()->exists($iniTpl)->status()) {
provision_file()->copy($iniTpl, $iniFile);
}
Grazyna Jaworska
committed
if (provision_file()->exists($pathAll)->status() && preg_match("/\/static\//", d()->root)) {
Grazyna Jaworska
committed
$sortedDirs = array();
foreach(scandir($pathAll) as $dir) {
if(is_dir($pathAll . $dir)) {
array_push($sortedDirs, $dir);
}
}
$latestDir = max($sortedDirs);
Grazyna Jaworska
committed
drush_log(dt('Contrib latestDir: !latest', array('!latest' => $latestDir)), 'message');
Grazyna Jaworska
committed
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
if (is_numeric($latestDir)) {
$core6_contrib_dir = '/data/all/' . $latestDir . '/o_contrib';
$core7_contrib_dir = '/data/all/' . $latestDir . '/o_contrib_seven';
}
else {
$core6_contrib_dir = '/data/all/000/modules/o_contrib';
$core7_contrib_dir = '/data/all/000/modules/o_contrib_seven';
}
$core6_version_id = d()->root . '/modules/path_alias_cache';
$core6_contrib_symlink = d()->root . '/modules/o_contrib';
$core7_version_id = d()->root . '/modules/overlay';
$core7_contrib_symlink = d()->root . '/modules/o_contrib_seven';
// Make sure the core modules directory is writable, but only if it is a BOA system.
if (provision_file()->exists($core6_contrib_dir)->status() || provision_file()->exists($core7_contrib_dir)->status()) {
provision_file()->writable(d()->root . '/modules')
->succeed('Drupal core modules directory @path is writable by the provisioning script')
->fail('Drupal core modules directory @path is not writable by the provisioning script', 'PROVISION_MODULES_DIR_NOT_WRITABLE');
}
// Add symlink to BOA specific contrib in Pressflow 6.
if (provision_file()->exists($core6_contrib_dir)->status() && provision_file()->exists($core6_version_id)->status() && !provision_file()->exists($core6_contrib_symlink)->status()) {
provision_file()->symlink($core6_contrib_dir, $core6_contrib_symlink)
->succeed('Created symlink @path to @target')
->fail('Could not create symlink @path to @target: @reason');
}
// Add symlink to BOA specific contrib in Drupal 7.
if (provision_file()->exists($core7_contrib_dir)->status() && provision_file()->exists($core7_version_id)->status() && !provision_file()->exists($core7_contrib_symlink)->status()) {
provision_file()->symlink($core7_contrib_dir, $core7_contrib_symlink)
->succeed('Created symlink @path to @target')
->fail('Could not create symlink @path to @target: @reason');
}
}
Adrian Rossouw
committed
}
drush_set_option('packages', _scrub_object(provision_drupal_system_map()), 'site');
// This is the actual drupal provisioning requirements.
_provision_drupal_create_directories();
_provision_drupal_maintain_aliases();
Adrian Rossouw
committed
// Requires at least the database settings to complete.
Adrian Rossouw
committed
_provision_drupal_create_settings_file();
Adrian Rossouw
committed
}
}
/**
* Implementation of hook_provision_post_verify
*/
function drush_provision_drupal_post_provision_verify() {
_provision_drupal_rebuild_caches();
Adrian Rossouw
committed
drush_set_option('installed', TRUE, 'site');
_provision_client_create_symlink();
drush_include_engine('drupal', 'cron_key');
Grazyna Jaworska
committed
$iniFile = d()->root . '/sites/' . d()->uri . '/modules/default.boa_site_control.ini';
$iniTpl = '/data/conf/default.boa_site_control.ini';
if (!provision_file()->exists($iniFile)->status() && provision_file()->exists($iniTpl)->status()) {
provision_file()->copy($iniTpl, $iniFile);
}