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

PHP Demo Application - Source Code

/Application/Model/FormHandlers/Payment.php

<?php
/**
* Script Contents: Apeel_Application_Model_FormHandlers_Payment Class
* Extends Apeel_Framework_Model_FormHandlers_Abstract Class
* @package Apeel_Application_Model_FormHandlers
*/

/**
* Core functionality to handle displaying, populating, validating and saving 
* data from forms.  

* A form handler class in the Apeel Framework outputs the form, populated with
* data from a Data Object, it sets up the event handlers and both client side
* and server side validation, as well as handling the Save event to add/edit 
* data to the database.  

* It uses the Smarty templating engine to seperate design from coding and 
* offer maximum flexibility.  

* Form templates reside in Application/View/Templates/Forms
*
* @package      Apeel_Application_Model_FormHandlers
* @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_FormHandlers_Payment extends Apeel_Framework_Model_FormHandlers_Abstract {
    
    
/**
    * The unique code belonging to the data object linked to this class, for
    * use in public areas such as javascript and hidden form fields.  
    * 
    * @var string
    */
    
public $dataObjectHash '10d0ae954db69c3051c5bfcac9ec74ff';
    
    
    
/**
    * The name of the base data object connected to this form.  
    * 
    * @var string
    */    
    
public $dataObjectName 'Payment';
    
    
    
/**
    * Set default data values for Insert mode.  
    * 
    * e.g. 
    * $this->_data['FORMFIELD1'] = 'VALUE1';
    * $this->_data['FORMFIELD2'] = 'VALUE2';
    * 
    * @return void
    */
    
public function setDefaults() {
        
$this->_data['payment.payment_id'] = 'TBA';
        
$this->_data['payment.customer_id'] = 0;
        
$this->_data['customer_id__customer.desc'] = '';
        
$this->_data['payment.staff_id'] = 0;
        
$this->_data['staff_id__staff.desc'] = '';
        
$this->_data['payment.rental_id'] = 0;
        
$this->_data['rental_id__rental.desc'] = '';
        
$this->_data['payment.amount'] = '';
        
$this->_data['payment.payment_date'] = '';
        
$this->_data['payment.last_update'] = '-';
    }
    
    
    
/**
    * Populate form fields with values from the Data Object.  
    * 
    * Abstract Base Class contains several methods to process values for 
    * different types of field such as:
    * 
    * populateText(...)
    * populateCheckbox(...)
    * populateDropdown(...)
    * populateDecimal(...)
    * populateFileSystemImage(...)
    * populateFileSystemFile(...)
    * populateDatabaseImage(...)
    * populateDatabaseFile(...)
    * populateRichTextEditor(...)
    * populateDuallist(...)
    * 
    * e.g. $this->populateText('FORMFIELD', $this->_data['DBFIELD']);
    * 
    * @return void
    */    
    
public function populate() {
        
$this->populateText('payment__payment_id__13'$this->_data['payment.payment_id']);
        
$this->populateText('payment__customer_id__13'$this->_data['payment.customer_id']);
        
$this->populateText('customer_id__customer__desc__13'$this->_data['customer_id__customer.desc']);
        
$this->populateDropdown('payment__staff_id__staff__value__13_options''Staff''Dropdown'$this->_data['payment.staff_id']);
        
$this->populateText('payment__rental_id__13'$this->_data['payment.rental_id']);
        
$this->populateText('rental_id__rental__desc__13'$this->_data['rental_id__rental.desc']);
        
$this->populateDecimal('payment__amount__13'$this->_data['payment.amount'], 2);
        
$this->populateDate('payment__payment_date__13__ID','payment__payment_date__13__Display'$this->_data['payment.payment_date'],1,1);
        
$this->populateText('payment__last_update__13'$this->_data['payment.last_update'], true);
    }
    
    
    
/**
    * Uses helper functions from base abstract class to generate Javascript for 
    * Form to handle widgets (AutoComplete, DataPicker etc) and Validation.  
    * 
    * @param string $mode
    * @param integer $uniqueIndex
    * @param string $returnId
    * @param string $returnDisplay
    * @return void
    */
    
