PHP Classes

File: examples/pagination/Datasource.php

Recommend this page to a friend!
  Classes of Haseeb Ahmad Basil   PHP Skeleton Framework   examples/pagination/Datasource.php   Download  
File: examples/pagination/Datasource.php
Role: Example script
Content type: text/plain
Description: Example script
Class: PHP Skeleton Framework
Extensive Web application development framework
Author: By
Last change:
Date: 8 years ago
Size: 2,027 bytes
 

Contents

Class file image Download
<?php
/**
 * Example Datasource
 *
 * @package A_Pager
 */

class Datasource implements A_Pagination_Adapter {
    protected
$data;
    protected
$order_by_field = '';
    protected
$order_by_descending = 0;

    public function
__construct($data) {
       
$this->data = $data;
    }

    public function
getNumItems() {
        return
count($this->data);
    }

    public function
getItems($start, $size) {
       
$max = count($this->data);
        if ((
$max > 0) && ($start > 0) && ($size > 0)) {
           
$this->orderBy();
            return
array_slice($this->data, $start-1, $size);
        }
    }

    public function
setOrderBy($field, $descending=false) {
       
$this->order_by_field = $field;
       
$this->order_by_descending = $descending;
        return
$this;
    }

    public function
orderBy() {
        global
$A_Pager_Array_Cmp_Key;
        if (
$this->order_by_field) {
           
$A_Pager_Array_Cmp_Key = $this->order_by_field;
           
$reverse = ($this->order_by_descending ? '_reverse' : '');
            if (
is_string($this->data[0][$A_Pager_Array_Cmp_Key])) {
               
usort($this->data, "pageable_array_cmp_string$reverse");
            } else {
               
usort($this->data, "pageable_array_cmp_number$reverse");
            }
        }
        return
$this;
    }

    public function
getOrderBy() {
        return
$this->order_by_field . ($this->order_by_descending ? '_desc' : '');
    }

}

$A_Pager_Array_Cmp_Key = '';

function
pageable_array_cmp_string($a, $b)
{
    global
$A_Pager_Array_Cmp_Key;

    return
strcmp($a[$A_Pager_Array_Cmp_Key], $b[$A_Pager_Array_Cmp_Key]);
}

function
pageable_array_cmp_number($a, $b)
{
    global
$A_Pager_Array_Cmp_Key;

    return
$a[$A_Pager_Array_Cmp_Key] > $b[$A_Pager_Array_Cmp_Key];
}

function
pageable_array_cmp_string_reverse($a, $b)
{
    global
$A_Pager_Array_Cmp_Key;

    return
strcmp($b[$A_Pager_Array_Cmp_Key], $a[$A_Pager_Array_Cmp_Key]);
}

function
pageable_array_cmp_number_reverse($a, $b)
{
    global
$A_Pager_Array_Cmp_Key;

    return
$a[$A_Pager_Array_Cmp_Key] < $b[$A_Pager_Array_Cmp_Key];
}