Commit c5324c4e authored by Philippe Mouchel's avatar Philippe Mouchel
Browse files

API file + update to include more than one file before executing environments callbacks

parent 85524678
...@@ -7,12 +7,10 @@ Pour défininr l'environnement courant, il est recommandé de rajouter cette lig ...@@ -7,12 +7,10 @@ Pour défininr l'environnement courant, il est recommandé de rajouter cette lig
$conf['environment'] = 'environment_name'; $conf['environment'] = 'environment_name';
Une fois cette variable définie, il suffit d'exécuter la commande Drush suivante. Une fois cette variable définie, il suffit d'exécuter la commande Drush suivante. Elle se basera automatiquement sur la variable définie par le fichier settings.php.
drush d-conf drush d-conf
Elle se basera automatiquement sur la variable ci-dessus pour savoir quelle configuration déployer.
Il est possible de forcer la configuration à déployer, en la donnant comme argument à la commande. Il est possible de forcer la configuration à déployer, en la donnant comme argument à la commande.
drush d-conf forced_environment drush d-conf forced_environment
...@@ -31,9 +29,11 @@ Pour customiser la configuration, il suffit d'implémenter le hook_env_conf_avai ...@@ -31,9 +29,11 @@ Pour customiser la configuration, il suffit d'implémenter le hook_env_conf_avai
... ...
), ),
'include_file' => array( 'include_file' => array(
'type' => 'inc', array(
'module' => 'mymodulecustom', 'type' => 'inc',
'name' => 'mymodulecustom.env_conf', 'module' => 'mymodulecustom',
'name' => 'mymodulecustom.env_conf',
),
), ),
'weight' => 1, 'weight' => 1,
), ),
...@@ -44,9 +44,11 @@ Pour customiser la configuration, il suffit d'implémenter le hook_env_conf_avai ...@@ -44,9 +44,11 @@ Pour customiser la configuration, il suffit d'implémenter le hook_env_conf_avai
... ...
), ),
'include_file' => array( 'include_file' => array(
'type' => 'inc', array(
'module' => 'mymodulecustom', 'type' => 'inc',
'name' => 'mymodulecustom.env_conf', 'module' => 'mymodulecustom',
'name' => 'mymodulecustom.env_conf',
),
), ),
'weight' => 2, 'weight' => 2,
), ),
...@@ -56,4 +58,4 @@ Pour customiser la configuration, il suffit d'implémenter le hook_env_conf_avai ...@@ -56,4 +58,4 @@ Pour customiser la configuration, il suffit d'implémenter le hook_env_conf_avai
Il est possible d'utiliser les mêmes fonctions de callbacks sur plusieurs environnements, ou d'en définir des différentes pour chaque environnement. Il est possible d'utiliser les mêmes fonctions de callbacks sur plusieurs environnements, ou d'en définir des différentes pour chaque environnement.
Il est également possible d'implémenter le hook_env_conf_available_env_alter() pour modifier les configurations par défaut. Il est également possible d'implémenter le hook_env_conf_available_env_alter() pour modifier les environnements par défaut.
<?php
/**
* @file
* Per-environment configuration module,
* provided hooks.
*/
/**
* @addtogroup hooks
* @{
*/
/**
* Declare new environment(s), with callback(s).
*
* This hook is used to create new environments for your app/site.
* To correctly create an environment, you must declare:
* - one or more callback function(s) (executed when deploying configuration)
* - file to include to correctly define callbacks function(s)
* - a weight, to order environment(s) on administration page
*
* @return array
* An array representing declared environments
* - environment_name: The unique name of the custom environment.
* - callbacks: array, callback functions list.
* - include_file: array, list of files to include, where callback functions
* are defined
* @see module_load_include()
* - weight: integer, used to order environment in administration page
*
* @see README.md file
*/
function hook_env_conf_available_env() {
return array(
'environment_name' => array(
'callbacks' => array(
'first_function',
'second_function',
),
'include_file' => array(
array(
'type' => 'inc',
'module' => 'mymodulecustom',
'name' => 'mymodulecustom.env_conf',
),
),
'weight' => 1,
),
);
}
/**
* Alter existing environments.
*
* This hook is used to alter existing environments for your app/site.
* You only have to alter $environments variable,
* mostly, adding one or more callbacks functions and files to include
*
* @param array $environments
* An array representing existing environments
* @see hook_env_conf_available_env()
*/
function hook_env_conf_available_env_alter(&$environments) {
$environments['environment_name']['callbacks'][] = 'third_function'
$environments['environment_name']['include_file'][] = array(
'type' => 'inc',
'module' => 'mymodulecustom',
'name' => 'mymodulecustom.other_file',
);
$environments['environment_name']['weight'] = 3;
}
/**
* @} End of "addtogroup hooks".
*/
...@@ -54,20 +54,24 @@ function _deploy_environment_configuration($selected_environment) { ...@@ -54,20 +54,24 @@ function _deploy_environment_configuration($selected_environment) {
// List available environments configurations // List available environments configurations
$available_envs = _get_available_environments(); $available_envs = _get_available_environments();
dsm($available_envs);
dsm($available_envs[$selected_environment]);
// Include file to define callback function(s) // Include file to define callback function(s)
$file = $available_envs[$selected_environment]['include_file']; foreach ($available_envs[$selected_environment]['include_file'] as $file) {
if (isset($file['type']) && isset($file['module'])) { // $file = $available_envs[$selected_environment]['include_file'];
if (isset($file['name'])) { if (isset($file['type']) && isset($file['module'])) {
module_load_include($file['type'], $file['module'], $file['name']); if (isset($file['name'])) {
module_load_include($file['type'], $file['module'], $file['name']);
}
else {
module_load_include($file['type'], $file['module']);
}
} }
else { else {
module_load_include($file['type'], $file['module']); drupal_set_message(t('Impossible to include file where functions are defined.'), 'warning');
} }
} }
else {
drupal_set_message(t('Impossible to include file where functions are defined.'), 'warning');
}
// Execute each functions or alert // Execute each functions or alert
$errors = 0; $errors = 0;
......
...@@ -46,9 +46,11 @@ function env_conf_env_conf_available_env() { ...@@ -46,9 +46,11 @@ function env_conf_env_conf_available_env() {
'_demo_env_conf', '_demo_env_conf',
), ),
'include_file' => array( 'include_file' => array(
'type' => 'inc', array(
'module' => 'env_conf', 'type' => 'inc',
'name' => 'env_conf.env_conf', 'module' => 'env_conf',
'name' => 'env_conf.env_conf',
),
), ),
'weight' => 1, 'weight' => 1,
), ),
...@@ -57,9 +59,11 @@ function env_conf_env_conf_available_env() { ...@@ -57,9 +59,11 @@ function env_conf_env_conf_available_env() {
'_demo_env_conf', '_demo_env_conf',
), ),
'include_file' => array( 'include_file' => array(
'type' => 'inc', array(
'module' => 'env_conf', 'type' => 'inc',
'name' => 'env_conf.env_conf', 'module' => 'env_conf',
'name' => 'env_conf.env_conf',
),
), ),
'weight' => 2, 'weight' => 2,
), ),
...@@ -68,9 +72,11 @@ function env_conf_env_conf_available_env() { ...@@ -68,9 +72,11 @@ function env_conf_env_conf_available_env() {
'_demo_env_conf', '_demo_env_conf',
), ),
'include_file' => array( 'include_file' => array(
'type' => 'inc', array(
'module' => 'env_conf', 'type' => 'inc',
'name' => 'env_conf.env_conf', 'module' => 'env_conf',
'name' => 'env_conf.env_conf',
),
), ),
'weight' => 3, 'weight' => 3,
), ),
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment