summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-08-08 02:18:53 +0000
committerDries Buytaert <dries@buytaert.net>2010-08-08 02:18:53 +0000
commit66d31c52ba73e2216202ab2ee45e8f29d33164ea (patch)
tree762fa8147bdb12b54ab132910ff8142c2f4739b8 /modules
parenta9c9ef2d3010ac742e82542e3b0d0864cb9a9d25 (diff)
downloadbrdo-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.inc7
-rw-r--r--modules/field/tests/field.test10
-rw-r--r--modules/field/tests/field_test.module4
-rw-r--r--modules/simpletest/tests/database_test.test13
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() {