Esempio n. 1
0
 function get_notice_by_meta($name, $filename)
 {
     global $pmb_keyword_sep;
     global $pmb_type_audit;
     global $webdav_current_user_name, $webdav_current_user_id;
     \create_tableau_mimetype();
     $mimetype = \trouve_mimetype($filename, extension_fichier($name));
     //on commence avec la gymnatisque des métas...
     if ($mimetype == "application/epub+zip") {
         //pour les ebook, on gère ca directement ici !
         $epub = new \epubData(realpath($filename));
         $metas = $epub->metas;
         $img = imagecreatefromstring($epub->getCoverContent());
         $file = tempnam(sys_get_temp_dir(), "vign");
         imagepng($img, $file);
         $metas['thumbnail_content'] = file_get_contents($file);
         unlink($file);
     } else {
         $metas = \extract_metas(realpath($filename), $mimetype);
     }
     if ($this->config['metasMapper_class']) {
         $className = "Sabre\\PMB\\" . $this->config['metasMapper_class'];
         if (class_exists($className)) {
             $metasMapper = new $className($this->config, $metas, $mimetype, $name);
         }
     }
     if (!is_object($metasMapper)) {
         $metasMapper = new metasMapper($this->config, $metas, $mimetype, $name);
     }
     return $metasMapper->get_notice_id();
 }
Esempio n. 2
0
 function get_notice_by_meta($name, $filename)
 {
     \create_tableau_mimetype();
     $mimetype = \trouve_mimetype($filename, extension_fichier($name));
     //on commence avec la gymnatisque des métas...
     if ($mimetype == "application/epub+zip") {
         //pour les ebook, on gère ca directement ici !
         $epub = new \epubData(realpath($filename));
         $metas = $epub->metas;
         $img = imagecreatefromstring($epub->getCoverContent());
         $file = tempnam(sys_get_temp_dir(), "vign");
         imagepng($img, $file);
         $metas['thumbnail_content'] = file_get_contents($file);
         unlink($file);
     } else {
         $metas = \extract_metas(realpath($filename), $mimetype);
     }
     $metasMapper = $this->load_metas_mapper();
     return $metasMapper->get_notice_id($metas, $mimetype, $name);
 }
Esempio n. 3
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);	
        */
    }
}
Esempio n. 4
0
 function analyse_file()
 {
     if ($this->tache_docnum_file) {
         create_tableau_mimetype();
         $userfile_name = $this->tache_docnum_file['name'];
         $userfile_temp = $this->tache_docnum_file['tmp_name'];
         $userfile_moved = basename($userfile_temp);
         $userfile_name = preg_replace("/ |'|\\|\"|\\//m", "_", $userfile_name);
         $userfile_ext = '';
         if ($userfile_name) {
             $userfile_ext = extension_fichier($userfile_name);
         }
         move_uploaded_file($userfile_temp, "./temp/" . $userfile_moved);
         $file_name = "./temp/" . $userfile_moved;
         $fp = fopen($file_name, "r");
         $contenu = fread($fp, filesize($file_name));
         fclose($fp);
         $mime = trouve_mimetype($userfile_moved, $userfile_ext);
         if (!$mime) {
             $mime = "application/data";
         }
         $this->tache_docnum_mimetype = $mime;
         $this->tache_docnum_nomfichier = $userfile_name;
         $this->tache_docnum_extfichier = $userfile_ext;
         $this->tache_docnum_data = $contenu;
         unlink($file_name);
     }
 }
