]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Revert "Denormalizing annotation names for calculation functions."
authorBrett Profitt <brett.profitt@gmail.com>
Thu, 21 Apr 2011 15:52:45 +0000 (11:52 -0400)
committerBrett Profitt <brett.profitt@gmail.com>
Thu, 21 Apr 2011 15:52:45 +0000 (11:52 -0400)
This reverts commit 628aa953ec150a1ed34680ef1d4f9c81dfc99bb1.

.gitignore
engine/classes/ElggFile.php
engine/lib/annotations.php
engine/lib/metadata.php
engine/lib/metastrings.php
engine/tests/suite.php

index 8bae532ada6c2d2c2e27434fa937a5ef73138cac..1540c7db6689775e5f88fdfa4611760ab286b19a 100644 (file)
@@ -3,4 +3,3 @@ engine/settings.php
 /.buildpath
 /.settings
 /.project
-/nbproject/private/
\ No newline at end of file
index df42ab97f34973a2062e95f0263614d2f5b6d5b8..fe25491a8502a80d70c20db2eb02616156b97d93 100644 (file)
@@ -322,7 +322,6 @@ class ElggFile extends ElggObject {
                        $options = array(
                                'guid' => $this->guid,
                                'where' => array("n.string LIKE 'filestore::%'"),
-                               'join' => "JOIN {$db_prefix}metastrings n on n_table.name_id = n.id"
                        );
 
                        $mds = elgg_get_metadata($options);
index cd733c62983fb9a34dcfdca9cd61c3e7063d4234..7a4e62921297ab4207306ae279aae65d5ed9f3f2 100644 (file)
@@ -392,14 +392,14 @@ function elgg_list_entities_from_annotations($options = array()) {
  * as entity_row_to_elggstar
  *
  * @param array $options An options array:
- *     'calculation'       => The calculation to use. Must be a valid MySQL function.
- *                         Defaults to sum.  Result selected as 'annotation_calculation'.
- *     'order_by'          => The order for the sorting. Defaults to 'calculation desc'.
- *     'annotation_names'  => The names of annotations on the entity.
- *     'annotation_values'     => The values of annotations on the entity.
+ *     'annotation_calculation' => The calculation to use. Must be a valid MySQL function.
+ *                              Defaults to sum.  Result selected as 'annotation_calculation'.
+ *     'order_by'               => The order for the sorting. Defaults to 'calculation desc'.
+ *     'annotation_names'       => The names of annotations on the entity.
+ *     'annotation_values'          => The values of annotations on the entity.
  *
- *     'metadata_names'    => The name of metadata on the entity.
- *     'metadata_values'   => The value of metadata on the entitiy.
+ *     'metadata_names'         => The name of metadata on the entity.
+ *     'metadata_values'        => The value of metadata on the entitiy.
  *
  * @return mixed
  */
@@ -410,18 +410,22 @@ function elgg_get_entities_from_annotation_calculation($options) {
        );
 
        $options = array_merge($defaults, $options);
+
        $function = sanitize_string(elgg_extract('calculation', $options, 'sum', false));
-       $db_prefix = elgg_get_config('dbprefix');
 
        // you must cast this as an int or it sorts wrong.
        $options['selects'][] = 'e.*';
        $options['selects'][] = "$function(cast(v.string as signed)) as calculation";
 
+       // need our own join to get the values.
+//     $options['joins'][] = "JOIN {$db_prefix}metastrings msv ON a.value_id = msv.id";
+//     $options['joins'][] = "JOIN {$db_prefix}entities ae ON a.entity_guid = ae.guid";
+
        $options['wheres'][] = get_access_sql_suffix('n_table');
+//     $options['wheres'][] = "e.guid = a.entity_guid";
        $options['group_by'] = 'n_table.entity_guid';
 
        $options['callback'] = 'entity_row_to_elggstar';
-       $options['denormalize'] = 'name';
 
        return elgg_get_annotations($options);
 }
index 26741af90ca85d996c897dd8db32b6ba346c48f4..a6b1bb43a85394707df89ffdda54edc5a452d6b6 100644 (file)
@@ -290,11 +290,6 @@ $access_id = ACCESS_PRIVATE, $allow_multiple = false) {
  */
 function elgg_get_metadata(array $options = array()) {
        $options['metastring_type'] = 'metadata';
-       if (isset($options['joins'])) {
-               if (!is_array($options['joins'])) {
-                       $options['joins'] = array($options['joins']);
-               }
-       }
        return elgg_get_metastring_based_objects($options);
 }
 
index 98371692594d90170c26de2d24c7668017f23980..655617ac6c4be4c89108743a9aaac229e89ce403 100644 (file)
@@ -229,8 +229,6 @@ function delete_orphaned_metastrings() {
  *
  *  metastring_type => STR metadata or annotation(s)
  *
- *     denormalize => Mixed Denormalize nothing (false, default), all, name, or value.
- *
  * @return mixed
  * @access private
  */
@@ -295,8 +293,7 @@ function elgg_get_metastring_based_objects($options) {
                'wheres'        =>      array(),
                'joins'         =>      array(),
 
-               'callback'              =>      $callback,
-               'denormalize'   =>      false
+               'callback'      => $callback
        );
 
        // @todo Ignore site_guid right now because of #2910
@@ -381,6 +378,7 @@ function elgg_get_metastring_based_objects($options) {
        $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";
 
+
        // remove identical join clauses
        $joins = array_unique($joins);
 
@@ -395,7 +393,7 @@ function elgg_get_metastring_based_objects($options) {
        // metastrings
        $metastring_clauses = elgg_get_metastring_sql('n_table', $options['metastring_names'],
                $options['metastring_values'], null, $options['metastring_ids'],
-               $options['metastring_case_sensitive'], $options['denormalize']);
+               $options['metastring_case_sensitive']);
 
        if ($metastring_clauses) {
                $wheres = array_merge($wheres, $metastring_clauses['wheres']);
@@ -407,12 +405,7 @@ function elgg_get_metastring_based_objects($options) {
                $options['metastring_calculation'] = 'count';
        }
 
-       if ($options['metastring_calculation']) {
-//             $joins[] = "JOIN {$db_prefix}metastrings v on n_table.value_id = v.id";
-
-               $function = sanitise_string($options['metastring_calculation']);
-               $query = "SELECT {$function}(v.string) as calculation FROM {$db_prefix}$type n_table";
-       } else {
+       if ($options['metastring_calculation'] === ELGG_ENTITIES_NO_VALUE) {
                // evalutate selects
                if ($options['selects']) {
                        $selects = '';
@@ -425,8 +418,8 @@ function elgg_get_metastring_based_objects($options) {
 
                $query = "SELECT DISTINCT n_table.*, n.string as name,
                        v.string as value{$selects} FROM {$db_prefix}$type n_table";
-               
-//             $query = "SELECT DISTINCT n_table.*{$selects} FROM {$db_prefix}$type n_table";
+       } else {
+               $query = "SELECT {$options['metastring_calculation']}(v.string) as calculation FROM {$db_prefix}$type n_table";
        }
 
        // add joins
@@ -486,13 +479,11 @@ function elgg_get_metastring_based_objects($options) {
  * @param array  $pairs          Name / value pairs. Not currently used.
  * @param array  $ids            Metastring IDs
  * @param bool   $case_sensitive Should name and values be case sensitive?
- * @param mixed  $denormalize    Denormalize none (false, default), all, name, value. If operators
- *                               are anything but = or IN you cannot denormalize value.
  *
  * @return array
  */
 function elgg_get_metastring_sql($table, $names = null, $values = null,
-       $pairs = null, $ids = null, $case_sensitive = false, $denormalize = false) {
+       $pairs = null, $ids = null, $case_sensitive = false) {
 
        if ((!$names && $names !== 0)
                && (!$values && $values !== 0)
@@ -515,7 +506,7 @@ function elgg_get_metastring_sql($table, $names = null, $values = null,
        $access = get_access_sql_suffix($table);
 
        $return = array (
-               'joins' => array(),
+               'joins' => array (),
                'wheres' => array()
        );
 
@@ -524,50 +515,28 @@ function elgg_get_metastring_sql($table, $names = null, $values = null,
        // get names wheres and joins
        $names_where = '';
        if ($names !== NULL) {
-               // @todo only really needed for metadata (vs annotations)
-//             $return['joins'][] = "JOIN {$db_prefix}metastrings n on n_table.name_id = n.id";
-
                if (!is_array($names)) {
                        $names = array($names);
                }
-               
-               if ($denormalize == 'all' || $denormalize == 'name') {
-                       $name_ids = array();
-                       foreach ($names as $name) {
-                               if (!$name) {
-                                       $name = '0';
-                               }
-
-                               $name_ids[] = get_metastring_id($name, $case_sensitive);
-                       }
 
-                       $names_str = implode(',', $name_ids);
-                       if ($names_str) {
-                               $names_where = "(n_table.name_id IN ($names_str))";
-                       }
-               } else {
-                       $sanitised_names = array();
-                       foreach ($names as $name) {
-                               // normalise to 0.
-                               if (!$name) {
-                                       $name = '0';
-                               }
-                               $sanitised_names[] = '\'' . sanitise_string($name) . '\'';
+               $sanitised_names = array();
+               foreach ($names as $name) {
+                       // normalise to 0.
+                       if (!$name) {
+                               $name = '0';
                        }
+                       $sanitised_names[] = '\'' . sanitise_string($name) . '\'';
+               }
 
-                       $names_str = implode(',', $sanitised_names);
-                       if ($names_str) {
-                               $return['joins'][] = "JOIN {$db_prefix}metastrings msn on $table.name_id = msn.id";
-                               $names_where = "(msn.string IN ($names_str))";
-                       }
+               if ($names_str = implode(',', $sanitised_names)) {
+                       $return['joins'][] = "JOIN {$db_prefix}metastrings msn on $table.name_id = msn.id";
+                       $names_where = "(msn.string IN ($names_str))";
                }
        }
 
        // get values wheres and joins
        $values_where = '';
        if ($values !== NULL) {
-//             $return['joins'][] = "JOIN {$db_prefix}metastrings v on n_table.value_id = v.id";
-               
                if (!is_array($values)) {
                        $values = array($values);
                }
index 1f7886d38049c1934e31b34ad05f19dc721afb27..8f2eb41a379f9c960d643563c7a43169e53bfc1e 100644 (file)
@@ -34,9 +34,9 @@ foreach ($test_files as $file) {
 }
 
 // Only run tests in debug mode.
-//if (!isset($CONFIG->debug)) {
-//     exit ('The site must be in debug mode to run unit tests.');
-//}
+if (!isset($CONFIG->debug)) {
+       exit ('The site must be in debug mode to run unit tests.');
+}
 
 if (TextReporter::inCli()) {
        // In CLI error codes are returned: 0 is success