]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
order by now works on get entities from metadata
authordave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
Thu, 2 Jul 2009 13:13:35 +0000 (13:13 +0000)
committerdave <dave@36083f99-b078-4883-b0ff-0f9b5a30f544>
Thu, 2 Jul 2009 13:13:35 +0000 (13:13 +0000)
git-svn-id: https://code.elgg.org/elgg/trunk@3379 36083f99-b078-4883-b0ff-0f9b5a30f544

engine/lib/metadata.php

index 063188a47e7e186c5799fd9569840955a3d44ddb..fe83e15d870862c8f342628216dbb3c209c3d070 100644 (file)
                        $id = $existing->id;\r
                        delete_metadata($id);\r
                        \r
-               }
+               }\r
                \r
                return $id;\r
        }\r
                \r
                $name = add_metastring($name);\r
                if (!$name) return false;\r
-
+\r
                                // If ok then add it\r
                $result = update_data("UPDATE {$CONFIG->dbprefix}metadata set value_id='$value', value_type='$value_type', access_id=$access_id, owner_guid=$owner_guid where id=$id and name_id='$name'");\r
                if ($result!==false) {\r
 \r
                $id = (int)$id;\r
                $metadata = get_metadata($id);\r
-               
+               \r
                if ($metadata) {\r
                        // Tidy up if memcache is enabled.\r
                        static $metabyname_memcache;\r
                        if ($metabyname_memcache) $metabyname_memcache->delete("{$metadata->entity_guid}:{$metadata->name_id}");\r
                        \r
                        if (($metadata->canEdit()) && (trigger_elgg_event('delete', 'metadata', $metadata)))\r
-                               return delete_data("DELETE from {$CONFIG->dbprefix}metadata where id=$id");
+                               return delete_data("DELETE from {$CONFIG->dbprefix}metadata where id=$id");\r
                }\r
-               
+               \r
                return false;\r
        }\r
        \r
                $entity_subtype = get_subtype_id($entity_type, $entity_subtype);\r
                $limit = (int)$limit;\r
                $offset = (int)$offset;\r
-               if ($order_by == "") $order_by = "e.time_created desc";\r
+               if ($order_by == "") \r
+                       $order_by = "e.time_created desc";\r
+               else\r
+                       $order_by = "e.time_created {$order_by}";\r
                $order_by = sanitise_string($order_by);\r
                $site_guid = (int) $site_guid;\r
                if ((is_array($owner_guid) && (count($owner_guid)))) {\r
         * @param int $offset\r
         * @param string $order_by Optional ordering.\r
         * @param int $site_guid The site to get entities for. Leave as 0 (default) for the current site; -1 for all sites.\r
-        * @param true|false $count If set to true, returns the total number of entities rather than a list. (Default: false)
+        * @param true|false $count If set to true, returns the total number of entities rather than a list. (Default: false)\r
         * @param string $meta_array_operator Operator used for joining the metadata array together\r
         * @return int|array List of ElggEntities, or the total number if count is set to false\r
         */\r
                $where = array();\r
                \r
                $mindex = 1;\r
-               $join = "";
-               $metawhere = array();
+               $join = "";\r
+               $metawhere = array();\r
                $meta_array_operator = sanitise_string($meta_array_operator);\r
                foreach($meta_array as $meta_name => $meta_value) {\r
                        $meta_n = get_metastring_id($meta_name);\r
                        /*if ($meta_name!=="")\r
                                $where[] = "m{$mindex}.name_id='$meta_n'";\r
                        if ($meta_value!=="")\r
-                               $where[] = "m{$mindex}.value_id='$meta_v'";*/
+                               $where[] = "m{$mindex}.value_id='$meta_v'";*/\r
                        $metawhere[] = "(m{$mindex}.name_id='$meta_n' AND m{$mindex}.value_id='$meta_v')";\r
                        $mindex++;\r
-               }
+               }\r
                $where[] = "(".implode($meta_array_operator, $metawhere).")";\r
                        \r
                $entity_type = sanitise_string($entity_type);\r
                $offset = (int)$offset;\r
                if ($order_by == "") $order_by = "e.time_created desc";\r
                $order_by = sanitise_string($order_by);\r
-               if ((is_array($owner_guid) && (count($owner_guid)))) {
-                       foreach($owner_guid as $key => $guid) {
-                               $owner_guid[$key] = (int) $guid;
-                       }
-               } else {
-                       $owner_guid = (int) $owner_guid;
+               if ((is_array($owner_guid) && (count($owner_guid)))) {\r
+                       foreach($owner_guid as $key => $guid) {\r
+                               $owner_guid[$key] = (int) $guid;\r
+                       }\r
+               } else {\r
+                       $owner_guid = (int) $owner_guid;\r
                }\r
                \r
                $site_guid = (int) $site_guid;\r
                if ($entity_subtype)\r
                        $where[] = "e.subtype = {$entity_subtype}";\r
                if ($site_guid > 0)\r
-                       $where[] = "e.site_guid = {$site_guid}";
-               if (is_array($owner_guid)) {
-                       $where[] = "e.container_guid in (".implode(",",$owner_guid).")";
-               } else if ($owner_guid > 0)
+                       $where[] = "e.site_guid = {$site_guid}";\r
+               if (is_array($owner_guid)) {\r
+                       $where[] = "e.container_guid in (".implode(",",$owner_guid).")";\r
+               } else if ($owner_guid > 0)\r
                        $where[] = "e.container_guid = {$owner_guid}";\r
                //if ($owner_guid > 0)\r
                //      $where[] = "e.container_guid = {$owner_guid}";\r
                                return delete_data("DELETE from {$CONFIG->dbprefix}metadata where entity_guid={$entity_guid}");\r
                }\r
                return false;\r
-       }
-       
-       /**
-        * Clear all annotations belonging to a given owner_guid
-        *
-        * @param int $owner_guid The owner
-        */
-       function clear_metadata_by_owner($owner_guid)
-       {
-               global $CONFIG;
-               
-               $owner_guid = (int)$owner_guid;
-               
-               $metas = get_data("SELECT id from {$CONFIG->dbprefix}metadata WHERE owner_guid=$owner_guid");
-               $deleted = 0;
-               
-               foreach ($metas as $id)
-               {
-                       if (delete_metadata($id->id)) // Is this the best way?
-                               $deleted++;
-               }
-               
-               return $deleted;
+       }\r
+       \r
+       /**\r
+        * Clear all annotations belonging to a given owner_guid\r
+        *\r
+        * @param int $owner_guid The owner\r
+        */\r
+       function clear_metadata_by_owner($owner_guid)\r
+       {\r
+               global $CONFIG;\r
+               \r
+               $owner_guid = (int)$owner_guid;\r
+               \r
+               $metas = get_data("SELECT id from {$CONFIG->dbprefix}metadata WHERE owner_guid=$owner_guid");\r
+               $deleted = 0;\r
+               \r
+               foreach ($metas as $id)\r
+               {\r
+                       if (delete_metadata($id->id)) // Is this the best way?\r
+                               $deleted++;\r
+               }\r
+               \r
+               return $deleted;\r
        }\r
        \r
        /**\r
                \r
                if (is_string($string)) {\r
                        $ar = explode(",",$string);\r
-                       $ar = array_map('trim', $ar); // trim blank spaces
+                       $ar = array_map('trim', $ar); // trim blank spaces\r
                        $ar = array_map('elgg_strtolower', $ar); // make lower case : [Marcus Povey 20090605 - Using mb wrapper function using UTF8 safe function where available]\r
                        $ar = array_filter($ar, 'is_not_null'); // Remove null values\r
                        return $ar;\r