Login   Register  
PHP Classes
elePHPant
Icontem

File: form-o-mat.class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  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: 10 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 )
                    {
                        
$i--;
                        
$string .= 'i';
                    }
                }
                else
                {
                    
$string $_POST[$name];
                }
                
$count strlen$string );

                if( 
$needed == )
                {
                    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;
            }

        }
    }
?>