]> git.immae.eu Git - github/wallabag/wallabag.git/blame - inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php
phpepub via composer
[github/wallabag/wallabag.git] / inc / 3rdparty / libraries / MOBIClass / PreprocessedArticle.php
CommitLineData
4188f38a 1<?php
2
3/**
4 * Description of OnlineArticle
5 *
6 * @author Sander
7 */
8class PreprocessedArticle extends ContentProvider {
9 private $text;
10 private $images;
11 private $metadata = array();
12 private $imgCounter = 0;
13
14 public function __construct($textData, $imageLinks, $metadata) {
15 $this->text = $textData;
16 $this->metadata = $metadata;
17
18 $this->images = $this->downloadImages($imageLinks);
19 }
20
21 /**
22 * Create a Preprocessed article from a json string
23 * @param string $json JSON data. Should be of the following format:
24 * {"text": "TEXT", "images: ["imageURL1", "imageURL2"], "metadata": {"key": "value"}}
25 *
26 * Note: Any image tags should have the recindex attribute set to the appropriate index (the
27 * same index as the image in the array)
28 * @return PreprocessedArticle The generated preprocessed array
29 */
30 static public function CreateFromJson($json){
31 $data = json_decode($json);
32 return new PreprocessedArticle($data["text"], $data["images"], $data["metadata"]);
33 }
34
35 /**
36 * Get the text data to be integrated in the MOBI file
37 * @return string
38 */
39 public function getTextData(){
40 return $this->text;
41 }
42 /**
43 * Get the images (an array containing the jpeg data). Array entry 0 will
44 * correspond to image record 0.
45 * @return array
46 */
47 public function getImages(){
48 return $this->images;
49 }
50 /**
51 * Get the metadata in the form of a hashtable (for example, title or author).
52 * @return array
53 */
54 public function getMetaData(){
55 return $this->metadata;
56 }
57 /**
58 *
59 * @param DOMElement $dom
60 * @return array
61 */
62 private function downloadImages($links){
63 $images = array();
64 foreach($links as $link) {
65 $imgFile = @imagecreatefromstring(Http::Request($link));
66
67 if($imgFile === false){
68 $imgFile = @imagecreate(1, 1);
69 $black = @imagecolorallocate($imgFile, 255, 255, 255);
70 }
71 if($imgFile !== false){
72 @imagefilter($imgFile, IMG_FILTER_GRAYSCALE);
73
74 ob_start();
75 @imagejpeg($imgFile);
76 $image = ob_get_contents();
77 ob_end_clean();
78
79 $images[$this->imgCounter] = new FileRecord(new Record($image));
80 imagedestroy($imgFile);
81
82 $this->imgCounter++;
83 }
84 }
85
86 return $images;
87 }
88}
89?>