<?php
require_once ("tab.class.php");

//passage nat à form 
//champ id masquée dans tab
//ajout $tricol: colonne de tri sur tableau
class tabparc extends tab{  

var $nat;
var $tricol;

function tabparc($aff,$nat="",$table, $serie,$champAffiche,$champRecherche,$tri,$tricol,$selection){
//ajout affectation $tricol
  parent::tab($aff,$table, $serie,$champAffiche,$champRecherche,$tri,$selection);
  $this->nat=$nat;
  $this->tricol=$tricol;
}

//surcharge pour passage $hidden (à 1, id masqué)
//passage false(tab sans onglet),$premier et $recherche à afficheentetecolone pour lien tri
function afficher($premier,$recherche,$href,$db,$DEBUG,$hidden=0){
  // requete
  $this->requete($recherche);
  $nbligne=$db->getOne($this->sqlC);
  $res = $db->limitquery($this->sql,$premier,$this->serie);
  if (get_magic_quotes_gpc()) // magic_quotes_gpc = on
    $recherche= StripSlashes($recherche);
  if (DB :: isError($res)) {
    $this->erreur_db($res->getDebugInfo(),$res->getMessage());
  } else{
    if ($DEBUG == 1){
      echo "la requete ".$this->sql." est exécutée<br>";
    }
      $info=$res->tableInfo(); // *** oracle: recuperation immediate  (en dynamique)
    // pagination
    $style= "tabEntetenbr";
    $this->pagination($recherche,$premier,$nbligne,$style);

    // affichage de table info
    if($DEBUG==1) $this->affichedebuginfo($DEBUG,$info);

    // affichage Entete colone
    echo "<table class='tabCol' border='0'>";
    $this->afficheentetecolone(false,$premier,$recherche,$href,$info,$hidden);     // affichage lien et ligne de data
    while ($row=& $res->fetchRow()){
      echo "<tr class='tabData'>";
      $i=0 ;
      foreach($href as $elem) {
        if($i>1) {
          echo "<td class='largeurtd'><a href=".$href[$i]['lien'].
          urlencode($row[0]).$href[$i]['id'];
          if ($i>2)
             echo "  target='_blanck'";
          echo ">".$href[$i]['lib']."</a></td>";
        }
        $i++;
      }
      if($href[1]['lien']!=""){
        $i=0;
        foreach($row as $elem){
          if ($i>=$hidden) {    //ajout fred 
            if (is_numeric($elem))
              echo "<td align='right'>";
            else
              echo "<td>";
            echo "<a  class='lienTable' href=".$href[1]['lien'].
            urlencode ($row[0]).$href[1]['id'].">".$elem."</td>";
          }  //ajout fred 
          $i++;
        }
      }else{
        $i=0;
        foreach($row as $elem){
          if ($i>=$hidden) {   //ajout fred
            if (is_numeric($elem))
              echo "<td align='right'>";
            else
              echo "<td>";
            echo $elem."</td>";
          }  //ajout fred
          $i++;
        }
      }
      echo "</tr>";
    }
    // fin du formulaire
    echo "</table>";
    echo "</form>";
  }
  // Déconnexion  **** vide les variables
  $res->free();
}//fin afficher

function afficheentetecolone($onglet,$premier,$recherche,$href,$info,$hidden=0){ 
//surcharge pour passage hidden (à 1, id masqué)
//et reception $onglet,$premier,$recherche pour lien tri
  if (!isset($hidden)) $hidden=0;
  echo "<tr class='tabCol'>";
  // ajouter
  if($href[0]['lien']!="") {
    if($onglet) { //si sousform généré en ajax
      echo "<td onclick=\"affichersform('".$href[0]['lien'].$href[0]['id']."')\"><a href='#ancresoustab'>".$href[0]['lib']."</a>";
    } else {
      echo "<td><a href=".$href[0]['lien'].$href[0]['id'].">".
      $href[0]['lib']."</a>" ;
    }
  } else
    echo "<td>";
  echo "</td>";
  $i=0 ;
  foreach($href as $elem){
    if($i>2) echo "<td></td>";
    $i++;
  }
  // nom des champs en entete de colone
  $i=0;  //ajout fred
  foreach($info as $elem){
    if ($i>=$hidden) { //ajout fred
      $x=0;
      foreach($this->champRecherche as $elem1){
         if (substr($elem1,0,1)=='*' and $elem['name']==substr($elem1,1,strlen($elem1))) $x=1;
         if($elem1==$elem['name']) $x=1;
      }
      if ($onglet)
        echo "<td onclick=\"trier('".$elem['name']."')\"><a href='#ancrepostform'>".ucwords($elem['name'])."</a>";
      else {
        echo "<td>";
        echo "<a href='tab.php?obj=".$this->aff."&nat=".$this->nat."&premier=".$premier."&recherche=".urlencode($recherche)."&tri=".$elem['name']."'>";
        echo ucwords($elem['name'])."</a>";
      }
      if($x==1) {
        if(file_exists("../dyn/custom/img/rechercher.png")) {
            echo "<br><img src='../dyn/custom/img/rechercher.png' border='0'>";
        }else{
            echo "<br><img src='../img/rechercher.gif' border=0>";
        }
        echo "</td>";
      }
      echo "</td>";
    }  //ajout fred
    $i++;  //ajout fred        
  }
  echo "</tr>";
}

function afficheronglet($premier,$recherche,$href,$db,$DEBUG,$hidden=0,$deleteall=0){
//surcharge pour afficher ou pas 1er champ (id)
//hidden à 1 -> id masqué
//passage true(tab avec onglet),$premier,$recherche à afficheentetecolone
     if (!isset($hidden)) $hidden=0;
     if (!isset($deleteall)) $deleteall=0;
     $this->requete($recherche);
     $nbligne=$db->getOne($this->sqlC);
     $res = $db->limitquery($this->sql,$premier,$this->serie);
     if (get_magic_quotes_gpc()) // magic_quotes_gpc = on
            $recherche= StripSlashes($recherche);
     if (DB :: isError($res)) {
        $this->erreur_db($res->getDebugInfo(),$res->getMessage());
     } else{
     if ($DEBUG == 1){
        echo "la requete ".$this->sql." est exécutée<br>";
     }
        $info=$res->tableInfo();
     // pagination
     $style= "tabEntetenbr";
     $this->paginationonglet($recherche,$premier,$href,$nbligne,"tabsousformnbr",$deleteall,$nbligne);

     // affichage de table info
     if($DEBUG==1) $this->affichedebuginfo($DEBUG,$info);

     // affichage Entete colone
     // specifique ********************************
     echo "<table class='tabsousform' border='0'>";
     $this->afficheentetecolone(true,$premier,$recherche,$href,$info,$hidden);   //ajout fred
     // affichage lien et data

     while ($row=& $res->fetchRow()){
            echo "<tr class='tabData'>";
            $i=0 ;
            foreach($href as $elem) {
              if($i>1 && $i<4)  //4 tout supprimer
                if (strstr($href[$i]['lien'],"form") || $i>2)
                  echo "<td class='largeurtd'><a href=".$href[$i]['lien'].
                  urlencode($row[0]).$href[$i]['id'].
                  ">".$href[$i]['lib']."</a></td>";
                else
                  echo "<td class='largeurtd' onclick=\"affichersform('".$href[$i]['lien'].
                  urlencode($row[0]).$href[$i]['id'].
                  "')\"><a href='#ancresoustab'>".$href[$i]['lib']."</a></td>";
                $i++;
             }
             if($href[1]['lien']!=""){
              $i=0;
              foreach($row as $elem){
                if ($i>=$hidden) {   //ajout fred
                  if (strstr($href[1]['lien'],"form"))
                    echo "<td><a  class='lienTable' href=".$href[1]['lien'].
                    urlencode ($row[0]).$href[1]['id'].">$elem</td>";
                  else
                    echo "<td onclick=\"affichersform('".$href[1]['lien'].
                    urlencode($row[0]).$href[1]['id'].
                    "')\"><a class='lienTable' href='#ancresoustab'>$elem</td>";
                }
              $i++;
              }
             }else{
              $i=0;
              foreach($row as $elem){
              if ($i>=$hidden) echo "<td>$elem</td>";   //ajout fred 
              $i++;
              }
             }
          echo "</tr>";
        }

     // fin du formulaire
       echo "</table>";
       echo "</form>";
     }
     // Déconnexion  **** vide les variables
     $res->free();
}//fin afficher

function entete($aff,$edition,$recherche){
//surcharge rajout &nat
// et pour passage $this->tricol dans action du form
//recuperation de $styleBouton
if(file_exists("../dyn/custom/var.inc")) {
   include("../dyn/custom/var.inc");
}else {
  include("../dyn/var.inc");
}
if ($edition!="")  {
$this->edition($edition);
}
echo "<FORM action='tab.php?obj=".$this->aff."&nat=".$this->nat."&tri=".$this->tricol."&validation=0' method=POST id=f1 name=f1>";
echo "<table class='tabEntete' border='0'>";
echo "<tr><td> ";
if(file_exists("../dyn/custom/img/loupe.png")) {
          echo "<img src='../dyn/custom/img/loupe.png' border='0' hspace='4' align='middle'>";
}else {
          echo "<img src='../img/loupe.png'  border='0' hspace='4' align='middle'>";
}
echo "<input type='text' name='recherche' value='".$recherche.
        "' class='champFormulaire' >";
echo " <input type='submit' name='s1' value='Rechercher' style=".$styleBouton.
   "' ></td></tr></table></form>";
}

function pagination($recherche,$premier,$nbligne,$style){   //surcharge pour $this->nat 
  echo "<table  class='".$style."' border='0' ><tr>";
  echo "<td><form id='f2' name='f2'><center>";
  if ($premier>0){
      $precedent=$premier-$this->serie;
      echo "<a href='tab.php?obj=".$this->aff."&nat=".$this->nat."&premier=".$precedent."&recherche=".
      urlencode($recherche)."&tri=".$this->tricol."'>";
      if(file_exists("../dyn/custom/img/precedent.png")){
         echo "<img src='../dyn/custom/img/precedent.png' border='0'>";
      }else {
         echo "<img src='../img/precedent.gif' border=0>";
      }
      echo "</a>";
  }
   $dernieraffiche=$premier+ $this->serie;
   if($dernieraffiche>$nbligne) //controle $dernieraffiche
     $dernieraffiche=$nbligne;
   $premieraffiche=$premier+1;
   $varTemp= " ".$premieraffiche." - ".$dernieraffiche.
       " enregistrement(s) sur ".
   $nbligne;
   if (strcmp($recherche, ""))
      echo $varTemp." = [".$recherche."] ";
   else
      echo $varTemp." ";
      if ($premier+$this->serie<$nbligne){
           $suivant=$premier+$this->serie;
           echo " <a href='tab.php?obj=".$this->aff."&nat=".$this->nat."&premier=".$suivant."&recherche=".
           urlencode($recherche)."&tri=".$this->tricol."'>";
           if(file_exists("../dyn/custom/img/suivant.png")) {
                echo "<img src='../dyn/custom/img/suivant.png' border='0'>";
           }else {
                echo "<img src='../img/suivant.gif' border=0>";
           }
           echo "</a> ";
        }
   //pageselect
   $this->pageselect($recherche,$premier,$nbligne);
   echo "</center></form></td></tr></table>";
}

// pageselect ======================================
// nombre de page affiché dans un controle <SELECT>
// ================================================
 
function pageselect($recherche,$premier,$nbligne){
  //surcharge pour $this->nat et $this->tricol
  if($nbligne>$this->serie){ // si plus d une page
     if(($nbligne % $this->serie) == 0) // calcul du modulo
        $nbpage=(int)($nbligne/$this->serie) ;
     else
        $nbpage=(int)($nbligne/$this->serie)+1 ;
     echo " PAGE - ";
     echo "<select name='page'size='1' onchange=\"allerpage('".$this->tricol."');\" class='champFormulaire' >";
     for($i=1;$i<=$nbpage;$i++){
        if(($i-1)*$this->serie==$premier)
            echo "<option value=".($i-1)*$this->serie." selected>".$i."/".$nbpage."</option>";
        else
            echo "<option value=".($i-1)*$this->serie." >".$i."/".$nbpage."</option>";
        }
        echo "</select>";
   ?><script language="javascript">
function allerpage()
{
location="tab.php?obj=<?php echo($this->aff);?>&nat=<?php echo($this->nat);?>&premier="+document.f2.page.value+"&recherche=<?php echo(urlencode($recherche));?>&tri=<?php echo($this->tricol);?>";
}
</script>
   <?php
   }
}

function pageselectonglet($recherche,$premier,$nbligne){
  //surcharge pour $this->tricol
  if($nbligne>$this->serie){ // si plus d une page
     if(($nbligne % $this->serie) == 0) // calcul du modulo
        $nbpage=(int)($nbligne/$this->serie) ;
     else
        $nbpage=(int)($nbligne/$this->serie)+1 ;
     echo " PAGE - ";
     echo "<select name='page' size='1' onchange=\"allerpage('".$this->tricol."');\" class='champFormulaire' >";
     for($i=1;$i<=$nbpage;$i++){
        if(($i-1)*$this->serie==$premier)
            echo "<option value=".($i-1)*$this->serie." selected>".$i."/".$nbpage."</option>";
        else
            echo "<option value=".($i-1)*$this->serie." >".$i."/".$nbpage."</option>";
        }
        echo "</select>";
   }

}

function paginationonglet($recherche,$premier,$href,$nbligne,$style,$deleteall,$nbligne){
  // surcharge pour retrait recherchedyn
  // et pour passage $this->tricol en java
  $precedent=0;
  $suivant=0;
  echo "<table  class='".$style."' border='0' ><tr>";
  echo "<td><form id='f2' name='f2'><center>";
//  echo "<input type='text' name='recherchedyn' id='recherchedyn' value='".$recherche."'  class='champFormulaire' onkeyup='recherche();' >";
       
  if ($premier>0){
      $precedent=$premier-$this->serie;
       echo "<input type='button' value= '<' onclick=\"precedent('".$this->tricol."')\">";
      /*
      echo "<a href='#' onclick='precedent()'>";
      if(file_exists("../dyn/custom/img/precedent.png")){
         echo "<img src='../dyn/custom/img/precedent.png' border='0'>";
      }else {
         echo "<img src='../img/precedent.gif' border=0>";
      }
      echo "</a>";
      */
  }
   $dernieraffiche=$premier+ $this->serie;
   if($dernieraffiche>$nbligne) //controle $dernieraffiche
     $dernieraffiche=$nbligne;
   $premieraffiche=$premier+1;
   $varTemp= " ".$premieraffiche." - ".$dernieraffiche.
       " enregistrement(s) sur ".
   $nbligne;
   if (strcmp($recherche, ""))
      echo $varTemp." = [".$recherche."] ";
   else
      echo $varTemp." ";
      if ($premier+$this->serie<$nbligne){
           $suivant=$premier+$this->serie;
           echo "<input type='button' value= '>' onclick=\"suivant('".$this->tricol."')\">";
           /*
           echo "<a href='#' onclick='suivant()'>";
           if(file_exists("../dyn/custom/img/suivant.png")) {
                echo "<img src='../dyn/custom/img/suivant.png' border='0'>";
           }else {
                echo "<img src='../img/suivant.gif' border=0>";
           }
           echo "</a> ";
           */
        }
   //pageselect
   $this->pageselectonglet($recherche,$premier,$nbligne);

   //ajout bouton Tout Supprimer en haut de soustab
   if ($deleteall==1 && $href[0]['toutsup'] && $nbligne>0)
      echo "<input type='button' value= 'Tout Supprimer' onclick=\"affichersform('".$href[0]['toutsup']."')\">";

   echo "</center></form></td></tr></table>";
   echo "<span  id='precedent' >".$precedent."</span>";
   echo "<span  id='suivant' >".$suivant."</span>";
}

// requete =================================
// construction de la requete
// - pour liste en table
// - nombre de ligne total (hors pagination)
// - pour la recherche
// =========================================

//surcharge pour tri
function requete($recherche){
    $champ="";
    foreach($this->champAffiche as $elem)
     $champ = $champ."".$elem.",";
    $champ=substr($champ,0,strlen($champ)-1);
    //prise en compte tri de colonne
    $tri=$this->tri;
    $tricol=$this->tricol;
    if ($tricol) {
      if (stristr($tricol,"adresseip")) $tricol="ipa,ipb,ipc,ipd";
      if ($tri) 
        $tri=str_replace("order by ","order by ".$tricol.",",$tri);
      else
        $tri=" order by ".$tricol;
    }
    //fin modif   
    if($recherche=="" ){       
        $this->sql="SELECT DISTINCT ".$champ." ".
                 " FROM ".$this->table." ".$this->selection." ".$tri;//$this->tri;
        $this->sqlC="select count(*)  from ".$this->table." ".$this->selection;
    }else{
          if ($this->selection!="")
          $this->sql=" SELECT DISTINCT ".$champ." ".
                "FROM ".$this->table." ".$this->selection." and ("  ;
          else
          $this->sql=" SELECT ".$champ." ".
                "FROM ".$this->table." where ("  ;
          $sqlw="";
          foreach($this->champRecherche as $elem) {
            if (substr($elem,0,1)!='*') {
               if (!get_magic_quotes_gpc()) { // magic_quotes_gpc = Off
               $sqlw = $sqlw." ".$elem." like '%".AddSlashes($recherche)."%' or ";
               }else{  // magic_quotes_gpc = On
               $sqlw = $sqlw." ".$elem." like '%".$recherche."%' or ";
               }
            }
          }
          $sqlw=substr($sqlw,0,strlen($sqlw)-3).")";
          $this->sql=$this->sql.$sqlw." ".$tri;//$this->tri;
          if ($this->selection!="")
             $this->sqlC=" select count(*)  from ".$this->table." ".$this->selection.
             " and (".$sqlw  ;
          else
              $this->sqlC="select count(*)  from ".$this->table." where (".$sqlw;
     }
}

} // fin de classe
?>