| 
<?php
 // Include the original TM::Apeform class to be extended.
 require_once("Apeform.class.php");
 
 /**
 * Extended TM::Apeform class.
 */
 class ExtendedApeform extends Apeform
 {
 function regex($patterns, $offset = -1)
 {
 if ($offset < 0) $offset += count($this->_rows);
 $value = &$this->_rows[$offset]['value'];
 
 foreach ((array)$patterns as $pattern => $message)
 {
 // Required to handle multiple text elements.
 foreach ((array)$value as $singleValue)
 {
 if (! preg_match($pattern, $singleValue))
 {
 $this->error($message, $offset);
 return false;
 }
 }
 }
 }
 
 function callback_price($offset = -1)
 {
 if ($offset < 0) $offset += count($this->_rows);
 $value = &$this->_rows[$offset]['value'];
 
 $price = $value[0] + $value[1] / 100;
 if ($price <= 0) $this->error("Price can not be empty");
 }
 }
 
 function callback_price(&$form, $offset = -1)
 {
 if ($offset < 0) $offset += count($form->_rows);
 $value = &$form->_rows[$offset]['value'];
 
 $price = $value[0] + $value[1] / 100;
 if ($price <= 0) $form->error("Price can not be empty");
 }
 
 $form = new ExtendedApeform();
 
 $price = $form->text("Price", "This one uses regular expressions\t.\t Euro",
 "", array(10, 2));
 // Define a bunch of regular expressions and error messages.
 $form->regex(array(
 '/^\d*$/s' => "Invalid characters in price",
 '/^.+$/s' => "Empty fields not allowed in price"));
 
 $price = $form->text("Price", "This one uses an inner callback method\t.\t Euro",
 "", array(10, 2));
 $form->callback_price();
 
 $price = $form->text("Price", "This one uses an outer callback function\t.\t Euro",
 "", array(10, 2));
 callback_price($form);
 
 $form->submit("Try");
 $form->display();
 
 ?>
 |