<?php
/*
$Id: tcpip.class.php,v 1.9 2008-05-26 08:14:37 fgiva Exp $
*/
require_once ("formulaireparc.class.php");
require_once ("dbformparc.class.php");

class tcpip extends dbFormparc {

    var $table="tcpip";
    var $clePrimaire= "idip";
    var $typeCle= "N" ;
    var $champidx;
    
function tcpip($id,&$db,$DEBUG) {
  $this->constructeur($id,$db,$DEBUG);
} // fin constructeur

function message($val){ //surcharge pour test val(numero) wmi
  if (strstr($val["station"],"WMI"))
    $this->msg.="<br>Saisie d'adresses IP interdite pour les stations sans numéro Mairie!";
  parent::message();
}

function bouton($maj,$val){ //surcharge pour test val(numero) wmi
if(file_exists("../dyn/custom/var.inc")) {
   include("../dyn/custom/var.inc");
}
else {
  include("../dyn/var.inc");
}
//*
if (!$this->correct){
   if ($maj == 2) //supprimer
       $bouton = "Supprimer";
   else
       if ($maj == 1) // modifier   
           $bouton = "Modifier";
       else // ajouter
           $bouton = "Ajouter";
   echo "<tr><td><br></td></tr><tr><td colspan=2><center><input type='submit' value='".
        $bouton." ".ucwords($this->table)."' style=".$styleBouton;
   if (!strstr($val["station"],"WMI"))
     echo " >";
   else
     echo " disabled=true >";
}}

function ajouter($val,&$db,$DEBUG){  //surcharge pour verifier($db)
// parametrage
$this->msg="";
// valF
    $this->setValFAjout($val);
    $this->setValF($val);
    $this->verifier($db);  //ajout fred  $db necessaire  
    $this->verifierAjout();
if ($this->correct){
    $this->triggerajouter(0/*$id*/,$db,$val,$DEBUG);
    $this->setId($db); // id automatique
    $res= $db->autoExecute($this->table,$this->valF,DB_AUTOQUERY_INSERT);
     if (DB :: isError($res))
           $this->erreur_db($res->getDebugInfo(),$res->getMessage(),'');
           else{
           if ($DEBUG == 1)
           echo "La requête de mise à jour est effectuée.<br>";
           $this->msg=$this->msg."<br>Enregistrement ".
           $this->valF[$this->clePrimaire]." de la table ".
           $this->table." [".$db->affectedRows().
              " enregistrement ajouté]" ;
           } // requete maj
}
else
$this->msg=$this->msg. "<br> non enregistré";
}

function modifier($val,&$db,$DEBUG){  //surcharge pour verifier($db)
 // valF
    $id=$val[$this->clePrimaire];
    $this->setValF($val);
    $this->verifier($db);  //ajout fred  $db necessaire 
 if ($this->correct){
    $this->triggermodifier($id,$db,$val,$DEBUG);
    if($this->typeCle=="A")
           $cle= $this->clePrimaire." = '".$id."'";
    else
           $cle= $this->clePrimaire." = ".$id;
    $res= $db->autoExecute($this->table,$this->valF,DB_AUTOQUERY_UPDATE,$cle);
        if (DB :: isError($res))
              $this->erreur_db($res->getDebugInfo(),$res->getMessage(),'');
              else{
              if ($DEBUG == 1)
              echo "La requête de mise à jour est effectuée.<br>";
              $this->msg=$this->msg."Enregistrement ".$id." de la table ".
              $this->table." [".$db->affectedRows().
              " enregistrement mis à jour]" ;
              } // requete maj
}}

function setvalF($val){
$this->valF['idip'] = $val['idip'];
$this->valF['idstation'] = $val['idstation']; 
$this->valF['idperipherique'] = $val['idperipherique']; 
$this->valF['adresseip'] = $val['adresseip']; // strval(intval($val['ipa'])).".".strval(intval($val['ipb'])).".".strval(intval($val['ipc'])).".".strval(intval($val['ipd']));
$tabip=explode(".",trim($val['adresseip']));
list($this->valF['ipa'],$this->valF['ipb'],$this->valF['ipc'],$this->valF['ipd']) = array(null,null,null,null);
if (count($tabip)==4)
  list($this->valF['ipa'],$this->valF['ipb'],$this->valF['ipc'],$this->valF['ipd']) = $tabip;
$this->valF['ipmaitre'] = $val['ipmaitre'];
}

// NE SURTOUT PAS EFFACER SINON HERITAGE DES FONCTIONS DE CLASSE DBFORM DIFFERENTES
// pas d initialisation valF pour la cle primaire
function setValFAjout($val){  //pas de récupération cleprim car non fixe encore
}
// initialisation valF pour la cle primaire
function verifierAjout(){   //pas de verif cleprim car non fixee encore
}

function setId($db){
// id automatique nextid
$this->valF['idip'] = $db->nextId($this->table);
}

// utilisée pour controler si adresse unique sinon ipmaitre doit valoir 'f'
function cleSecondaire($id,$db,$val,$debug) {
  include ("../dyn/connexion.php");
  include ("../sql/".$dsn['phptype']."/".$this->table.".form.inc");
  $sql_tcpip3=$sql_tcpip3.$this->champidx." = ".$val[$this->champidx];
  $res = $db->getOne($sql_tcpip3);
  if (DB :: isError($res))
    die($res->getMessage().$sql_tcpip3);
  else{
    if ($debug == 1)
        echo " la requete ".$sql_tcpip3." est exécutée<br>";
    $this->correct=True;
    if ($res>1) {  //si plusieurs adresses pour idx
       if ($val["ipmaitre"]=="v") {  //ne pas autoriser destruction adresse maitre
         $this->correct=False;
         $this->msg= $this->msg."<br>Veuillez d'abord supprimer les adresses non maitre!";
       }
    }
  }
}

function verifier(&$db){
    $this->correct=True;
    // obligatoire
    if (stristr($this->valF['adresseip'],"x") || stristr($this->valF['adresseip'],"e")) {
       $this->correct=false;  //eliminer numerique expo et hexa
       $this->msg= $this->msg."<br>Adresse incorrecte";
    } 
    if ($this->correct) {
      if (!is_numeric($this->valF['ipa'])){
         $this->correct=false;
         $this->msg= $this->msg."<br>Adresse incorrecte";
      } else {
         $this->correct=($this->valF['ipa']>=0 && $this->valF['ipa']<256);
         if (!$this->correct) $this->msg= $this->msg."<br>Valeur incorrecte";
      }
    }
    if ($this->correct) {
      if (!is_numeric($this->valF['ipb']) && $this->correct){
         $this->correct=false;
         $this->msg= $this->msg."<br>Adresse incorrecte";
      } else {
         $this->correct=($this->valF['ipb']>=0 && $this->valF['ipb']<256);
         if (!$this->correct) $this->msg= $this->msg."<br>Valeur incorrecte";
      }
    }
    if ($this->correct) {
      if (!is_numeric($this->valF['ipc'])){
         $this->correct=false;
         $this->msg= $this->msg."<br>Adresse incorrecte";
      } else {
         $this->correct=($this->valF['ipc']>=0 && $this->valF['ipc']<256);
         if (!$this->correct) $this->msg= $this->msg."<br>Valeur incorrecte";
      }
    }
    if ($this->correct) {
      if (!(is_numeric($this->valF['ipd']))){
         $this->correct=false;
         $this->msg= $this->msg."<br>Adresse incorrecte";
      } else {
         $this->correct=($this->valF['ipd']>=0 && $this->valF['ipd']<256);
         if (!$this->correct) $this->msg= $this->msg."<br>Valeur incorrecte";
      }
    }
    if ($this->correct) {
      include ("../dyn/connexion.php");
      include ("../sql/".$dsn['phptype']."/".$this->table.".form.inc");
      $sql_tcpip=$sql_tcpip.$this->valF["adresseip"]."'";
      $res = $db->getOne($sql_tcpip);
      if (DB :: isError($res))
        die($res->getMessage().$sql_tcpip);
      else{
        if ($DEBUG == 1)
            echo " la requete ".$sql_tcpip." est exécutée<br>";
        if (!is_null($res)) {  //adresse existe deja
            $this->correct=($res==$this->valF["idip"]);   //correct si modif
        }
        if (!$this->correct) $this->msg= $this->msg."<br>Adresse utilisée!";
      }
      if ($this->correct) {
        $sql_tcpip2=$sql_tcpip2.$this->champidx." = ".$this->valF[$this->champidx];
        $res = $db->query($sql_tcpip2);
        if (DB :: isError($res))
            die($res->getMessage().$sql_tcpip2);
        else{
          if ($DEBUG == 1)
            echo " la requete ".$sql_tcpip2." est exécutée<br>";
          if ($this->valF["ipmaitre"]=='v') { //adresse maitre: verifier aucune adresse maitre autre
            while ($row=& $res->fetchRow() and $this->correct){
              if ($row[1]=='v' and $row[0]<>$this->valF["idip"]) {
                $this->correct=False;
                $this->msg= $this->msg."<br>Adresse principale déjà établie!";
              }
            }
          } else {   //adresse non maitre: verifier adresse maitre existe
            $this->correct=False;
            while ($row=& $res->fetchRow() and !$this->correct){
               if($row[1]=='v' and $row[0]<>$this->valF["idip"]){
                  $this->correct=True;
              }
            }  
            if (!$this->correct) $this->msg= $this->msg."<br>Adresse principale requise!";
          }
         // if (!is_null($res)) $res->free;
        }
      }  
    }
}//verifier

function setType(&$form,$maj) {
  if ($maj < 2) { //ajouter et modifier
    //$form->setType('adresseip','text');  par defaut
    $form->setType('ipmaitre','select');
    if($maj==0)
      $form->setType('idip', 'hidden');
    else
      $form->setType('idip', 'hiddenstatic');
  } else { // supprimer
    $form->setType('idip', 'hiddenstatic');
    $form->setType('adresseip','hiddenstatic');
    $form->setType('ipmaitre','hiddenstatic');
  }
  $form->setType('station', 'hiddenstatic');
  //$form->setType('adresseip','hiddenstatic');
  $form->setType('idstation', 'hidden');
  $form->setType('idperipherique', 'hidden');
  $form->setType('naturestation', 'hidden');
  $form->setType('ipa', 'hidden');
  $form->setType('ipb', 'hidden');
  $form->setType('ipc', 'hidden');
  $form->setType('ipd', 'hidden');
}

//function setTaille(&$form,$maj){
//$form->setTaille('observation', 70);
//}

//function setMax(&$form,$maj){
//$form->setMax('observation', 4);
//}

function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire,&$db){
  //if (strstr($retourformulaire,"station"))
  if ($retourformulaire=="station")
    $this->champidx="idstation";
  else
    $this->champidx="idperipherique";
  if ($validation==0) {
    if ($maj == 0){
      $form->setVal("ipmaitre", 'v');
      $form->setVal($this->champidx, $idxformulaire);
    }     //idstation ou idperipherique
  }
//  $form->setVal('naturestation', $retourformulaire);
}

function setSelect(&$form, $maj,$db,$debug) {
// complement
//  include ("../dyn/connexion.php");
//  include ("../sql/".$dsn['phptype']."/".$this->table.".form.inc");
  if($maj<2){
    $contenu=array();
    $contenu[0]=array('f','v');
    $contenu[1]=array('NON','OUI');
    $form->setSelect("ipmaitre",$contenu);
  }
}

function setGroupe(&$form,$maj){
    $form->setGroupe('ipa','D');
    $form->setGroupe('ipb','G');
    $form->setGroupe('ipc','G');
    $form->setGroupe('ipd','F');
//    $form->setGroupe('ipmaitre','G');
}

function setLib(&$form,$maj) {
  $form->setLib('ipmaitre','Adresse principale');
  $form->setLib('ipa','');
  $form->setLib('ipb','');
  $form->setLib('ipc','');
  $form->setLib('ipd','');
}

//
function setOnchange(&$form,$maj){
//  $form->setOnchange("adresseip","evalueradresse(this)");

?>
<script language="javascript">
function evalueradresse(champ){
}
</script>
<?php
}

}// fin de classe
?>