noalyss  Version-6.7.2
Public Member Functions | Static Public Member Functions | Protected Attributes
Fiche_Attr Class Reference

Manage the table attr_def. More...

Public Member Functions

 __construct ($p_cn, $p_id=0)
 delete ()
 get_info ()
 get_parameter ($p_string)
 insert ()
 load ()
 load a object
 save ()
 seek ($cond='', $p_array=null)
 retrieve array of object thanks a condition
 set_parameter ($p_string, $p_value)
 update ()
 verify ()

Static Public Member Functions

static sort_by_id ($o1, $o2)
 used with a usort function, to sort an array of Attribut on the attribut_id (ad_id)
static test_me ()
 Unit test for the class.

Protected Attributes

 $variable = array("id"=>"ad_id","desc"=>"ad_text","type"=>"ad_type","size"=>"ad_size","extra"=>"ad_extra")

Detailed Description

Manage the table attr_def.

Definition at line 12 of file class_fiche_attr.php.


Constructor & Destructor Documentation

Fiche_Attr::__construct ( p_cn,
p_id = 0 
)

Definition at line 17 of file class_fiche_attr.php.

References $value, cn, and load().

    {
        $this->cn=$p_cn;
        if ( $p_id == 0 )
        {
            /* Initialize an empty object */
            foreach ($this->variable as $key=>$value) $this->$value='';
        }
        else
        {
            /* load it */
            $this->ad_id=$p_id;
            $this->load();
        }
    }

Member Function Documentation

Definition at line 221 of file class_fiche_attr.php.

References $res, $sql, and cn.

    {
        if ($this->ad_id < 9000)  return;
        $sql=$this->cn->exec_sql("delete from fiche_detail  where ad_id=$1 ",
                                 array($this->ad_id));

        $sql="delete from jnt_fic_attr where ad_id=$1";
        $res=$this->cn->exec_sql($sql,array($this->ad_id));

        $sql="delete from attr_def where ad_id=$1";
        $res=$this->cn->exec_sql($sql,array($this->ad_id));

    }

Definition at line 52 of file class_fiche_attr.php.

    {
        return var_export($this,true);
    }
Fiche_Attr::get_parameter ( p_string)

Definition at line 32 of file class_fiche_attr.php.

References $idx.

    {
        if ( array_key_exists($p_string,$this->variable) )
        {
            $idx=$this->variable[$p_string];
            return $this->$idx;
        }
        else
            throw new Exception (__FILE__.":".__LINE__.$p_string.'Erreur attribut inexistant');
    }

Definition at line 145 of file class_fiche_attr.php.

References $e, $sql, cn, and verify().

Referenced by save().

    {
        try{
        $this->verify();
        /*  please adapt */
        $sql="insert into attr_def(ad_text
             ,ad_type,ad_size,ad_extra
             ) values ($1
             ,$2,$3,$4
             ) returning ad_id";

        $this->ad_id=$this->cn->get_value(
                         $sql,
                         array( $this->ad_text,$this->ad_type,$this->ad_size,$this->ad_extra
                              )
                     );
        } catch (Exception $e)
        {
            throw $e;
        }

    }

load a object

Returns:
0 on success -1 the object is not found

Definition at line 195 of file class_fiche_attr.php.

References $idx, $res, $sql, $value, and cn.

Referenced by __construct().

    {

        $sql="select ad_text
             ,ad_type,ad_size,ad_extra
             from attr_def where ad_id=$1";
        /* please adapt */
        $res=$this->cn->get_array(
                 $sql,
                 array($this->ad_id)
             );

        if ( count($res) == 0 )
        {
            /* Initialize an empty object */
            foreach ($this->variable as $key=>$value) $this->$key='';

            return -1;
        }
        foreach ($res[0] as $idx=>$value)
        {
            $this->$idx=$value;
        }
        return 0;
    }

Definition at line 106 of file class_fiche_attr.php.

References insert(), and update().

    {

        /* please adapt */
        if (  $this->ad_id == 0 )
            $this->insert();
        else
            $this->update();
    }
Fiche_Attr::seek ( cond = '',
p_array = null 
)

retrieve array of object thanks a condition

Parameters:
$condcondition (where clause)
$p_arrayarray for the SQL stmt
See also:
Database::get_array
Returns:
an empty array if nothing is found

Definition at line 122 of file class_fiche_attr.php.

References $array, $idx, $p_array, $size, $sql, $value, and cn.

    {
        if ( $cond != '')
            $sql="select * from attr_def where $cond order by ad_text";
        else
            $sql="select * from attr_def order by ad_text";

        $aobj=array();
        $array= $this->cn->get_array($sql,$p_array);
        // map each row in a object
        $size=$this->cn->count();
        if ( $size == 0 ) return $aobj;
        for ($i=0;$i<$size;$i++)
        {
            $oobj=new Fiche_Attr ($this->cn);
            foreach ($array[$i] as $idx=>$value)
            {
                $oobj->$idx=$value;
            }
            $aobj[]=clone $oobj;
        }
        return $aobj;
    }
