setParameter(null, 'IntertitresRiches', $intertitres_riches); $xml = new DOMDocument(); $xml->load($xml_entre); $xsl = new DOMDocument(); $xsl->load($xslt_texte); $proc->importStylesheet($xsl); // attachement des regles xsl // lancer le parseur if (!$xml_sortie = $proc->transformToXml($xml)) { die(_T('odtspip:err_transformation_xslt')); } // construire l'array des parametres de l'article preg_match('/(.*?)<\/titre>/',$xml_sortie, $t); $Tarticle['titre'] = $t[1]; preg_match('/(.*?)<\/texte>/s',$xml_sortie, $a); $Tarticle['texte'] = $a[1]; $Tarticle['date_redac'] = '0000-00-00 00:00:00'; $Tarticle['date'] = $Tarticle['date_modif'] = $date_jour; $Tarticle['lang'] = $LanguePublication; $Tarticle['statut'] = 'prop'; $Tarticle['accepter_forum'] = 'non'; // traitements complementaires du texte de l'article // remplacer les > et < $a_remplacer = array('<', '>', '<', '>', '"'); $remplace = array('<', '>', '<', '>', "'"); // si plugin TYPOENLUMINE est en version 3 (ou plus) utiliser la syntaxe {{{**titre 2}}} a la place de {2{titre 2}2} // (cf http://www.spip-contrib.net/odt2spip-creation-d-articles-a-partir-de-fichiers#forum435614) if (array_key_exists('TYPOENLUMINEE', $Tplugins) AND intval(substr($Tplugins['TYPOENLUMINEE']['version'], 0, 1)) >= 3) { array_push($a_remplacer, '{2{', '}2}', '{3{', '}3}', '{4{', '}4}', '{5{', '}5}'); array_push($remplace, '{{{**', '}}}', '{{{***', '}}}', '{{{****', '}}}', '{{{*****', '}}}'); } $Tarticle['texte'] = str_replace($a_remplacer, $remplace, $Tarticle['texte']); // gerer la conversion des Object X => on delegue a /inc/odt2spip_traiter_mathml.php if (preg_match_all('/(.*?)<\/math>/', $Tarticle['texte'], $match, PREG_PATTERN_ORDER) > 0) { include_spip('inc/odt2spip_traiter_mathml'); foreach ($match[1] as $balise) { $fic_content = $rep_dezip . $balise . '/content.xml'; // si le fichier /Object X/content.xml ne contient pas du mathML, virer la balise if (substr_count(file_get_contents($fic_content), '' . $balise . '', '', $Tarticle['texte']); continue; } // sinon faire la transfo xsl du contenu du fichier pour obtenir le LateX qu'on place dans la balise $Tarticle['texte'] = str_replace($balise, odt2spip_traiter_mathml($fic_content), $Tarticle['texte']); } } // virer les sauts de ligne multiples $Tarticle['texte'] = preg_replace('/([\r\n]{2})[ \r\n]*/m', "$1", $Tarticle['texte']); // si malgré toutes les magouille xslt la balise est vide, mettre le nom du fichier odt if ($Tarticle['titre'] == '') $Tarticle['titre'] = str_replace(array('_','-','.odt'), array(' ',' ',''), $fichier_zip); // traiter les images: dans tous les cas il faut les integrer dans la table documents $rep_pictures = $rep_dezip . "Pictures/"; // parametres de conversion de taille des images : cm -> px (en 96 dpi puisque c'est ce que semble utiliser Writer) $conversion_image = 96 / 2.54; preg_match_all('/ 0) { if (!isset($odt2spip_retailler_img)) { $odt2spip_retailler_img = charger_fonction('odt2spip_retailler_img', 'inc'); } if (!isset($ajouter_documents)) { $ajouter_documents = charger_fonction('ajouter_documents', 'action'); } $Timages = array(); foreach($match[1] as $ch) { $Tdims = explode(';;;', $ch); $img = $Tdims[0]; // si l'extension du fichier image n'est pas jpg/gif/png virer la balise if (!in_array(strtolower(substr($img, -3)), array('jpg','gif','png'))) $Tarticle['texte'] = str_replace($ch, '', $Tarticle['texte']); elseif (file_exists($rep_pictures . $img)) { // retailler l'image en fct des parametres ;;;largeur;;;hauteur;;; $largeur = round($Tdims[1] * $conversion_image); $hauteur = round($Tdims[2] * $conversion_image); $odt2spip_retailler_img($rep_pictures . $img, $largeur, $hauteur); if ($id_document = $ajouter_documents('new', array(array('tmp_name' => $rep_pictures . $img, 'name' => $img, 'titrer' => 0, 'distant' => 0, 'type' => $type)), '', 0, $type) AND $id_img = intval($id_document[0]) AND $id_img == $id_document[0]) { $Timages[] = $id_img; // remplacer les noms de fichier par leur id_document dans les du texte $Tarticle['texte'] = str_replace($ch, $id_img, $Tarticle['texte']); } } } // si les images doivent êtres intégrées en mode document, remplacer la balise par if ($type == 'document') preg_replace('/