provision.api.php 8.99 KB
Newer Older
drumm's avatar
drumm committed
1 2
<?php
/**
3 4
 * @file
 * Provision API
drumm's avatar
drumm committed
5 6
 *
 * @see drush.api.php
7
 * @see drush_command_invoke_all()
drumm's avatar
drumm committed
8 9
 */

10 11 12 13 14 15 16 17 18 19
/**
 * Possible variables to set in local.drushrc.php or another drushrc location Drush supports.
 *
 * usage:
 *   $options['provision_backup_suffix'] = '.tar.bz2';
 *
 * provision_verify_platforms_before_migrate - When migrating many sites turning this off can save time, default TRUE.
 * provision_backup_suffix - Method to set the compression used for backups... e.g. '.tar.bz2' or '.tar.', defaults to '.tar.gz'.
 *
 */
drumm's avatar
drumm committed
20

21
/**
22
 * Implements hook_drush_load(). Deprecated. Removed in Drush 7.x.
23 24 25 26 27 28 29 30 31 32 33
 *
 * In a drush contrib check if the frontend part (hosting_hook variant) is enabled.
 */
function hook_drush_load() {
  $features = drush_get_option('hosting_features', array());
  $hook_feature_name = 'something';

  return array_key_exists($hook_feature_name, $features) // Front-end module is installed...
    && $features[$hook_feature_name];                    // ... and enabled.
}

drumm's avatar
drumm committed
34 35
/**
 * Advertise what service types are available and their default
36
 * implementations. Services are class Provision_Service_{type}_{service} in
drumm's avatar
drumm committed
37 38 39 40 41 42 43
 * {type}/{service}/{service}_service.inc files.
 *
 * @return
 *   An associative array of type => default. Default may be NULL.
 *
 * @see provision.service.inc
 */
ergonlogic's avatar
ergonlogic committed
44
function hook_provision_services() {
drumm's avatar
drumm committed
45 46 47 48 49
  return array('db' => NULL);
}

/**
 * Append PHP code to Drupal's settings.php file.
50
 *
drumm's avatar
drumm committed
51 52 53 54 55
 * To use templating, return an include statement for the template.
 *
 * @param $uri
 *   URI for the site.
 * @param $data
56
 *   Associative array of data from Provision_Config_Drupal_Settings::data.
drumm's avatar
drumm committed
57 58 59 60
 *
 * @return
 *   Lines to add to the site's settings.php file.
 *
61
 * @see Provision_Config_Drupal_Settings
drumm's avatar
drumm committed
62
 */
63
function hook_provision_drupal_config($uri, $data) {
drumm's avatar
drumm committed
64 65 66 67 68
  return '$conf[\'reverse_proxy\'] = TRUE;';
}

/**
 * Append Apache configuration to server configuration.
69
 *
drumm's avatar
drumm committed
70 71
 * To use templating, return an include statement for the template.
 *
72 73 74
 * The d() function is available to retrieve more information from the aegir
 * context.
 *
drumm's avatar
drumm committed
75
 * @param $data
76
 *   Associative array of data from Provision_Config_Apache_Server::data.
drumm's avatar
drumm committed
77 78 79 80
 *
 * @return
 *   Lines to add to the configuration file.
 *
81
 * @see Provision_Config_Apache_Server
drumm's avatar
drumm committed
82
 */
ergonlogic's avatar
ergonlogic committed
83
function hook_provision_apache_server_config($data) {
drumm's avatar
drumm committed
84 85 86 87
}

/**
 * Append Apache configuration to platform configuration.
88
 *
drumm's avatar
drumm committed
89 90
 * To use templating, return an include statement for the template.
 *
91 92 93
 * The d() function is available to retrieve more information from the aegir
 * context.
 *
drumm's avatar
drumm committed
94
 * @param $data
95
 *   Associative array of data from Provision_Config_Apache_Platform::data.
drumm's avatar
drumm committed
96 97 98 99
 *
 * @return
 *   Lines to add to the configuration file.
 *
100
 * @see Provision_Config_Apache_Platform
drumm's avatar
drumm committed
101 102 103 104 105 106
 */
