Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: php52x
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 77 lines (58 sloc) 1.331 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
<?php

abstract class Sorter
{
    abstract public function compare($a, $b);
    
    protected function exportArray(DataObject $dataset)
    {
        $dataArray = $dataset->dump();

        return $dataArray;
    }

    protected function buildDataObject($data_array)
    {
        $dataObject = new DataObject;

        foreach($data_array as $data)
        {
            $dataObject->addItemArray($data);
        }

        return $dataObject;
    }

    public function sort(DataObject $data_collection)
    {
        $data = $this->exportArray($data_collection);

        usort($data, array($this, "compare"));
        
        $sorted_data_object = $this->buildDataObject($data);

        return $sorted_data_object;
    }

 
}

class DummySorter extends Sorter
{
    public function compare($a, $b)
    {
        return 0;
    }

}

class TimeSorter extends Sorter
{
    public function compare($a, $b)
    {
        if($a['pubDate'] == $b['pubDate'])
        {
            return 0;
        }

        return ($a['pubDate'] < $b['pubDate']) ? -1 : 1;
    }
}

class TitleSorter extends Sorter
{
   public function compare($a, $b)
    {
        return strcmp($a['title'],$b['title']);
    }
}

class LinkSorter extends Sorter
{
   public function compare($a, $b)
    {
        return strcmp($a['link'],$b['link']);
    }
}
Something went wrong with that request. Please try again.