Ejemplo n.º 1
0
 /**
  * Gestion des droits d'accès emprunteur/notice
  */
 private function fetch_visibilite()
 {
     global $dbh;
     global $hide_explnum;
     global $gestion_acces_active, $gestion_acces_empr_notice, $gestion_acces_empr_docnum;
     if ($gestion_acces_active == 1 && ($gestion_acces_empr_notice == 1 || $gestion_acces_empr_docnum == 1)) {
         $ac = new acces();
     }
     if ($gestion_acces_active == 1 && $gestion_acces_empr_notice == 1) {
         $this->dom_2 = $ac->setDomain(2);
         if ($hide_explnum) {
             $this->rights = $this->dom_2->getRights($_SESSION['id_empr_session'], $this->id, 4);
         } else {
             $this->rights = $this->dom_2->getRights($_SESSION['id_empr_session'], $this->id);
         }
     } else {
         $query = "SELECT opac_libelle, notice_visible_opac, expl_visible_opac, notice_visible_opac_abon, expl_visible_opac_abon, explnum_visible_opac, explnum_visible_opac_abon FROM notice_statut WHERE id_notice_statut='" . $this->notice->statut . "' ";
         $result = pmb_mysql_query($query, $dbh);
         if (pmb_mysql_num_rows($result)) {
             $statut_temp = pmb_mysql_fetch_object($result);
             $this->statut_notice = $statut_temp->opac_libelle;
             $this->visu_notice = $statut_temp->notice_visible_opac;
             $this->visu_notice_abon = $statut_temp->notice_visible_opac_abon;
             $this->visu_expl = $statut_temp->expl_visible_opac;
             $this->visu_expl_abon = $statut_temp->expl_visible_opac_abon;
             $this->visu_explnum = $statut_temp->explnum_visible_opac;
             $this->visu_explnum_abon = $statut_temp->explnum_visible_opac_abon;
             if ($hide_explnum) {
                 $this->visu_explnum = 0;
                 $this->visu_explnum_abon = 0;
             }
         }
     }
     if ($gestion_acces_active == 1 && $gestion_acces_empr_docnum == 1) {
         $this->dom_3 = $ac->setDomain(3);
     }
 }