function drush_hook_provision_apache_dir_config($data) {
}

/**
 * Append Apache configuration to site vhost configuration.
107
 *
drumm's avatar
drumm committed
108 109
 * To use templating, return an include statement for the template.
 *
110 111 112
 * The d() function is available to retrieve more information from the aegir
 * context.
 *
drumm's avatar
drumm committed
113 114 115
 * @param $uri
 *   URI for the site.
 * @param $data
116
 *   Associative array of data from Provision_Config_Apache_Site::data.
drumm's avatar
drumm committed
117 118 119 120
 *
 * @return
 *   Lines to add to the configuration file.
 *
121
 * @see Provision_Config_Apache_Site
drumm's avatar
drumm committed
122 123 124
 */
function drush_hook_provision_apache_vhost_config($uri, $data) {
}
125

126 127 128 129 130
/**
 * Append Nginx configuration to server configuration.
 *
 * To use templating, return an include statement for the template.
 *
131 132 133
 * The d() function is available to retrieve more information from the aegir
 * context.
 *
134 135 136 137 138 139 140 141
 * @param $data
 *   Associative array of data from Provision_Config_Nginx_Server::data.
 *
 * @return
 *   Lines to add to the configuration file.
 *
 * @see Provision_Config_Nginx_Server
 */
ergonlogic's avatar
ergonlogic committed
142
function hook_provision_nginx_server_config($data) {
143 144 145 146 147 148 149
}

/**
 * Append Nginx configuration to platform configuration.
 *
 * To use templating, return an include statement for the template.
 *
150 151 152
 * The d() function is available to retrieve more information from the aegir
 * context.
 *
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
 * @param $data
 *   Associative array of data from Provision_Config_Nginx_Platform::data.
 *
 * @return
 *   Lines to add to the configuration file.
 *
 * @see Provision_Config_Nginx_Platform
 */
function drush_hook_provision_nginx_dir_config($data) {
}

/**
 * Append Nginx configuration to site vhost configuration.
 *
 * To use templating, return an include statement for the template.
 *
169 170 171
 * The d() function is available to retrieve more information from the aegir
 * context.
 *
172 173 174 175 176 177 178 179 180 181 182 183 184
 * @param $uri
 *   URI for the site.
 * @param $data
 *   Associative array of data from Provision_Config_Nginx_Site::data.
 *
 * @return
 *   Lines to add to the configuration file.
 *
 * @see Provision_Config_Nginx_Site
 */
function drush_hook_provision_nginx_vhost_config($uri, $data) {
}

185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
/**
 * Specify a different template for rendering a config file.
 *
 * @param $config
 *   The Provision_config object trying to find its template.
 *
 * @return
 *   A filename of a template to use for rendering.
 *
 * @see hook_provision_config_load_templates_alter()
 */
function hook_provision_config_load_templates($config) {
  if (is_a($config, 'Provision_Config_Drupal_Settings')) {
    $file = dirname(__FILE__) . '/custom-php-settings.tpl.php';
    return $file;
  }
}

/**
 * Alter the templates suggested for rendering a config file.
 *
 * @param $templates
 *   The array of templates suggested by other Drush commands.
 * @param $config
 *   The Provision_config object trying to find its template.
 *
 * @see hook_provision_config_load_templates()
 */
function hook_provision_config_load_templates_alter(&$templates, $config) {
  // Don't let any custom templates be used.
  $templates = array();
}
217 218 219 220 221 222 223 224 225 226 227

/**
 * Alter the array of directories to create.
 *
 * @param $mkdir
 *    The array of directories to create.
 * @param string $url
 *    The url of the site being invoked.
 */
