/** * Transforme un texte SkrivML en HTML * @param string $str Texte SkrivML * @return string Texte HTML */ public static function SkrivToHTML($str) { if (!self::$skriv) { self::$skriv = new \KD2\SkrivLite(); self::$skriv->registerExtension('fichier', ['\\Garradin\\Fichiers', 'SkrivFichier']); self::$skriv->registerExtension('image', ['\\Garradin\\Fichiers', 'SkrivImage']); } $skriv =& self::$skriv; $str = preg_replace_callback('/(fichier|image):\\/\\/(\\d+)/', function ($match) use($skriv) { try { $file = new Fichiers((int) $match[2]); } catch (\InvalidArgumentException $e) { return $skriv->parseError('/!\\ Lien fichier : ' . $e->getMessage()); } return $file->getURL(); }, $str); $str = self::$skriv->render($str); return $str; }
/** * Callback utilisé pour l'extension <<image>> dans le wiki-texte * @param array $args Arguments passés à l'extension * @param string $content Contenu éventuel (en mode bloc) * @param object $skriv Objet SkrivLite */ public static function SkrivImage($args, $content, $skriv) { $_args = []; $_align_values = ['droite', 'gauche', 'centre']; foreach ($args as $value) { if (preg_match('/^\\d+$/', $value)) { $_args['id'] = (int) $value; } else { if (in_array($value, $_align_values)) { $_args['align'] = $value; } else { $_args['caption'] = $value; } } } if (empty($_args['id'])) { return $skriv->parseError('/!\\ Tag image : aucun numéro de fichier indiqué.'); } try { $file = new Fichiers($_args['id']); } catch (\InvalidArgumentException $e) { return $skriv->parseError('/!\\ Tag image : ' . $e->getMessage()); } if (!$file->image) { return $skriv->parseError('/!\\ Tag image : ce fichier n\'est pas une image.'); } if (empty($_args['caption'])) { $_args['caption'] = false; } $out = '<a href="' . $file->getURL() . '" class="internal-image">'; $out .= '<img src="' . $file->getURL($_args['align'] == 'centre' ? 500 : 200) . '" alt="'; if ($_args['caption']) { $out .= htmlspecialchars($_args['caption'], ENT_QUOTES, 'UTF-8'); } $out .= '" /></a>'; if (!empty($_args['align'])) { $out = '<figure class="image ' . $_args['align'] . '">' . $out; if ($_args['caption']) { $out .= '<figcaption>' . htmlspecialchars($_args['caption'], ENT_QUOTES, 'UTF-8') . '</figcaption>'; } $out .= '</figure>'; } return $out; }