]> git.bts.cx Git - cx.git/blobdiff - cx/lib/posts.php
allow html in body of posts
[cx.git] / cx / lib / posts.php
index 6aca72e54ce59fa30f70836896b74e7719a0193b..0a2ac4d997ff9c5133c0c0a27cffc6e4ee376f9e 100644 (file)
@@ -10,6 +10,16 @@ function mk_markdown($markdown) {
        return $Parsedown->text($markdown);
 }
 
        return $Parsedown->text($markdown);
 }
 
+class PostMetadata {
+       public $hero_image;
+       public $hero_image_alt;
+
+       public function __construct($dict) {
+               $this->hero_image = isset($dict['post_hero_image']) ? $dict['post_hero_image'] : null;
+               $this->hero_image_alt = isset($dict['post_hero_image_alt']) ? $dict['post_hero_image_alt'] : null;
+       }
+}
+
 class Post {
        public $id;
        public $title;
 class Post {
        public $id;
        public $title;
@@ -36,6 +46,22 @@ class Post {
                        $this->html_excerpt = mk_markdown($segments[0]);
                }
        }
                        $this->html_excerpt = mk_markdown($segments[0]);
                }
        }
+
+       public function get_metadata() {
+               $data = [];
+
+               $doc = new DOMDocument();
+               $doc->loadHTML($this->html_content);
+
+               $image_tag = $doc->getElementsByTagName('img')[0];
+
+               if ($image_tag != null) {
+                       $data['post_hero_image'] = $image_tag->getAttribute('src');
+                       $data['post_hero_image_alt'] = htmlspecialchars($image_tag->getAttribute('alt'));
+               }
+
+               return new PostMetadata($data);
+       }
 }
 
 function cx_post_make_slug($title) {
 }
 
 function cx_post_make_slug($title) {