/**
  * Parcours des données de la table explnum
  */
 function fetch_data()
 {
     global $dbh;
     $rqt_expl = "select explnum_mimetype, explnum_nomfichier, explnum_extfichier, explnum_data, explnum_url, concat(repertoire_path,explnum_path) as path, explnum_repertoire from explnum left join upload_repertoire on repertoire_id=explnum_repertoire where explnum_id='" . $this->id_explnum . "'";
     $result_expl = mysql_query($rqt_expl, $dbh);
     if ($result_expl) {
         while ($explnum = mysql_fetch_object($result_expl)) {
             if ($explnum->explnum_data) {
                 //le fichier est en base
                 $this->file_content = $explnum->explnum_data;
             } else {
                 //le fichier est en upload
                 $up = new upload_folder($explnum->explnum_repertoire);
                 $path = str_replace('//', '/', $explnum->path . $explnum->explnum_nomfichier);
                 if ($path) {
                     $path = $up->encoder_chaine($path);
                     if (file_exists($path)) {
                         $fp = fopen($path, "r");
                         if (filesize($path) && (filesize($path) < $this->return_bytes(ini_get('upload_max_filesize')) && (ini_get('memory_limit') * 1 == -1 || filesize($path) < $this->return_bytes(ini_get('memory_limit')) * 1 - memory_get_usage(true) * 1))) {
                             $this->file_content = fread($fp, filesize($path));
                         } else {
                             $this->file_content = "";
                         }
                         fclose($fp);
                     } else {
                         $this->file_content = "";
                     }
                 }
             }
             $this->file_url = $explnum->explnum_url;
             $this->mimetype = $explnum->explnum_mimetype;
             $this->explnum_nomfichier = $explnum->explnum_nomfichier;
             $this->ext = $explnum->explnum_extfichier;
         }
     }
 }
