id_location=0;
if($pmb_lecteurs_localises){
$id_location+=0;
if(!$id_location)$id_location=$deflt_docs_location;
$this->id_location=$id_location;
}
$this->fetch_data();
}
public function fetch_data() {
$this->info_expl=array();
$this->info_circ=array();
$this->classement['alert']=array();
$this->classement['to_be_circ']=array();
$this->classement['in_circ']=array();
$this->classement['retard']=array();
$this->classement['reproduction_ask']=array();
$this->classement['is_in_resa_ask']=array();
$restrict = '';
if($this->id_location) $restrict=" and expl_location=".$this->id_location;
$req="select * from serialcirc_expl
join exemplaires on serialcirc_expl.num_serialcirc_expl_id = exemplaires.expl_id
join bulletins on exemplaires.expl_bulletin = bulletins.bulletin_id
join serialcirc on serialcirc_expl.num_serialcirc_expl_serialcirc = serialcirc.id_serialcirc
left join abts_abts on exemplaires.expl_abt_num = abts_abts.abt_id
where 1 ".$restrict." order by date_date DESC";
$resultat=pmb_mysql_query($req);
if ($resultat && pmb_mysql_num_rows($resultat)) {
while($r=pmb_mysql_fetch_object($resultat)){
$this->info_expl[$r->expl_id]['expl_cb']= $r->expl_cb;
$this->info_expl[$r->expl_id]['expl_id']= $r->expl_id;
$this->info_expl[$r->expl_id]['expl_statut']= $r->expl_statut;
$this->info_expl[$r->expl_id]['expl_location']= $r->expl_location;
$rqtSite = "SELECT location_libelle FROM docs_location WHERE idlocation=".$r->expl_location;
$resSite = pmb_mysql_result(pmb_mysql_query($rqtSite),0);
$this->info_expl[$r->expl_id]['expl_location_name']= $resSite;
$rqtSite = "SELECT lender_libelle FROM lenders WHERE idlender=".$r->expl_owner;
$resSite = pmb_mysql_result(pmb_mysql_query($rqtSite),0);
$this->info_expl[$r->expl_id]['expl_owner']= $resSite;
$this->info_expl[$r->expl_id]['expl_cote']= $r->expl_cote;
$this->info_expl[$r->expl_id]['bulletine_date']= $r->serialcirc_expl_bulletine_date;
$this->info_expl[$r->expl_id]['num_diff']= $r->num_serialcirc_expl_serialcirc_diff;
$this->info_expl[$r->expl_id]['expl_abt_num']= $r->expl_abt_num;
$this->info_expl[$r->expl_id]['expl_abt_name']= $r->abt_name;
$this->info_expl[$r->expl_id]['numero']= $r->bulletin_numero;
$this->info_expl[$r->expl_id]['mention_date']= $r->mention_date;
$this->info_expl[$r->expl_id]['bulletin_notice']= $r->bulletin_notice;
$this->info_expl[$r->expl_id]['bulletin_id']= $r->bulletin_id;
$this->info_expl[$r->expl_id]['num_notice']= $r->num_notice;
$this->info_expl[$r->expl_id]['expl_link']="./catalog.php?categ=serials&sub=bulletinage&action=expl_form&bul_id=".$r->bulletin_id."&expl_id=".$r->expl_id;
$this->info_expl[$r->expl_id]['bull_link']="./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=".$r->bulletin_id;
$this->info_expl[$r->expl_id]['serial_link']="./catalog.php?categ=serials&sub=view&serial_id=".$r->bulletin_notice;
$this->info_expl[$r->expl_id]['abt_link']="./catalog.php?categ=serialcirc_diff&sub=view&num_abt=".$r->expl_abt_num;
$this->info_expl[$r->expl_id]['cirdiff_link']="./catalog.php?categ=serialcirc_diff&sub=view&num_abt=".$r->expl_abt_num;
$this->info_expl[$r->expl_id]['view_link']='./circ.php?categ=visu_ex&form_cb_expl='.$r->expl_cb;
$req_serial="select * from notices where notice_id=".$r->bulletin_notice."";
$res_serial=pmb_mysql_query($req_serial);
if ($r_serial=pmb_mysql_fetch_object($res_serial)){
$this->info_expl[$r->expl_id]['serial_title']=$r_serial->tit1;
}
$this->info_expl[$r->expl_id]['num_serialcirc']= $r->id_serialcirc;
$this->info_expl[$r->expl_id]['serialcirc_type']= $r->serialcirc_type;
$this->info_expl[$r->expl_id]['serialcirc_checked']= $r->serialcirc_checked;
$this->info_expl[$r->expl_id]['serialcirc_expl_statut_circ_after']= $r->serialcirc_expl_statut_circ_after;
$this->info_expl[$r->expl_id]['serialcirc_diff'] = new serialcirc_diff($r->num_serialcirc_expl_serialcirc);
$this->info_expl[$r->expl_id]['state_circ']= $r->serialcirc_expl_state_circ;
// $this->info_expl[$r->expl_id]['diff']= $r->num_serialcirc_expl_serialcirc_diff;
$this->info_expl[$r->expl_id]['current_empr']= $r->num_serialcirc_expl_current_empr;
$this->info_expl[$r->expl_id]['start_date']= $r->serialcirc_expl_start_date;
$this->fetch_info_circ($r->expl_id);
if($this->is_in_alert($r->expl_id)) $this->classement['alert'][]=$r->expl_id;
else if($this->is_in_to_be_circ($r->expl_id)) $this->classement['to_be_circ'][]=$r->expl_id;
if($this->is_in_circ($r->expl_id)) $this->classement['in_circ'][]=$r->expl_id;
if($this->is_in_late($r->expl_id)) $this->classement['retard'][]=$r->expl_id;
if($this->is_in_reproduction_ask($r->expl_id)) $this->classement['reproduction_ask'][]=$r->expl_id;
if($this->is_in_resa_ask($r->expl_id)) $this->classement['is_in_resa_ask'][]=$r->expl_id;
$this->info_expl[$r->expl_id]['circ']=array();
$req_circ="select * from serialcirc_circ where num_serialcirc_circ_expl =".$r->expl_id;
$resultat_circ=pmb_mysql_query($req_circ);
if (pmb_mysql_num_rows($resultat_circ)) {
while($r_circ=pmb_mysql_fetch_object($resultat_circ)){
$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['subscription']=$r_circ->serialcirc_circ_subscription;
$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['ret_asked ']=$r_circ->serialcirc_circ_ret_asked ;
$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['trans_asked ']=$r_circ->serialcirc_circ_trans_asked ;
$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['trans_doc_asked']=$r_circ->serialcirc_circ_trans_doc_asked;
$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['expected_date']=$r_circ->serialcirc_circ_expected_date;
$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['pointed_date']=$r_circ->serialcirc_circ_pointed_date;
if($this->info_expl[$r->expl_id]['serialcirc_diff']->virtual_circ && !$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['subscription']==0){
$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['no_subscription']=1;
}
else {
$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['no_subscription']=0;
}
}
}
}
}
$this->fetch_data_copy() ;
$this->fetch_data_resa() ;
}
public function fetch_data_copy(){
global $opac_url_base;
$this->info_copy=array();
$req="select * from serialcirc_copy ,bulletins, notices where num_serialcirc_copy_bulletin=bulletin_id and bulletin_notice=notice_id order by serialcirc_copy_date ";
$resultat=pmb_mysql_query($req);
$i=0;
if (pmb_mysql_num_rows($resultat)) {
while($r=pmb_mysql_fetch_object($resultat)){
$this->info_copy[$i]['id']=$r->id_serialcirc_copy;
$this->info_copy[$i]['id_empr']=$r->num_serialcirc_copy_empr;
$this->info_copy[$i]['empr']=$this->empr_info($this->info_copy[$i]['id_empr']);
$this->info_copy[$i]['id_bulletin']=$r->num_serialcirc_copy_bulletin;
$this->info_copy[$i]['perio']=$r->tit1;
$this->info_copy[$i]['numero']= $r->bulletin_numero;
$this->info_copy[$i]['mention_date']= $r->mention_date;
$this->info_copy[$i]['analysis']=$r->serialcirc_copy_analysis;
$this->info_copy[$i]['date']=$r->serialcirc_copy_date;
$this->info_copy[$i]['state']=$r->serialcirc_copy_state;
$this->info_copy[$i]['comment']=$r->serialcirc_copy_comment;
$this->info_copy[$i]['serial_link']="./catalog.php?categ=serials&sub=view&serial_id=".$r->notice_id;
$this->info_copy[$i]['bull_link']="./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=".$r->bulletin_id;
$this->info_copy[$i]['opac_link']=$opac_url_base."index.php?lvl=bulletin_display&id=".$r->bulletin_id;
$this->index_info_copy[$r->id_serialcirc_copy]= $this->info_copy[$i];
$i++;
}
}
}
public function fetch_data_resa(){
$this->info_resa=array();
$req="select * from serialcirc_circ, exemplaires, bulletins, notices where serialcirc_circ_hold_asked=1 and num_serialcirc_circ_expl=expl_id and expl_bulletin=bulletin_id and bulletin_notice=notice_id order by num_serialcirc_circ_expl,serialcirc_circ_order ";
$resultat=pmb_mysql_query($req);
$i=0;
if ($resultat && pmb_mysql_num_rows($resultat)) {
while($r=pmb_mysql_fetch_object($resultat)){
$this->info_resa[$i]['id']=$r->id_serialcirc_circ;
$this->info_resa[$i]['id_empr']=$r->num_serialcirc_circ_empr;
$this->info_resa[$i]['id_expl']=$r->num_serialcirc_circ_expl;
$this->info_resa[$i]['empr']=$this->empr_info($this->info_resa[$i]['id_empr']);
$this->info_resa[$i]['id_bulletin']=$r->bulletin_id;
$this->info_resa[$i]['perio']=$r->tit1;
$this->info_resa[$i]['numero']= $r->bulletin_numero;
$this->info_resa[$i]['mention_date']= $r->mention_date;
$i++;
}
}
}
public function fetch_info_circ($id_expl){
$this->info_circ[$id_expl]=array();
$req="select *,DATEDIFF(serialcirc_circ_expected_date,CURDATE())as late_diff from serialcirc_circ where num_serialcirc_circ_expl=$id_expl order by serialcirc_circ_order ";
$resultat=pmb_mysql_query($req);
$last_owner = 0;
if ($resultat && pmb_mysql_num_rows($resultat)) {
while($r=pmb_mysql_fetch_object($resultat)){
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['id']=$r->id_serialcirc_circ;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['num_diff']=$r->num_serialcirc_circ_diff;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['num_expl']=$r->num_serialcirc_circ_expl;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['num_empr']=$r->num_serialcirc_circ_empr;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['num_serialcirc']=$r->num_serialcirc_circ_serialcirc;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['order']=$r->serialcirc_circ_order;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['subscription']=$r->serialcirc_circ_subscription;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['hold_asked']=$r->serialcirc_circ_hold_asked;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['ret_asked']=$r->serialcirc_circ_ret_asked;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['trans_asked']=$r->serialcirc_circ_trans_asked;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['doc_asked']=$r->serialcirc_circ_trans_doc_asked;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['expected_date']=$r->serialcirc_circ_expected_date;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['pointed_date']=$r->serialcirc_circ_pointed_date;
if ($r->serialcirc_circ_pointed_date) {
$last_owner = $r->num_serialcirc_circ_empr;
}
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['group_name']=$r->serialcirc_circ_group_name;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['current_owner']=0;
$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['late_diff']=$r->late_diff;
if($this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['late_diff'] <0 && !$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['pointed_date']){
$this->info_expl[$id_expl]['is_late']=1;
}else{
$this->info_expl[$id_expl]['is_late']=0;
}
}
if ($last_owner) {
$this->info_circ[$id_expl][$last_owner]['current_owner']=1;
}
}
return $this->info_circ[$id_expl];
}
public function empr_info($id){
if (isset(self::$emprs_infos[$id])) {
return self::$emprs_infos[$id];
}
$info = array();
$req="select empr_cb, empr_nom , empr_prenom, empr_mail, empr_login from empr where id_empr=".$id;
$res_empr=pmb_mysql_query($req);
if ($empr=pmb_mysql_fetch_object($res_empr)) {
$info['cb'] = $empr->empr_cb;
$info['nom'] = $empr->empr_nom;
$info['prenom'] = $empr->empr_prenom;
$info['mail'] = $empr->empr_mail;
$info['empr_login'] = $empr->empr_login;
$info['id_empr']=$id;
$info['view_link']='./circ.php?categ=pret&form_cb='.$empr->empr_cb;
$info['empr_libelle']=$info['nom']." ".$info['prenom']." ( ".$info['cb'] ." ) ";
}
self::$emprs_infos[$id] = $info;
return self::$emprs_infos[$id];
}
public function expl_info($id){
$info=array();
$req="select * from exemplaires, bulletins, notices where expl_id=$id and expl_bulletin=bulletin_id and bulletin_notice=notice_id ";
$resultat=pmb_mysql_query($req);
if($r=pmb_mysql_fetch_object($resultat)){
$info['id']=$id;
$info['cb']=$r->expl_cb;
$info['id_bulletin']=$r->expl_bulletin;
$info['perio']=$r->tit1;
$info['numero']= $r->bulletin_numero;
$info['mention_date']= $r->mention_date;
$info['view_link']='./circ.php?categ=visu_ex&form_cb_expl='.$r->expl_cb;
}
return $info;
}
public function is_in_alert($expl_id){
if($this->info_expl[$expl_id]['serialcirc_diff']->virtual_circ){
if( $this->info_expl[$expl_id]['start_date']=="0000-00-00")$start_date=$this->info_expl[$expl_id]['bulletine_date'];
else $start_date=$this->info_expl[$expl_id]['start_date'];
$req="select DATEDIFF(DATE_ADD('".$start_date."', INTERVAL ".$this->info_expl[$expl_id]['serialcirc_diff']->duration_before_send." DAY),CURDATE())";
$result=pmb_mysql_query($req);
if($row = pmb_mysql_fetch_row($result)) {
if($row[0]>0){
return true;
}
}
}
return false;
}
public function is_alerted($expl_id){
//if($this->is_in_alert($expl_id)) return false;
if($this->info_expl[$expl_id]['start_date']!="0000-00-00") return true;
return false;
}
public function is_in_to_be_circ($expl_id){
if($this->is_in_alert($expl_id) && $this->is_alerted($expl_id)) return false;
if(!$this->info_expl[$expl_id]['state_circ'] && !$this->info_expl[$expl_id]['num_diff']){
return true;
}
return false;
}
public function is_in_circ($expl_id){
if($this->info_expl[$expl_id]['state_circ']){
return true;
}
return false;
}
public function empr_is_subscribe($empr_id, $expl_id){
if( !$this->info_expl[$expl_id]['circ'][$empr_group['num_empr'] ]){
return true;
} elseif( !$this->info_expl[$expl_id]['circ'][$empr_group['num_empr'] ]['no_subscription']){
return true;
}
return false;
}
public function is_in_late($expl_id){
if(!$this->info_expl[$expl_id]['serialcirc_checked']) return false;
if( $this->info_expl[$expl_id]['start_date']=="0000-00-00") return false;
return $this->info_expl[$expl_id]['is_late'];
}
public function is_in_reproduction_ask($expl_id){
if(!$this->info_expl[$expl_id]['state_circ'] && !$this->info_expl[$expl_id]['num_diff']){
return true;
}
}
public function is_in_resa_ask($expl_id){
}
public function delete_diffusion($expl_id){
$status=1;
if (!$this->info_expl[$expl_id]) return 0;
// Traitement des résa
$req="select num_serialcirc_circ_empr from serialcirc_circ where serialcirc_circ_hold_asked=2 and num_serialcirc_circ_expl=$expl_id
order by serialcirc_circ_order";
$res=pmb_mysql_query($req);
if(pmb_mysql_num_rows($res)){
while ($r=pmb_mysql_fetch_object($res)) {
$resa=new reservation($r->num_serialcirc_circ_empr,0,$this->info_expl[$expl_id]['bulletin_id']);
$resa->add();
}
}
$req="delete from serialcirc_expl where num_serialcirc_expl_id =$expl_id";
pmb_mysql_query($req);
$req="delete from serialcirc_circ where num_serialcirc_circ_expl =$expl_id";
pmb_mysql_query($req);
// On nettoie la table serialcirc, on regarde les listes qui ne sont plus attachées à des abonnements et plus utilisées dans des circultation en cours
$req = 'delete from serialcirc where num_serialcirc_abt = 0 and id_serialcirc not in (select distinct num_serialcirc_expl_serialcirc from serialcirc_expl)';
pmb_mysql_query($req);
// on change le statut si demandé
if($this->info_expl[$expl_id]['serialcirc_expl_statut_circ_after']){
$req="update exemplaires set expl_statut=".$this->info_expl[$expl_id]['serialcirc_expl_statut_circ_after']." where expl_id=".$expl_id;
pmb_mysql_query($req);
}
// traitement résa
$query = "select count(1) from resa where resa_idbulletin=".$this->info_expl[$expl_id]['bulletin_id'];
$result = @pmb_mysql_query($query);
if(@pmb_mysql_result($result, 0, 0)) {
$status=2;// mail de résa sera envoyé à l'affectation dans résa à traiter
}
return $status;
}
static public function delete_expl($expl_id){
$req="delete from serialcirc_expl where num_serialcirc_expl_id =$expl_id";
pmb_mysql_query($req);
$req="delete from serialcirc_circ where num_serialcirc_circ_expl =$expl_id";
pmb_mysql_query($req);
}
public function copy_accept($copy_id){
global $msg, $biblio_name, $biblio_email, $PMBuseremailbcc;
if(!$this->index_info_copy[$copy_id]) return false;
$copy=$this->index_info_copy[$copy_id];
$objet=$msg["serialcirc_circ_title"];
$texte_mail = $msg["serialcirc_copy_accepted_mail_text"];
$texte_mail = str_replace("!!issue!!", $copy['perio']."-".$copy['numero'], $texte_mail);
$texte_mail = str_replace("!!biblio_name!!", $biblio_name, $texte_mail);
mailpmb($copy['empr']["prenom"]." ".$copy['empr']["nom"], $copy['empr']["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
$req="update serialcirc_copy set serialcirc_copy_state=1 where id_serialcirc_copy=$copy_id ";
pmb_mysql_query($req);
return true;
}
public function copy_isdone($bul_id){
global $msg,$biblio_name, $biblio_email,$PMBuseremailbcc;
$req="select * from serialcirc_copy where num_serialcirc_copy_bulletin=$bul_id ";
$resultat=pmb_mysql_query($req);
if ($resultat && pmb_mysql_num_rows($resultat)) {
while($r=pmb_mysql_fetch_object($resultat)){
// envoit des mails
if($copy=$this->index_info_copy[$r->id_serialcirc_copy]){
$objet=$msg["serialcirc_circ_title"];
$texte_mail = $msg['serialcirc_copy_isdone_mail_text'];
$texte_mail = str_replace("!!issue!!", $copy['perio']."-".$copy['numero'], $texte_mail);
$texte_mail = str_replace("!!see!!", "".$copy['numero']."", $texte_mail);
$texte_mail = str_replace("!!biblio_name!!", $biblio_name, $texte_mail);
mailpmb($copy['empr']["prenom"]." ".$copy['empr']["nom"], $copy['empr']["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
}
}
// on efface
$req="delete from serialcirc_copy where num_serialcirc_copy_bulletin=$bul_id ";
$resultat=pmb_mysql_query($req);
}
}
public function copy_none($copy_id){
global $msg, $biblio_name, $biblio_email, $PMBuseremailbcc;
if(!$this->index_info_copy[$copy_id]) return false;
$req="delete from serialcirc_copy where id_serialcirc_copy=$copy_id";
pmb_mysql_query($req);
$copy=$this->index_info_copy[$copy_id];
$objet = $msg["serialcirc_circ_title"];
$texte_mail=$msg['serialcirc_copy_no_mail_text'];
$texte_mail=str_replace("!!issue!!", $copy['perio']."-".$copy['numero'], $texte_mail);
$texte_mail = str_replace("!!biblio_name!!", $biblio_name, $texte_mail);
mailpmb($copy['empr']["prenom"]." ".$copy['empr']["nom"], $copy['empr']["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
return true;
}
public function ask_send_mail($expl_id,$empr_id,$objet,$texte_mail){
global $biblio_name,$biblio_email,$PMBuseremailbcc;
$expl_info=$this->expl_info($expl_id);
$empr_info=$this->empr_info($empr_id);
$texte_mail=str_replace("!!issue!!", $expl_info['perio']."-".$expl_info['numero'], $texte_mail);
$texte_mail = str_replace("!!biblio_name!!", $biblio_name, $texte_mail);
mailpmb($empr_info["prenom"]." ".$empr_info["nom"], $empr_info["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
return true;
}
public function resa_accept($expl_id,$empr_id){
$req="select * from bulletins, exemplaires where bulletin_id=expl_bulletin and expl_id=$expl_id";
$res=pmb_mysql_query($req);
if ($r=pmb_mysql_fetch_object($res)) {
// $resa=new reservation($empr_id,0,$r->bulletin_id);
// $resa->add();
$req="update serialcirc_circ set serialcirc_circ_hold_asked=2 where
num_serialcirc_circ_expl=$expl_id and num_serialcirc_circ_empr=$empr_id";
$res=pmb_mysql_query($req);
}
// mail de résa sera envoyé à l'affectation dans résa à traité
return true;
}
public function resa_none($expl_id,$empr_id){
global $msg;
$req="update serialcirc_circ set serialcirc_circ_hold_asked=0 where
num_serialcirc_circ_expl=$expl_id and num_serialcirc_circ_empr=$empr_id";
$res=pmb_mysql_query($req);
// mail
$this->ask_send_mail($expl_id,$empr_id,$msg["serialcirc_circ_title"],$msg['serialcirc_resa_no_mail_text']);
return true;
}
public function get_all_next_empr_id($expl_id){
}
public function get_next_diff_id($expl_id){
$found=0;
foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $id_diff => $diffusion){
// pas en circ on retourne le premier
if(!$this->info_expl[$expl_id]['num_diff']) return $id_diff;
if($id_diff==$this->info_expl[$expl_id]['num_diff'])$found=1;
elseif( $found ){
return $id_diff;
}
}
// le dernier l'a consulté; pas de suivant;
return 0;
}
public function get_next_empr_id($expl_id) {
$found = 0;
$current_group = '';
foreach ($this->info_circ[$expl_id] as $empr_id => $info_circ) {
if ($found && (!$current_group || ($current_group != $info_circ['group_name']))) {
// On a trouvé au tour d'avant et cet utilisateur n'est pas du même groupe
return $empr_id;
}
if (!$this->info_expl[$expl_id]['current_empr']) {
// Premier retour, on passe au deuxième emprunteur
$found = 1;
continue;
}
if ($this->info_expl[$expl_id]['current_empr'] == $empr_id) {
$current_group = $info_circ['group_name'];
$found = 1;
}
}
return 0;
}
// l'exemplaire revient à la bib
public function return_expl($expl_id){
global $msg;
if($this->info_expl[$expl_id]['serialcirc_type'] == SERIALCIRC_TYPE_rotative){
// delete et changement de statut éventuel
$status=$this->delete_diffusion($expl_id);
}else{// SERIALCIRC_TYPE_star
// envoi au empr suivant
$next_diff_id = $this->get_next_diff_id($expl_id);
$next_empr_id = $this->get_next_empr_id($expl_id);
if($next_empr_id){
$req="UPDATE serialcirc_expl SET num_serialcirc_expl_serialcirc_diff=".$next_diff_id.",
serialcirc_expl_state_circ=1,
serialcirc_expl_ret_asked=0,
serialcirc_expl_trans_asked=0,
serialcirc_expl_trans_doc_asked=0,
num_serialcirc_expl_current_empr=".$next_empr_id."
where num_serialcirc_expl_id= $expl_id";
pmb_mysql_query($req);
$status=2;
}else{
// C'est terminé!
$status=$this->delete_diffusion($expl_id);
}
}
switch($status){
case "2":
$info=$msg["circ_retour_ranger_resa"];
break;
default://On ne mets pas de message différent si l'exemplaire a déjà été retourné
$info=$msg["serialcirc_info_retour"];
break;
}
return $info;
}
public function print_diffusion($expl_id,$start_diff_id){
$tpl=$this->build_print_diffusion($expl_id,$start_diff_id);
global $class_path;
$html2pdf = new Html2Pdf('P','A4','fr');
$html2pdf->writeHTML($tpl);
$html2pdf->output('diffusion.pdf');
}
public function print_sel_diffusion($list){
foreach($list as $circ){
$expl_id=$circ['expl_id'];
$start_diff_id=$circ['start_diff_id'];
$tpl.=$this->build_print_diffusion($expl_id,$start_diff_id);
}
global $class_path;
$html2pdf = new Html2Pdf('P','A4','fr');
$html2pdf->writeHTML($tpl);
$html2pdf->output('diffusion.pdf');
}
public function build_print_diffusion($expl_id,$start_diff_id){
global $serialcirc_circ_pdf_diffusion,$charset,$serialcirc_circ_pdf_diffusion_destinataire;
global $msg;
// AP : start_diff_id est en fait maintenant l'id de l'emprunteur
// Si la circulation est déjà lancée, on passe par la table serialcirc_circ
if (count($this->info_circ[$expl_id])) {
return $this->build_print_diffusion_from_current_circ($expl_id,$start_diff_id);
}
$end = false;
// On remet l'identifiant de diffusion pour garder le fonctionnement précédent
if(is_array($this->info_expl[$expl_id]['serialcirc_diff']->diffusion)) {
foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
// Si l'identifiant n'est pas transmis on prend le premier
// Si l'identifiant correspond à l'identifiant courant, on récupère l'identifiant de la diffusion
if(!$start_diff_id || (($diffusion["empr_type"] == SERIALCIRC_EMPR_TYPE_empr) && ($start_diff_id == $diffusion['num_empr']))){
$start_diff_id = $diff_id;
break;
}
// Si c'est un groupe, on le parcourt
if(($diffusion["empr_type"] == SERIALCIRC_EMPR_TYPE_group)) {
foreach ($diffusion['group'] as $empr) {
if ($start_diff_id == $empr['num_empr']) {
$start_diff_id = $diff_id;
//break 2;
$end = true;
break;
}
}
if($end) break;
}
}
}
if (!$this->info_expl[$expl_id]) return '';
$req="UPDATE serialcirc_expl SET num_serialcirc_expl_serialcirc_diff=".$start_diff_id.",
serialcirc_expl_state_circ=1,
serialcirc_expl_start_date=CURDATE()
where num_serialcirc_expl_id= $expl_id";
pmb_mysql_query($req);
$req="select date_format(CURDATE(), '".$msg["format_date"]."') as print_date";
$result = pmb_mysql_query($req);
$obj = pmb_mysql_fetch_object($result);
$print_date = $obj->print_date;
$tpl = $serialcirc_circ_pdf_diffusion;
$tpl=str_replace("!!expl_cb!!", htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!periodique!!", htmlentities($this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!numero!!", htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!print_date!!", htmlentities($print_date,ENT_QUOTES,$charset), $tpl);
// $tpl=str_replace("!!abonnement!!", htmlentities($this->info_expl[$expl_id]['serialcirc_diff']->abt_name,ENT_QUOTES,$charset), $tpl);
if($start_diff_id) {
$found = 0;
} else {
$found = 1;
}
$empr_list = array();
$empr_list_to_print = array();
foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
if($start_diff_id && !$found){
if($start_diff_id==$diff_id)$found=1;
}
if($found){
$diff_list[]=$diff_id;
if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
$name=$diffusion["empr_name"];
foreach($diffusion['group'] as $empr_group){
$empr_list[$empr_group["num_empr"]]=$diff_id;
if($empr_group["duration"])
$empr_days[$empr_group["num_empr"]]=$empr_group["duration"];
else
$empr_days[$empr_group["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
if($diffusion['type_diff']==1 && !$empr_group["responsable"]){
// groupe marguerite: on n'imprimera pas ce lecteur sauf le responsable
//$empr_no_display[$empr_group["num_empr"]]=1;
}
}
}else {
$name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
$empr_list[$diffusion["num_empr"]]=$diff_id;
if($diffusion["duration"]) $empr_days[$diffusion["num_empr"]]=$diffusion["duration"]; // durée de consultation particulière
else $empr_days[$diffusion["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
}
if(($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_star) && !count($empr_list_to_print)){
// on n'imprime que le suivant dans la liste
$empr_list_to_print = $empr_list;
}
}
$last_empr=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]];
}
if (!count($empr_list_to_print)) {
$empr_list_to_print = $empr_list;
}
$this->gen_circ($empr_list,$empr_days, $expl_id);
$gen_tpl= new serialcirc_print_fields($this->info_expl[$expl_id]['num_serialcirc']);
if (!$gen_tpl->circ_tpl) {
$gen_tpl->circ_tpl = serialcirc_print_fields::get_default_tpl();
}
$header_list=$gen_tpl->get_header_list();
$nb_col=count($header_list);
if (!$nb_col) return '';
$width_col=(int) (100/$nb_col);
$th = "";
foreach($header_list as $titre){
$th.="
".htmlentities($titre,ENT_QUOTES,$charset)."
";
}
$tpl=str_replace("!!th!!", $th, $tpl);
$tr_list="";
foreach($empr_list_to_print as $empr_id=>$diff_id){
if(isset($empr_no_display[$empr_id]) && $empr_no_display[$empr_id]) continue;
$data['empr_id']=$empr_id;
$data_fields=$gen_tpl->get_line($data);
$td_list="";
foreach($data_fields as $field){
$td_list.="
".htmlentities($field,ENT_QUOTES,$charset)."
";
}
$tr_list.="
".$td_list."
";
}
$tpl=str_replace("!!table_contens!!", $tr_list, $tpl);
if($gen_tpl->piedpage){
$data=array();
$data['expl']=$this->info_expl[$expl_id];
$data['last_empr']=$last_empr;
// printr($data['expl']);
$tpl.=H2o::parseString($gen_tpl->piedpage)->render($data);
}
if($this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){
//pas de retour sur site, suppression de la circulation.
$this->delete_diffusion($expl_id);
}
if($charset!="utf-8"){
$tpl=utf8_encode($tpl);
}
return $tpl;
}
public function build_print_diffusion_from_current_circ($expl_id,$start_empr_id){
global $serialcirc_circ_pdf_diffusion,$charset,$serialcirc_circ_pdf_diffusion_destinataire;
global $msg;
if (!$this->info_expl[$expl_id]) return '';
$req="UPDATE serialcirc_expl SET
num_serialcirc_expl_current_empr = ".$start_empr_id.",
serialcirc_expl_state_circ=1,
serialcirc_expl_start_date=CURDATE()
where num_serialcirc_expl_id= $expl_id";
pmb_mysql_query($req);
$req="select date_format(CURDATE(), '".$msg["format_date"]."') as print_date";
$result = pmb_mysql_query($req);
$obj = pmb_mysql_fetch_object($result);
$print_date = $obj->print_date;
$tpl = $serialcirc_circ_pdf_diffusion;
$tpl=str_replace("!!expl_cb!!", htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!periodique!!", htmlentities($this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!numero!!", htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!print_date!!", htmlentities($print_date,ENT_QUOTES,$charset), $tpl);
$found = 0;
if(!$start_empr_id) {
$found = 1;
}
$gen_tpl = new serialcirc_print_fields($this->info_expl[$expl_id]['num_serialcirc']);
if (!$gen_tpl->circ_tpl) {
$gen_tpl->circ_tpl = serialcirc_print_fields::get_default_tpl();
}
$header_list = $gen_tpl->get_header_list();
$nb_col = count($header_list);
if (!$nb_col) return '';
$width_col = (int) (100/$nb_col);
$th = '';
foreach($header_list as $titre){
$th.= "
".htmlentities($titre,ENT_QUOTES,$charset)."
";
}
$tpl = str_replace("!!th!!", $th, $tpl);
$tr_list = "";
$current_group = '';
foreach ($this->info_circ[$expl_id] as $empr_id => $info_circ) {
if($found && ($this->info_expl[$expl_id]['serialcirc_type'] == SERIALCIRC_TYPE_star) && $current_group && ($current_group != $info_circ['group_name'])){
// On a changé de groupe et on est en circulation en étoile, on s'arrête là
break;
}
$current_group = $info_circ['group_name'];
if ($start_empr_id && !$found && ($start_empr_id == $empr_id)) {
$found = 1;
}
if (!$found) {
continue;
}
$data['empr_id'] = $empr_id;
$data_fields = $gen_tpl->get_line($data);
$td_list="";
foreach($data_fields as $field){
$td_list.="
".htmlentities($field,ENT_QUOTES,$charset)."
";
}
$tr_list.="
".$td_list."
";
if(($this->info_expl[$expl_id]['serialcirc_type'] == SERIALCIRC_TYPE_star) && !$current_group){
// On n'est pas dans un groupe et on est en circulation en étoile, on s'arrête là
break;
}
}
$tpl=str_replace("!!table_contens!!", $tr_list, $tpl);
if ($gen_tpl->piedpage) {
$data = array();
$data['expl'] = $this->info_expl[$expl_id];
$data['last_empr'] = $last_empr;
$tpl.= H2o::parseString($gen_tpl->piedpage)->render($data);
}
if($charset != "utf-8"){
$tpl = utf8_encode($tpl);
}
return $tpl;
}
public function gen_circ($empr_list, $empr_days,$expl_id){
$order=0;
$nb_days=0;
if($this->info_expl[$expl_id]['serialcirc_diff']->virtual_circ){
foreach($empr_list as $empr_id=>$diff_id){
$req=" update serialcirc_circ SET
serialcirc_circ_expected_date=DATE_ADD(CURDATE(),INTERVAL $nb_days DAY)
where
num_serialcirc_circ_diff=".$diff_id ." and
num_serialcirc_circ_expl=".$expl_id ." and
num_serialcirc_circ_empr=". $empr_id." and
serialcirc_circ_subscription=1 ";
pmb_mysql_query($req);
$order++;
$nb_days+=$empr_days[$empr_id];
}
}else{
$req=" delete from serialcirc_circ where num_serialcirc_circ_expl=".$expl_id ;
pmb_mysql_query($req);
foreach($empr_list as $empr_id=>$diff_id){
$req=" insert into serialcirc_circ SET
num_serialcirc_circ_diff=".$diff_id .",
num_serialcirc_circ_expl=".$expl_id .",
num_serialcirc_circ_empr=". $empr_id.",
serialcirc_circ_subscription=1,
serialcirc_circ_order=". $order.",
serialcirc_circ_expected_date=DATE_ADD(CURDATE(),INTERVAL $nb_days DAY),
num_serialcirc_circ_serialcirc=".$this->info_expl[$expl_id]['num_serialcirc'].",
serialcirc_circ_group_name='".$this->info_expl[$expl_id]['serialcirc_diff']->diffusion[$diff_id]['empr_name']."'";
pmb_mysql_query($req);
$order++;
$nb_days+=$empr_days[$empr_id];
}
}
// on change le statut si demandé
if($this->info_expl[$expl_id]['serialcirc_diff']->expl_statut_circ){
$req="update exemplaires set expl_statut=".$this->info_expl[$expl_id]['serialcirc_diff']->expl_statut_circ." where expl_id=".$expl_id;
pmb_mysql_query($req);
}
}
public function send_mail($expl_id,$objet,$texte_mail){
global $biblio_name,$biblio_email,$PMBuseremailbcc;
if (!$this->info_expl[$expl_id]) return false;
// Si pas encore recu par l'emprunteur on ne fait rien...
if(!$empr_id = $this->info_expl[$expl_id]['current_empr']) return false;
$empr_info = $this->empr_info($empr_id);
$texte_mail=str_replace("!!issue!!", $this->info_expl[$expl_id]["serial_title"]." - ".$this->info_expl[$expl_id]['numero'], $texte_mail);
return mailpmb($empr_info["prenom"]." ".$empr_info["nom"], $empr_info["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
}
public function send_alert($expl_id){
global $biblio_name, $biblio_email, $PMBuseremailbcc, $msg, $opac_url_base, $opac_connexion_phrase;
$req=" delete from serialcirc_circ where num_serialcirc_circ_expl=".$expl_id;
pmb_mysql_query($req);
foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
$diff_list[]=$diff_id;
if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
foreach($diffusion['group'] as $empr_group){
$empr_list[$empr_group["num_empr"]]=$diff_id;
}
}else {
$empr_list[$diffusion["num_empr"]]=$diff_id;
}
}
$req="UPDATE serialcirc_expl SET
serialcirc_expl_state_circ=0,
serialcirc_expl_start_date=CURDATE()
where num_serialcirc_expl_id= $expl_id";
pmb_mysql_query($req);
$order=0;
foreach($empr_list as $empr_id=>$diff_id){
$req=" insert into serialcirc_circ SET
num_serialcirc_circ_diff=".$diff_id .",
num_serialcirc_circ_expl=".$expl_id .",
num_serialcirc_circ_empr=". $empr_id.",
serialcirc_circ_subscription=0,
serialcirc_circ_order=". $order.",
num_serialcirc_circ_serialcirc=".$this->info_expl[$expl_id]['num_serialcirc'].",
serialcirc_circ_group_name='".$this->info_expl[$expl_id]['serialcirc_diff']->diffusion[$diff_id]['empr_name']."'";
pmb_mysql_query($req);
$order++;
// envoi email alerte
$expl_info=$this->expl_info($expl_id);
$empr_info=$this->empr_info($empr_id);
$dates = time();
$login = $empr_info['empr_login'];
$code=md5($opac_connexion_phrase.$login.$dates);
$texte = str_replace('!!date_conex!!',$dates,$texte);
$issue = "".$expl_info['perio']."-".$expl_info['numero']."";
$objet = $msg['serialcirc_send_alert_mail_object'];
$texte_mail = $msg['serialcirc_send_alert_mail_text'];
$texte_mail = str_replace("!!issue!!", $issue, $texte_mail);
$texte_mail = str_replace("!!biblio_name!!", $biblio_name, $texte_mail);
mailpmb($empr_info["prenom"]." ".$empr_info["nom"], $empr_info["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
}
}
public function call_expl($expl_id){
global $mail_, $biblio_name, $msg;
$req="UPDATE serialcirc_expl SET
serialcirc_expl_ret_asked=1
where num_serialcirc_expl_id= $expl_id";
pmb_mysql_query($req);
if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
$req="UPDATE serialcirc_circ SET
serialcirc_circ_ret_asked = serialcirc_circ_ret_asked+1
where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
pmb_mysql_query($req);
$expl_info=$this->expl_info($expl_id);
$objet=$msg["serialcirc_circ_title"];
$texte_mail = $msg["serialcirc_call_mail_text"];
$texte_mail = str_replace("!!issue!!", $expl_info['perio']."-".$expl_info['numero'], $texte_mail);
$texte_mail = str_replace("!!biblio_name!!", $biblio_name, $texte_mail);
$status=$this->send_mail($expl_id,$objet,$texte_mail);
return $status;
}
public function call_insist($expl_id){
global $mail_ ,$msg, $biblio_name;
$req="UPDATE serialcirc_expl SET
serialcirc_expl_trans_doc_asked=1
where num_serialcirc_expl_id= $expl_id";
pmb_mysql_query($req);
if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
$req="UPDATE serialcirc_circ SET
serialcirc_circ_trans_doc_asked = serialcirc_circ_trans_doc_asked+1
where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
pmb_mysql_query($req);
$expl_info=$this->expl_info($expl_id);
$objet=$msg["serialcirc_circ_title"];
$texte_mail = $msg["serialcirc_transmission_mail_text"];
$texte_mail = str_replace("!!issue!!", $expl_info['perio']."-".$expl_info['numero'], $texte_mail);
$texte_mail = str_replace("!!biblio_name!!", $biblio_name, $texte_mail);
$status=$this->send_mail($expl_id,$objet,$texte_mail);
return $status;
}
public function do_trans($expl_id){
global $msg, $biblio_name;
$req="UPDATE serialcirc_expl SET
serialcirc_expl_trans_doc_asked=2
where num_serialcirc_expl_id= $expl_id";
pmb_mysql_query($req);
if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
$req="UPDATE serialcirc_circ SET
serialcirc_circ_trans_doc_asked = serialcirc_circ_trans_doc_asked+1
where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
pmb_mysql_query($req);
$expl_info=$this->expl_info($expl_id);
$objet=$msg["serialcirc_circ_title"];
$texte_mail = $msg["serialcirc_transmission_mail_text"];
$texte_mail = str_replace("!!issue!!", $expl_info['perio']."-".$expl_info['numero'], $texte_mail);
$texte_mail = str_replace("!!biblio_name!!", $biblio_name, $texte_mail);
$status=$this->send_mail($expl_id,$objet,$texte_mail);
return $status;
}
public function build_diff_sel($expl_id){
global $charset;
$tpl="
";
$list="";
if (count($this->info_circ[$expl_id])) {
$current_group = '';
$current_group_first_empr = 0;
$checked = '';
foreach ($this->info_circ[$expl_id] as $empr_id => $info_circ) {
if ($current_group && ($info_circ['group_name'] != $current_group)) {
// On a fini le parcourt d'un groupe, on l'affiche, on réinitialise
$list.="";
$current_group = '';
$current_group_first_empr = 0;
$checked = '';
}
if ($info_circ['current_owner'] || ($this->info_expl[$expl_id]['current_empr'] == $empr_id)) {
$checked = " selected='selected' ";
}
if ($info_circ['group_name'] && ($info_circ['group_name'] == $current_group)) {
// On est toujours dans le groupe, on ne fait rien
continue;
}
if ($info_circ['group_name']) {
// On rentre dans un groupe, on le stocke, on n'affiche rien pour l'instant
$current_group = $info_circ['group_name'];
$current_group_first_empr = $empr_id;
continue;
}
// Si on arrive ici, on est dans le cas d'un emprunteur sans groupe
$empr_infos = $this->empr_info($empr_id);
$list.="";
$checked = '';
}
$tpl=str_replace("!!diff_select!!", $list, $tpl);
return $tpl;
}
foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diffusion){
if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_empr && $this->info_expl[$expl_id]['serialcirc_diff']->virtual_circ ){
if( !$this->info_circ[$expl_id][$diffusion["num_empr"]]['subscription']) continue;
}
if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ) {
$name=$diffusion["empr_name"];
// On récupère le premier emprunteur du groupe
$num_empr = $diffusion['group'][0]['num_empr'];
} else {
$name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
$num_empr = $diffusion['num_empr'];
}
if($this->info_expl[$expl_id]['num_diff'] == $diffusion['id']) {
$checked=" selected='selected' ";
} else {
$checked="";
}
$list.="";
}
$tpl=str_replace("!!diff_select!!", $list, $tpl);
return $tpl;
}
public function build_empr_list($expl_id){
global $charset;
// on liste les empr réel et ceux du group
$name_list="";
foreach ($this->info_circ[$expl_id] as $empr_id => $info_circ) {
$empr_infos = $this->empr_info($empr_id);
$name = "".htmlentities(($info_circ['group_name'] ? '('.$info_circ['group_name'].') ' : '').$empr_infos["empr_libelle"],ENT_QUOTES,$charset)." ";
if ($info_circ['current_owner'] || ($this->info_expl[$expl_id]['current_empr'] == $empr_id)) {
$name = "".$name."";
}
$name_list.= $name;
}
return $name_list;
}
public function build_expl_form($expl_id,$tpl,$zone=''){
global $charset;
$tpl=str_replace("!!expl_id!!", $expl_id, $tpl);
$tpl=str_replace("!!bull_id!!", $this->info_expl[$expl_id]['bulletin_id'], $tpl);
$tpl=str_replace("!!expl_cb!!", "".htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset)."", $tpl);
$tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset)."", $tpl);
$tpl=str_replace("!!periodique!!","". htmlentities( $this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!numero!!","". htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset)."", $tpl);
$tpl=str_replace("!!abonnement!!", "".htmlentities( $this->info_expl[$expl_id]['expl_abt_name'],ENT_QUOTES,$charset)."", $tpl);
$tpl=str_replace("!!destinataire!!",$this->build_diff_sel($expl_id), $tpl);
$tpl=str_replace("!!empr_list!!", $this->build_empr_list($expl_id), $tpl);
$tpl=str_replace("!!zone!!", $zone, $tpl);
return $tpl;
}
public function gen_circ_form($cb="") {
global $charset, $serialcirc_circ_form,$serialcirc_circ_liste;
global $serialcirc_circ_liste_alerter,$serialcirc_circ_liste_alerter_tr,$serialcirc_circ_liste_is_alerted_tr;
global $serialcirc_circ_liste_circuler,$serialcirc_circ_liste_circuler_tr;
global $serialcirc_circ_liste_circulation,$serialcirc_circ_liste_circulation_rotative_tr,$serialcirc_circ_liste_circulation_star_tr;
global $serialcirc_circ_liste_retard,$serialcirc_circ_liste_retard_rotative_tr,$serialcirc_circ_liste_retard_star_tr;
global $serialcirc_copy,$serialcirc_copy_tr,$serialcirc_copy_ok_tr;
global $serialcirc_circ_liste_reservation,$serialcirc_circ_liste_reservation_tr;
global $deflt_docs_location, $msg,$pmb_lecteurs_localises;
$circ_form=$serialcirc_circ_form;
$circ_form = str_replace("!!message!!", "", $circ_form);
$circ_form.=$serialcirc_circ_liste;
// select "localisation"
if($pmb_lecteurs_localises){
$circ_form = str_replace("!!localisation!!", gen_liste ("select distinct idlocation, location_libelle from docs_location, docsloc_section where num_location=idlocation order by 2 ", "idlocation", "location_libelle", 'location_id', "document.forms['form_pointage'].submit();", $this->id_location, "", "","","",0), $circ_form);
//mise en session pour passer la localisation à l'impression des fiches de circulation
$_SESSION['serialcirc_location']=$this->id_location;
} else $circ_form=str_replace("!!localisation!!","",$circ_form);
$liste_alerter=$tr_list="";
if($nb_liste_alerter=count($this->classement['alert'])){
$liste_alerter=$serialcirc_circ_liste_alerter;
foreach($this->classement['alert'] as $expl_id){
if($this->is_alerted($expl_id))$tr=$serialcirc_circ_liste_is_alerted_tr;
else $tr=$serialcirc_circ_liste_alerter_tr;
$tr_list.=$this->build_expl_form($expl_id,$tr,"alert");
}
$liste_alerter=str_replace("!!liste_alerter!!", $tr_list, $liste_alerter);
}
$liste_circuler=$tr_list="";
if($nb_liste_circuler=count($this->classement['to_be_circ'])){
$liste_circuler=$serialcirc_circ_liste_circuler;
foreach($this->classement['to_be_circ'] as $expl_id){
$tr=$serialcirc_circ_liste_circuler_tr;
$tr_list.=$this->build_expl_form($expl_id,$tr,"to_be_circ");
}
$liste_circuler=str_replace("!!liste_circuler!!",$tr_list , $liste_circuler);
}
$liste_circulation=$tr_list="";
if($nb_liste_circulation=count($this->classement['in_circ'])){
$liste_circulation=$serialcirc_circ_liste_circulation;
foreach($this->classement['in_circ'] as $expl_id){
if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
$tr=$serialcirc_circ_liste_circulation_rotative_tr;
}else{
$tr=$serialcirc_circ_liste_circulation_star_tr;
}
if ($this->info_expl[$expl_id]['serialcirc_checked']) {
$tr=str_replace("!!bt_rappel_perio!!"," ",$tr);
$tr=str_replace("!!bt_exige_transmission!!"," ",$tr);
} else {
$tr=str_replace("!!bt_rappel_perio!!","",$tr);
$tr=str_replace("!!bt_exige_transmission!!","",$tr);
}
$tr_list.=$this->build_expl_form($expl_id,$tr,"in_circ");
}
$liste_circulation=str_replace("!!liste_circulation!!", $tr_list, $liste_circulation);
}
$liste_retard=$tr_list="";
if($nb_liste_retard=count($this->classement['retard'])){
$liste_retard=$serialcirc_circ_liste_retard;
foreach($this->classement['retard'] as $expl_id){
if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
$tr=$serialcirc_circ_liste_retard_rotative_tr;
}else{
$tr=$serialcirc_circ_liste_retard_star_tr;
}
$tr_list.=$this->build_expl_form($expl_id,$tr,"in_late");
}
$liste_retard=str_replace("!!liste_retard!!", $tr_list, $liste_retard);
}
$liste_reproduction=$tr_list="";
if($nb_liste_reproduction=count($this->info_copy)){
$liste_reproduction=$serialcirc_copy;
foreach($this->info_copy as $copy){
if($copy['state'] == 1){
$tr=$serialcirc_copy_ok_tr;
}else{
$tr=$serialcirc_copy_tr;
}
$tr=str_replace("!!date!!",htmlentities(format_date ($copy['date']),ENT_QUOTES,$charset),$tr);
$tr=str_replace("!!periodique!!","".htmlentities($copy['perio'],ENT_QUOTES,$charset)."",$tr);
$tr=str_replace("!!numero!!","".htmlentities($copy['numero'],ENT_QUOTES,$charset)." ".$copy['mention_date']."",$tr);
$tr=str_replace("!!empr_name!!","".htmlentities($copy['empr']['empr_libelle'],ENT_QUOTES,$charset)."",$tr);
$tr=str_replace("!!empr_message!!",htmlentities($copy['comment'],ENT_QUOTES,$charset),$tr);
$tpl=str_replace("!!zone!!", "copy", $tpl);
$tr=str_replace("!!id_copy!!",$copy['id'],$tr);
$tr_list.=$tr;
}
$liste_reproduction=str_replace("!!liste_reproduction!!", $tr_list, $liste_reproduction);
}
$liste_resa=$tr_list="";
if($nb_liste_resa=count($this->info_resa)){
$liste_resa=$serialcirc_circ_liste_reservation;
foreach($this->info_resa as $resa){
$tr=$serialcirc_circ_liste_reservation_tr;
$tr=str_replace("!!periodique!!",htmlentities($resa['perio'],ENT_QUOTES,$charset),$tr);
$tr=str_replace("!!numero!!",htmlentities($resa['numero'],ENT_QUOTES,$charset)." ".$resa['mention_date'],$tr);
$tr=str_replace("!!empr_name!!","".htmlentities($resa['empr']['empr_libelle'],ENT_QUOTES,$charset)."",$tr);
$tpl=str_replace("!!zone!!", "resa", $tpl);
$tr=str_replace("!!empr_id!!",$resa['id_empr'],$tr);
$tr=str_replace("!!expl_id!!",$resa['id_expl'],$tr);
$tr=str_replace("!!id_serialcirc_circ!!",$resa['id'],$tr);
$tr_list.=$tr;
}
$liste_resa=str_replace("!!liste_resa!!", $tr_list, $liste_resa);
}
$liste_resa=str_replace("!!liste_resa!!", $liste_resa, $liste_resa);
if($nb_liste_alerter) $circ_form = str_replace("!!liste_alerter!!" , gen_plus("liste_alerter",$msg["serialcirc_circ_list_bull_alerter"]." ($nb_liste_alerter)",$liste_alerter), $circ_form);
else $circ_form = str_replace("!!liste_alerter!!" ,"" , $circ_form);
if($nb_liste_circuler) $circ_form = str_replace("!!liste_circuler!!" , gen_plus("liste_circuler",$msg["serialcirc_circ_list_bull_circuler"]." ($nb_liste_circuler)",$liste_circuler), $circ_form);
else $circ_form = str_replace("!!liste_circuler!!" , "", $circ_form);
if($nb_liste_circulation)$circ_form = str_replace("!!liste_circulation!!" , gen_plus("liste_circulation",$msg["serialcirc_circ_list_bull_circulation"]." ($nb_liste_circulation)",$liste_circulation), $circ_form);
else $circ_form = str_replace("!!liste_circulation!!", "", $circ_form);
if($nb_liste_retard) $circ_form = str_replace("!!liste_retard!!" , gen_plus("liste_retard",$msg["serialcirc_circ_list_bull_retards"]." ($nb_liste_retard)",$liste_retard), $circ_form);
else $circ_form = str_replace("!!liste_retard!!", "", $circ_form);
if($nb_liste_reproduction)$circ_form = str_replace("!!liste_reproduction!!" , gen_plus("liste_reproduction",$msg["serialcirc_circ_list_bull_reproduction"]." ($nb_liste_reproduction)",$liste_reproduction), $circ_form);
else $circ_form = str_replace("!!liste_reproduction!!", "", $circ_form);
if($nb_liste_resa)$circ_form = str_replace("!!liste_resa!!" , gen_plus("liste_resa",$msg["serialcirc_circ_list_bull_reservation"]." ($nb_liste_resa)",$liste_resa), $circ_form);
else $circ_form = str_replace("!!liste_resa!!", "", $circ_form);
return $circ_form;
}
public function gen_pointage_form($point_expl_id) {
global $charset, $serialcirc_pointage_form,$serialcirc_circ_liste;
global $serialcirc_circ_liste_alerter,$serialcirc_circ_liste_alerter_tr,$serialcirc_circ_liste_is_alerted_tr;
global $serialcirc_circ_liste_circuler,$serialcirc_circ_liste_circuler_tr;
global $serialcirc_circ_liste_circulation,$serialcirc_circ_liste_circulation_rotative_tr,$serialcirc_circ_liste_circulation_star_tr;
global $serialcirc_circ_liste_retard,$serialcirc_circ_liste_retard_rotative_tr,$serialcirc_circ_liste_retard_star_tr;
global $serialcirc_copy,$serialcirc_copy_tr,$serialcirc_copy_ok_tr;
global $serialcirc_circ_liste_reservation,$serialcirc_circ_liste_reservation_tr;
global $deflt_docs_location, $msg,$pmb_lecteurs_localises;
$circ_form=$serialcirc_pointage_form;
$liste_alerter=$tr_list="";
$nb_liste_circuler = 0;
$nb_liste_retard = 0;
$nb_liste_circulation = 0;
foreach($this->classement['alert'] as $expl_id){
if($expl_id==$point_expl_id){
$nb_liste_alerter=1;
$liste_alerter=$serialcirc_circ_liste_alerter;
if($this->is_alerted($expl_id))$tr=$serialcirc_circ_liste_is_alerted_tr;
else $tr=$serialcirc_circ_liste_alerter_tr;
$tr_list.=$this->build_expl_form($expl_id,$tr,"alert");
$liste_alerter=str_replace("!!liste_alerter!!", $tr_list, $liste_alerter);
break;
}
}
$liste_circuler=$tr_list="";
foreach($this->classement['to_be_circ'] as $expl_id){
if($expl_id==$point_expl_id){
$nb_liste_circuler=1;
$liste_circuler=$serialcirc_circ_liste_circuler;
foreach($this->classement['to_be_circ'] as $expl_id){
$tr=$serialcirc_circ_liste_circuler_tr;
$tr_list.=$this->build_expl_form($expl_id,$tr,"to_be_circ");
}
$liste_circuler=str_replace("!!liste_circuler!!",$tr_list , $liste_circuler);
break;
}
}
$liste_circulation=$tr_list="";
foreach($this->classement['in_circ'] as $expl_id){
if($expl_id==$point_expl_id){
$nb_liste_circulation=1;
$liste_circulation=$serialcirc_circ_liste_circulation;
if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
$tr=$serialcirc_circ_liste_circulation_rotative_tr;
}else{
$tr=$serialcirc_circ_liste_circulation_star_tr;
}
if ($this->info_expl[$expl_id]['serialcirc_diff']->checked) {
$tr=str_replace("!!bt_rappel_perio!!"," ",$tr);
$tr=str_replace("!!bt_exige_transmission!!"," ",$tr);
} else {
$tr=str_replace("!!bt_rappel_perio!!","",$tr);
$tr=str_replace("!!bt_exige_transmission!!","",$tr);
}
$tr_list.=$this->build_expl_form($expl_id,$tr,"in_circ");
$liste_circulation=str_replace("!!liste_circulation!!", $tr_list, $liste_circulation);
$liste_alerter="";
$nb_liste_alerter=0;
break;
}
}
$liste_retard=$tr_list="";
foreach($this->classement['retard'] as $expl_id){
if($expl_id==$point_expl_id){
$nb_liste_retard=1;
$liste_retard=$serialcirc_circ_liste_retard;
if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
$tr=$serialcirc_circ_liste_retard_rotative_tr;
}else{
$tr=$serialcirc_circ_liste_retard_star_tr;
}
$tr_list.=$this->build_expl_form($expl_id,$tr,"in_late");
$liste_retard=str_replace("!!liste_retard!!", $tr_list, $liste_retard);
break;
}
}
if($nb_liste_alerter) $circ_form = str_replace("!!liste_alerter!!" ,"".$msg["serialcirc_circ_list_bull_alerter"]." ".$liste_alerter, $circ_form);
else $circ_form = str_replace("!!liste_alerter!!" ,"" , $circ_form);
if($nb_liste_circuler) $circ_form = str_replace("!!liste_circuler!!" ,"".$msg["serialcirc_circ_list_bull_circuler"]." ".$liste_circuler, $circ_form);
else $circ_form = str_replace("!!liste_circuler!!" , "", $circ_form);
if($nb_liste_circulation)$circ_form = str_replace("!!liste_circulation!!","".$msg["serialcirc_circ_list_bull_circulation"]." ".$liste_circulation, $circ_form);
else $circ_form = str_replace("!!liste_circulation!!", "", $circ_form);
if($nb_liste_retard) $circ_form = str_replace("!!liste_retard!!" , "".$msg["serialcirc_circ_list_bull_retards"]." ".$liste_retard, $circ_form);
else $circ_form = str_replace("!!liste_retard!!", "", $circ_form);
return $circ_form;
}
public function gen_circ_cb($cb) {
global $serialcirc_circ_cb_notfound, $serialcirc_circ_cb_info;
$info="";
$req="select * from serialcirc_expl,exemplaires where expl_cb='$cb' and expl_id=num_serialcirc_expl_id ";
$resultat=pmb_mysql_query($req);
if ($resultat) {
if (!pmb_mysql_num_rows($resultat)) {
$this->info_cb['cb']='';
return str_replace("!!cb!!", $cb, $serialcirc_circ_cb_notfound);
}
$r=pmb_mysql_fetch_object($resultat);
$info.=$this->gen_pointage_form($r->expl_id);
}
return $info;
}
} //serialcirc class end
/*
*
*
*
*
* script perso d'impression de cote de périodique bulletiné dans la jounée et de liste de diffusion de circulation de périodique
* sur feuille d'étiquette autocollante
* $pmb_serialcirc_subst indique le fichier perso ou tout se qui suit doit être copier
*
*
*
*
*
*
if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
require_once($class_path."/parametres_perso.class.php");
require_once("$class_path/fpdf.class.php");
class serialcirc_subst extends serialcirc {
function gen_print_option($list){
global $charset;
global $std_header, $footer;
$list_serialized=serialize($list);
$sub="print_sel_diffusion";
if($list[0]['type']=="cote") $sub="print_sel_cote";
$tpl="
$std_header
".htmlentities("Sélection de l'étiquette de départ", ENT_QUOTES, $charset)."
$footer
";
return $tpl;
}
function print_diffusion($expl_id,$start_diff_id){
global $fpdf;
global $print_action;
$list=array();
$list[0]['expl_id']=$expl_id;
$list[0]['start_diff_id']=$start_diff_id;
if(!$print_action){
print $this->gen_print_option($list);
return;
}
}
function print_cote($expl_id=""){
global $fpdf;
global $print_action;
$list=array();
if(!$expl_id){
$req="select expl_id from exemplaires where expl_abt_num > 0 and create_date > concat(CURDATE(),' 00:00:00') and expl_id not in (
select num_serialcirc_expl_id from serialcirc_expl) order by create_date";
$i=0;
$resultat=pmb_mysql_query($req);
if (!pmb_mysql_num_rows($resultat)) return;
while($r=pmb_mysql_fetch_object($resultat)){
$list[$i]['expl_id']=$r->expl_id;
$list[$i]['type']="cote";
$i++;
}
}else{
$list[0]['expl_id']=$expl_id;
$list[0]['type']="cote";
}
if(!$print_action){
print $this->gen_print_option($list);
return;
}
}
function print_sel_diffusion($list){
global $fpdf;
global $print_action,$index_start;
if(!$print_action){
print $this->gen_print_option($list);
return;
}
//printr($list);return ;
if(!$index_start)$index_start=1;
$this->count=0;
$ourPDF = new $fpdf('P', 'mm', 'A4');
$ourPDF->Open();
$ourPDF->SetAutoPageBreak(0,0);
for($i=0;$i<$index_start-1;$i++){
$this->build($this->count++,$ourPDF,"");
}
foreach($list as $circ){
$expl_id=$circ['expl_id'];
$start_diff_id=$circ['start_diff_id'];
$tpl.=$this->build_print_diffusion($expl_id,$start_diff_id,$ourPDF);
}
//print $tpl;exit;
header("Content-Type: application/pdf");
$ourPDF->OutPut();
}
function build($num,$ourPDF,$data){
global $pmb_pdf_font;
if(!(($num)%14)) {
$ourPDF->addPage();
$ourPDF->SetLeftMargin(0);
$ourPDF->SetTopMargin(0);
}
if(!$data) return;
$num=$num-((int)($num/14)*14);
$hauteur=42;
if($num%2){
$x=110;
}else{
$x=6;
}
$y=($hauteur * (int)(($num)/2))+10;
//$info.=" num=$num; x=$x, y=$y " ;
// titre perio
$ourPDF->SetXY ($x,$y);
$ourPDF->setFont($pmb_pdf_font, 'BI', 10);
$ourPDF->multiCell(110, 3, $info.substr($data['titre'],0,52) , 0, 'L', 0);
if($data['cb']){
// Code barre
$ourPDF->SetXY ($x,$y+4);
$ourPDF->setFont($pmb_pdf_font, '', 10);
$ourPDF->multiCell(110, 3, "Ex ".substr($data['cb'],0,20)." Cote: ".substr($data['cote'],0,20) , 0, 'L', 0);
}
// Numéro & Date
$ourPDF->SetXY ($x,$y+7);
$ourPDF->setFont($pmb_pdf_font, '', 8);
$ourPDF->multiCell(110, 3, "".substr($data['numero_libelle'],0,20)." Date n° : ".substr($data['date_libelle'],0,30) , 0, 'L', 0);
// Date reception
$ourPDF->SetXY ($x,$y+10);
$ourPDF->setFont($pmb_pdf_font, '', 8);
$ourPDF->multiCell(110, 3, "Reçu le : ".substr($data['date_reception'],0,20)." ".substr($data['abt_name'],0,30) , 0, 'L', 0);
$i=0;
// empr list
if(is_array($data['empr'])){
foreach($data['empr']as $empr){
if($i==4){
$x=$x+30;
$i=0;
}
$ourPDF->SetXY ($x,$y+15+($i*3));
$ourPDF->setFont($pmb_pdf_font, '', 8);
$field=substr($empr['name'],0,5);
if($empr['pperso'])$field.="-".substr($empr['pperso'],0,5);
$ourPDF->multiCell(110, 3, $field , 0, 'L', 0);
$i++;
}
}
if((!is_array($data['empr']) || !count($data['empr'])) && $data['abt_name1']){
// aff abt
$ourPDF->SetXY ($x,$y+15);
$ourPDF->setFont($pmb_pdf_font, '', 10);
$ourPDF->multiCell(110, 3, substr($data['abt_name1'],0,30) , 0, 'L', 0);
$i=0;
}
}
function print_sel_cote($list){
global $fpdf,$msg;
global $print_action,$index_start;
if(!$print_action){
print $this->gen_print_option($list);
return;
}
//printr($list);return ;
if(!$index_start)$index_start=1;
for($i=0;$i<$index_start-1;$i++){
$this->build($this->count++,$ourPDF,"");
}
$this->count=0;
$ourPDF = new $fpdf('P', 'mm', 'A4');
$ourPDF->Open();
$ourPDF->SetAutoPageBreak(0,0);
foreach($list as $expl){
$expl_id=$expl['expl_id'];
$req="select *, date_format(create_date, '".$msg["format_date"]."') as aff_create_date from exemplaires,bulletins where expl_bulletin=bulletin_id and expl_id='$expl_id' ";
$resultat=pmb_mysql_query($req);
if (!pmb_mysql_num_rows($resultat)) return;
$r=pmb_mysql_fetch_object($resultat);
$this->info_expl[$r->expl_id]['expl_cb']= $r->expl_cb;
$this->info_expl[$r->expl_id]['expl_id']= $r->expl_id;
$this->info_expl[$r->expl_id]['expl_statut']= $r->expl_statut;
$this->info_expl[$r->expl_id]['expl_location']= $r->expl_location;
$this->info_expl[$r->expl_id]['bulletine_date']= $r->serialcirc_expl_bulletine_date;
$this->info_expl[$r->expl_id]['numero']= $r->bulletin_numero;
$this->info_expl[$r->expl_id]['mention_date']= $r->mention_date;
$this->info_expl[$r->expl_id]['bulletin_notice']= $r->bulletin_notice;
$this->info_expl[$r->expl_id]['bulletin_id']= $r->bulletin_id;
$this->info_expl[$r->expl_id]['num_notice']= $r->num_notice;
$print_date=$r->aff_create_date;
$req_serial="select * from notices where notice_id=".$r->bulletin_notice."";
$res_serial=pmb_mysql_query($req_serial);
if ($r_serial=pmb_mysql_fetch_object($res_serial)){
$this->info_expl[$r->expl_id]['serial_title']=$r_serial->tit1;
}
$data=array();
$data['titre']=$this->info_expl[$expl_id]['serial_title'];
$data['cb']=$this->info_expl[$expl_id]['expl_cb'];
$data['cote']=$this->info_expl[$expl_id]['expl_cote'];
$data['numero_libelle']=$this->info_expl[$expl_id]['numero'];
$data['date_libelle']=$this->info_expl[$expl_id]['mention_date'];
$data['date_reception']=$print_date;
$req="select abt_name from abts_abts,exemplaires where expl_abt_num=abt_id and expl_id=". $r->expl_id;
$res_abt=pmb_mysql_query($req);
if (pmb_mysql_num_rows($res_abt)) {
$r_abt=pmb_mysql_fetch_object($res_abt);
$data['abt_name1']=$r_abt->abt_name;
}else $data['abt_name1']="";
$this->build($this->count++,$ourPDF,$data);
}
//print $tpl;exit;
header("Content-Type: application/pdf");
$ourPDF->OutPut();
}
function build_print_diffusion($expl_id,$start_diff_id,$ourPDF){
global $serialcirc_circ_pdf_diffusion,$charset,$serialcirc_circ_pdf_diffusion_destinataire;
global $msg,$dbh;
if(!$start_diff_id){
foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
$start_diff_id=$diff_id;
break;
}
}
if (!$this->info_expl[$expl_id]) return false;
$req="UPDATE serialcirc_expl SET num_serialcirc_expl_serialcirc_diff=".$start_diff_id.",
serialcirc_expl_state_circ=1,
serialcirc_expl_start_date=CURDATE()
where num_serialcirc_expl_id= $expl_id";
pmb_mysql_query($req);
$req="select date_format(CURDATE(), '".$msg["format_date"]."') as print_date";
$result = pmb_mysql_query($req);
$obj = pmb_mysql_fetch_object($result);
$print_date=$obj->print_date;
$tpl = $serialcirc_circ_pdf_diffusion;
$tpl=str_replace("!!expl_cb!!", htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!periodique!!", htmlentities($this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!numero!!", htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset), $tpl);
$tpl=str_replace("!!print_date!!", htmlentities($print_date,ENT_QUOTES,$charset), $tpl);
// $tpl=str_replace("!!abonnement!!", htmlentities($this->info_expl[$expl_id]['serialcirc_diff']->abt_name,ENT_QUOTES,$charset), $tpl);
if($start_diff_id) $found=0;else $found=1;
foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
if($start_diff_id && !$found){
if($start_diff_id==$diff_id)$found=1;
}
if($found){
$diff_list[]=$diff_id;
if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
$name=$diffusion["empr_name"];
foreach($diffusion['group'] as $empr_group){
$empr_list[$empr_group["num_empr"]]=$diff_id;
if($empr_group["duration"])
$empr_days[$empr_group["num_empr"]]=$empr_group["duration"];
else
$empr_days[$empr_group["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
if($diffusion['type_diff']==1 && !$empr_group["responsable"]){
// groupe marguerite: on n'imprimera pas ce lecteur sauf le responsable
//$empr_no_display[$empr_group["num_empr"]]=1;
}
}
}else {
$name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
$empr_list[$diffusion["num_empr"]]=$diff_id;
if($diffusion["duration"]) $empr_days[$diffusion["num_empr"]]=$diffusion["duration"]; // durée de consultation particulière
else $empr_days[$diffusion["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
}
if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_star){
// on n'imprime que le suivant dans la liste
break;
}
}
}
$this->gen_circ($empr_list,$empr_days, $expl_id);
$data=array();
$data['titre']=$this->info_expl[$expl_id]['serial_title'];
if(!$this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){//pas de retour sur site: on n'affiche pas cb et cote
$data['cb']=$this->info_expl[$expl_id]['expl_cb'];
$data['cote']=$this->info_expl[$expl_id]['expl_cote'];
}
$data['numero_libelle']=$this->info_expl[$expl_id]['numero'];
$data['date_libelle']=$this->info_expl[$expl_id]['mention_date'];
$data['date_reception']=$print_date;
$data['abt_name']=$this->info_expl[$expl_id]['serialcirc_diff']->abt_name;
$i=0;
$p_perso=new parametres_perso("empr");
foreach($empr_list as $empr_id=>$diff_id){
$req="select * from empr where id_empr=$empr_id";
$res = pmb_mysql_query($req, $dbh);
if (pmb_mysql_num_rows($res)) {
$row = pmb_mysql_fetch_object($res);
$pp_values=$p_perso->read_base_fields_perso_values("pp_??????",$empr_id);
$data['empr'][$i]['name']=$row->empr_nom;
$data['empr'][$i]['pperso']=$pp_values[0];
$i++;
}
}
$this->build($this->count++,$ourPDF,$data);
if($this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){
//pas de retour sur site, suppression de la circulation.
$this->delete_diffusion($expl_id);
if($empr_id){
$req="update exemplaires set expl_lastempr=$empr_id where expl_id=$expl_id";
pmb_mysql_query($req, $dbh);
}
}
}
} //class end
*/