aboutsummaryrefslogtreecommitdiff
path: root/engine/lib/metastrings.php
diff options
context:
space:
mode:
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-04-21 19:44:46 +0000
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-04-21 19:44:46 +0000
commita0e1576d2b50b7640637eff763fa077d2cda35bc (patch)
treedf40fe384fec9cfa8abc1d5d0df06bda1cac2273 /engine/lib/metastrings.php
parentc06885114ab45eb1f24ff26e23ab317b8bd7604e (diff)
downloadelgg-a0e1576d2b50b7640637eff763fa077d2cda35bc.tar.gz
elgg-a0e1576d2b50b7640637eff763fa077d2cda35bc.tar.bz2
Reverting the annotation changes because they're not ready yet.
git-svn-id: http://code.elgg.org/elgg/trunk@9010 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine/lib/metastrings.php')
-rw-r--r--engine/lib/metastrings.php35
1 files changed, 11 insertions, 24 deletions
diff --git a/engine/lib/metastrings.php b/engine/lib/metastrings.php
index 4dda05e6b..655617ac6 100644
--- a/engine/lib/metastrings.php
+++ b/engine/lib/metastrings.php
@@ -373,24 +373,11 @@ function elgg_get_metastring_based_objects($options) {
}
$joins = $options['joins'];
- $joins[] = "JOIN {$db_prefix}entities e ON n_table.entity_guid = e.guid";
-
- if (!is_array($options['selects'])) {
- $options['selects'] = array($options['selects']);
- }
-
- $selects = $options['selects'];
- // For performance reasons we don't want the joins required for metadata / annotations
- // unless we're going through one of their callbacks.
- // this means we expect the functions passing different callbacks to pass their required joins.
- if ($options['callback'] == 'row_to_elggmetadata' || $options['callback'] == 'row_to_elggannotation') {
- $joins[] = "JOIN {$db_prefix}metastrings n on n_table.name_id = n.id";
- $joins[] = "JOIN {$db_prefix}metastrings v on n_table.value_id = v.id";
+ $joins[] = "JOIN {$db_prefix}entities e ON n_table.entity_guid = e.guid";
+ $joins[] = "JOIN {$db_prefix}metastrings n on n_table.name_id = n.id";
+ $joins[] = "JOIN {$db_prefix}metastrings v on n_table.value_id = v.id";
- $selects[] = 'n.string as name';
- $selects[] = 'v.string as value';
- }
// remove identical join clauses
$joins = array_unique($joins);
@@ -419,19 +406,19 @@ function elgg_get_metastring_based_objects($options) {
}
if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE) {
- $selects = array_unique($selects);
// evalutate selects
- $select_str = '';
- if ($selects) {
- foreach ($selects as $select) {
- $select_str .= ", $select";
+ if ($options['selects']) {
+ $selects = '';
+ foreach ($options['selects'] as $select) {
+ $selects .= ", $select";
}
+ } else {
+ $selects = '';
}
- $query = "SELECT DISTINCT n_table.*{$select_str} FROM {$db_prefix}$type n_table";
+ $query = "SELECT DISTINCT n_table.*, n.string as name,
+ v.string as value{$selects} FROM {$db_prefix}$type n_table";
} else {
- // @todo this will break if you're counting on an annotation calculation because of the joins
- // that's a dumb thing to do anyway, but it shouldn't make bad queries
$query = "SELECT {$options['metastring_calculation']}(v.string) as calculation FROM {$db_prefix}$type n_table";
}