public function generateClientScripts($mode$uniqueIndex$returnId$returnDisplay) {
        
        
// Setup Header
        
$script '
            $(document).ready( function() {initEditPage();});
            function initEditPage() {
            $("#frmUpdate_10d0ae954db69c3051c5bfcac9ec74ff").validate();
        ' 
$this->getJsGeneral($uniqueIndex$returnId$returnDisplay);
        
        
// Setup Widgets        
        
$script .= $this->getJsAutoComplete('Customer__61_display''Customer__61_id''d385a06aa02e0d3a61ad593bf19fa1e9''CONTAINS'2);
        
$script .= $this->getJsAutoComplete('Rental__63_display''Rental__63_id''70cd45d4a9e6c69f994e542c547537c2''CONTAINS'2);
        
$script .= $this->getJsNumeric('Amount__64'2);
        
$script .= $this->getJsDateTimepicker('Payment__Date__65__ID''Payment__Date__65__Display''d MM yy');

        
// Setup Validation
        
$script .= $this->getJsRequired('Customer__61');
        
$script .= $this->getJsRequired('Staff__62');
        
$script .= $this->getJsRequired('Amount__64');
        
$script .= $this->getJsRequired('Payment__Date__65');
        
        
// Setup Footer
        
$script .= '
        }
        '
;

        
// Add client scripts to page
        
$this->_smarty->assign('page_script'$script);
    }
    
    
    
/**
    * Server-side data validation method.  saveData method should not commit
    * changes until this method returns true to signify that all data is
    * valid.  
    * 
    * @param mixed $data
    * @return boolean
    */
    
public function validateData($data) {
        
$notValid 0;
        
$message '';
        
// Validation Functions
        
$this->validateRequired($data['payment.customer_id'], 'Customer'$notValid$message);
        
$this->validateRequired($data['payment.staff_id'], 'Staff'$notValid$message);
        
$this->validateRequired($data['payment.amount'], 'Amount'$notValid$message);
        
$this->validateRequired($data['payment.payment_date'], 'Payment Date'$notValid$message);        

        
// Check validity
        
$validity['errors'] = $message;
        
$validity['isValid'] = ($notValid == 0);
        return 
$validity;
    }
    
    
    
/**
    * Used to return the ID and Display value for the current record.  
    * 
    * It is used primarily when the user has brought up a data grid to select a
    * value, and clicks the "Add" button to bring up this form.  Upon saving 
    * the record, it needs to pass back the ID value to store in the hidden
    * value field, and the display field to show to the user.  
    * 
    * These values should be returned in an array with indexes "id" and 
    * "display".  
    * 
    * If this form is unlikely to be used in such a scenario then simply 
    * return NULL.  
    * 
    * @param Data Object $dataObject
    * @param string $mode
    * @param array $data
    * @return array
    */
    
public function getIdAndDisplayValues($dataObject$mode$data) {
        if (
$mode == 'insert') {
            
$values['id'] = $dataObject->getLastInsertId();    
        } else {
            
$values['id'] = Apeel_Framework_Controller_Libraries_Input::request('pk_' $this->dataObjectHash);
        }        
        
$values['display'] = NULL;
        return 
$values;
    }    
    
    
    
/**
    * Validate data and save changes to the database.  
    * 
    * @param array $data
    * @param string $mode
    * @return void
    */
    
public function saveData($primaryKeyValue$mode) {
        
$data['payment.customer_id'] = Apeel_Framework_Controller_Libraries_Input::request('Customer__61'''NULL);
        
$data['payment.staff_id'] = Apeel_Framework_Controller_Libraries_Input::request('Staff__62'''NULL);
        
$data['payment.rental_id'] = Apeel_Framework_Controller_Libraries_Input::request('Rental__63'''NULL);
        
$data['payment.amount'] = Apeel_Framework_Controller_Libraries_Input::request('Amount__64'''NULL);
        
$data['payment.payment_date'] = Apeel_Framework_Controller_Libraries_Input::request('Payment__Date__65'''NULL);        
        
        
// Finally, save data to database.   
        
parent::saveData($data$mode);        
    }
    
    
    
/**
    * This method is used to save data in Data Objects other than the main 
    * one linked to this form.  
    * 
    * For example, a typical use is in a many-to-many relationship where
    * you have a list of available values on one side and selected values
    * on the other, using a "middle" table to connect the main table for
    * this form with another table.  In this scenario, the "middle" table
    * should be written to in this method.  
    * 
    * If not applicable, simply return false.  
    * 
    * @param string | array $primaryKeyValue
    * @param string $mode
    * @return void | false
    */    
    
public function saveAdditionalData($primaryKeyValue$mode) {
        return 
false;        

    }
    

    
/**
    * Saves large binary objects to the database.  
    * 
    * The processUploadRequest method uses the manageBlob method which creates a seperate connection to 
    * the database as the main connection uses the UTF8 character set, which corrupts binary values.  
    * 
    * If not applicable, simply return false.  
    * 
    * @param string | array $primaryKeyValue
    * @return void | boolean
    */    
    
public function saveBinaryUploads($primaryKeyValue) {

    }    
}

?>

PHP Demo Source Code Index