Esempio n. 5
0
function create_docnum($doc)
{
    global $bull_id;
    global $notice_id;
    $id_rep = 1;
    $rep = new upload_folder($id_rep);
    $name = $doc['nom_fic'] ? $doc['nom_fic'] : $doc['titre'];
    $filename = strtolower(implode("_", explode(" ", $name)));
    $filename = checkIfExist($rep->repertoire_path, $filename, $filename);
    file_put_contents($rep->repertoire_path . $filename, file_get_contents($doc['url']));
    $ext_fichier = extension_fichier($filename);
    if ($doc['mimetype'] == "") {
        create_tableau_mimetype();
        $mimetype = trouve_mimetype($filename, $ext_fichier);
    } else {
        $mimetype = $doc['mimetype'];
    }
    $insert = "insert into explnum set ";
    if ($bull_id != 0) {
        $insert .= "explnum_bulletin = {$bull_id}, ";
    } else {
        $insert .= "explnum_notice = {$notice_id}, ";
    }
    $insert .= "explnum_nom = '" . $doc['titre'] . "', ";
    $insert .= "explnum_mimetype = '{$mimetype}', ";
    $insert .= "explnum_nomfichier = '" . $filename . "', ";
    $insert .= "explnum_extfichier = '{$ext_fichier}', ";
    $insert .= "explnum_repertoire = {$id_rep}, ";
    $insert .= "explnum_path = '/'";
    $result = mysql_query($insert);
    $explnum_id = mysql_insert_id();
    return $explnum_id;
}
    function get_doc_num($explnum, $upload_folder)
    {
        global $pmb_set_time_limit, $dbh;
        $report = array();
        if (SESSrights & ADMINISTRATION_AUTH) {
            @set_time_limit($pmb_set_time_limit);
            if (is_array($explnum) && $upload_folder) {
                $idLien = '';
                if ($explnum['explnum_bulletin']) {
                    $query = "SELECT 1 FROM bulletins WHERE bulletin_id=" . $explnum['explnum_bulletin'];
                    $result = pmb_mysql_query($query, $dbh);
                    if (pmb_mysql_num_rows($result)) {
                        $idLien = 'explnum_bulletin=' . $explnum['explnum_bulletin'];
                    }
                } elseif ($explnum['explnum_notice']) {
                    $query = "SELECT 1 FROM notices WHERE notice_id=" . $explnum['explnum_notice'];
                    $result = pmb_mysql_query($query, $dbh);
                    if (pmb_mysql_num_rows($result)) {
                        $idLien = 'explnum_notice=' . $explnum['explnum_notice'];
                    }
                }
                if ($idLien) {
                    if (file_exists($upload_folder . $explnum['explnum_nomfichier'])) {
                        if (!$explnum['explnum_nom']) {
                            $explnum['explnum_nom'] = $explnum['explnum_nomfichier'];
                        }
                        if (!$explnum['explnum_repertoire']) {
                            $explnum['explnum_repertoire'] = '1';
                        }
                        if (!$explnum['explnum_statut']) {
                            $explnum['explnum_statut'] = '0';
                        }
                        if (!$explnum['explnum_path']) {
                            $explnum['explnum_path'] = '/';
                        }
                        if (!$explnum['explnum_extfichier']) {
                            $match = array();
                            if (preg_match('/.+\\.(.+)$/', $explnum['explnum_nomfichier'], $match)) {
                                $explnum['explnum_extfichier'] = $match[1];
                            }
                        }
                        if (!$explnum['explnum_mimetype']) {
                            $explnum['explnum_mimetype'] = trouve_mimetype($upload_folder . $explnum['explnum_nomfichier'], $explnum['explnum_extfichier']);
                        }
                        if (!$explnum['explnum_vignette']) {
                            $explnum['explnum_vignette'] = reduire_image($upload_folder . $explnum['explnum_nomfichier']);
                        }
                        $query = 'INSERT INTO explnum SET ' . $idLien . ',
								explnum_nom="' . addslashes($explnum['explnum_nom']) . '",
								explnum_mimetype="' . addslashes($explnum['explnum_mimetype']) . '",
								explnum_extfichier="' . addslashes($explnum['explnum_extfichier']) . '",
								explnum_nomfichier="' . addslashes($explnum['explnum_nomfichier']) . '",
								explnum_vignette="' . addslashes($explnum['explnum_vignette']) . '",	
								explnum_path="' . addslashes($explnum['explnum_path']) . '",
								explnum_repertoire="' . addslashes($explnum['explnum_repertoire']) . '",
								explnum_statut="' . addslashes($explnum['explnum_statut']) . '"';
                        pmb_mysql_query($query, $dbh);
                        $explnum['explnum_id'] = pmb_mysql_insert_id($dbh);
                        if ($explnum['explnum_id']) {
                            //on récup le répertoire dans lequel envoyer le fichier
                            $upload_repertoire = new upload_folder($explnum['explnum_repertoire']);
                            if (!is_dir($upload_repertoire->decoder_chaine($upload_repertoire->repertoire_path))) {
                                $report['error'][] = $this->msg['get_doc_num_upload_repertoire_do_not_exist'];
                                //On efface l'entrée
                                $query = 'DELETE FROM explnum WHERE explnum_id=' . $explnum['explnum_id'];
                                pmb_mysql_query($query, $dbh);
                            }
                            if (!rename($upload_folder . $explnum['explnum_nomfichier'], $upload_repertoire->decoder_chaine($upload_repertoire->repertoire_path) . $explnum['explnum_nomfichier'])) {
                                $report['error'][] = $this->msg['get_doc_num_rename_error'];
                                //On efface l'entrée
                                $query = 'DELETE FROM explnum WHERE explnum_id=' . $explnum['explnum_id'];
                                pmb_mysql_query($query, $dbh);
                            } else {
                                //Réussi ici, on réindex et on incrémente le résultat
                                $obj_explnum = new explnum($explnum['explnum_id']);
                                $index = new indexation_docnum($explnum['explnum_id']);
                                $index->indexer();
                                $report['info'] = 1;
                            }
                        } else {
                            //erreur de déplacement ou de création
                            $report['error'][] = $this->msg['get_doc_num_cant_create_explnum'];
                        }
                    } else {
                        $report['error'][] = $this->msg['get_doc_num_file_not_found'];
                        //On efface l'entrée
                        $query = 'DELETE FROM explnum WHERE explnum_id=' . $explnum['explnum_id'];
                        pmb_mysql_query($query, $dbh);
                    }
                } else {
                    //doc num sans id notice ou bulletin
                    $report['error'][] = $this->msg['get_doc_num_missing_link'];
                }
            } else {
                //il manque un param
                $report['error'][] = $this->msg['get_doc_num_missing_param'];
            }
        }
        return $report;
    }