Ejemplo n.º 2
0
    /**
     * Retourne les infos de documents numériques associés à la notice
     * @return array
     */
    public function get_explnums_datas()
    {
        if (!isset($this->explnums_datas)) {
            global $dbh;
            global $charset;
            global $opac_url_base;
            global $opac_visionneuse_allow;
            global $opac_photo_filtre_mimetype;
            global $opac_explnum_order;
            global $opac_show_links_invisible_docnums;
            global $gestion_acces_active, $gestion_acces_empr_notice, $gestion_acces_empr_docnum;
            $this->explnums_datas = array('nb_explnums' => 0, 'explnums' => array(), 'visionneuse_script' => '
								<script type="text/javascript">
									if(typeof(sendToVisionneuse) == "undefined"){
										var sendToVisionneuse = function (explnum_id){
											document.getElementById("visionneuseIframe").src = "visionneuse.php?"+(typeof(explnum_id) != "undefined" ? "explnum_id="+explnum_id : "");
										}
									}
								</script>');
            global $_mimetypes_bymimetype_, $_mimetypes_byext_;
            if (!count($_mimetypes_bymimetype_)) {
                create_tableau_mimetype();
            }
            $this->get_bul_info();
            // récupération du nombre d'exemplaires
            $query = "SELECT explnum_id, explnum_notice, explnum_bulletin, explnum_nom, explnum_mimetype, explnum_url, explnum_vignette, explnum_nomfichier, explnum_extfichier, explnum_docnum_statut FROM explnum WHERE ";
            if ($this->get_niveau_biblio() != 'b') {
                $query .= "explnum_notice='" . $this->id . "' ";
            } else {
                $query .= "explnum_bulletin='" . $this->parent['bulletin_id'] . "' or explnum_notice='" . $this->id . "' ";
            }
            $query .= "union SELECT explnum_id, explnum_notice, explnum_bulletin, explnum_nom, explnum_mimetype, explnum_url, explnum_vignette, explnum_nomfichier, explnum_extfichier, explnum_docnum_statut\n\t\t\tFROM explnum, bulletins\n\t\t\tWHERE bulletin_id = explnum_bulletin\n\t\t\tAND bulletins.num_notice='" . $this->id . "'";
            if ($opac_explnum_order) {
                $query .= " order by " . $opac_explnum_order;
            } else {
                $query .= " order by explnum_mimetype, explnum_nom, explnum_id ";
            }
            $res = pmb_mysql_query($query, $dbh);
            $nb_explnums = pmb_mysql_num_rows($res);
            $docnum_visible = true;
            if ($gestion_acces_active == 1 && $gestion_acces_empr_notice == 1) {
                $docnum_visible = $this->dom_2->getRights($_SESSION['id_empr_session'], $this->id, 16);
            } else {
                $query = "SELECT explnum_visible_opac, explnum_visible_opac_abon FROM notices, notice_statut WHERE notice_id ='" . $this->id . "' and id_notice_statut=statut ";
                $result = pmb_mysql_query($query, $dbh);
                if ($result && pmb_mysql_num_rows($result)) {
                    $statut_temp = pmb_mysql_fetch_object($result);
                    if (!$statut_temp->explnum_visible_opac) {
                        $docnum_visible = false;
                    }
                    if ($statut_temp->explnum_visible_opac_abon && !$_SESSION['id_empr_session']) {
                        $docnum_visible = false;
                    }
                } else {
                    $docnum_visible = false;
                }
            }
            if ($nb_explnums && ($docnum_visible || $opac_show_links_invisible_docnums)) {
                // on récupère les données des exemplaires
                global $search_terms;
                while ($expl = pmb_mysql_fetch_object($res)) {
                    // couleur de l'img en fonction du statut
                    if ($expl->explnum_docnum_statut) {
                        $rqt_st = "SELECT * FROM explnum_statut WHERE  id_explnum_statut='" . $expl->explnum_docnum_statut . "' ";
                        $Query_statut = pmb_mysql_query($rqt_st, $dbh) or die($rqt_st . " " . pmb_mysql_error());
                        $r_statut = pmb_mysql_fetch_object($Query_statut);
                        $explnum_class = 'docnum_' . $r_statut->class_html;
                        if ($expl->explnum_docnum_statut > 1) {
                            $explnum_opac_label = $r_statut->opac_libelle;
                        } else {
                            $explnum_opac_label = '';
                        }
                    } else {
                        $explnum_class = 'docnum_statutnot1';
                        $explnum_opac_label = '';
                    }
                    $explnum_docnum_visible = true;
                    $explnum_docnum_consult = true;
                    if ($gestion_acces_active == 1 && $gestion_acces_empr_docnum == 1) {
                        $explnum_docnum_visible = $this->dom_3->getRights($_SESSION['id_empr_session'], $expl->explnum_id, 16);
                        $explnum_docnum_consult = $this->dom_3->getRights($_SESSION['id_empr_session'], $expl->explnum_id, 4);
                    } else {
                        $requete = "SELECT explnum_visible_opac, explnum_visible_opac_abon, explnum_consult_opac, explnum_consult_opac_abon FROM explnum, explnum_statut WHERE explnum_id ='" . $expl->explnum_id . "' and id_explnum_statut=explnum_docnum_statut ";
                        $myQuery = pmb_mysql_query($requete, $dbh);
                        if (pmb_mysql_num_rows($myQuery)) {
                            $statut_temp = pmb_mysql_fetch_object($myQuery);
                            if (!$statut_temp->explnum_visible_opac) {
                                $explnum_docnum_visible = false;
                            }
                            if (!$statut_temp->explnum_consult_opac) {
                                $explnum_docnum_consult = false;
                            }
                            if ($statut_temp->explnum_visible_opac_abon && !$_SESSION['id_empr_session']) {
                                $explnum_docnum_visible = false;
                            }
                            if ($statut_temp->explnum_consult_opac_abon && !$_SESSION['id_empr_session']) {
                                $explnum_docnum_consult = false;
                            }
                        } else {
                            $explnum_docnum_visible = false;
                        }
                    }
                    if ($explnum_docnum_visible || $opac_show_links_invisible_docnums) {
                        $this->explnums_datas['nb_explnums']++;
                        $explnum_datas = array('id' => $expl->explnum_id, 'name' => $expl->explnum_nom, 'mimetype' => $expl->explnum_mimetype, 'url' => $expl->explnum_url, 'filename' => $expl->explnum_nomfichier, 'extension' => $expl->explnum_extfichier, 'statut' => $expl->explnum_docnum_statut, 'consultation' => $explnum_docnum_consult);
                        if ($expl->explnum_vignette) {
                            $explnum_datas['thumbnail_url'] = $opac_url_base . 'vig_num.php?explnum_id=' . $expl->explnum_id;
                        } else {
                            // trouver l'icone correspondant au mime_type
                            $explnum_datas['thumbnail_url'] = get_url_icon('mimetype/' . icone_mimetype($expl->explnum_mimetype, $expl->explnum_extfichier), 1);
                        }
                        $words_to_find = "";
                        if ($expl->explnum_mimetype == 'application/pdf' || $expl->explnum_mimetype == 'URL' && strpos($expl->explnum_nom, '.pdf') !== false) {
                            if (is_array($search_terms)) {
                                $words_to_find = "#search=\"" . trim(str_replace('*', '', implode(' ', $search_terms))) . "\"";
                            }
                        }
                        $explnum_datas['access_datas'] = array('script' => '', 'href' => '#', 'onclick' => '');
                        //si l'affichage du lien vers les documents numériques est forcé et qu'on est pas connecté, on propose l'invite de connexion!
                        if (!$explnum_docnum_visible && $opac_show_links_invisible_docnums && !$_SESSION['id_empr_session']) {
                            if ($opac_visionneuse_allow) {
                                $allowed_mimetype = explode(",", str_replace("'", "", $opac_photo_filtre_mimetype));
                            }
                            if ($allowed_mimetype && in_array($expl->explnum_mimetype, $allowed_mimetype)) {
                                $explnum_datas['access_datas']['script'] = "\n\t\t\t\t\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\t\t\t\t\tfunction sendToVisionneuse_" . $expl->explnum_id . "(){\n\t\t\t\t\t\t\t\t\t\topen_visionneuse(sendToVisionneuse," . $expl->explnum_id . ");\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</script>";
                                $explnum_datas['access_datas']['onclick'] = "auth_popup('./ajax.php?module=ajax&categ=auth&callback_func=sendToVisionneuse_" . $expl->explnum_id . "');";
                            } else {
                                $explnum_datas['access_datas']['onclick'] = "auth_popup('./ajax.php?module=ajax&categ=auth&new_tab=1&callback_url=" . rawurlencode($opac_url_base . "doc_num.php?explnum_id=" . $expl->explnum_id) . "')";
                            }
                        } else {
                            if ($opac_visionneuse_allow) {
                                $allowed_mimetype = explode(",", str_replace("'", "", $opac_photo_filtre_mimetype));
                            }
                            if ($allowed_mimetype && in_array($expl->explnum_mimetype, $allowed_mimetype)) {
                                $explnum_datas['access_datas']['onclick'] = "open_visionneuse(sendToVisionneuse," . $expl->explnum_id . ");return false;";
                            } else {
                                $explnum_datas['access_datas']['href'] = $opac_url_base . 'doc_num.php?explnum_id=' . $expl->explnum_id;
                            }
                        }
                        if ($_mimetypes_byext_[$expl->explnum_extfichier]["label"]) {
                            $explnum_datas['mimetype_label'] = $_mimetypes_byext_[$expl->explnum_extfichier]["label"];
                        } elseif ($_mimetypes_bymimetype_[$expl->explnum_mimetype]["label"]) {
                            $explnum_datas['mimetype_label'] = $_mimetypes_bymimetype_[$expl->explnum_mimetype]["label"];
                        } else {
                            $explnum_datas['mimetype_label'] = $expl->explnum_mimetype;
                        }
                        $this->explnums_datas['explnums'][] = $explnum_datas;
                    }
                }
            }
        }
        return $this->explnums_datas;
    }