CLICK HERE TO BUY IT TODAY! OR GET IT FREE VIA TRIALPAY  

PHP Demo Application - Source Code

/Application/Model/DataObjects/Staff_Grid.php

<?php
/**
* Script Contents: Apeel_Application_Model_DataObjects_Staff_Grid Class
* Extends Apeel_Application_Model_DataObjects_Staff Class
* Implements Apeel_Framework_Model_DataObjects_Interfaces_GridData Interface
* @package Apeel_Application_Model_DataObjects
*/

/**
* Grid Data Object for Staff
* which extends the main Data Object for Staff
* and provides specific functionality for Data Grids, including all lookup
* values.    

* The core abstract class contains all the PDO code for connecting to the 
* database, reading and writing data.  

* This concrete class contain the specifics of which tables/fields to read, 
* what kind of editor should be used with each field  (e.g. text box, dropdown,
* autocomplete etc) and could represent (for example) the data required to 
* populate a data entry form, or a grid, or to populate a drop down list, or 
* any other use you can think of.  

* The structure of Data Objects is based on the Template Design Pattern.  
*
* @package      Apeel_Application_Model_DataObjects
* @version      1.1.0
* @author       John W. King (email: contact@apeelframework.net)
* @copyright    City Business Logic Limited 2001-2011
* @license      Dual MIT / GNU Lesser General Public License Version 3
*/
class Apeel_Application_Model_DataObjects_Staff_Grid extends Apeel_Application_Model_DataObjects_Staff implements Apeel_Framework_Model_DataObjects_Interfaces_GridData {
    
    
/**
    * Return SQL SELECT clause.  
    * 
    * @return string 
    */
    
protected function getSelect() {
        
$dateFormat Apeel_Framework_Model_Libraries_Data::getClientDateFormat();

        return
            
"
                SELECT
                    IF((SELECT COUNT(*) FROM `payment` WHERE `staff`.`staff_id` = `payment`.`staff_id`) + 
                        (SELECT COUNT(*) FROM `rental` WHERE `staff`.`staff_id` = `rental`.`staff_id`) + 
                        (SELECT COUNT(*) FROM `store` WHERE `staff`.`staff_id` = `store`.`manager_staff_id`) > 0, '*', '') AS `staff.link_status`,
                    `staff`.`staff_id` AS `staff.staff_id`,
                    `staff`.`first_name` AS `staff.first_name`,
                    `staff`.`last_name` AS `staff.last_name`,
                    `staff`.`address_id` AS `staff.address_id`,
                    `address_id__address`.`address` AS `staff__address_id__desc`,
                    CONCAT(LENGTH(`staff`.`picture`), '*', 
                       IF(INSTR(`staff`.`picture`, 'GIF') BETWEEN 1 AND 12, CONCAT(MD5(RAND()), '.gif'),
                       IF(INSTR(`staff`.`picture`, 'PNG') BETWEEN 1 AND 12, CONCAT(MD5(RAND()), '.png'),
                       IF(INSTR(`staff`.`picture`, 'JFIF') BETWEEN 1 AND 12, CONCAT(MD5(RAND()), '.jpg'),
                       IF(INSTR(`staff`.`picture`, 'Exif') BETWEEN 1 AND 12, CONCAT(MD5(RAND()), '.jpg'),
                    '' ))))) AS `staff.picture`,
                    `staff`.`email` AS `staff.email`,
                    `staff`.`store_id` AS `staff.store_id`,
                    CONCAT(`store_id__store__manager_staff_id__staff`.`first_name`, ' ', `store_id__store__manager_staff_id__staff`.`last_name`, ' - ', `store_id__store__address_id__address`.`address`) AS `staff__store_id__desc`,
                    CASE `staff`.`active`
                        WHEN '1' THEN 'Yes'
                        WHEN '0' THEN 'No'
                        ELSE '-'      
                    END AS `staff.active`,
                    `staff`.`username` AS `staff.username`,
                    DATE_FORMAT(`staff`.`last_update`,'" 
$dateFormat['mysql'] . " %H:%i') AS `staff.last_update_formatted`
            "
;        
    }
    
    
    
/**
    * Return SQL FROM clause.  
    * 
    * @return string 
    */
    
protected function getFrom() {
        return
            
'
                FROM
                    `staff`
                    LEFT JOIN `address` AS `address_id__address`
                        ON `address_id__address`.`address_id` = `staff`.`address_id`
                    LEFT JOIN `store` AS `store_id__store`
                        ON `store_id__store`.`store_id` = `staff`.`store_id`
                    LEFT JOIN `staff` AS `store_id__store__manager_staff_id__staff`
                        ON `store_id__store`.`manager_staff_id` = `store_id__store__manager_staff_id__staff`.`staff_id`
                    LEFT JOIN `address` AS `store_id__store__address_id__address`
                        ON `store_id__store`.`address_id` = `store_id__store__address_id__address`.`address_id`

            '
;
    }
    
     
    
/**
    * Returns a string or an array containing one or more fieldnames that form 
    * the Primary key that identifies a unique row in this Data Object.  
    * 
    * @return string | array
    */
    
public function getPrimarykey() {
        return 
'staff.staff_id';
    }   
    
    
    
/**
    * Returns column definitions for the given index.  
    * 
    * @param integer $index
    * @return array
    */
    
public function getGridColumns($index '') {
        
$gridColumns = array(
            
=> array('fieldname' => 'staff.link_status''display' => '*''width' => '20''sortable' => true'align' => 'Center''type' => 'link_status'), 
            
=> array('fieldname' => 'staff.first_name''display' => 'First Name''width' => '180''sortable' => true'align' => 'Left''type' => 'text'), 
            
=> array('fieldname' => 'staff.last_name''display' => 'Last Name''width' => '180''sortable' => true'align' => 'Left''type' => 'text'), 
            
=> array('fieldname' => 'staff__address_id__desc''display' => 'Address''width' => '200''sortable' => true'align' => 'Left''type' => 'text'), 
            
=> array('fieldname' => 'staff.picture''display' => 'Picture''width' => '250''sortable' => false'align' => 'Center''type' => 'binary_image''image_width' => '250''image_height' => '250''binary_index' => '0'), 
            
=> array('fieldname' => 'staff.email''display' => 'Email''width' => '180''sortable' => true'align' => 'Left''type' => 'text'), 
            
=> array('fieldname' => 'staff__store_id__desc''display' => 'Store''width' => '200''sortable' => true'align' => 'Left''type' => 'text'), 
            
=> array('fieldname' => 'staff.active''display' => 'Active''width' => '100''sortable' => true'align' => 'Center''type' => 'text'), 
            
=> array('fieldname' => 'staff.username''display' => 'Username''width' => '180''sortable' => true'align' => 'Left''type' => 'text'), 
            
=> array('fieldname' => 'staff.last_update_formatted''display' => 'Last Update''width' => '125''sortable' => true'align' => 'Center''type' => 'date''sortfield' => 'staff.last_update')
        );        
       
        
// Check if requested column exists in the array. 
        
return Apeel_Framework_Controller_Libraries_Input::getArrayValueByIndexMustExist($gridColumns$index'Grid Columns');
    }

    
    
/**
    * Returns editor definitions for the given index.  
    * 
    * Data Grids contain a dropdown list of fields that can be used to filter
    * the data.  These definitions specify which editor to use for the user
    * to select the value.  
    * 
    * @param integer $index
    * @return array
    */    
    
public function getEditors($index NULL) {        
        
$editorFields = array(
            
=> array('fieldname' => 'staff.first_name''display' => 'First Name''editor' => 'text''nullable' => false),
            
=> array('fieldname' => 'staff.last_name''display' => 'Last Name''editor' => 'text''nullable' => false),
            
=> array('fieldname' => 'staff.address_id''display' => 'Address''editor' => 'autocomplete''nullable' => false'dataObject' => '60053c13e608f70173c8336aebdae97b''matchingMethod' => 'CONTAINS'),
            
=> array('fieldname' => 'staff.email''display' => 'Email''editor' => 'text''nullable' => true),
            
=> array('fieldname' => 'staff.store_id''display' => 'Store''editor' => 'dropdown''nullable' => false'dataObject' => '3f66ab7aa96528dae1912358a6e3708a'),
            
=> array('fieldname' => 'staff.active''display' => 'Active''editor' => 'fixedlist''nullable' => false'options' => array('id_1' => 'Yes''id_0' => 'No')),
            
=> array('fieldname' => 'staff.username''display' => 'Username''editor' => 'text''nullable' => false)
        );
         
        
// Check if requested column exists in the array. 
        
return Apeel_Framework_Controller_Libraries_Input::getArrayValueByIndexMustExist($editorFields$index'Editors');
    }
    
    
    
/**
    * Returns an array containing details of the default Sort columns.  
    * 
    * @return array
    */
    
public function getDefaultSortColumns() {
        return array(array(
'column' => '1''direction' => 'asc'));
    }
    
    
    
/**
    * Returns human readable description of the data represented by this Data
    * Object, used as a title on the Grid.  
    * 
    * @return string
    */
    
public function getTitle() {
        return 
'Staff';
    }
    
    
    
/**
    * Returns Hash value for this Data Object.  The hash value can be passed
    * around in public areas such as Javascript or on the URI without 
    * revealing the name of the actual Data Object to the end user.  
    * 
    * @return string
    */
    
public function getHash() {
        return 
'5d6b9c42a710130526aa1e6c302a7e8f';
    }    
}

?>

PHP Demo Source Code Index