PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Structures » Structures_DataGrid » Bug #4403

Structures_DataGrid_sortRecordSet

Details

Submitted2005-05-22 00:16 UTC
Fromar dot newsgroup at gmx dot de
Assignedasnagy
StatusClosed
PackageStructures_DataGrid
PHP Version5.0.4
OSWindows 2000
Roadmaps(Not assigned)

Comments

[2005-05-22 00:16 UTC] ar dot newsgroup at gmx dot de

Description:
------------
Versions:
DB_DataObject: 1.7.13
Structures_DataGrid: 0.6.2
---------------

There is a bug by sorting method in Structures_DataGrid_sortRecordSet in combination with DB_DataObject DataSource binding!

With Structures_DataGrid_sortRecordSet you can not sort any DataObject Tables! I think it is caused by the wrong method call in sortRecordSet ($this->_dataSource->sort($sortBy, $direction). In DB_DataObject class the sorting method is called "orderBy()" !!!

Befor instantiating a DataGrid if I call the orderBy method of DB_DataObject it works fine.

I hope it is a bug! If not, please show me my mistake!

greetings...
abbas

Reproduce code:
---------------
$orderBy = isset($_GET['orderBy']) ? $_GET['orderBy'] : 'Time';
$dir = isset($_GET['direction']) ? $_GET['direction'] : 'ASC';

$do = DB_DataObject::factory('log');
// this is my workaround
$do->orderBy($orderBy . " " . $dir);
$num_of_rows = $do->find();

$dg =& new Structures_DataGrid(15);
$data = Structures_DataGrid_DataSource::create($do);
$dg->bindDataSource($data);
// this is not working
//$dg->sortRecordSet($orderBy, $dir);

Expected result:
----------------
with:
$dg->sortRecordSet($orderBy, $dir);
NO sorting!!!

but with:
$do->orderBy($orderBy . " " . $dir);
sorting works fine!

[2005-06-10 19:08 UTC] jessup at mrpath dot com

I don't know if this is the same bug or a very similar one but I came across a bug with not sorting when not using the built in dataSource functionality.

In DataGrid/Core.php function sortRecordSet(...):
$this->sortArray needs to be set for the usort($this->recordSet, array($this, '_sort')) call to work.

Right now, it's set after so the usort call raises some errors and fails to sort.