summaryrefslogtreecommitdiff
path: root/providers
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2026-09-05 14:55:29 +0200
committeremkael <emkael@tlen.pl>2026-09-05 14:55:29 +0200
commitda851ff789bf573a58e85257d36faa282eed76e3 (patch)
tree60cf512e29364b41ce1bc5b9c83b43024355a3bd /providers
parentad6b96a581fc815b555f31e48716ce44c5df9075 (diff)
Wordpress JSON feed provider
Diffstat (limited to 'providers')
-rw-r--r--providers/Wpjson.php54
1 files changed, 54 insertions, 0 deletions
diff --git a/providers/Wpjson.php b/providers/Wpjson.php
new file mode 100644
index 0000000..94fd6d7
--- /dev/null
+++ b/providers/Wpjson.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Providers;
+
+require_once('JsonFeed.php');
+require_once('Item.php');
+
+class Wpjson extends \Providers\JsonFeed {
+
+ protected function _getFeedUrl($feed) {
+ $config = json_decode(file_get_contents('../config/wp-json.json'), TRUE);
+ if (isset($config[$feed])) {
+ return $config[$feed];
+ }
+ return NULL;
+ }
+
+ protected function _getCachePath() {
+ return '../cache/wpjson.%s';
+ }
+
+ protected function _parseFeedContent($feed) {
+ return $feed;
+ }
+
+ private function _getRenderedProperty($prop) {
+ if (is_object($prop)) {
+ return strval($prop->rendered);
+ }
+ return strval($prop);
+ }
+
+ protected function _mapItems($content) {
+ $items = [];
+ foreach ($content as $item) {
+ $itemObject = new Item();
+ $itemObject->ID = $this->_getRenderedProperty($item->guid);
+ $itemObject->Title = $this->_getRenderedProperty($item->title);
+ $itemObject->Time = strtotime($this->_getRenderedProperty($item->date_gmt));
+ $itemObject->Text = $this->_getRenderedProperty($item->content);
+ $itemObject->Link = $this->_getRenderedProperty($item->link);
+ $itemObject->Author = $this->_getRenderedProperty($this->_feed);
+ $items[] = $itemObject;
+ }
+ return $items;
+ }
+
+ public function title() {
+ return sprintf('%s Wordpress posts', $this->_feed);
+ }
+
+}
+
+?>