PHP Classes

File: form-o-mat.class.php

Recommend this page to a friend!
  Classes of codemonk   form-o-mat   form-o-mat.class.php   Download  
File: form-o-mat.class.php
Role: Class source
Content type: text/plain
Description: base class
Class: form-o-mat
Generate and validate Web forms with few functions
Author: By
Last change: spelling mistake :/
Date: 20 years ago
Size: 8,550 bytes
 

Contents

Class file image Download
<?php

/***********************************************************************

  Copyright (C) 2004 Julian Hammer (julian.hammer@u-sys.org)

  The form_o_mat class is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License as
  published by the Free Software Foundation; either version 2 of the
  License, or (at your option) any later version.

  The form_o_mat class is distributed in the hope that it will be
  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  MA 02111-1307 USA

************************************************************************/

   
class form_o_mat
   
{
        var
$id; //Form name (to identify if it was send)
       
var $action; //Where should this form post? (if nothing, it self)
       
var $caption; //Caption to show the user
       
var $target = "_self"; //What should the target be?
       
var $style; //If there is a css class for this form, put the name here
       
var $enctype; //Will automaticly be set to multipart/form-data if there is a form with a file obj.
       
var $hide = FALSE; //Shuld the form be hidden if there are no errors in the send data?

       
var $_error=""; //Intern error trigger
       
var $_error_msg=""; //Intern error message to be displayed
       
var $_data=""; //Intern usage for storing the form data

       
function insert_object( $name, $caption, $needed=FALSE, $type="text", $size="", $value="" )
        {
           
$needed_signal = "";

            if( isset(
$_POST[$this->id] ) )
            {
               
$this->_check_data( $name, $type, $needed );

               
$value = $_POST[$name];
            }
            if(
$needed == TRUE )
            {
               
$needed_signal = "* ";
            }

           
$return = '<tr><td valign="top"><b>'. $caption .'</b>'. $needed_signal .'</td><td valign="top">';

           
$value = htmlspecialchars( $value );

            switch(
$type )
            {
                case
'password':
                   
$size = preg_replace( "/\D/i", "", $size );
                    if( !empty(
$size ) )
                    {
                       
$size = 'size="'. $size .'"';
                    }
                   
$attribs = 'type="password" '. $size;

                    if( !empty(
$value ) )
                    {
                       
$value = 'value="'. $value .'"';
                    }

                   
$return .= '<input name="'. $name .'" '. $attribs .' '. $value .'>';
                    break;
                case
'file':
                   
$this->enctype = 'multipart/form-data';

                   
$size = preg_replace( "/\D/i", "", $size );
                    if( !empty(
$size ) )
                    {
                       
$size = 'size="'. $size .'"';
                    }
                   
$attribs = 'type="file" '. $size;

                    if( !empty(
$value ) )
                    {
                       
$value = 'value="'. $value .'"';
                    }

                   
$return .= '<input name="'. $name .'" '. $attribs .' '. $value .'>';
                    break;
                case
'textarea':
                   
$size = explode( 'x', $size );
                    if( !empty(
$size[0] ) AND !empty( $size[1] ) )
                    {
                       
$size = 'cols="'. $size[0] .'" rows="'.$size[1] .'"';
                    }

                   
$return .= '<textarea name="'. $name .'" '. $size .'">'. $value .'</textarea>';
                    break;
                default:
                   
$size = preg_replace( "/\D/i", "", $size );
                    if( !empty(
$size ) )
                    {
                       
$size = 'size="'. $size .'"';
                    }
                   
$attribs = 'type="text" '. $size;

                    if( !empty(
$value ) )
                    {
                       
$value = 'value="'. $value .'"';
                    }

                   
$return .= '<input name="'. $name .'" '. $attribs .' '. $value .'>';
            }

           
$return .= '</td><td valign="top">'. $this->_error_msg .'</td></tr>';

           
$this->_data .= $return;
            return
true;
        }

