diff options
Diffstat (limited to 'application/formatter/BookmarkFormatter.php')
-rw-r--r-- | application/formatter/BookmarkFormatter.php | 101 |
1 files changed, 96 insertions, 5 deletions
diff --git a/application/formatter/BookmarkFormatter.php b/application/formatter/BookmarkFormatter.php index a80d83fc..e1b7f705 100644 --- a/application/formatter/BookmarkFormatter.php +++ b/application/formatter/BookmarkFormatter.php | |||
@@ -2,15 +2,38 @@ | |||
2 | 2 | ||
3 | namespace Shaarli\Formatter; | 3 | namespace Shaarli\Formatter; |
4 | 4 | ||
5 | use DateTime; | 5 | use DateTimeInterface; |
6 | use Shaarli\Config\ConfigManager; | ||
7 | use Shaarli\Bookmark\Bookmark; | 6 | use Shaarli\Bookmark\Bookmark; |
7 | use Shaarli\Config\ConfigManager; | ||
8 | 8 | ||
9 | /** | 9 | /** |
10 | * Class BookmarkFormatter | 10 | * Class BookmarkFormatter |
11 | * | 11 | * |
12 | * Abstract class processing all bookmark attributes through methods designed to be overridden. | 12 | * Abstract class processing all bookmark attributes through methods designed to be overridden. |
13 | * | 13 | * |
14 | * List of available formatted fields: | ||
15 | * - id ID | ||
16 | * - shorturl Unique identifier, used in permalinks | ||
17 | * - url URL, can be altered in some way, e.g. passing through an HTTP reverse proxy | ||
18 | * - real_url (legacy) same as `url` | ||
19 | * - url_html URL to be displayed in HTML content (it can contain HTML tags) | ||
20 | * - title Title | ||
21 | * - title_html Title to be displayed in HTML content (it can contain HTML tags) | ||
22 | * - description Description content. It most likely contains HTML tags | ||
23 | * - thumbnail Thumbnail: path to local cache file, false if there is none, null if hasn't been retrieved | ||
24 | * - taglist List of tags (array) | ||
25 | * - taglist_urlencoded List of tags (array) URL encoded: it must be used to create a link to a URL containing a tag | ||
26 | * - taglist_html List of tags (array) to be displayed in HTML content (it can contain HTML tags) | ||
27 | * - tags Tags separated by a single whitespace | ||
28 | * - tags_urlencoded Tags separated by a single whitespace, URL encoded: must be used to create a link | ||
29 | * - sticky Is sticky (bool) | ||
30 | * - private Is private (bool) | ||
31 | * - class Additional CSS class | ||
32 | * - created Creation DateTime | ||
33 | * - updated Last edit DateTime | ||
34 | * - timestamp Creation timestamp | ||
35 | * - updated_timestamp Last edit timestamp | ||
36 | * | ||
14 | * @package Shaarli\Formatter | 37 | * @package Shaarli\Formatter |
15 | */ | 38 | */ |
16 | abstract class BookmarkFormatter | 39 | abstract class BookmarkFormatter |
@@ -55,11 +78,16 @@ abstract class BookmarkFormatter | |||
55 | $out['shorturl'] = $this->formatShortUrl($bookmark); | 78 | $out['shorturl'] = $this->formatShortUrl($bookmark); |
56 | $out['url'] = $this->formatUrl($bookmark); | 79 | $out['url'] = $this->formatUrl($bookmark); |
57 | $out['real_url'] = $this->formatRealUrl($bookmark); | 80 | $out['real_url'] = $this->formatRealUrl($bookmark); |
81 | $out['url_html'] = $this->formatUrlHtml($bookmark); | ||
58 | $out['title'] = $this->formatTitle($bookmark); | 82 | $out['title'] = $this->formatTitle($bookmark); |
83 | $out['title_html'] = $this->formatTitleHtml($bookmark); | ||
59 | $out['description'] = $this->formatDescription($bookmark); | 84 | $out['description'] = $this->formatDescription($bookmark); |
60 | $out['thumbnail'] = $this->formatThumbnail($bookmark); | 85 | $out['thumbnail'] = $this->formatThumbnail($bookmark); |
61 | $out['taglist'] = $this->formatTagList($bookmark); | 86 | $out['taglist'] = $this->formatTagList($bookmark); |
87 | $out['taglist_urlencoded'] = $this->formatTagListUrlEncoded($bookmark); | ||
88 | $out['taglist_html'] = $this->formatTagListHtml($bookmark); | ||
62 | $out['tags'] = $this->formatTagString($bookmark); | 89 | $out['tags'] = $this->formatTagString($bookmark); |
90 | $out['tags_urlencoded'] = $this->formatTagStringUrlEncoded($bookmark); | ||
63 | $out['sticky'] = $bookmark->isSticky(); | 91 | $out['sticky'] = $bookmark->isSticky(); |
64 | $out['private'] = $bookmark->isPrivate(); | 92 | $out['private'] = $bookmark->isPrivate(); |
65 | $out['class'] = $this->formatClass($bookmark); | 93 | $out['class'] = $this->formatClass($bookmark); |
@@ -67,6 +95,7 @@ abstract class BookmarkFormatter | |||
67 | $out['updated'] = $this->formatUpdated($bookmark); | 95 | $out['updated'] = $this->formatUpdated($bookmark); |
68 | $out['timestamp'] = $this->formatCreatedTimestamp($bookmark); | 96 | $out['timestamp'] = $this->formatCreatedTimestamp($bookmark); |
69 | $out['updated_timestamp'] = $this->formatUpdatedTimestamp($bookmark); | 97 | $out['updated_timestamp'] = $this->formatUpdatedTimestamp($bookmark); |
98 | |||
70 | return $out; | 99 | return $out; |
71 | } | 100 | } |
72 | 101 | ||
@@ -80,6 +109,8 @@ abstract class BookmarkFormatter | |||
80 | public function addContextData($key, $value) | 109 | public function addContextData($key, $value) |
81 | { | 110 | { |
82 | $this->contextData[$key] = $value; | 111 | $this->contextData[$key] = $value; |
112 | |||
113 | return $this; | ||
83 | } | 114 | } |
84 | 115 | ||
85 | /** | 116 | /** |
@@ -128,7 +159,19 @@ abstract class BookmarkFormatter | |||
128 | */ | 159 | */ |
129 | protected function formatRealUrl($bookmark) | 160 | protected function formatRealUrl($bookmark) |
130 | { | 161 | { |
131 | return $bookmark->getUrl(); | 162 | return $this->formatUrl($bookmark); |
163 | } | ||
164 | |||
165 | /** | ||
166 | * Format Url Html: to be displayed in HTML content, it can contains HTML tags. | ||
167 | * | ||
168 | * @param Bookmark $bookmark instance | ||
169 | * | ||
170 | * @return string formatted Url HTML | ||
171 | */ | ||
172 | protected function formatUrlHtml($bookmark) | ||
173 | { | ||
174 | return $this->formatUrl($bookmark); | ||
132 | } | 175 | } |
133 | 176 | ||
134 | /** | 177 | /** |
@@ -144,6 +187,18 @@ abstract class BookmarkFormatter | |||
144 | } | 187 | } |
145 | 188 | ||
146 | /** | 189 | /** |
190 | * Format Title HTML: to be displayed in HTML content, it can contains HTML tags. | ||
191 | * | ||
192 | * @param Bookmark $bookmark instance | ||
193 | * | ||
194 | * @return string formatted Title | ||
195 | */ | ||
196 | protected function formatTitleHtml($bookmark) | ||
197 | { | ||
198 | return $bookmark->getTitle(); | ||
199 | } | ||
200 | |||
201 | /** | ||
147 | * Format Description | 202 | * Format Description |
148 | * | 203 | * |
149 | * @param Bookmark $bookmark instance | 204 | * @param Bookmark $bookmark instance |
@@ -180,6 +235,30 @@ abstract class BookmarkFormatter | |||
180 | } | 235 | } |
181 | 236 | ||
182 | /** | 237 | /** |
238 | * Format Url Encoded Tags | ||
239 | * | ||
240 | * @param Bookmark $bookmark instance | ||
241 | * | ||
242 | * @return array formatted Tags | ||
243 | */ | ||
244 | protected function formatTagListUrlEncoded($bookmark) | ||
245 | { | ||
246 | return array_map('urlencode', $this->filterTagList($bookmark->getTags())); | ||
247 | } | ||
248 | |||
249 | /** | ||
250 | * Format Tags HTML: to be displayed in HTML content, it can contains HTML tags. | ||
251 | * | ||
252 | * @param Bookmark $bookmark instance | ||
253 | * | ||
254 | * @return array formatted Tags | ||
255 | */ | ||
256 | protected function formatTagListHtml($bookmark) | ||
257 | { | ||
258 | return $this->formatTagList($bookmark); | ||
259 | } | ||
260 | |||
261 | /** | ||
183 | * Format TagString | 262 | * Format TagString |
184 | * | 263 | * |
185 | * @param Bookmark $bookmark instance | 264 | * @param Bookmark $bookmark instance |
@@ -192,6 +271,18 @@ abstract class BookmarkFormatter | |||
192 | } | 271 | } |
193 | 272 | ||
194 | /** | 273 | /** |
274 | * Format TagString | ||
275 | * | ||
276 | * @param Bookmark $bookmark instance | ||
277 | * | ||
278 | * @return string formatted TagString | ||
279 | */ | ||
280 | protected function formatTagStringUrlEncoded($bookmark) | ||
281 | { | ||
282 | return implode(' ', $this->formatTagListUrlEncoded($bookmark)); | ||
283 | } | ||
284 | |||
285 | /** | ||
195 | * Format Class | 286 | * Format Class |
196 | * Used to add specific CSS class for a link | 287 | * Used to add specific CSS class for a link |
197 | * | 288 | * |
@@ -209,7 +300,7 @@ abstract class BookmarkFormatter | |||
209 | * | 300 | * |
210 | * @param Bookmark $bookmark instance | 301 | * @param Bookmark $bookmark instance |
211 | * | 302 | * |
212 | * @return DateTime instance | 303 | * @return DateTimeInterface instance |
213 | */ | 304 | */ |
214 | protected function formatCreated(Bookmark $bookmark) | 305 | protected function formatCreated(Bookmark $bookmark) |
215 | { | 306 | { |
@@ -221,7 +312,7 @@ abstract class BookmarkFormatter | |||
221 | * | 312 | * |
222 | * @param Bookmark $bookmark instance | 313 | * @param Bookmark $bookmark instance |
223 | * | 314 | * |
224 | * @return DateTime instance | 315 | * @return DateTimeInterface instance |
225 | */ | 316 | */ |
226 | protected function formatUpdated(Bookmark $bookmark) | 317 | protected function formatUpdated(Bookmark $bookmark) |
227 | { | 318 | { |