]> git.bts.cx Git - cx.git/blob - cx/lib/markdown.php
Custom markdown for inserting images
[cx.git] / cx / lib / markdown.php
1 <?php
2
3 cx_require('lib', 'images.php');
4 cx_require('lib', 'url.php');
5 cx_require('third_party', 'parsedown', 'Parsedown.php');
6
7 class ExtendedParsedown extends Parsedown {
8         public function __construct() {
9                 $this->InlineTypes['{'][]= 'BlogImage';
10                 $this->inlineMarkerList .= '{';
11         }
12
13         protected function inlineBlogImage($excerpt) {
14                 if (preg_match('/^{img:([^}]+)}/', $excerpt['text'], $matches)) {
15                         $image_id = $matches[1];
16                         $image = cx_images_find_image($image_id);
17
18                         if ($image == null) {
19                                 return;
20                         }
21
22                         $permalink = '/data/images/' . $image->url;
23
24                         return array(
25                                 'extent' => strlen($matches[0]) + 1, 
26                                 'element' => array(
27                                         'name' => 'img',
28                                         'attributes' => array(
29                                                 'src' => cx_url($permalink),
30                                                 'alt' => $image->alt_text,
31                                         ),
32                                 ),
33                         );
34                 }
35         }
36 }
37
38 function cx_markdown_generate_html($markdown) {
39         static $Parsedown = new ExtendedParsedown();
40         return $Parsedown->text($markdown);
41 }