aboutsummaryrefslogtreecommitdiffhomepage
path: root/inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php
diff options
context:
space:
mode:
authorThomas Citharel <tcit@tcit.fr>2015-02-18 19:17:31 +0100
committerThomas Citharel <tcit@tcit.fr>2015-02-18 19:17:31 +0100
commit4b1fa4c2febc7abbc6da3d65e4e760949a55843c (patch)
treea93ec906dbb03ec70e9cdc5dc876392c6d758e97 /inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php
parent364953ede585b75fb29dc94b1c5f853053eaed0b (diff)
parentdf89c6f71adebfdb754ec3eb2fd775d8efbdb280 (diff)
downloadwallabag-1.9.tar.gz
wallabag-1.9.tar.zst
wallabag-1.9.zip
Merge pull request #1081 from wallabag/dev1.9
Version 1.9.0
Diffstat (limited to 'inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php')
-rw-r--r--inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php89
1 files changed, 89 insertions, 0 deletions
diff --git a/inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php b/inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php
new file mode 100644
index 00000000..2e992404
--- /dev/null
+++ b/inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php
@@ -0,0 +1,89 @@
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?>