Esempio n. 7
0
 /**
  * Exécution du processus d'indexation
  */
 function run_index()
 {
     if ($this->mimetype == 'URL') {
         //récupération par cURL
         $this->get_file_from_curl($this->file_url);
         create_tableau_mimetype();
         $this->mimetype = trouve_mimetype($this->fichier);
         if (!$this->mimetype) {
             //Test sur l'extension du fichier
             $this->ext = extension_fichier($this->file_url);
             $this->mimetype = trouve_mimetype($this->file_url, $this->ext);
         }
         if (!$this->mimetype && $this->explnum_nomfichier) {
             //Test sur l'extension du fichier
             $this->ext = extension_fichier($this->explnum_nomfichier);
             $this->mimetype = trouve_mimetype($this->file_url, $this->ext);
         }
         if ($this->mimetype && !$this->ext) {
             $this->ext = extension_fichier($this->file_url);
         }
         if ($this->mimetype && $this->explnum_nomfichier && !$this->ext) {
             $this->ext = extension_fichier($this->explnum_nomfichier);
         }
         if (!$this->mimetype) {
             $this->mimetype = "URL";
         }
         global $prefix_url_image;
         if ($prefix_url_image) {
             $tmpprefix_url_image = $prefix_url_image;
         } else {
             $tmpprefix_url_image = "./";
         }
         if ($tmp = construire_vignette('', "", $this->file_url)) {
             $this->vignette = $tmp;
         } else {
             $this->vignette = construire_vignette('', $tmpprefix_url_image . "images/mimetype/" . icone_mimetype($this->mimetype, $this->ext));
         }
     } else {
         //récupération dans la base
         $this->get_file($this->file_content);
         create_tableau_mimetype();
         if (!$this->mimetype) {
             $this->mimetype = trouve_mimetype($this->fichier);
         }
         if (!$this->mimetype && $this->explnum_nomfichier) {
             //Test sur l'extension du fichier
             $this->ext = extension_fichier($this->explnum_nomfichier);
             $this->mimetype = trouve_mimetype($this->fichier, $this->ext);
         }
     }
     if (file_exists($this->fichier)) {
         //On parse le XML pour recupérer le nom de la classe
         $this->parse_xml();
         //On choisit la classe correspondant au traitement du type MIME
         $this->choose_class($this->class_associee);
     }
 }
