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/City.php

<?php
/**
* Script Contents: Apeel_Application_Model_FormHandlers_City 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_City 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 '8427eac72695a1485bd5667bba8e0325';
    
    
    
/**
    * The name of the base data object connected to this form.  
    * 
    * @var string
    */    
    
public $dataObjectName 'City';
    
    
    
/**
    * Set default data values for Insert mode.  
    * 
    * e.g. 
    * $this->_data['FORMFIELD1'] = 'VALUE1';
    * $this->_data['FORMFIELD2'] = 'VALUE2';
    * 
    * @return void
    */
    
public function setDefaults() {
        
$this->_data['city.city_id'] = 'TBA';
        
$this->_data['city.city'] = '';
        
$this->_data['city.country_id'] = 0;
        
$this->_data['country_id__country.desc'] = '';
        
$this->_data['city.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('city__city_id__4'$this->_data['city.city_id']);
        
$this->populateText('city__city__4'$this->_data['city.city']);
        
$this->populateText('city__country_id__4'$this->_data['city.country_id']);
        
$this->populateText('country_id__country__desc__4'$this->_data['country_id__country.desc']);
        
$this->populateText('city__last_update__4'$this->_data['city.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_8427eac72695a1485bd5667bba8e0325").validate();
        ' 
$this->getJsGeneral($uniqueIndex$returnId$returnDisplay);
        
        
// Setup Widgets        
        
$script .= $this->getJsAutoComplete('Country__17_display''Country__17_id''00114ad9b6b91d17529ba1407c252bad''CONTAINS'2);

        
// Setup Validation
        
$script .= $this->getJsRequired('City__16');
        
$script .= $this->getJsRequired('Country__17');
        
        
// 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['city.city'], 'City'$notValid$message);
        
$this->validateRequired($data['city.country_id'], 'Country'$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['city.city'];
        return 
$values;
    }    
    
    
    
/**
    * Validate data and save changes to the database.  
    * 
    * @param array $data
    * @param string $mode
    * @return void
    */
    
public function saveData($primaryKeyValue$mode) {
        
$data['city.city'] = Apeel_Framework_Controller_Libraries_Input::request('City__16');
        
$data['city.country_id'] = Apeel_Framework_Controller_Libraries_Input::request('Country__17'''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