示例#2
0
         $empr_carac = pmb_mysql_fetch_array($res);
         $log->add_log('empr', $empr_carac);
     }
     $log->add_log('num_session', session_id());
     $log->add_log('explnum', $infos_explnum);
     $infos_restriction_abo = array();
     foreach ($expl_num as $key => $value) {
         $infos_restriction_abo[$key] = $value;
     }
     $log->add_log('restriction_abo', $infos_restriction_abo);
     $log->save();
 }
 if ($ligne->explnum_path) {
     $up = new upload_folder($ligne->repertoire_id);
     $path = str_replace("//", "/", $ligne->path);
     $path = $up->encoder_chaine($path);
     $fo = fopen($path, 'rb');
     $ligne->explnum_data = fread($fo, filesize($path));
     $ligne->taille = filesize($path);
     fclose($fo);
 }
 $nomfichier = "";
 if ($ligne->explnum_nomfichier) {
     $nomfichier = $ligne->explnum_nomfichier;
 } elseif ($ligne->explnum_extfichier) {
     if ($ligne->explnum_nom) {
         $nomfichier = $ligne->explnum_nom;
         if (!preg_match("/\\." . $ligne->explnum_extfichier . "\$/", $nomfichier)) {
             $nomfichier .= "." . $ligne->explnum_extfichier;
         }
     } else {
示例#3
0
 function generate_docnum($id_tache, $content, $mimetype = "application/pdf", $ext_fichier = "pdf")
 {
     global $dbh, $msg, $base_path;
     $tdn = new tache_docnum();
     $tdn->num_tache = $id_tache;
     $query_sel = "select distinct p.libelle_tache, p.rep_upload, p.path_upload from planificateur p\n\t\t\tleft join taches t on t.num_planificateur = p.id_planificateur\n\t\t\tleft join taches_docnum tdn on tdn.tache_docnum_repertoire=p.rep_upload\n\t\t\twhere t.id_tache=" . $tdn->num_tache;
     $res_query = mysql_query($query_sel, $dbh);
     if ($res_query) {
         $row = mysql_fetch_object($res_query);
         $up = new upload_folder($row->rep_upload);
         $nom_chemin = $up->formate_nom_to_path($up->repertoire_nom . $row->path_upload);
         //			if ((!is_dir($nom_chemin)) || (!is_writable($nom_chemin))) {
         //				$nom_chemin = $base_path."/temp/";
         //			}
         //appel de fonction pour le calcul de nom de fichier
         $date_now = date('Ymd');
         //			$tdn->tache_docnum_nomfichier = str_replace(" ", "_", $row->libelle_tache)."_".$date_now;
         $tdn->tache_docnum_nomfichier = clean_string_to_base($row->libelle_tache) . "_" . $date_now;
         $tdn->tache_docnum_contenu = $content;
         $tdn->tache_docnum_extfichier = $ext_fichier;
         $tdn->tache_docnum_file = "";
         $tdn->tache_docnum_mimetype = $mimetype;
         $tdn->tache_docnum_repertoire = $row->rep_upload;
         $tdn->tache_docnum_path = $row->path_upload;
         $path_absolu = $nom_chemin . $tdn->tache_docnum_nomfichier . "." . $tdn->tache_docnum_extfichier;
         if (file_exists($path_absolu)) {
             $i = 2;
             while (file_exists($nom_chemin . $tdn->tache_docnum_nomfichier . "_" . $i . "." . $tdn->tache_docnum_extfichier)) {
                 $i++;
             }
             $path_absolu = $nom_chemin . $tdn->tache_docnum_nomfichier . "_" . $i . "." . $tdn->tache_docnum_extfichier;
             $tdn->tache_docnum_nomfichier = $tdn->tache_docnum_nomfichier . "_" . $i;
         }
         $path_absolu = $up->encoder_chaine($path_absolu);
         //verifier permissions d'ecriture...
         if (is_writable($nom_chemin)) {
             switch ($mimetype) {
                 case "application/pdf":
                     $content->Output($path_absolu, "F");
                     break;
                 case "application/ms-excel":
                     file_put_contents($path_absolu, $content);
                     break;
             }
             //				if ($mimetype == "application/pdf") {
             //					$content->Output($path_absolu,"F");
             //				} else if ($mimetype == "application/ms-excel") {
             //					file_put_contents($path_absolu, $content);
             //				}
             $tdn->save();
             $this->report[] = "<tr><td>" . $msg["planificateur_write_success"] . " : <a target='_blank' href='./tache_docnum.php?tache_docnum_id=" . $tdn->id_tache_docnum . "'>" . $tdn->tache_docnum_nomfichier . "." . $tdn->tache_docnum_extfichier . "</a></td></tr>";
             return true;
         } else {
             $this->report[] = "<tr><td>" . sprintf($msg["planificateur_write_error"], $path_absolu) . "</td></tr>";
             return false;
         }
     }
 }
示例#4
0
function explnum_add_from_url($f_notice_id, $f_bulletin_id, $f_nom, $f_url, $overwrite = true, $source_id = 0, $filename = '', $f_path = '', $f_statut)
{
    global $dbh, $base_path;
    if ($f_bulletin_id) {
        $f_notice_id = 0;
    } else {
        if (!$f_bulletin_id && $f_notice_id) {
            $f_bulletin_id = 0;
        }
    }
    if (!$overwrite) {
        $sql_find = "SELECT count(*) FROM explnum WHERE explnum_notice = " . $f_notice_id . " AND explnum_nom = '" . addslashes($f_nom) . "'";
        $res = pmb_mysql_query($sql_find, $dbh);
        $count = pmb_mysql_result($res, 0, 0);
        if ($count) {
            return;
        }
    }
    $sql_delete = "DELETE FROM explnum WHERE explnum_notice = " . $f_notice_id . " AND explnum_nom = '" . addslashes($f_nom) . "' ";
    pmb_mysql_query($sql_delete, $dbh);
    $original_filename = basename($f_url);
    $extension = substr($original_filename, strripos($original_filename, '.') * 1 + 1);
    $tmp_filename = explnum::static_rename($extension);
    if ($filename) {
        $new_filename = $filename;
    } else {
        $new_filename = $tmp_filename;
    }
    //copie en répertoire temporaire
    $r = false;
    if (file_exists($f_url) && filesize($f_url)) {
        //document en repertoire
        $r = copy($f_url, $base_path . '/temp/' . $tmp_filename);
    } else {
        //url
        $aCurl = new Curl();
        $content = $aCurl->get($f_url);
        $content = $content->body;
        $r = file_put_contents("{$base_path}/temp/" . $tmp_filename, $content);
    }
    if ($r) {
        //construction vignette
        $vignette = construire_vignette('', $tmp_filename);
        create_tableau_mimetype();
        $mimetype = trouve_mimetype("{$base_path}/temp/" . $tmp_filename, $extension);
        //si la source du connecteur est précisée, on regarde si on a pas un répertoire associé
        $rep_upload = 0;
        if ($source_id) {
            $check_rep = "select rep_upload from connectors_sources where source_id = " . $source_id;
            $res = pmb_mysql_query($check_rep);
            if (pmb_mysql_num_rows($res)) {
                $rep_upload = pmb_mysql_result($res, 0, 0);
            }
        }
        if ($rep_upload != 0) {
            $upload_folder = new upload_folder($rep_upload);
            $rep_path = $upload_folder->get_path($new_filename);
            if ($f_path && file_exists($rep_path . $f_path)) {
                $rep_path = $rep_path . $f_path . '/';
            }
            if (file_exists($upload_folder->encoder_chaine($rep_path . $new_filename))) {
                $suffix = 1;
                $ext = extension_fichier($new_filename);
                $file = str_replace("." . $ext, "", basename($new_filename));
                while (file_exists($upload_folder->encoder_chaine($rep_path . $file . "_" . $suffix . "." . $ext))) {
                    $suffix++;
                }
                $new_filename = $file . "_" . $suffix . "." . $ext;
            }
            rename("{$base_path}/temp/" . $tmp_filename, $upload_folder->encoder_chaine($rep_path . $new_filename));
            $path = $upload_folder->formate_path_to_save($upload_folder->formate_path_to_nom($rep_path));
            $insert_sql = "INSERT INTO explnum (explnum_notice, explnum_bulletin, explnum_nom, explnum_nomfichier, explnum_mimetype, explnum_extfichier, explnum_vignette, explnum_repertoire, explnum_path, explnum_docnum_statut) VALUES (";
            $insert_sql .= $f_notice_id . ",";
            $insert_sql .= $f_bulletin_id . ",";
            $insert_sql .= "'" . addslashes($f_nom) . "',";
            $insert_sql .= "'" . addslashes($new_filename) . "',";
            $insert_sql .= "'" . addslashes($mimetype) . "',";
            $insert_sql .= "'" . addslashes($extension) . "',";
            $insert_sql .= "'" . addslashes($vignette) . "',";
            $insert_sql .= "'" . addslashes($rep_upload) . "',";
            $insert_sql .= "'" . addslashes($path) . "',";
            $insert_sql .= $f_statut;
            $insert_sql .= ")";
        } else {
            $insert_sql = "INSERT INTO explnum (explnum_notice, explnum_bulletin, explnum_nom, explnum_nomfichier, explnum_mimetype, explnum_extfichier, explnum_data, explnum_vignette, explnum_docnum_statut) VALUES (";
            $insert_sql .= $f_notice_id . ",";
            $insert_sql .= $f_bulletin_id . ",";
            $insert_sql .= "'" . addslashes($f_nom) . "',";
            $insert_sql .= "'" . addslashes($new_filename) . "',";
            $insert_sql .= "'" . addslashes($mimetype) . "',";
            $insert_sql .= "'" . addslashes($extension) . "',";
            $insert_sql .= "'" . addslashes($content) . "',";
            $insert_sql .= "'" . addslashes($vignette) . "',";
            $insert_sql .= $f_statut;
            $insert_sql .= ")";
        }
        if (pmb_mysql_query($insert_sql, $dbh)) {
            $docnum_id = pmb_mysql_insert_id($dbh);
            if ($docnum_id) {
                $index = new indexation_docnum($docnum_id);
                $index->indexer();
            }
        }
        /*
        		$aCurl = new Curl();
        		$content = $aCurl->get($f_url);
        		$content = $content->body;
        		
        		$origine=str_replace(" ","",microtime());
        		$origine=str_replace("0.","",$origine);
        		$original_filename = basename($f_url);
        		if( $filename != "") $afilename = $filename;
        		else $afilename = $origine.$original_filename;
        		if (!$original_filename)
        			$original_filename = $afilename;
        			
        		file_put_contents("$base_path/temp/".$afilename, $content);
        */
        /*		
        		$vignette = construire_vignette('', $afilename);
        		create_tableau_mimetype();
        		$afilename_ext=extension_fichier($afilename);
        		$mimetype = trouve_mimetype("$base_path/temp/".$afilename, $afilename_ext);
        		$extension = strrchr($afilename, '.');
        		
        		//si la source du connecteur est précisée, on regarde si on a pas un répertoire associé
        		if ($source_id){
        			$check_rep = "select rep_upload from connectors_sources where source_id = ".$source_id;
        			$res = pmb_mysql_query($check_rep);
        			if(pmb_mysql_num_rows($res)){
        				$rep_upload = pmb_mysql_result($res,0,0);
        			}
        		}
        */
        /*
        			if($rep_upload != 0){
        			$upload_folder = new upload_folder($rep_upload);
        			$rep_path = $upload_folder->get_path($afilename);
        			if ($f_path && file_exists($rep_path.$f_path)) {
        				$rep_path=$rep_path.$f_path.'/';
        			}
        			
        			copy("$base_path/temp/".$afilename,$rep_path.$afilename);
        			$path =$upload_folder->formate_path_to_save($upload_folder->formate_path_to_nom($rep_path));
        			$insert_sql = "INSERT INTO explnum (explnum_notice, explnum_nom, explnum_nomfichier, explnum_mimetype, explnum_extfichier, explnum_vignette, explnum_repertoire, explnum_path) VALUES (";
        			$insert_sql .= $f_notice_id.",";
        			$insert_sql .= "'".addslashes($f_nom)."',";
        			$insert_sql .= "'".addslashes($afilename)."',";
        			$insert_sql .= "'".addslashes($mimetype)."',";
        			$insert_sql .= "'".addslashes($extension)."',";
        			$insert_sql .= "'".addslashes($vignette)."',";
        			$insert_sql .= "'".addslashes($rep_upload)."',";
        			$insert_sql .= "'".addslashes($path)."'";
        			$insert_sql .= ")";		
        		}else{
        			$insert_sql = "INSERT INTO explnum (explnum_notice, explnum_nom, explnum_nomfichier, explnum_mimetype, explnum_extfichier, explnum_data, explnum_vignette) VALUES (";
        			$insert_sql .= $f_notice_id.",";
        			$insert_sql .= "'".addslashes($f_nom)."',";
        			$insert_sql .= "'".addslashes($afilename)."',";
        			$insert_sql .= "'".addslashes($mimetype)."',";
        			$insert_sql .= "'".addslashes($extension)."',";
        			$insert_sql .= "'".addslashes($content)."',";
        			$insert_sql .= "'".addslashes($vignette)."'";
        			$insert_sql .= ")";
        		}
        		pmb_mysql_query($insert_sql, $dbh);
        		
        		unlink("$base_path/temp/".$afilename);	
        */
    }
}
示例#5
0
文件: pmb.class.php 项目: hogsim/PMB
 function openCurrentDoc()
 {
     global $dbh;
     //s'il est en cache, c'est vachement simple
     if ($this->isInCache($this->listeDocs[$this->current]->explnum_id)) {
         $document = $this->readInCache($this->listeDocs[$this->current]->explnum_id);
         //sinon on va devoir regarder un peu ou ca se passe...
     } elseif ($this->listeDocs[$this->current]->explnum_url != "") {
         //on est sur une URL
         $document = file_get_contents($this->listeDocs[$this->current]->explnum_url);
         //on met les documents issues d'une URL en cache, ca évite les problèmes de connexion plus tard...
         $this->setInCache($this->listeDocs[$this->current]->explnum_id, $document);
     } elseif ($this->listeDocs[$this->current]->explnum_repertoire != 0) {
         //le document est stocké dans un répertoire d'upload
         $rep = new upload_folder($this->listeDocs[$this->current]->explnum_repertoire);
         $filepath = $rep->encoder_chaine(str_replace("//", "/", $rep->repertoire_path . $this->listeDocs[$this->current]->explnum_path . "/" . $this->listeDocs[$this->current]->explnum_nomfichier));
         $document = file_get_contents($filepath);
     } else {
         $requete = "SELECT explnum_data FROM explnum WHERE explnum_id = " . $this->listeDocs[$this->current]->explnum_id;
         $res = pmb_mysql_query($requete, $dbh);
         if (pmb_mysql_num_rows($res)) {
             $document = pmb_mysql_result($res, 0, 0);
         }
     }
     //on renvoie le contenu du document
     return $document;
 }
示例#6
0
 function get_file_content()
 {
     $resultat = mysql_query("SELECT explnum_id, explnum_notice, explnum_bulletin, explnum_nom, explnum_mimetype, explnum_url, explnum_data, length(explnum_data) as taille,explnum_path, concat(repertoire_path,explnum_path,explnum_nomfichier) as path, repertoire_id FROM explnum left join upload_repertoire on repertoire_id=explnum_repertoire WHERE explnum_id = '" . $this->explnum_id . "' ");
     $nb_res = mysql_num_rows($resultat);
     if (!$nb_res) {
         exit;
     }
     $ligne = mysql_fetch_object($resultat);
     if ($ligne->explnum_data || $ligne->explnum_path) {
         if ($ligne->explnum_path) {
             $up = new upload_folder($ligne->repertoire_id);
             $path = str_replace("//", "/", $ligne->path);
             $path = $up->encoder_chaine($path);
             if (file_exists($path) && filesize($path)) {
                 $fo = fopen($path, 'rb');
                 $data = fread($fo, filesize($path));
                 fclose($fo);
             } else {
                 $data = "";
             }
         } else {
             $data = $ligne->explnum_data;
         }
     }
     return $data;
 }
 function merge()
 {
     global $msg, $dbh, $gestion_acces_active, $gestion_acces_empr_notice;
     $cpt_doc_num = 0;
     if (is_array($this->docnum_ids) && count($this->docnum_ids)) {
         foreach ($this->docnum_ids as $explnum_id) {
             $resultat = pmb_mysql_query("SELECT explnum_id, explnum_notice, explnum_bulletin, explnum_nom, explnum_mimetype, explnum_url, explnum_data, length(explnum_data) as taille,explnum_path, concat(repertoire_path,explnum_path,explnum_nomfichier) as path, repertoire_id FROM explnum left join upload_repertoire on repertoire_id=explnum_repertoire WHERE explnum_id = '{$explnum_id}' ", $dbh);
             $nb_res = pmb_mysql_num_rows($resultat);
             $ligne = pmb_mysql_fetch_object($resultat);
             $id_for_rigths = $ligne->explnum_notice;
             if ($ligne->explnum_bulletin != 0) {
                 //si bulletin, les droits sont rattachés à la notice du bulletin, à défaut du pério...
                 $req = "select bulletin_notice,num_notice from bulletins where bulletin_id =" . $ligne->explnum_bulletin;
                 $res = pmb_mysql_query($req);
                 if (pmb_mysql_num_rows($res)) {
                     $row = pmb_mysql_fetch_object($result);
                     $id_for_rigths = $row->num_notice;
                     if (!$id_for_rigths) {
                         $id_for_rigths = $row->bulletin_notice;
                     }
                 }
                 $type = "";
             }
             //droits d'acces emprunteur/notice
             if ($gestion_acces_active == 1 && $gestion_acces_empr_notice == 1) {
                 $ac = new acces();
                 $dom_2 = $ac->setDomain(2);
                 $rights = $dom_2->getRights($_SESSION['id_empr_session'], $id_for_rigths);
             }
             //Accessibilité des documents numériques aux abonnés en opac
             $req_restriction_abo = "SELECT  explnum_visible_opac, explnum_visible_opac_abon FROM notice_statut, explnum, notices WHERE explnum_notice=notice_id AND statut=id_notice_statut  AND explnum_id='{$explnum_id}' ";
             $result = pmb_mysql_query($req_restriction_abo, $dbh);
             if (!pmb_mysql_num_rows($result)) {
                 $req_restriction_abo = "SELECT explnum_visible_opac, explnum_visible_opac_abon\n\t\t\t\t\t\tFROM notice_statut, explnum, bulletins, notices\n\t\t\t\t\t\tWHERE explnum_bulletin = bulletin_id\n\t\t\t\t\t\tAND num_notice = notice_id\n\t\t\t\t\t\tAND statut = id_notice_statut\n\t\t\t\t\t\tAND explnum_id='{$explnum_id}' ";
                 $result = pmb_mysql_query($req_restriction_abo, $dbh);
             }
             $expl_num = pmb_mysql_fetch_array($result);
             if ($rights & 16 || is_null($dom_2) && $expl_num["explnum_visible_opac"] && (!$expl_num["explnum_visible_opac_abon"] || $expl_num["explnum_visible_opac_abon"] && $_SESSION["user_code"])) {
                 if ($ligne->explnum_data || $ligne->explnum_path) {
                     if ($ligne->explnum_path) {
                         $up = new upload_folder($ligne->repertoire_id);
                         $path = str_replace("//", "/", $ligne->path);
                         $path = $up->encoder_chaine($path);
                         $fo = fopen($path, 'rb');
                         $ligne->explnum_data = fread($fo, filesize($path));
                         $ligne->taille = filesize($path);
                         fclose($fo);
                     }
                     // $ligne->explnum_data;
                     $filename = "./temp/doc_num_" . $explnum_id . session_id() . ".pdf";
                     $filename_list[] = $filename;
                     $fp = fopen($filename, "wb");
                     fwrite($fp, $ligne->explnum_data);
                     fclose($fp);
                     $cpt_doc_num++;
                 }
             }
         }
     }
     if ($cpt_doc_num > 1) {
         $filename_output = "./temp/doc_num_output" . session_id() . ".pdf";
         $cmd = "pdfunite " . implode(' ', $filename_list) . " " . $filename_output;
         exec($cmd);
         $contenu_merge = file_get_contents($filename_output);
         unlink($filename_output);
         foreach ($filename_list as $filename) {
             unlink($filename);
         }
         header('Content-type: application/pdf');
         print $contenu_merge;
     } elseif ($cpt_doc_num) {
         $contenu_merge = file_get_contents($filename_list[0]);
         header('Content-type: application/pdf');
         print $contenu_merge;
         unlink($filename_list[0]);
     }
 }