/** * 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; } } }
$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 {
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; } } }
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); */ } }
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; }
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]); } }