uppdated modules

This commit is contained in:
Bachir Soussi Chiadmi
2017-01-22 16:19:36 +01:00
parent 03be8f82aa
commit 8416e3eea1
748 changed files with 32317 additions and 20900 deletions
@@ -0,0 +1,115 @@
<?php
/**
* @file
* Features integration for 'contact' module.
*/
/**
* Implements hook_features_api().
*/
function contact_features_api() {
return array(
'contact_categories' => array(
'name' => t('Contact categories'),
'feature_source' => TRUE,
'default_hook' => 'contact_categories_defaults',
'default_file' => FEATURES_DEFAULTS_INCLUDED,
),
);
}
/**
* Implements hook_features_export_options().
*/
function contact_categories_features_export_options() {
$options = array();
$categories = db_select('contact', 'c')->fields('c')->execute()->fetchAll();
foreach ($categories as $category) {
$options["$category->category"] = "$category->category";
}
return $options;
}
/**
* Implements hook_features_export().
*/
function contact_categories_features_export($data, &$export, $module_name = '') {
$export['dependencies']['features'] = 'features';
$export['dependencies']['contact'] = 'contact';
foreach ($data as $name) {
$export['features']['contact_categories'][$name] = $name;
}
return array();
}
/**
* Implements hook_features_export_render().
*/
function contact_categories_features_export_render($module, $data, $export = NULL) {
$render = array();
foreach ($data as $name) {
$export_category = db_select('contact', 'c')
->fields('c', array('cid', 'category'))
->condition('category', $name, 'LIKE')
->execute()
->fetchAll();
if (isset($export_category[0]->cid) && ($category = contact_load($export_category[0]->cid))) {
unset($category['cid']);
$render[$name] = $category;
}
}
return array('contact_categories_defaults' => ' return ' . features_var_export($render, ' ') . ';');
}
/**
* Implements hook_features_revert().
*/
function contact_categories_features_revert($module) {
return contact_categories_features_rebuild($module);
}
/**
* Implements hook_features_rebuild().
*/
function contact_categories_features_rebuild($module) {
if ($defaults = features_get_default('contact_categories', $module)) {
foreach ($defaults as $default_category) {
$existing_categories = db_select('contact', 'c')
->fields('c', array('cid', 'category'))
->execute()
->fetchAll();
if ($existing_categories) {
foreach ($existing_categories as $existing_category) {
if ($default_category['category'] == $existing_category->category) {
db_update('contact')
->fields(
array(
'recipients' => $default_category['recipients'],
'reply' => $default_category['reply'],
'weight' => $default_category['weight'],
'selected' => $default_category['selected'],
)
)
->condition('category', $existing_category->category, '=')
->execute();
}
else {
db_merge('contact')
->key(array('category' => $default_category['category']))
->fields($default_category)
->execute();
}
}
}
else {
db_merge('contact')
->key(array('category' => $default_category['category']))
->fields($default_category)
->execute();
}
}
}
}
@@ -151,14 +151,14 @@ function field_base_features_export_render($module, $data, $export = NULL) {
foreach ($data as $identifier) {
if ($field = features_field_base_load($identifier)) {
unset($field['columns']);
// unset($field['locked']);
unset($field['foreign keys']);
// Only remove the 'storage' declaration if the field is using the default
// storage type.
if ($field['storage']['type'] == variable_get('field_storage_default', 'field_sql_storage')) {
unset($field['storage']);
}
// If we still have a storage declaration here it means that a non-default
// storage type was altered into to the field definition. And noone would
// storage type was altered into to the field definition. And no one would
// never need to change the 'details' key, so don't render it.
if (isset($field['storage']['details'])) {
unset($field['storage']['details']);
@@ -166,8 +166,15 @@ function field_base_features_export_render($module, $data, $export = NULL) {
_field_instance_features_export_sort($field);
$field_export = features_var_export($field, ' ');
$field_prefix = ' // Exported field_base: ';
$field_identifier = features_var_export($identifier);
$code[] = " // Exported field_base: {$field_identifier}";
if (features_field_export_needs_wrap($field_prefix, $field_identifier)) {
$code[] = rtrim($field_prefix);
$code[] = " // {$field_identifier}.";
}
else {
$code[] = $field_prefix . $field_identifier . '.';
}
$code[] = " \$field_bases[{$field_identifier}] = {$field_export};";
$code[] = "";
}
@@ -190,8 +197,15 @@ function field_instance_features_export_render($module, $data, $export = NULL) {
if ($instance = features_field_instance_load($identifier)) {
_field_instance_features_export_sort($instance);
$field_export = features_var_export($instance, ' ');
$instance_prefix = ' // Exported field_instance: ';
$instance_identifier = features_var_export($identifier);
$code[] = " // Exported field_instance: {$instance_identifier}";
if (features_field_export_needs_wrap($instance_prefix, $instance_identifier)) {
$code[] = rtrim($instance_prefix);
$code[] = " // {$instance_identifier}.";
}
else {
$code[] = $instance_prefix . $instance_identifier . '.';
}
$code[] = " \$field_instances[{$instance_identifier}] = {$field_export};";
$code[] = "";
@@ -260,12 +274,23 @@ function field_base_features_rebuild($module) {
// Create or update field.
if (isset($existing_fields[$field['field_name']])) {
$existing_field = $existing_fields[$field['field_name']];
if ($field + $existing_field !== $existing_field) {
field_update_field($field);
$array_diff_result = drupal_array_diff_assoc_recursive($field + $existing_field, $existing_field);
if (!empty($array_diff_result)) {
try {
field_update_field($field);
}
catch (FieldException $e) {
watchdog('features', 'Attempt to update field %label failed: %message', array('%label' => $field['field_name'], '%message' => $e->getMessage()), WATCHDOG_ERROR);
}
}
}
else {
field_create_field($field);
try {
field_create_field($field);
}
catch (FieldException $e) {
watchdog('features', 'Attempt to create field %label failed: %message', array('%label' => $field['field_name'], '%message' => $e->getMessage()), WATCHDOG_ERROR);
}
$existing_fields[$field['field_name']] = $field;
}
variable_set('menu_rebuild_needed', TRUE);
@@ -395,7 +420,7 @@ function field_features_export_render($module, $data, $export = NULL) {
unset($field['field_config']['storage']);
}
// If we still have a storage declaration here it means that a non-default
// storage type was altered into to the field definition. And noone would
// storage type was altered into to the field definition. And no one would
// never need to change the 'details' key, so don't render it.
if (isset($field['field_config']['storage']['details'])) {
unset($field['field_config']['storage']['details']);
@@ -469,7 +494,8 @@ function field_features_rebuild($module) {
$field_config = $field['field_config'];
if (isset($existing_fields[$field_config['field_name']])) {
$existing_field = $existing_fields[$field_config['field_name']];
if ($field_config + $existing_field !== $existing_field) {
$array_diff_result = drupal_array_diff_assoc_recursive($field_config + $existing_field, $existing_field);
if (!empty($array_diff_result)) {
try {
field_update_field($field_config);
}
@@ -528,3 +554,24 @@ function features_field_load($identifier) {
}
return FALSE;
}
/**
* Determine if a field export line needs to be wrapped.
*
* Drupal code standards specify that comments should wrap at 80 characters or
* less.
*
* @param string $prefix
* The prefix to be exported before the field identifier.
* @param string $identifier
* The field identifier.
*
* @return BOOL
* TRUE if the line should be wrapped after the prefix, else FALSE.
*
* @see https://www.drupal.org/node/1354
*/
function features_field_export_needs_wrap($prefix, $identifier) {
// Check for 79 characters, since the comment ends with a full stop.
return (strlen($prefix) + strlen($identifier) > 79);
}
@@ -86,16 +86,25 @@ function image_features_revert($module) {
/**
* Remove unnecessary keys for export.
*/
function _image_features_style_sanitize(&$style, $child = FALSE) {
$omit = $child ? array('isid', 'ieid', 'storage') : array('isid', 'ieid', 'storage', 'module');
if (is_array($style)) {
foreach ($style as $k => $v) {
if (in_array($k, $omit, TRUE)) {
unset($style[$k]);
}
else if (is_array($v)) {
_image_features_style_sanitize($style[$k], TRUE);
}
}
function _image_features_style_sanitize(array &$style) {
// Sanitize style: Don't export numeric IDs and things which get overwritten
// in image_styles() or are code/storage specific. The name property will be
// the key of the exported $style array.
$style = array_diff_key($style, array_flip(array(
'isid',
'name',
'module',
'storage',
)));
// Sanitize effects: all that needs to be kept is name, weight and data,
// which holds all the style-specific configuration. Other keys are assumed
// to belong to the definition of the effect itself, so not configuration.
foreach ($style['effects'] as $id => $effect) {
$style['effects'][$id] = array_intersect_key($effect, array_flip(array(
'name',
'data',
'weight',
)));
}
}
@@ -134,14 +134,15 @@ function _features_language_save($language) {
->fields(array(
'plurals' => empty($language->plurals) ? 0 : $language->plurals,
'formula' => empty($language->formula) ? '' : $language->formula,
'weight' => empty($language->weight) ? 0 : $language->weight,
))
->condition('language', $language->language)
->execute();
}
// Update Existing language.
else {
// @TODO: get properties from schema.
$properties = array('language', 'name', 'native', 'direction', 'enabled', 'plurals', 'formula', 'domain', 'prefix', 'weight', 'javascript');
// Get field list from table schema.
$properties = drupal_schema_fields_sql('languages');
// The javascript hash is not in the imported data but should be empty
if (!isset($language->javascript)) {
$language->javascript = '';
@@ -103,7 +103,6 @@ function menu_custom_features_export_render($module, $data) {
$code[] = features_translatables_export($translatables, ' ');
}
$code[] = '';
$code[] = ' return $menus;';
$code = implode("\n", $code);
return array('menu_default_menu_custom' => $code);
@@ -248,16 +247,16 @@ function menu_links_features_export_render($module, $data, $export = NULL) {
unset($link['plid']);
unset($link['mlid']);
$code[] = " // Exported menu link: {$new_identifier}";
$code[] = " // Exported menu link: {$new_identifier}.";
$code[] = " \$menu_links['{$new_identifier}'] = ". features_var_export($link, ' ') .";";
$translatables[] = $link['link_title'];
}
}
$code[] = '';
if (!empty($translatables)) {
$code[] = features_translatables_export($translatables, ' ');
}
$code[] = '';
$code[] = ' return $menu_links;';
$code = implode("\n", $code);
return array('menu_default_menu_links' => $code);
@@ -316,6 +315,7 @@ function menu_links_features_rebuild_ordered($menu_links, $reset = FALSE) {
foreach ($unordered as $link) {
$identifier = menu_links_features_identifier($link);
$ordered[$identifier] = 0;
$all_links[$identifier] = $link;
}
asort($ordered);
}
@@ -117,7 +117,7 @@ function node_features_revert($module = NULL) {
}
/**
* Implements hook_features_disable().
* Implements hook_features_disable_feature().
*
* When a features module is disabled, modify any node types it provides so
* they can be deleted manually through the content types UI.
@@ -125,7 +125,7 @@ function node_features_revert($module = NULL) {
* @param $module
* Name of module that has been disabled.
*/
function node_features_disable($module) {
function node_features_disable_feature($module) {
if ($default_types = features_get_default('node', $module)) {
foreach ($default_types as $type_name => $type_info) {
$type_info = node_type_load($type_name);
@@ -133,22 +133,26 @@ function node_features_disable($module) {
$type_info->custom = 1;
$type_info->modified = 1;
$type_info->locked = 0;
$type_info->disabled = 0;
node_type_save($type_info);
}
}
}
/**
* Implements hook_features_enable().
* Implements hook_features_enable_feature().
*
* When a features module is enabled, modify any node types it provides so
* they can no longer be deleted manually through the content types UI.
*
* Update the database cache of node types if needed.
*
* @param $module
* Name of module that has been enabled.
*/
function node_features_enable($module) {
function node_features_enable_feature($module) {
if ($default_types = features_get_default('node', $module)) {
$rebuild = FALSE;
foreach ($default_types as $type_name => $type_info) {
// Ensure the type exists.
if ($type_info = node_type_load($type_name)) {
@@ -156,8 +160,15 @@ function node_features_enable($module) {
$type_info->custom = 0;
$type_info->modified = 0;
$type_info->locked = 1;
$type_info->disabled = 0;
node_type_save($type_info);
}
else {
$rebuild = TRUE;
}
}
if ($rebuild) {
node_types_rebuild();
}
}
}