id=$id+0; $this->error_message=""; $this->info_message=""; $this->fetch_data(); } public function fetch_data() { global $dbh; $this->info=array(); $this->info['id']= 0; $this->info['name']= ''; $this->info['resp_expl_num']= 0; $this->info['location']= 0; $this->info['statut_principal'] = 0; $this->info['statut_others']= ''; $this->info['comment']= ''; $this->info['expl']=array(); if(!$this->id) return; $req="select * from groupexpl where id_groupexpl=". $this->id; $resultat=pmb_mysql_query($req,$dbh); if (pmb_mysql_num_rows($resultat)) { $r=pmb_mysql_fetch_object($resultat); $this->info['id']= $r->id_groupexpl; $this->info['name']= $r->groupexpl_name; $this->info['resp_expl_num']= $r->groupexpl_resp_expl_num; $this->info['location']= $r->groupexpl_location; $this->info['statut_principal'] = $r->groupexpl_statut_resp; $this->info['statut_others']= $r->groupexpl_statut_others; $this->info['comment']= $r->groupexpl_comment; } $req="select * from groupexpl_expl, exemplaires where expl_id=groupexpl_expl_num and groupexpl_num=". $this->id; $resultat=pmb_mysql_query($req,$dbh); $i=0; $this->info['checked']=0; if(!isset($this->info['not_checked'])) $this->info['not_checked']=0; if (pmb_mysql_num_rows($resultat)) { while($r=pmb_mysql_fetch_object($resultat)){ $this->info['expl'][$i]['id']= $r->groupexpl_expl_num; $this->info['expl'][$i]['checked']= $r->groupexpl_checked; if(!$r->groupexpl_checked){ $this->info['not_checked']++; } // récup des infos de l'expl $this->info['expl'][$i]['cb']= $r->expl_cb; $this->info['expl_list'][$r->expl_cb]=1; // est-il en prêt $this->info['expl'][$i]['pret']=array(); $req_pret="select * from pret, empr where id_empr=pret_idempr and pret_idexpl=". $r->groupexpl_expl_num; $res_pret=pmb_mysql_query($req_pret,$dbh); if (pmb_mysql_num_rows($res_pret)) { $r_pret=pmb_mysql_fetch_object($res_pret); $this->info['expl'][$i]['pret']['date']=$r_pret->pret_date; $this->info['expl'][$i]['pret']['retour']=$r_pret->pret_retour; $this->info['expl'][$i]['pret']['id_empr']=$r_pret->pret_idempr; $this->info['expl'][$i]['pret']['empr_cb']=$r_pret->empr_cb; $this->info['expl'][$i]['pret']['empr_nom']=$r_pret->empr_nom; $this->info['expl'][$i]['pret']['empr_prenom']=$r_pret->empr_prenom; $this->info['expl'][$i]['pret']['emprunteur']="".$r_pret->empr_nom." ".$r_pret->empr_prenom.""; $this->info['pret']['i']=$i; $this->info['pret']['date']=$r_pret->pret_date; $this->info['pret']['retour']=$r_pret->pret_retour; $this->info['pret']['id_empr']=$r_pret->pret_idempr; $this->info['pret']['empr_cb']=$r_pret->empr_cb; $this->info['pret']['empr_nom']=$r_pret->empr_nom; $this->info['pret']['empr_prenom']=$r_pret->empr_prenom; $this->info['pret']['emprunteur']="".$r_pret->empr_nom." ".$r_pret->empr_prenom.""; } $i++; } } // printr($this->info); } public function is_doc_header($cb) { if(!($expl_id=$this->get_expl_id($cb))) return 0; if($this->info['resp_expl_num']==$expl_id) return 1; return 0; } public function group_is_check_out() { if(count($this->info['pret']) )return 1; return 0; } public function group_have_error() { return $this->info['checked']; } public function get_expl_id($cb) { global $dbh; $req="select expl_id from exemplaires where expl_cb='$cb' "; $resultat=pmb_mysql_query($req,$dbh); if (!pmb_mysql_num_rows($resultat)) { return 0; } $r=pmb_mysql_fetch_object($resultat); return $r->expl_id; } public function raz_check($cb='') { global $dbh; if($cb) { if(!($expl_id=$this->get_expl_id($cb))) return 0; $req="update groupexpl_expl SET groupexpl_checked=0 where groupexpl_expl_num=".$expl_id; pmb_mysql_query($req, $dbh); }else{ $req="update groupexpl_expl SET groupexpl_checked=0 where groupexpl_num=".$this->id; pmb_mysql_query($req, $dbh); } $this->fetch_data(); } public function do_check($cb='') { global $dbh; if($cb) { if(!($expl_id=$this->get_expl_id($cb))) return 0; $req="update groupexpl_expl SET groupexpl_checked=1 where groupexpl_expl_num=".$expl_id; pmb_mysql_query($req, $dbh); }else{ $req="update groupexpl_expl SET groupexpl_checked=1 where groupexpl_num=".$this->id; pmb_mysql_query($req, $dbh); } $this->fetch_data(); } public function get_name_group_from_id($id) { global $dbh; $req="select groupexpl_name from groupexpl where id_groupexpl='$id' "; $resultat=pmb_mysql_query($req,$dbh); if (!pmb_mysql_num_rows($resultat)) return 0; $r=pmb_mysql_fetch_object($resultat); return $r->groupexpl_name; } public function get_id_group_from_cb($cb) { global $dbh; $req="select id_groupexpl from groupexpl, groupexpl_expl, exemplaires where expl_id=groupexpl_expl_num and groupexpl_num=id_groupexpl and expl_cb='$cb' "; $resultat=pmb_mysql_query($req,$dbh); if (!pmb_mysql_num_rows($resultat)) return 0; $r=pmb_mysql_fetch_object($resultat); return $r->id_groupexpl; } public function add_expl($cb) { global $dbh,$msg,$charset; $this->error_message=""; $this->info_message=""; if(!($expl_id=$this->get_expl_id($cb))){ $this->error_message=$msg['groupexpl_form_error_not_exist']." $cb"; return 0; } if($id_group=$this->get_id_group_from_cb($cb)){ // l'exemplaire appartient déja à un group if($id_group!=$this->id){ // group autre $this->error_message=$msg['groupexpl_form_error_already_in_group']; $this->error_html_message="".$this->get_name_group_from_id($id_group).""; }else{ // celui-ci $this->error_message=$msg['groupexpl_form_error_already_in_this_group']; } return 0; } $req="INSERT INTO groupexpl_expl SET groupexpl_num=".$this->id.", groupexpl_expl_num=".$expl_id; pmb_mysql_query($req, $dbh); $req="update exemplaires set expl_statut=".$this->info['statut_others']." where expl_id=".$expl_id; pmb_mysql_query($req, $dbh); $this->fetch_data(); $this->info_message=$msg['groupexpl_form_info_insert']; return 1; } public function del_expl($cb) { global $dbh,$msg,$charset; $this->error_message=""; if(!($expl_id=$this->get_expl_id($cb))) return 0; $req="DELETE from groupexpl_expl WHERE groupexpl_expl_num=".$expl_id; pmb_mysql_query($req, $dbh); $this->fetch_data(); return 1; } public function get_expl_display($tpl,$id){ global $msg,$dbh; $expl = get_expl_info($id,1); $tpl=str_replace('!!cb!!',$expl->expl_cb ,$tpl); $tpl=str_replace('!!notice!!',$expl->aff_reduit ,$tpl); $tpl=str_replace('!!sur_loc_libelle!!',$expl->sur_loc_libelle,$tpl); $tpl=str_replace('!!location_libelle!!',$expl->location_libelle,$tpl); $tpl=str_replace('!!section_libelle!!',$expl->section_libelle,$tpl); $tpl=str_replace('!!expl_cote!!',$expl->expl_cote,$tpl); $tpl=str_replace('!!statut_libelle!!',$expl->statut_libelle,$tpl); return $tpl; } public function get_form() { global $groupexpl_form_tpl,$msg,$charset,$dbh; global $pmb_lecteurs_localises,$deflt_docs_location; global $groupexpl_form_list_line_tpl; $tpl=$groupexpl_form_tpl; if($this->id){ $tpl=str_replace('!!msg_title!!',$msg['groupexpl_form_edit'],$tpl); $tpl=str_replace('!!delete!!',"", $tpl); $tpl=str_replace('!!see_button!!',"",$tpl); }else{ $tpl=str_replace('!!msg_title!!',$msg['groupexpl_form_add'],$tpl); $tpl=str_replace('!!delete!!',"",$tpl); $tpl=str_replace('!!see_button!!',"",$tpl); } $tpl=str_replace('!!statut_principal!!',do_selector('docs_statut', 'statut_principal', $this->info['statut_principal']),$tpl); $tpl=str_replace('!!statut_others!!',do_selector('docs_statut', 'statut_others', $this->info['statut_others']),$tpl); $loc_select = ''; if($pmb_lecteurs_localises){ if(!$this->info['location'])$f_loc=$deflt_docs_location; else $f_loc=$this->info['location']; $loc_select .= "
"; } $items=""; foreach($this->info['expl'] as $expl){ $item=$groupexpl_form_list_line_tpl; $item=str_replace('!!cb!!',$expl['cb'], $item); if($expl['checked'])$checked="x";else $checked=""; $item=str_replace('!!checked!!',$checked, $item); if($expl['id']==$this->info['resp_expl_num']) $item=str_replace('!!resp_expl_num_checked!!',"checked='checked'", $item); else $item=str_replace('!!resp_expl_num_checked!!',"", $item); $item=str_replace('!!expl_num!!',$expl['id'], $item); $item=$this->get_expl_display($item,$expl['id']); $items.=$item; } $tpl=str_replace('!!error_message!!',htmlentities($this->error_message,ENT_QUOTES,$charset), $tpl); $tpl=str_replace('!!error_html_message!!',$this->error_html_message, $tpl); $tpl=str_replace('!!info_message!!',htmlentities($this->info_message,ENT_QUOTES,$charset), $tpl); $tpl=str_replace('!!location!!',$loc_select, $tpl); $tpl=str_replace('!!expl_list!!',$items,$tpl); $tpl=str_replace('!!name!!',htmlentities($this->info['name'],ENT_QUOTES,$charset),$tpl); $tpl=str_replace('!!comment!!',htmlentities($this->info['comment'],ENT_QUOTES,$charset),$tpl); $tpl=str_replace('!!id!!',$this->id,$tpl); return $tpl; } public function save($data) { global $dbh; $data['resp_expl_num']+=0; $data['location']+=0; $data['statut_principal']+=0; $data['statut_others']+=0; $fields=" groupexpl_name='".$data['name']."', groupexpl_resp_expl_num='".$data['resp_expl_num']."', groupexpl_comment='".$data['comment']."', groupexpl_location='".$data['location']."', groupexpl_statut_resp='".$data['statut_principal']."', groupexpl_statut_others='".$data['statut_others']."' "; if(!$this->id){ // Ajout $req="INSERT INTO groupexpl SET $fields "; pmb_mysql_query($req, $dbh); $this->id = pmb_mysql_insert_id($dbh); } else { $req="UPDATE groupexpl SET $fields where id_groupexpl=".$this->id; pmb_mysql_query($req, $dbh); } $req="update exemplaires set expl_statut=".$this->info['statut_principal']." where expl_id=".$data['resp_expl_num']; pmb_mysql_query($req, $dbh); $this->fetch_data(); } public function delete() { global $dbh; $req="DELETE from groupexpl WHERE id_groupexpl=".$this->id; pmb_mysql_query($req, $dbh); $req_pret="delete from groupexpl_expl where groupexpl_num=".$this->id; pmb_mysql_query($req_pret, $dbh); $this->fetch_data(); } public function get_see_form() { global $groupexpl_see_form_tpl,$msg,$charset,$dbh; global $pmb_lecteurs_localises,$deflt_docs_location; global $groupexpl_see_form_list_line_tpl,$groupexpl_see_form_principale_tpl; $tpl=$groupexpl_see_form_tpl; if($pmb_lecteurs_localises){ $res = pmb_mysql_query("SELECT location_libelle FROM docs_location where idlocation=".$this->info['location'],$dbh); if ($r = pmb_mysql_fetch_object($res)) { $location_libelle="".$r->location_libelle; } } $items=""; foreach($this->info['expl'] as $expl){ $item=$groupexpl_see_form_list_line_tpl; $item=str_replace('!!cb!!',$expl['cb'], $item); if($expl['checked']){ $checked="x"; $tpl=str_replace('!!responsable!!',$this->get_expl_display($groupexpl_see_form_principale_tpl,$expl['id']),$tpl); }else $checked=""; $item=str_replace('!!checked!!',$checked, $item); $item=$this->get_expl_display($item,$expl['id']); $items.=$item; } $tpl=str_replace('!!responsable!!',"",$tpl); $tpl=str_replace('!!error_message!!',htmlentities($this->error_message,ENT_QUOTES,$charset), $tpl); $tpl=str_replace('!!info_message!!',htmlentities($this->info_message,ENT_QUOTES,$charset), $tpl); $tpl=str_replace('!!location!!',$location_libelle, $tpl); $tpl=str_replace('!!expl_list!!',$items,$tpl); $tpl=str_replace('!!name!!',htmlentities($this->info['name'],ENT_QUOTES,$charset),$tpl); $tpl=str_replace('!!comment!!',htmlentities($this->info['comment'],ENT_QUOTES,$charset),$tpl); $tpl=str_replace('!!id!!',$this->id,$tpl); return $tpl; } public function get_confirm_form($cb) { global $dbh; global $groupexpl_confirm_form_tpl,$msg,$charset; global $pmb_lecteurs_localises,$deflt_docs_location; global $groupexpl_confirm_form_list_line_tpl; $is_doc_header=$this->is_doc_header($cb); $tpl=$groupexpl_confirm_form_tpl; if(!$is_doc_header) $message="".$msg["groupexpl_see_form_warrning"]."
"; if($pmb_lecteurs_localises){ $res = pmb_mysql_query("SELECT location_libelle FROM docs_location where idlocation=".$this->info['location'],$dbh); if ($r = pmb_mysql_fetch_object($res)) { $location_libelle="".$r->location_libelle; } } $items=""; foreach($this->info['expl'] as $expl){ $item=$groupexpl_confirm_form_list_line_tpl; $item=str_replace('!!cb!!',$expl['cb'], $item); if($expl['checked'])$checked="x";else $checked=""; $item=str_replace('!!checked!!',$checked, $item); $item=$this->get_expl_display($item,$expl['id']); if(count($expl['pret'])){ $item=str_replace('!!tr_color!!'," style='color:#FF0000'", $item); $item=str_replace('!!emprunteur!!',"
".$msg["groupexpl_confirm_emprunteur"]." ".$expl['pret']['emprunteur'], $item); }else { $item=str_replace('!!tr_color!!',"", $item); $item=str_replace('!!emprunteur!!',"", $item); } $items.=$item; } $tpl=str_replace('!!message!!',$message, $tpl); $tpl=str_replace('!!location!!',$location_libelle, $tpl); $tpl=str_replace('!!expl_list!!',$items,$tpl); $tpl=str_replace('!!name!!',htmlentities($this->info['name'],ENT_QUOTES,$charset),$tpl); $tpl=str_replace('!!comment!!',htmlentities($this->info['comment'],ENT_QUOTES,$charset),$tpl); $tpl=str_replace('!!id!!',$this->id,$tpl); return $tpl; } } //groupexpl class end class groupexpls { public $info=array(); public $error_message=""; public $info_message=""; public function __construct() { $this->error_message=""; $this->info_message=""; $this->fetch_data(); } public function fetch_data() { global $dbh; global $f_loc,$montrerquoi; $f_loc = intval($f_loc); $this->info=array(); $this->error_message=""; $this->info_message=""; $req="select * from groupexpl "; if($f_loc){ $req.=" where groupexpl_location =$f_loc "; } $i=0; $resultat=pmb_mysql_query($req,$dbh); if (pmb_mysql_num_rows($resultat)) { while($r=pmb_mysql_fetch_object($resultat)){ $groupexpl= new groupexpl($r->id_groupexpl); if($montrerquoi=="pret" && !$groupexpl->group_is_check_out()) continue; if($montrerquoi=="error" && !$groupexpl->group_have_error()) continue; $this->info[]=$groupexpl->info; } } } public function set_error_message($error_message) { $this->error_message=$error_message; } public function get_list() { global $dbh,$charset; global $pmb_lecteurs_localises,$groupexpl_list_tpl,$groupexpl_list_line_tpl,$msg; global $f_loc,$montrerquoi; //Sélection de la localisation $loc_select=""; if($pmb_lecteurs_localises){ $loc_select .= "
".$msg["groupexpl_location"]; $loc_select .= ""; } $tpl=$groupexpl_list_tpl; $pret_checked=$error_checked=$all_checked=""; switch($montrerquoi){ case "pret" : $pret_checked="checked='checked'"; break; case 'checked': $error_checked="checked='checked'"; break; case "list": default: $all_checked="checked='checked'"; break; } $tpl=str_replace('!!pret_checked!!',$pret_checked, $tpl); $tpl=str_replace('!!error_checked!!',$error_checked, $tpl); $tpl=str_replace('!!all_checked!!',$all_checked, $tpl); $tpl_list=""; $odd_even="odd"; foreach($this->info as $elt){ //printr($elt); $tpl_elt=$groupexpl_list_line_tpl; if($odd_even=='odd')$odd_even="even"; else $odd_even="odd"; $tpl_elt=str_replace('!!odd_even!!',$odd_even, $tpl_elt); $tpl_elt=str_replace('!!name!!',htmlentities($elt['name'],ENT_QUOTES,$charset), $tpl_elt); if(isset($elt['pret'])) { $tpl_elt=str_replace('!!emprunteur!!',$elt['pret']['emprunteur'], $tpl_elt); } else { $tpl_elt=str_replace('!!emprunteur!!','', $tpl_elt); } $error=""; if($elt['not_checked']) $error="X"; $tpl_elt=str_replace('!!error!!',$error, $tpl_elt); $tpl_elt=str_replace('!!id!!',$elt['id'], $tpl_elt); $tpl_list.=$tpl_elt; } $tpl=str_replace('!!location_filter!!',$loc_select, $tpl); $tpl=str_replace('!!error_message!!',htmlentities($this->error_message,ENT_QUOTES,$charset), $tpl); $tpl=str_replace('!!info_message!!',htmlentities($this->info_message,ENT_QUOTES,$charset), $tpl); $tpl=str_replace('!!list!!',$tpl_list, $tpl); return $tpl; } public static function get_group_expl($cb){ global $dbh; $req="select id_groupexpl from groupexpl, groupexpl_expl, exemplaires where expl_id=groupexpl_expl_num and groupexpl_num=id_groupexpl and expl_cb='$cb' "; $resultat=pmb_mysql_query($req,$dbh); if (!pmb_mysql_num_rows($resultat)){ return 0; } $r=pmb_mysql_fetch_object($resultat); return $r->id_groupexpl; } } // groupexpls class end