annotate sites/all/modules/features/includes/features.locale.inc @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * Features hooks for language.
danielebarchiesi@4 6 */
danielebarchiesi@4 7
danielebarchiesi@4 8 /**
danielebarchiesi@4 9 * Implements of hook_features_api().
danielebarchiesi@4 10 */
danielebarchiesi@4 11 function locale_features_api() {
danielebarchiesi@4 12 return array(
danielebarchiesi@4 13 'language' => array(
danielebarchiesi@4 14 'name' => t('Languages'),
danielebarchiesi@4 15 'default_hook' => 'locale_default_languages',
danielebarchiesi@4 16 'feature_source' => TRUE,
danielebarchiesi@4 17 'default_file' => FEATURES_DEFAULTS_INCLUDED,
danielebarchiesi@4 18 ),
danielebarchiesi@4 19 );
danielebarchiesi@4 20 }
danielebarchiesi@4 21
danielebarchiesi@4 22 /**
danielebarchiesi@4 23 * Implements hook_features_export_options().
danielebarchiesi@4 24 */
danielebarchiesi@4 25 function language_features_export_options() {
danielebarchiesi@4 26 return locale_language_list('native', TRUE);
danielebarchiesi@4 27 }
danielebarchiesi@4 28
danielebarchiesi@4 29 /**
danielebarchiesi@4 30 * Implements hook_features_export().
danielebarchiesi@4 31 */
danielebarchiesi@4 32 function language_features_export($data, &$export, $module_name = '') {
danielebarchiesi@4 33 $export['dependencies']['features'] = 'features';
danielebarchiesi@4 34 $export['dependencies']['locale'] = 'locale';
danielebarchiesi@4 35
danielebarchiesi@4 36 $language_list = locale_language_list('native', TRUE);
danielebarchiesi@4 37
danielebarchiesi@4 38 foreach ($data as $name) {
danielebarchiesi@4 39 // Only export existing languages.
danielebarchiesi@4 40 if (!empty($language_list[$name])) {
danielebarchiesi@4 41 // Add language to exports.
danielebarchiesi@4 42 $export['features']['language'][$name] = $name;
danielebarchiesi@4 43 }
danielebarchiesi@4 44 }
danielebarchiesi@4 45
danielebarchiesi@4 46 // No pipe to return.
danielebarchiesi@4 47 return array();
danielebarchiesi@4 48 }
danielebarchiesi@4 49
danielebarchiesi@4 50 /**
danielebarchiesi@4 51 * Implements hook_features_export_render().
danielebarchiesi@4 52 */
danielebarchiesi@4 53 function language_features_export_render($module, $data, $export = NULL) {
danielebarchiesi@4 54 $code = array();
danielebarchiesi@4 55 $code[] = ' $languages = array();';
danielebarchiesi@4 56 $code[] = '';
danielebarchiesi@4 57
danielebarchiesi@4 58 $language_list = language_list();
danielebarchiesi@4 59
danielebarchiesi@4 60 foreach ($data as $name) {
danielebarchiesi@4 61 // Only render existing languages.
danielebarchiesi@4 62 if (!empty($language_list[$name])) {
danielebarchiesi@4 63
danielebarchiesi@4 64 $var = (array) $language_list[$name];
danielebarchiesi@4 65 // Unset javascript hash
danielebarchiesi@4 66 unset($var['javascript']);
danielebarchiesi@4 67
danielebarchiesi@4 68 $lang_export = features_var_export($var, ' ');
danielebarchiesi@4 69 $lang_identifier = features_var_export($name);
danielebarchiesi@4 70 $code[] = " // Exported language: $name.";
danielebarchiesi@4 71 $code[] = " \$languages[{$lang_identifier}] = {$lang_export};";
danielebarchiesi@4 72 }
danielebarchiesi@4 73 }
danielebarchiesi@4 74
danielebarchiesi@4 75 $code[] = ' return $languages;';
danielebarchiesi@4 76 $code = implode("\n", $code);
danielebarchiesi@4 77 return array('locale_default_languages' => $code);
danielebarchiesi@4 78 }
danielebarchiesi@4 79
danielebarchiesi@4 80 /**
danielebarchiesi@4 81 * Implements hook_features_revert().
danielebarchiesi@4 82 */
danielebarchiesi@4 83 function language_features_revert($module) {
danielebarchiesi@4 84 return language_features_rebuild($module);
danielebarchiesi@4 85 }
danielebarchiesi@4 86
danielebarchiesi@4 87 /**
danielebarchiesi@4 88 * Implements hook_features_rebuild().
danielebarchiesi@4 89 */
danielebarchiesi@4 90 function language_features_rebuild($module) {
danielebarchiesi@4 91 if ($defaults = features_get_default('language', $module)) {
danielebarchiesi@4 92 foreach ($defaults as $key => $language) {
danielebarchiesi@4 93 _features_language_save((object) $language);
danielebarchiesi@4 94 }
danielebarchiesi@4 95
danielebarchiesi@4 96 // Set correct language count.
danielebarchiesi@4 97 $enabled_languages = db_select('languages')
danielebarchiesi@4 98 ->condition('enabled', 1)
danielebarchiesi@4 99 ->fields('languages')
danielebarchiesi@4 100 ->execute()
danielebarchiesi@4 101 ->rowCount();
danielebarchiesi@4 102 variable_set('language_count', $enabled_languages);
danielebarchiesi@4 103 }
danielebarchiesi@4 104 }
danielebarchiesi@4 105
danielebarchiesi@4 106 /**
danielebarchiesi@4 107 * Helper function to save the language to database.
danielebarchiesi@4 108 *
danielebarchiesi@4 109 * @see locale_languages_edit_form_submit()
danielebarchiesi@4 110 */
danielebarchiesi@4 111 function _features_language_save($language) {
danielebarchiesi@4 112
danielebarchiesi@4 113 $current_language = db_select('languages')
danielebarchiesi@4 114 ->condition('language', $language->language)
danielebarchiesi@4 115 ->fields('languages')
danielebarchiesi@4 116 ->execute()
danielebarchiesi@4 117 ->fetchAssoc();
danielebarchiesi@4 118
danielebarchiesi@4 119 // Set the default language when needed.
danielebarchiesi@4 120 $default = language_default();
danielebarchiesi@4 121
danielebarchiesi@4 122 // Insert new language via api function.
danielebarchiesi@4 123 if (empty($current_language)) {
danielebarchiesi@4 124 locale_add_language($language->language,
danielebarchiesi@4 125 $language->name,
danielebarchiesi@4 126 $language->native,
danielebarchiesi@4 127 $language->direction,
danielebarchiesi@4 128 $language->domain,
danielebarchiesi@4 129 $language->prefix,
danielebarchiesi@4 130 $language->enabled,
danielebarchiesi@4 131 ($language->language == $default->language));
danielebarchiesi@4 132 // Additional params, locale_add_language does not implement.
danielebarchiesi@4 133 db_update('languages')
danielebarchiesi@4 134 ->fields(array(
danielebarchiesi@4 135 'plurals' => empty($language->plurals) ? 0 : $language->plurals,
danielebarchiesi@4 136 'formula' => empty($language->formula) ? '' : $language->formula,
danielebarchiesi@4 137 ))
danielebarchiesi@4 138 ->condition('language', $language->language)
danielebarchiesi@4 139 ->execute();
danielebarchiesi@4 140 }
danielebarchiesi@4 141 // Update Existing language.
danielebarchiesi@4 142 else {
danielebarchiesi@4 143 // @TODO: get properties from schema.
danielebarchiesi@4 144 $properties = array('language', 'name', 'native', 'direction', 'enabled', 'plurals', 'formula', 'domain', 'prefix', 'weight', 'javascript');
danielebarchiesi@4 145 // The javascript hash is not in the imported data but should be empty
danielebarchiesi@4 146 if (!isset($language->javascript)) {
danielebarchiesi@4 147 $language->javascript = '';
danielebarchiesi@4 148 }
danielebarchiesi@4 149
danielebarchiesi@4 150 $fields = array_intersect_key((array) $language, array_flip($properties));
danielebarchiesi@4 151 db_update('languages')
danielebarchiesi@4 152 ->fields($fields)
danielebarchiesi@4 153 ->condition('language', $language->language)
danielebarchiesi@4 154 ->execute();
danielebarchiesi@4 155
danielebarchiesi@4 156 // Set the default language when needed.
danielebarchiesi@4 157 $default = language_default();
danielebarchiesi@4 158 if ($default->language == $language->language) {
danielebarchiesi@4 159 variable_set('language_default', (object) $fields);
danielebarchiesi@4 160 }
danielebarchiesi@4 161 }
danielebarchiesi@4 162 }