diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-08-08 02:18:53 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-08-08 02:18:53 +0000 |
commit | 66d31c52ba73e2216202ab2ee45e8f29d33164ea (patch) | |
tree | 762fa8147bdb12b54ab132910ff8142c2f4739b8 /modules | |
parent | a9c9ef2d3010ac742e82542e3b0d0864cb9a9d25 (diff) | |
download | brdo-66d31c52ba73e2216202ab2ee45e8f29d33164ea.tar.gz brdo-66d31c52ba73e2216202ab2ee45e8f29d33164ea.tar.bz2 |
- Patch #423888 by mikeryan, Crell, drunken monkey: use subqueries for ->countQuery(), at least for MySQL.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/field/field.multilingual.inc | 7 | ||||
-rw-r--r-- | modules/field/tests/field.test | 10 | ||||
-rw-r--r-- | modules/field/tests/field_test.module | 4 | ||||
-rw-r--r-- | modules/simpletest/tests/database_test.test | 13 |
4 files changed, 28 insertions, 6 deletions
diff --git a/modules/field/field.multilingual.inc b/modules/field/field.multilingual.inc index e0b134849..600ed3010 100644 --- a/modules/field/field.multilingual.inc +++ b/modules/field/field.multilingual.inc @@ -216,10 +216,11 @@ function field_language($entity_type, $entity, $field_name = NULL, $langcode = N if (!isset($display_languages[$entity_type][$id][$langcode])) { $display_language = array(); - // By default display language is set to LANGUAGE_NONE. It is up to - // translation handlers to implement language fallback rules. + // By default display language is set to LANGUAGE_NONE if the field + // translation is not available. It is up to translation handlers to + // implement language fallback rules. foreach (field_info_instances($entity_type, $bundle) as $instance) { - $display_language[$instance['field_name']] = LANGUAGE_NONE; + $display_language[$instance['field_name']] = isset($entity->{$instance['field_name']}[$langcode]) ? $langcode : LANGUAGE_NONE; } if (field_has_translation_handler($entity_type)) { diff --git a/modules/field/tests/field.test b/modules/field/tests/field.test index 7fbdba694..479b0a966 100644 --- a/modules/field/tests/field.test +++ b/modules/field/tests/field.test @@ -2639,8 +2639,7 @@ class FieldTranslationsTestCase extends FieldTestCase { field_create_instance($instance); $entity = field_test_create_stub_entity(1, 1, $this->instance['bundle']); - list(, , $bundle) = entity_extract_ids($entity_type, $entity); - $instances = field_info_instances($entity_type, $bundle); + $instances = field_info_instances($entity_type, $this->instance['bundle']); $enabled_languages = field_content_languages(); $languages = array(); @@ -2688,6 +2687,13 @@ class FieldTranslationsTestCase extends FieldTestCase { drupal_static_reset('field_language'); $langcode = field_language($entity_type, $entity, $this->field_name, $requested_language); $this->assertTrue(isset($entity->{$this->field_name}[$langcode]) && $langcode != $requested_language, t('The display language for the (single) field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode))); + + // Test field_language() basic behavior without language fallback. + variable_set('field_test_language_fallback', FALSE); + $entity->{$this->field_name}[$requested_language] = mt_rand(1, 127); + drupal_static_reset('field_language'); + $display_language = field_language($entity_type, $entity, $this->field_name, $requested_language); + $this->assertEqual($display_language, $requested_language, t('Display language behave correctly when language fallback is disabled')); } /** diff --git a/modules/field/tests/field_test.module b/modules/field/tests/field_test.module index 2eac091e2..f615129ff 100644 --- a/modules/field/tests/field_test.module +++ b/modules/field/tests/field_test.module @@ -103,7 +103,9 @@ function field_test_field_available_languages_alter(&$languages, $context) { * Implements hook_field_language_alter(). */ function field_test_field_language_alter(&$display_language, $context) { - locale_field_language_fallback($display_language, $context['entity'], $context['language']); + if (variable_get('field_test_language_fallback', TRUE)) { + locale_field_language_fallback($display_language, $context['entity'], $context['language']); + } } /** diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test index b2efa6672..e7f812893 100644 --- a/modules/simpletest/tests/database_test.test +++ b/modules/simpletest/tests/database_test.test @@ -1987,6 +1987,19 @@ class DatabaseSelectComplexTestCase extends DatabaseTestCase { } /** + * Test that we can generate a count query from a query with GROUP BY. + */ + function testCountQueryGroupBy() { + $query = db_select('test_task'); + $pid_field = $query->addField('test_task', 'pid'); + $query->groupBy('pid'); + + $count = $query->countQuery()->execute()->fetchField(); + + $this->assertEqual($count, 3, t('Counted the correct number of records.')); + } + + /** * Confirm that we can properly nest conditional clauses. */ function testNestedConditions() { |