function hook_provision_drupal_create_directories_alter(&$mkdir, $url) {
  $mkdir["sites/$url/my_special_dir"] = 02770;
228
  $mkdir["sites/$url/my_other_dir"] = FALSE; // Skip the chmod on this directory.
229 230 231 232 233 234 235 236 237 238 239 240
}

/**
 * Alter the array of directories to change group ownership of.
 *
 * @param $chgrp
 *    The array of directories to change group ownership of.
 * @param string $url
 *    The url of the site being invoked.
 */
function hook_provision_drupal_chgrp_directories_alter(&$chgrp, $url) {
  $chgrp["sites/$url/my_special_dir"] = d('@server_master')->web_group;
241
  $chgrp["sites/$url/my_other_dir"] = FALSE; // Skip the chgrp on this directory.
242
}
243

ergonlogic's avatar
ergonlogic committed
244 245 246 247
/**
 * Alter the array of directories to not to recurse into in mkdir and chgrp
 * operations.
 *
248 249
 * @param $chgrp_not_recursive
 *    The array of directories not to recurse into.
ergonlogic's avatar
ergonlogic committed
250 251 252
 * @param string $url
 *    The url of the site being invoked.
 */
253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
function hook_provision_drupal_chgrp_not_recursive_directories_alter($chgrp_not_recursive, $url) {
  $chgrp_not_recursive[] = "sites/$url/my_special_dir";
  unset($chgrp_not_recursive["sites/$url"]); // Allow recursion where we otherwise wouldn't.
}

/**
 * Alter the array of directories to not to recurse into in chmod operations.
 *
 * @param $chmod_not_recursive
 *    The array of directories not to recurse into.
 * @param string $url
 *    The url of the site being invoked.
 */
function hook_provision_drupal_chmod_not_recursive_directories_alter($chmod_not_recursive, $url) {
  $chmod_not_recursive[] = "sites/$url/my_special_dir";
  unset($chmod_not_recursive["sites/$url"]); // Allow recursion where we otherwise wouldn't.
ergonlogic's avatar
ergonlogic committed
269
}
270 271 272 273 274 275 276 277 278 279 280 281

/**
 * Alter the settings array just before starting the provision install.
 *
 * @param $settings
 *    The array with settings.
 * @param $url
 *    The site url.
 */
function hook_provision_drupal_install_settings_alter(&$settings, $url) {
  $settings['forms']['install_configure_form']['update_status_module'] = array();
}
282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299

/**
 * Alter the options passed to 'provision-deploy' when it is invoked in
 * restore, clone and migrate tasks.
 *
 * @param array $deploy_options
 *   Options passed to the invocation of provision-deploy.
 * @param string $context
 *   The type of task invoking the hook (e.g., 'clone').
 */
function hook_provision_deploy_options_alter(&$deploy_options, $context) {
  // From hosting_s3; see: https://www.drupal.org/node/2412563
  // Inject the backup bucket name during the 'clone' task, so that it is
  // available in deploy().
  if ($bucket = drush_get_option('s3_backup_name', FALSE)) {
    $deploy_options['s3_backup_name'] = $bucket;
  }
}
300 301 302 303 304 305 306

/**
 * Alter the array of regexes used to filter mysqldumps.
 *
 * @param $regexes
 *   An array of patterns to match (keys) and replacement patterns (values).
 *   Setting a value to FALSE will omit the line entirely from the database
307
 *   dump. Defaults are set in Provision_Service_db_mysql::get_regexes().
308
 */
309 310 311 312 313 314 315
function hook_provision_mysql_regex_alter(&$regexes) {
  $regexes = array(
    // remove these lines entirely.
    '#/\*!50013 DEFINER=.*/#' => FALSE,
    // just remove the matched content.
    '#/\*!50017 DEFINER=`[^`]*`@`[^`]*`\s*\*/#' => '',
    // replace matched content as needed
316
    '#/\*!50001 CREATE ALGORITHM=UNDEFINED \*/#' => "/*!50001 CREATE */",
317 318
  );
}