diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index 265e59f8aa17d4fbef75eb02d9e5403db4d5d0f2..3eae9a086a52c122276387841de5ef063320cfe3 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -172,49 +172,8 @@ function embed_document($id_document, $les_parametres="", $afficher_titre=true) } else $type = 'fichier'; - // Pour RealVideo - $real = ((!ereg("^controls", $les_parametres)) AND (ereg("^(rm|ra|ram)$", $extension))); - // Pour Flash - $flash = ((!ereg("^controls", $les_parametres)) AND (ereg("^(swf)$", $extension))); - - if ($inclus == "embed" AND !$real) { - - for ($i = 0; $i < count($params); $i++) { - if (ereg("([^\=]*)\=([^\=]*)", $params[$i], $vals)){ - $nom = $vals[1]; - $valeur = $vals[2]; - $inserer_vignette .= "<param name='$nom' value='$valeur' />"; - $param_emb .= " $nom='$valeur'"; - if ($nom == "controls" AND $valeur == "PlayButton") { - $largeur = 40; - $hauteur = 25; - } - else if ($nom == "controls" AND $valeur == "PositionSlider") { - $largeur = $largeur - 40; - $hauteur = 25; - } - } - } - - $vignette = "<object "; - if ($flash) - $vignette .= - "type='application/x-shockwave-flash' data='$fichier' "; - - $vignette .= "width='$largeur' height='$hauteur'>\n"; - $vignette .= "<param name='movie' value='$fichier' />\n"; - $vignette .= "<param name='src' value='$fichier' />\n"; - $vignette .= $inserer_vignette; - - if (!$flash) - $vignette .= "<embed src='$fichier' $param_emb width='$largeur' height='$hauteur'></embed>\n"; - $vignette .= "</object>\n"; - } - else if ($inclus == "embed" AND $real) { - $vignette .= "<div>".embed_document ($id_document, "controls=ImageWindow|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false)."</div>"; - $vignette .= embed_document ($id_document, "controls=PlayButton|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false); - $vignette .= embed_document ($id_document, "controls=PositionSlider|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false); - } + if ($inclus == "embed") + $vignette = parametrer_embed_document($fichier, $id_document, $hauteur, $largeur, $extension, $les_parametres, $params); else if ($inclus == "image") { $fichier_vignette = $fichier; $largeur_vignette = $largeur; @@ -257,6 +216,59 @@ function embed_document($id_document, $les_parametres="", $afficher_titre=true) return $retour; } +function parametrer_embed_document($fichier, $id_document, $hauteur, $largeur, $extension, $les_parametres, $params) +{ + if ((!ereg("^controls", $les_parametres)) AND (ereg("^(rm|ra|ram)$", $extension))) + // Pour RealVideo (??? -- c'est toujours irreel la video. [esj]) + { + $param = "|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres"; + + return "<div>" . + embed_document($id_document, "controls=ImageWindow$param", false) . + "</div>" . + embed_document($id_document, "controls=PlayButton$param", false) . + embed_document($id_document, "controls=PositionSlider$param", false); + } else { + $inserer_vignette = ''; + + for ($i = 0; $i < count($params); $i++) { + if (ereg("([^\=]*)\=([^\=]*)", $params[$i], $vals)){ + $nom = $vals[1]; + $valeur = $vals[2]; + $inserer_vignette .= "<param name='$nom' value='$valeur' />"; + $param_emb .= " $nom='$valeur'"; + if ($nom == "controls" AND $valeur == "PlayButton") { + $largeur = 40; + $hauteur = 25; + } else if ($nom == "controls" AND $valeur == "PositionSlider") { + $largeur = $largeur - 40; + $hauteur = 25; + } + } + } + + $params = "<param name='movie' value='$fichier' />\n" + . "<param name='src' value='$fichier' />\n" + . $inserer_vignette; + + // Pour Flash + if ((!ereg("^controls", $les_parametres)) AND ($extension=='swf')) + + return "<object " + . "type='application/x-shockwave-flash' data='$fichier' " + . "width='$largeur' height='$hauteur'>\n" + . $params + . "</object>\n"; + else { + $emb = "<embed src='$fichier' $param_emb width='$largeur' height='$hauteur'></embed>\n"; + if ($extension == 'svg') return $emb; + return "<object width='$largeur' height='$hauteur'>\n" + . $params + . $emb + . "</object>\n"; + } + } +} // // Integration des images et documents diff --git a/ecrire/inc/getdocument.php b/ecrire/inc/getdocument.php index 2c783c2f7507db3c702bcca07c1cfca319b46f22..13f3a4112f7774081cae24399b261747a5be679e 100644 --- a/ecrire/inc/getdocument.php +++ b/ecrire/inc/getdocument.php @@ -413,23 +413,33 @@ function traite_svg($file) { include_spip('inc/texte'); $texte = spip_file_get_contents($file); - $new = safehtml($texte); // securite: virer les scripts et les references externes + // trop expeditif, a ameliorer + $new = safehtml($texte); if ($new != $texte) ecrire_fichier($file, $new); - $width = $height = 150; + $width = $height = 150; if (preg_match(',<svg[^>]+>,', $new, $s)) { $s = $s[0]; + if (preg_match(',\WviewBox\s*=\s*.\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+),i', $s, $r)){ + $width = $r[3]; + $height = $r[4]; + } else { // si la taille est en centimetre, estimer le pixel a 1/64 de cm - if (preg_match(',\Wwidth\s*=\s*.(\d+)([^"\']*),', $s, $r)){ - $width = $r[1]; - if ($r[2] == 'cm') $width <<=6; + if (preg_match(',\Wwidth\s*=\s*.(\d+)([^"\']*),i', $s, $r)){ + if ($r[2] != '%') { + $width = $r[1]; + if ($r[2] == 'cm') $width <<=6; + } } - if (preg_match(',\Wheight\s*=\s*.(\d+)([^"\']*),', $s, $r)){ - $height = $r[1]; - if ($r[2] == 'cm') $height <<=6; + if (preg_match(',\Wheight\s*=\s*.(\d+)([^"\']*),i', $s, $r)){ + if ($r[2] != '%') { + $height = $r[1]; + if ($r[2] == 'cm') $height <<=6; + } } + } } return array($width, $height); }