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.
|