Esempio n. 8
0
 function get_file_from_temp($filename, $name, $upload_place)
 {
     global $base_path;
     global $ck_index;
     global $id_rep, $up_place;
     $up_place = $upload_place;
     create_tableau_mimetype();
     $ck_index = true;
     //Initialisation des tableaux d'infos
     $this->infos_docnum = $this->params = array();
     $this->infos_docnum["mime"] = trouve_mimetype($filename, extension_fichier($name));
     $this->infos_docnum["nom"] = substr($name, 0, strrpos($name, "."));
     if (!$this->infos_docnum["nom"]) {
         $this->infos_docnum["nom"] = $name;
     }
     $this->infos_docnum["notice"] = $this->explnum_notice;
     $this->infos_docnum["bull"] = $this->explnum_bulletin;
     $this->infos_docnum["url"] = "";
     $this->infos_docnum["fic"] = false;
     $this->infos_docnum["contenu_vignette"] = construire_vignette('', substr($filename, strrpos($filename, "/")));
     $this->infos_docnum["userfile_name"] = $name;
     $this->infos_docnum["userfile_ext"] = extension_fichier($name);
     if ($up_place && $id_rep != 0) {
         $upfolder = new upload_folder($id_rep);
         $chemin_hasher = "/";
         if ($upfolder->isHashing()) {
             $rep = $upfolder->hachage($this->infos_docnum["userfile_name"]);
             @mkdir($rep);
             $chemin_hasher = $upfolder->formate_path_to_nom($rep);
             $file_name = $rep . $this->infos_docnum["userfile_name"];
             $chemin = $upfolder->formate_path_to_save($chemin_hasher);
         } else {
             $file_name = $upfolder->get_path($this->infos_docnum["userfile_name"]) . $this->infos_docnum["userfile_name"];
             $chemin = $upfolder->formate_path_to_save("/");
         }
         $this->infos_docnum["path"] = $chemin;
         $file_name = $upfolder->encoder_chaine($file_name);
         if (!$this->explnum_nomfichier) {
             //Si je suis en création de fichier numérique
             $nom_tmp = $this->infos_docnum["userfile_name"];
             $continue = true;
             $compte = 1;
             do {
                 $query = "select explnum_notice,explnum_id from explnum where explnum_nomfichier = '" . addslashes($nom_tmp) . "' AND explnum_repertoire='" . $id_rep . "' AND explnum_path='" . addslashes($this->infos_docnum["path"]) . "'";
                 $result = mysql_query($query);
                 if (mysql_num_rows($result) && mysql_result($result, 0, 0) != $this->infos_docnum["notice"]) {
                     //Si j'ai déjà un document numérique avec ce fichier pour une autre notice je dois le renommer pour ne pas perdre l'ancien
                     if (preg_match("/^(.+)(\\..+)\$/i", $this->infos_docnum["userfile_name"], $matches)) {
                         $nom_tmp = $matches[1] . "_" . $compte . $matches[2];
                     } else {
                         $nom_tmp = $this->infos_docnum["userfile_name"] . "_" . $compte;
                     }
                     $compte++;
                 } else {
                     if (mysql_num_rows($result)) {
                         //J'ai déjà ce fichier pour cette notice
                         //Je dois enlever l'ancien document numérique pour ne pas l'avoir en double
                         $old_docnum = new explnum(mysql_result($result, 0, 1));
                         $old_docnum->delete();
                     } else {
                     }
                     $continue = false;
                 }
             } while ($continue);
             if ($compte != 1) {
                 $this->infos_docnum["userfile_name"] = $nom_tmp;
                 if ($upfolder->isHashing()) {
                     $file_name = $rep . $this->infos_docnum["userfile_name"];
                 } else {
                     $file_name = $upfolder->get_path($this->infos_docnum["userfile_name"]) . $this->infos_docnum["userfile_name"];
                 }
                 $file_name = $upfolder->encoder_chaine($file_name);
             } else {
             }
         } else {
         }
         rename($filename, $file_name);
     } else {
         //enregistrement en base
         $this->infos_docnum["contenu"] = file_get_contents($filename);
     }
     $this->params["maj_mimetype"] = true;
     $this->params["maj_data"] = true;
     $this->params["maj_vignette"] = true;
 }
