70% OFF : CLICK HERE TO BUY IT TODAY FOR ONLY $44.70 OR GET IT FREE VIA TRIALPAY  

PHP Demo Application - Source Code

/Application/Model/FormHandlers/Category.php

<?php
/**
* Script Contents: Apeel_Application_Model_FormHandlers_Category 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_Category 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 '88893bb40539ed4aed6955b236ad0502';
    
    
    
/**
    * The name of the base data object connected to this form.  
    * 
    * @var string
    */    
    
public $dataObjectName 'Category';
    
    
    
/**
    * Set default data values for Insert mode.  
    * 
    * e.g. 
    * $this->_data['FORMFIELD1'] = 'VALUE1';
    * $this->_data['FORMFIELD2'] = 'VALUE2';
    * 
    * @return void
    */
    
public function setDefaults() {
        
$this->_data['category.category_id'] = 'TBA';
        
$this->_data['category.name'] = '';
        
$this->_data['category.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('category__category_id__3'$this->_data['category.category_id']);
        
$this->populateText('category__name__3'$this->_data['category.name']);
        
$this->populateText('category__last_update__3'$this->_data['category.last_update'], true);
        
$filters__category__DualList_Film__3 = new Apeel_Framework_Model_DataObjects_Parameters_Collections_Filters('film_category.category_id''='$this->_data['category.category_id']);
        
$this->populateDuallistAutoComplete('category__DualList_Film__3''category__DualList_Film__3_current''category__DualList_Film__3_existing''Film_category__Film''Duallist'''$filters__category__DualList_Film__3);
    }
    
    
    
/**
    * 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_88893bb40539ed4aed6955b236ad0502").validate();
        ' 
$this->getJsGeneral($uniqueIndex$returnId$returnDisplay);
        
        
// Setup Widgets        
        
$script .= $this->getJsDuallistAuto('Film__92''Film__92_available''Film__92_selected''Film__92_selected_current''btnFilm__92Add''btnFilm__92Remove''Film__92_auto''6cb555d4c4d37148b2590ef443605d95''CONTAINS'true);

        
// Setup Validation
        
$script .= $this->getJsRequired('Name__13');
        
        
// 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['category.name'], 'Name'$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'] = $data['category.name'];
        return 
$values;
    }    
    
    
    
/**
    * Validate data and save changes to the database.  
    * 
    * @param array $data
    * @param string $mode
    * @return void
    */
    
public function saveData($primaryKeyValue$mode) {
        
$data['category.name'] = Apeel_Framework_Controller_Libraries_Input::request('Name__13');        
        
        
// 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) {

        
$existing Apeel_Framework_Controller_Libraries_Input::request('Film__92_selected_existing');    
        
$current Apeel_Framework_Controller_Libraries_Input::request('Film__92_selected_current');
        
$this->saveRemoteData(
            
'film_category'
            
$existing,
            
$current,
            
$mode
            
'film_category.film_id'
            
'film_category.category_id'
            
$primaryKeyValue
        
);
        

    }
    

    
/**
    * 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