Changeset 27229 in spip-zone


Ignore:
Timestamp:
Mar 11, 2009, 6:30:57 PM (10 years ago)
Author:
kent1@…
Message:

on continue à séparer les choses...

La fonction de traitement d'image part dans inc/ et là on est clean pour séparer la génération en plusieurs fonctions...

Location:
_plugins_/_stable_/odt2spip/version_0.2_dev
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/odt2spip/version_0.2_dev/action/odt2spip_importe.php

    r27220 r27229  
    22
    33function action_odt2spip_importe() {
    4     global $visiteur_session, $spip_version_code;;
     4    global $visiteur_session;
    55   
    66    $id_auteur = $visiteur_session['id_auteur'];
     
    1919   
    2020    if (!autoriser('creerarticledans', 'rubrique', $id_rubrique)) die(_T('avis_non_acces_page'));
    21                
     21
    2222        // les chemins a utiliser
    2323        $rep_IMG = _DIR_RACINE._NOM_PERMANENTS_ACCESSIBLES;
     
    4444    include_spip("inc/pclzip");
    4545    $zip = new PclZip($rep_dezip.$fichier_zip);
    46           $ok = $zip->extract(
    47         PCLZIP_OPT_PATH, $rep_dezip,
    48         PCLZIP_OPT_SET_CHMOD, _SPIP_CHMOD,
    49         PCLZIP_OPT_REPLACE_NEWER
    50           );
    51           if ($zip->error_code < 0) {
    52                     spip_log('charger_decompresser erreur zip ' . $zip->error_code .' pour fichier ' . $rep_dezip.$fichier_zip);
    53                     die($zip->errorName(true));  //$zip->error_code
    54           }
     46        $ok = $zip->extract(
     47                PCLZIP_OPT_PATH, $rep_dezip,
     48                PCLZIP_OPT_SET_CHMOD, _SPIP_CHMOD,
     49                PCLZIP_OPT_REPLACE_NEWER
     50        );
     51        if ($zip->error_code < 0) {
     52                spip_log('charger_decompresser erreur zip ' . $zip->error_code .' pour fichier ' . $rep_dezip.$fichier_zip);
     53                die($zip->errorName(true));  //$zip->error_code
     54        }
    5555   
    5656        // variables en dur pour xml en entree et xslt utilisee
     
    6363
    6464        // determiner si le plugin enluminure_typo ou intertitres_enrichis est present & actif
    65     include_spip('inc/plugin');
    66     $Tplugins = liste_plugin_actifs();
    67     $intertitres_riches = ((array_key_exists('TYPOENLUMINEE', $Tplugins) OR array_key_exists('INTERTITRESTDM', $Tplugins)) ? 'oui' : 'non');
     65        include_spip('inc/plugin');
     66        $Tplugins = liste_plugin_actifs();
     67        $intertitres_riches = ((array_key_exists('TYPOENLUMINEE', $Tplugins) OR array_key_exists('INTERTITRESTDM', $Tplugins)) ? 'oui' : 'non');
    6868   
    6969        // appliquer la transformation XSLT sur le fichier content.xml
     
    7575
    7676                // passage d'un parametre a la xslt
    77         $proc->setParameter(null, 'IntertitresRiches', $intertitres_riches);   
     77                $proc->setParameter(null, 'IntertitresRiches', $intertitres_riches);   
    7878       
    7979        $xml = new DOMDocument();
     
    9595    $xml_sortie = preg_replace('/([\r\n]{2})[ \r\n]*/m', "$1", $xml_sortie);
    9696       
    97     // traiter les images: dans tous les cas il faut les integrer dans la table documents
    98     // en 2.0 c'est mode image + les fonctions de snippets font la liaison => on bloque la liaison en filant un id_article vide
    99         $id_article_tmp = '';   
     97        // traiter les images: dans tous les cas il faut les integrer dans la table documents
     98        // en 2.0 c'est mode image + les fonctions de snippets font la liaison => on bloque la liaison en filant un id_article vide
     99
    100100        preg_match_all('/<img([;a-zA-Z0-9\.]*)/', $xml_sortie, $match, PREG_PATTERN_ORDER);
     101
    101102        if (@count($match) > 0) {
    102                 include_spip('inc/ajouter_document');
     103                if(!isset($odt2spip_retailler_img))
     104            $odt2spip_retailler_img = charger_fonction('odt2spip_retailler_img','inc');
     105                if(!isset($ajouter_documents))
     106                        $ajouter_documents = charger_fonction('ajouter_documents','inc');
    103107        $T_images = array();
    104108        foreach($match[1] as $ch) {
     
    109113                $largeur = round($Tdims[1]*$conversion_image);
    110114                $hauteur = round($Tdims[2]*$conversion_image);
    111                 odt2spip_retailler_img($rep_pictures.$img, $largeur, $hauteur);
    112                                 // integrer l'image comme document spip
    113                 $ajouter_documents = charger_fonction('ajouter_documents','inc');
     115                $odt2spip_retailler_img($rep_pictures.$img, $largeur, $hauteur);
    114116                $type = 'image';
    115                 if ($id_document = $ajouter_documents($rep_pictures.$img, $img, "article", $id_article_tmp, $type, 0, $toto='')) {
     117                if ($id_document = $ajouter_documents($rep_pictures.$img, $img, "article", "", $type, 0, $toto='')) {
    116118                                // uniformiser la sortie: si on est en 1.9.2 inc_ajouter_documents_dist() retourne le type de fichier (extension) alors qu'en 2.0 c'est l'id_document
    117119                                        if (!is_numeric($id_document)) {
     
    166168    redirige_par_entete(parametre_url(str_replace("&amp;","&",urldecode($redirect)),'id_article',$id_article,'&'));
    167169}
    168 
    169 // retailler une image : (ne gere que les images GIF, JPG et PNG)
    170 // $img_ini = CHEMIN+NOM_FICHIER de l'img initiale, $l et $h = largeur et hauteur max de l'image finale
    171 // gestion de la transparence des PNG : code de matt1walsh@gmail.com sur http://fr2.php.net/manual/fr/function.imagecopyresampled.php
    172 function odt2spip_retailler_img($img_ini, $l = '', $h = 400) {
    173     if (!file_exists($img_ini)) return 'Le fichier '.$img_ini.' n\'existe pas';
    174         // determiner le type de fonction de creation d'image a utiliser
    175     $param_img = getimagesize($img_ini);
    176     $type_img = $param_img[2];
    177     switch ($type_img) {
    178         case 1 :
    179             $fct_creation_ext = 'imagecreatefromgif';
    180             $fct_ecrire = 'imagegif';
    181         break;
    182         case 2 :
    183             $fct_creation_ext = 'imagecreatefromjpeg';
    184             $fct_ecrire = 'imagejpeg';
    185         break;
    186         case 3 :
    187             $fct_creation_ext = 'imagecreatefrompng';
    188             $fct_ecrire = 'imagepng';
    189         break;
    190         default :
    191             return;
    192         break;
    193     }
    194         // calculer le ratio a appliquer aux dimensions initiales
    195     $l_ini = $param_img[0];
    196     $h_ini = $param_img[1];
    197     $ratio = ($l != '' ? (abs($l_ini - $l) >= abs($h_ini - $h) ? $l/$l_ini : $h/$h_ini) : $h/$h_ini);
    198     $img_nv = imagecreatetruecolor($l_ini*$ratio, $h_ini*$ratio);
    199     $img_acopier = $fct_creation_ext($img_ini);
    200        
    201     // gerer la transparence pour les images PNG (le mec qui a trouve ce code est genial! :-)
    202     if ($type_img == 3) {
    203         imagecolortransparent($img_nv, imagecolorallocate($img_nv, 0, 0, 0));
    204         imagealphablending($img_nv, false);
    205         imagesavealpha($img_nv, true);
    206     }
    207     imagecopyresampled($img_nv, $img_acopier, 0, 0, 0, 0, $l_ini*$ratio, $h_ini*$ratio, $l_ini, $h_ini);                     
    208         // sauvegarder l'image et eventuellement detruire le fichier image initial
    209     $fct_ecrire($img_nv, $img_ini);
    210     imagedestroy($img_nv);
    211     imagedestroy($img_acopier);
    212 }
    213170?>
Note: See TracChangeset for help on using the changeset viewer.