<?php
/**
* Example of usage for PEAR class HTML_QuickForm. 
* Using filters to clean up the submitted values.
*
* @category    HTML
* @package     HTML_QuickForm
* @author      Bertrand Mansion <bmansion@mamasam.com>
* @author      Alexey Borzov <avb@php.net>
* @version     CVS: $Id: filters.php,v 1.2 2007/05/29 19:12:26 avb Exp $
* @ignore
*/

require_once 'HTML/QuickForm.php';

function _filterAustin($value) 
{
    return strtoupper($value).', GROOVY BABY!';
}

$form =& new HTML_QuickForm('frmTest', 'get');

$form->addElement('text', 'txtTest', 'Test Text to trim:');
$form->addRule('txtTest', 'Test text is required', 'required');

$phoneGrp[] =& $form->createElement('text', '', null, array('size' => 3, 'maxlength' => 3));
$phoneGrp[] =& $form->createElement('text', '', null, array('size' => 3, 'maxlength' => 3));
$phoneGrp[] =& $form->createElement('text', '', null, array('size' => 4, 'maxlength' => 4));
$form->addGroup($phoneGrp, 'phone', 'Telephone (will be converted to numbers):', '-');
$form->addGroupRule('phone', 'The phone is required', 'required', null, 3);

$form->addElement('text', 'txtAustin', 'Text for custom filter:');
$form->addRule('txtAustin', 'Custom filter text is required', 'required');

$form->addElement('submit', 'isubTest', 'Submit');

// now we apply the filters
$form->applyFilter('txtTest', 'trim');
// the filter will be applied recursively
$form->applyFilter('phone', 'intval');

if ($form->validate()) {
    // Here the filter is applied after validation
    $form->applyFilter('txtAustin', '_filterAustin');

    echo "<pre>\n";
    echo "Values before filter:\n\n";
    var_dump($form->getElementValue('txtTest'));
    echo "\n";
    var_dump($form->getElementValue('phone'));
    echo "\n";
    var_dump($form->getElementValue('txtAustin'));

    echo "\n\nValues after filter:\n\n";
    var_dump($form->exportValue('txtTest'));
    echo "\n";
    var_dump($form->exportValue('phone'));
    echo "\n";
    var_dump($form->exportValue('txtAustin'));
    echo "</pre>\n";
}

$form->display();
?>