Esempio n. 9
0
 /**
  * @param $name : file name 
  * @param $filename : file name with path
  * @return Array : le tableau des métadonnées du fichier
  */
 static function getMetadata($filename, $name)
 {
     \create_tableau_mimetype();
     $mimetype = \trouve_mimetype($filename, extension_fichier($name));
     if ($mimetype == "application/epub+zip") {
         //récupération de l'image
         $epub = new \epubData(realpath($filename));
         //TODO : Vérifier la récupération des métadonnées d'un epub avec \extract_metas(), sinon rétablir les commentaires ici et le else plus bas
         // 			$tmp=array();
         // 			$tmp=$epub->metas;
         // 			foreach($tmp as $key=>$val){
         // 				$metas[strtoupper(substr($key,0,1)).substr($key,1)]=$val;
         // 			}
         $img = imagecreatefromstring($epub->getCoverContent());
         $file = tempnam(sys_get_temp_dir(), "vign");
         imagepng($img, $file);
         $entry['thumbnail_url'] = 'data:image/png;base64,' . base64_encode(file_get_contents($file));
         unlink($file);
     }
     // 		else{
     return \extract_metas(realpath($filename), $mimetype);
     // 		}
 }
Esempio n. 10
0
 function get_notice_by_meta($name, $filename)
 {
     global $pmb_keyword_sep;
     global $pmb_type_audit;
     global $webdav_current_user_name, $webdav_current_user_id;
     \create_tableau_mimetype();
     $mimetype = \trouve_mimetype($filename, extension_fichier($name));
     $notice_id = 0;
     $title = $cplt = $code = $pages = $year = $keywords = $url = $thumbnail_content = "";
     //on commence avec la gymnatisque des métas...
     if ($mimetype == "application/epub+zip") {
         //pour les ebook, on gère ca directement ici !
         $epub = new \epubData(realpath($filename));
         $title = $epub->metas['title'][0];
         $authors = $epub->metas['creator'];
         $co_authors = $epub->metas['contributor'];
         if ($epub->metas['identifier']['isbn']) {
             $code = \formatISBN($epub->metas['identifier']['isbn'], 13);
         } else {
             if ($epub->metas['identifier']['ean']) {
                 $code = \EANtoISBN($epub->metas['identifier']['ean']);
                 $code = \formatISBN($code, 13);
             }
         }
         if ($epub->metas['identifier']['uri']) {
             $url = \clean_string($epub->metas['identifier']['uri']);
         }
         $publisher = $epub->metas['publisher'][0];
         $year = $epub->metas['date'][0]['value'];
         if (strlen($year) && strlen($year) != 4) {
             $year = \formatdate(detectFormatDate($year));
         }
         $lang = $epub->metas['language'];
         $resume = implode("\n", $epub->metas['description']);
         $keywords = implode($pmb_keyword_sep, $epub->metas['subject']);
         //jouons à et si on trouvait a vignette...
         $img = imagecreatefromstring($epub->getCoverContent());
         $file = tempnam(sys_get_temp_dir(), "vign");
         imagepng($img, $file);
         $thumbnail_content = file_get_contents($file);
         unlink($file);
     } else {
         $metas = \extract_metas(realpath($filename), $mimetype);
         if ($metas['Title'] && $metas['Author'] && $metas['Subject']) {
             $title = $metas['Title'];
             $author = $metas['Author'];
             $cplt = $metas['Subject'];
         } else {
             // métas non fiable, on regarde avec le titre...
             $title = $name;
         }
         //date de création...
         if ($metas["CreateDate"]) {
             $year = substr($metas["CreateDate"], 0, 4);
         }
         //pages
         if ($metas['PageCount']) {
             $pages = $metas['PageCount'];
         }
         //keywords
         if ($metas['Keywords']) {
             foreach ($metas['Keywords'] as $keyword) {
                 if ($keywords != "") {
                     $keywords .= $pmb_keyword_sep;
                 }
                 $keywords .= $keyword;
             }
         }
     }
     $query = "select notice_id from notices where tit1 = '" . addslashes($title) . "'";
     $result = mysql_query($query);
     if (mysql_num_rows($result)) {
         $notice_id = mysql_result($result, 0, 0);
     }
     if (!$notice_id) {
         //en cas d'une leture moyenne des infos, on s'assure d'avoir au moins un titre....
         if (!$title) {
             $title = $name;
         }
         if ($publisher) {
             $ed_1 = \editeur::import(array('name' => $publisher));
         } else {
             $ed_1 = 0;
         }
         $ind_wew = $title . " " . $cplt;
         $ind_sew = \strip_empty_words($ind_wew);
         $query = "insert into notices set \n\t\t\t\ttit1 = '" . addslashes($title) . "'," . ($code ? "code='" . $code . "'," : "") . "ed1_id = '" . $ed_1 . "'," . ($cplt ? "tit4 = '" . addslashes($cplt) . "'," : "") . ($pages ? "npages = '" . addslashes($pages) . "'," : "") . ($keywords ? "index_l = '" . addslashes($keywords) . "'," : "") . "\n\t\t\t\tyear = '" . $year . "',\n\t\t\t\tniveau_biblio='m', \n\t\t\t\tniveau_hierar='0',\n\t\t\t\tstatut = '" . $this->config['default_statut'] . "',\n\t\t\t\tindex_wew = '" . $ind_wew . "',\n\t\t\t\tindex_sew = '" . $ind_sew . "',\n\t\t\t\tn_resume = '" . addslashes($resume) . "',\n\t\t\t\tlien = '" . addslashes($url) . "',\n\t\t\t\tindex_n_resume = '" . \strip_empty_words($resume) . "'," . ($thumbnail_content ? "thumbnail_url = 'data:image/png;base64," . base64_encode($thumbnail_content) . "'," : "") . "create_date = sysdate(), \n\t\t\t\tupdate_date = sysdate()";
         mysql_query($query);
         $notice_id = mysql_insert_id();
         $sign = new \notice_doublon();
         mysql_query("update notices set signature = '" . $sign->gen_signature($notice_id) . "' where notice_id = " . $notice_id);
         //traitement audit
         if ($pmb_type_audit) {
             $query = "INSERT INTO audit SET ";
             $query .= "type_obj='1', ";
             $query .= "object_id='{$notice_id}', ";
             $query .= "user_id='{$webdav_current_user_id}', ";
             $query .= "user_name='{$webdav_current_user_name}', ";
             $query .= "type_modif=1 ";
             $result = @mysql_query($query);
         }
         if (count($authors)) {
             $i = 0;
             foreach ($authors as $author) {
                 $aut = array();
                 if ($author['file-as']) {
                     $infos = explode(",", $author['file-as']);
                     $aut = array('name' => $infos[0], 'rejete' => $infos[1], 'type' => 70);
                 }
                 if (!$aut['name']) {
                     $aut = array('name' => $author['value'], 'type' => 70);
                 }
                 $aut_id = \auteur::import($aut);
                 if ($aut_id) {
                     $query = "insert into responsability set \n\t\t\t\t\t\t\tresponsability_author = '" . $aut_id . "',\n\t\t\t\t\t\t\tresponsability_notice = '" . $notice_id . "',\n\t\t\t\t\t\t\tresponsability_type = '0'";
                     mysql_query($query);
                     $i++;
                 }
             }
         }
         if (count($co_authors)) {
             foreach ($co_authors as $author) {
                 $aut = array();
                 if ($author['file-as']) {
                     $infos = explode(",", $author['file-as']);
                     $aut = array('name' => $infos[0], 'rejete' => $infos[1], 'type' => 70);
                 }
                 if (!$aut['name']) {
                     $aut = array('name' => $author['value'], 'type' => 70);
                 }
                 $aut_id = \auteur::import($aut);
                 if ($aut_id) {
                     $query = "insert into responsability set \n\t\t\t\t\t\t\tresponsability_author = '" . $aut_id . "',\n\t\t\t\t\t\t\tresponsability_notice = '" . $notice_id . "',\n\t\t\t\t\t\t\tresponsability_type = '0',\n\t\t\t\t\t\t\trepsonsability_ordre = '" . $i . "'";
                     mysql_query($query);
                     $i++;
                 }
             }
         }
     }
     return $notice_id;
 }