        function
insert_object_group( $name, $caption, $value, $needed="", $type="", $description="" )
        {
            if( isset(
$_POST[$this->id] ) )
            {
               
$this->_check_data( $name, $type, $needed );
            }
            if(
$needed == TRUE )
            {
               
$needed_signal = "* ";
            }

           
$return = '<tr><td valign="top"><b>'. $caption .'</b>'. $needed_signal .'</td><td valign="top">';

            if( !
is_array( $value ) OR ( !empty( $description ) AND !is_array( $description ) ) )
            {
                return
false;
            }

            switch(
$type )
            {
                case
'radio':
                    if( empty(
$description ) )
                    {
                       
$description = $value;
                    }

                    foreach(
$value as $key => $item )
                    {
                        if( isset(
$_POST[$this->id] ) AND $_POST[$name] == $item )
                        {
                           
$checked = "checked";
                        }
                        else
                        {
                           
$checked = "";
                        }
                       
$return .= '<label><input type="radio" name="'. $name .'" value="'. $item .'" '. $checked .'>'. $description[$key] .'</label><br/>';
                    }
                    break;
                case
'check':
                    if( empty(
$description ) )
                    {
                       
$description = $value;
                    }

                    foreach(
$value as $key => $item )
                    {
                        if( @
in_array( $item, $_POST[$name] ) )
                        {
                           
$checked = "checked";
                        }
                        else
                        {
                           
$checked = "";
                        }
                       
$return .= '<label><input type="checkbox" name="'. $name .'[]" value="'. $item .'" '. $checked .'>'. $description[$key] .'</label><br/>';
                    }
                    break;
                default:
                   
$return .= '<select name="'. $name .'">';

                    if( empty(
$description ) )
                    {
                       
$description = $value;
                    }
                   
$return .= '<option value="">-- select what is true --</option>';
                    foreach(
$value as $key => $item )
                    {
                        if( isset(
$_POST[$this->id] ) AND $_POST[$name] == $item )
                        {
                           
$selected = "selected";
                        }
                        else
                        {
                           
$selected = "";
                        }
                       
$return .= '<option value="'. $item .'" '. $selected .'>'. $description[$key] .'</option>';
                    }

                   
$return .= '</select>';
            }

           
$return .= '</td><td valign="top">'. $this->_error_msg .'</td></tr>';

           
$this->_data .= $return;
            return
true;
        }

        function
_check_data( $name, $type, $needed )
        {
            if(
$type == TRUE AND $needed != FALSE )
            {
                if(
$type == 'check' )
                {
                   
$string = "";
                   
$i = "";
                    if( isset(
$_POST[$name] ) )
                    {
                       
$i = count( $_POST[$name] );
                    }
                    while(
$i > 0 )
                    {
                       
$i--;
                       
$string .= 'i';
                    }
                }
                else
                {
                   
$string = $_POST[$name];
                }
               
$count = strlen( $string );

                if(
$needed == 1 )
                {
                    if(
$count >= $needed )
                    {
                       
$this->_error_msg = "";
                        return
true;
                    }
                    else
                    {
                       
$this->_error_msg = "this information must be entered";
                       
$this->_error = TRUE;
                        return
false;
                    }
                }
                else
                {
                   
$needed = explode( "-", $needed );
                    if( !empty(
$needed[1] ) )
                    {
                        if( (
$count <= max( $needed[0], $needed[1] ) ) AND ( $count >= min( $needed[0], $needed[1] ) ) )
                        {
                           
$this->_error_msg = "";
                            return
true;
                        }
                        else
                        {
                           
$this->_error_msg = 'must be '. min( $needed[0], $needed[1] ) .' to '. max( $needed[0], $needed[1] ) .' characters long!';
                           
$this->_error = TRUE;
                            return
false;
                        }
                    }
                    else
                    {
                        if( empty(
$needed[1] ) )
                        {
                            if(
$count >= $needed[0] )
                            {
                               
$this->_error_msg = "";
                                return
true;
                            }
                            else
                            {
                               
$this->_error_msg = 'this information must be atleast '. $needed[0] .' characers long!';
                               
$this->_error = TRUE;
                                return
false;
                            }
                        }
                    }
                }
            }
            else
            {
               
$this->_error_msg = "";
                return
true;
            }
        }

        function
dump_form()
        {
           
$style = "";

            if( !empty(
$this->style ) )
            {
               
$style = 'class="'. $this->style .'"';
            }
            if( empty(
$this->action ) )
            {
               
$this->action = $_SERVER['REQUEST_URI'];
            }
            if( !empty(
$this->caption ) )
            {
               
$result = '<h2>'. $this->caption .'</h2>';
            }
            if( !empty(
$this->enctype ) )
            {
               
$enctype = 'enctype="'. $this->enctype .'"';
            }

           
$result .= '<table>'. $this->_data .'<tr><td valign="top">&nbsp;</td><td valign="top">* This information is required<td valign="top"></td></tr></table>';
           
$return = '<form action="'. $this->action .'" method="post" target="'. $this->target .'" '. $style .'>';
           
$return .= $result;
           
$return .= '<input name="'. $this->id .'" type="submit"><input type="reset"></form>';

            if(
$this->_error == FALSE AND $this->hide == TRUE AND isset( $_POST[$this->id] ) )
            {
                return
true;
            }
            else
            {
                return
$return;
            }

        }
    }
?>