Fiche_Attr::set_parameter ( p_string,
p_value 
)

Definition at line 42 of file class_fiche_attr.php.

References $idx.

    {
        if ( array_key_exists($p_string,$this->variable) )
        {
            $idx=$this->variable[$p_string];
            $this->$idx=$p_value;
        }
        else
            throw new Exception (__FILE__.":".__LINE__.$p_string.'Erreur attribut inexistant');
    }
static Fiche_Attr::sort_by_id ( o1,
o2 
) [static]

used with a usort function, to sort an array of Attribut on the attribut_id (ad_id)

Definition at line 272 of file class_fiche_attr.php.

    {
        if ( $o1->ad_id > $o2->ad_id ) return 1;
        if ( $o1->ad_id == $o2->ad_id ) return 0;
        return -1;
    }
static Fiche_Attr::test_me ( ) [static]

Unit test for the class.

Definition at line 237 of file class_fiche_attr.php.

References $cn, $obj, echo, and h2info().

    {
        $cn=new Database(25);
        $cn->start();
        echo h2info('Test object vide');
        $obj=new Fiche_Attr($cn);
        var_dump($obj);

        echo h2info('Test object NON vide');
        $obj->set_parameter('j_id',3);
        $obj->load();
        var_dump($obj);

        echo h2info('Update');
        $obj->set_parameter('j_qcode','NOUVEAU CODE');
        $obj->save();
        $obj->load();
        var_dump($obj);

        echo h2info('Insert');
        $obj->set_parameter('j_id',0);
        $obj->save();
        $obj->load();
        var_dump($obj);

        echo h2info('Delete');
        $obj->delete();
        echo (($obj->load()==0)?'Trouve':'non trouve');
        var_dump($obj);
        $cn->rollback();

    }

Definition at line 168 of file class_fiche_attr.php.

References $e, $res, $sql, cn, and verify().

Referenced by save().

    {
        try
        {
         $this->verify();
        if ( $this->ad_id < 9000) return;
        /*   please adapt */
        $sql=" update attr_def set ad_text = $1
             ,ad_type = $2,ad_size=$4,ad_extra=$5
             where ad_id= $3";
        $res=$this->cn->exec_sql(
                 $sql,
                 array($this->ad_text
                       ,$this->ad_type
                       ,$this->ad_id,$this->ad_size,$this->ad_extra)
             );
        }catch (Exception $e)
        {
            throw $e;
        }


    }

Definition at line 56 of file class_fiche_attr.php.

References $e, cn, h(), isNumber(), and trim().

Referenced by insert(), and update().

    {
        // Verify that the elt we want to add is correct
        /* verify only the datatype */
        if ( strlen(trim($this->ad_text))==0)
            throw new Exception('La description ne peut pas être vide',1);
        if ( strlen(trim($this->ad_type))==0)
            throw new Exception('Le type ne peut pas être vide',1);
        $this->ad_type=strtolower($this->ad_type);
        if ( in_array($this->ad_type,array('date','text','numeric','zone','poste','card','select'))==false)
            throw new Exception('Le type doit être text, numeric,poste, card, select ou date',1);
        if ( trim($this->ad_size)=='' || isNumber($this->ad_size)==0||$this->ad_size>22)
        {
            switch ($this->ad_type)
            {
            case 'text':
                    $this->ad_size=22;
                break;
            case 'numeric':
                $this->ad_size=9;
                break;
            case 'date':
                $this->ad_size=8;
                break;
            case 'zone':
                $this->ad_size=22;
                break;

            default:
                $this->ad_size=22;
            }
        }
                if ( $this->ad_type == 'numeric' ) {
                        $this->ad_extra=(trim($this->ad_extra)=='')?'2':$this->ad_extra;
                        if (isNumber($this->ad_extra) == 0) throw new Exception ("La précision doit être un chiffre");

                }
                if ( $this->ad_type == 'select')
        {
                if (trim($this->ad_extra)=="") throw new Exception ("La requête SQL est vide ");
                if ( preg_match('/^\h*select/i',$this->ad_extra)  == 0) throw new Exception ("La requête SQL doit commencer par SELECT ");
                try{

                        $this->cn->exec_sql($this->ad_extra);
                }catch (Exception $e)
                {
                    throw new Exception ("La requête SQL ".h($this->ad_extra)." est invalide ");
                }
        }
    }

Field Documentation

Fiche_Attr::$variable = array("id"=>"ad_id","desc"=>"ad_text","type"=>"ad_type","size"=>"ad_size","extra"=>"ad_extra") [protected]

Definition at line 16 of file class_fiche_attr.php.


The documentation for this class was generated from the following file:
 All Data Structures Namespaces Files Functions Variables Enumerations