[fusionregistry-commitlog] SF.net SVN: fusionregistry: [48] branches/stable_3_0_x/upload/sources/
                
                Brought to you by:
                
                    copland007
                    
                
            
            
        
        
        
    | 
      
      
      From: SVN c. <fus...@li...> - 2008-02-17 09:35:52
      
     | 
| Revision: 48
          http://fusionregistry.svn.sourceforge.net/fusionregistry/?rev=48&view=rev
Author:   copland007
Date:     2008-02-17 01:35:56 -0800 (Sun, 17 Feb 2008)
Log Message:
-----------
Add support for ORDER BY clause in get_cf_defs for cache retrieval sorting.
Change get_cf_groups to retrieve from cache instead of database.
Modified Paths:
--------------
    branches/stable_3_0_x/upload/sources/components_public/fusionscripts/fusionregistry/lib/custom_fields.php
Modified: branches/stable_3_0_x/upload/sources/components_public/fusionscripts/fusionregistry/lib/custom_fields.php
===================================================================
--- branches/stable_3_0_x/upload/sources/components_public/fusionscripts/fusionregistry/lib/custom_fields.php	2008-02-16 21:06:45 UTC (rev 47)
+++ branches/stable_3_0_x/upload/sources/components_public/fusionscripts/fusionregistry/lib/custom_fields.php	2008-02-17 09:35:56 UTC (rev 48)
@@ -172,10 +172,21 @@
             // Now handle the ORDER BY clause
             if ( isset($opts['ORDER BY']) && is_array($opts['ORDER BY']) )
             {
+                $sorted = array();
                 foreach ( $opts['ORDER BY'] as $order_field => $order_value )
                 {
-                    // TODO - loop through $results and re-sort
+                    foreach ( $results as $field_num => $field_row )
+                    {
+                        $sorted[ intval($field_row[ $order_field ]) ] = $field_row;
+                    }
+
+                    if ( $order_value == 'DESC' )
+                    {
+                        $sorted = array_reverse($results);
+                    }
                 }
+
+                $results = $sorted;
             }
         }
 
@@ -278,23 +289,20 @@
         }
         else
         {
-            $query = 'SELECT field_id, field_name, field_type, field_options, '.
-                        'field_default, field_required, field_size, field_rows, '.
-                        'field_cols, field_order, field_browse, field_highlight, '.
-                        'field_group_id, field_search '.
-                     'FROM ibf_registry_field_defs '.
-                     'WHERE field_group_id IS NOT NULL '.
-                     'ORDER BY field_group_id ASC, field_order ASC, field_name ASC';
-
-            $rs = $this->ipsclass->DB->query($query);
-
             // Build our Custom Field Group data structure, we will be returning
             //  a complex structure of arrays of arrays
             $this->_cf_groups = array();
 
-            while ( $row = $this->ipsclass->DB->fetch_row($rs) )
+            $cf_defs = $this->get_cf_defs( array('ORDER BY' => array('field_order' => 'ASC') ) );
+
+            foreach ( $cf_defs as $field_num => $field_row )
             {
-                $this->_cf_groups[$row['field_group_id']][] = $row;
+                if ( $field_row['field_group_id'] == "" )
+                {
+                    continue;
+                }
+
+                $this->_cf_groups[ $field_row['field_group_id'] ][] = $field_row;
             }
 
             return $this->_cf_groups;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |