Created
February 15, 2012 11:02
-
-
Save badri/1835035 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -rupN features/features.module features-p/features.module | |
--- features/features.module 2012-01-04 03:07:15.000000000 +0530 | |
+++ features-p/features.module 2012-02-15 16:29:35.094415000 +0530 | |
@@ -307,7 +307,7 @@ function features_include($reset = FALSE | |
// Features provides integration on behalf of these modules. | |
// The features include provides handling for the feature dependencies. | |
// Note that ctools is placed last because it implements hooks "dynamically" for other modules. | |
- $modules = array('features', 'block', 'context', 'field', 'filter', 'image', 'menu', 'node', 'taxonomy', 'user', 'views', 'ctools'); | |
+ $modules = array('features', 'block', 'context', 'field', 'filter', 'image', 'locale', 'menu', 'node', 'taxonomy', 'user', 'views', 'ctools'); | |
foreach (array_filter($modules, 'module_exists') as $module) { | |
if (!module_hook($module, 'features_api')) { | |
diff -rupN features/includes/features.locale.inc features-p/includes/features.locale.inc | |
--- features/includes/features.locale.inc 1970-01-01 05:30:00.000000000 +0530 | |
+++ features-p/includes/features.locale.inc 2012-02-15 16:29:02.104415000 +0530 | |
@@ -0,0 +1,158 @@ | |
+<?php | |
+ | |
+/** | |
+ * @file | |
+ * Features hooks for language. | |
+ */ | |
+ | |
+/** | |
+ * Implements of hook_features_api(). | |
+ */ | |
+function locale_features_api() { | |
+ return array( | |
+ 'language' => array( | |
+ 'name' => t('Languages'), | |
+ 'default_hook' => 'locale_default_languages', | |
+ 'features_source' => TRUE, | |
+ 'default_file' => FEATURES_DEFAULTS_INCLUDED, | |
+ ), | |
+ ); | |
+} | |
+ | |
+/** | |
+ * Implements hook_features_export_options(). | |
+ */ | |
+function language_features_export_options() { | |
+ return locale_language_list('native', TRUE); | |
+} | |
+ | |
+/** | |
+ * Implements hook_features_export(). | |
+ */ | |
+function language_features_export($data, &$export, $module_name = '') { | |
+ $export['dependencies']['features'] = 'features'; | |
+ $export['dependencies']['locale'] = 'locale'; | |
+ | |
+ $language_list = locale_language_list('native', TRUE); | |
+ | |
+ foreach ($data as $name) { | |
+ // Only export existing languages. | |
+ if (!empty($language_list[$name])) { | |
+ // Add language to exports. | |
+ $export['features']['language'][$name] = $name; | |
+ } | |
+ } | |
+ | |
+ // No pipe to return. | |
+ return array(); | |
+} | |
+ | |
+/** | |
+ * Implements hook_features_export_render(). | |
+ */ | |
+function language_features_export_render($module, $data, $export = NULL) { | |
+ $code = array(); | |
+ $code[] = ' $languages = array();'; | |
+ $code[] = ''; | |
+ | |
+ $language_list = language_list(); | |
+ | |
+ foreach ($data as $name) { | |
+ // Only render existing languages. | |
+ if (!empty($language_list[$name])) { | |
+ | |
+ $var = (array) $language_list[$name]; | |
+ // Unset javascript hash | |
+ unset($var['javascript']); | |
+ | |
+ $lang_export = features_var_export($var, ' '); | |
+ $lang_identifier = features_var_export($name); | |
+ $code[] = " // Exported language: $name"; | |
+ $code[] = " \$languages[{$lang_identifier}] = {$lang_export};"; | |
+ } | |
+ } | |
+ | |
+ $code[] = ' return $languages;'; | |
+ $code = implode("\n", $code); | |
+ return array('locale_default_languages' => $code); | |
+} | |
+ | |
+/** | |
+ * Implements hook_features_revert(). | |
+ */ | |
+function language_features_revert($module) { | |
+ return language_features_rebuild($module); | |
+} | |
+ | |
+/** | |
+ * Implements hook_features_rebuild(). | |
+ */ | |
+function language_features_rebuild($module) { | |
+ if ($defaults = features_get_default('language', $module)) { | |
+ foreach ($defaults as $key => $language) { | |
+ _features_language_save((object) $language); | |
+ } | |
+ | |
+ // Set correct language count. | |
+ $enabled_languages = db_select('languages') | |
+ ->condition('enabled', 1) | |
+ ->fields('languages') | |
+ ->execute() | |
+ ->rowCount(); | |
+ variable_set('language_count', $enabled_languages); | |
+ } | |
+} | |
+ | |
+/** | |
+ * Helper function to save the language to database. | |
+ * | |
+ * @see locale_languages_edit_form_submit() | |
+ */ | |
+function _features_language_save($language) { | |
+ | |
+ $current_language = db_select('languages') | |
+ ->condition('language', $language->language) | |
+ ->fields('languages') | |
+ ->execute() | |
+ ->fetchAssoc(); | |
+ | |
+ // Set the default language when needed. | |
+ $default = language_default(); | |
+ | |
+ // Insert new language via api function. | |
+ if (empty($current_language)) { | |
+ locale_add_language($language->language, | |
+ $language->name, | |
+ $language->native, | |
+ $language->direction, | |
+ $language->domain, | |
+ $language->prefix, | |
+ $language->enabled, | |
+ ($language->language == $default->language)); | |
+ // Additional params, locale_add_language does not implement. | |
+ db_update('languages') | |
+ ->fields(array( | |
+ 'plurals' => empty($language->plurals) ? 0 : $language->plurals, | |
+ 'formula' => empty($language->formula) ? '' : $language->formula, | |
+ )) | |
+ ->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'); | |
+ | |
+ $fields = array_intersect_key((array) $language, array_flip($properties)); | |
+ db_update('languages') | |
+ ->fields($fields) | |
+ ->condition('language', $language->language) | |
+ ->execute(); | |
+ | |
+ // Set the default language when needed. | |
+ $default = language_default(); | |
+ if ($default->language == $language->language) { | |
+ variable_set('language_default', (object) $fields); | |
+ } | |
+ } | |
+} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment