From 80eafc06bc4c6a4318f255c869d86e037474c5d6 Mon Sep 17 00:00:00 2001 From: Aeris Date: Mon, 30 May 2022 01:57:54 +0200 Subject: [PATCH] orderly and working --- xExtension-Readability/configure.phtml | 41 +++++++++ xExtension-Readability/extension.php | 120 ++++++++++++++++++++++--- xExtension-Readability/metadata.json | 2 +- 3 files changed, 151 insertions(+), 12 deletions(-) create mode 100644 xExtension-Readability/configure.phtml diff --git a/xExtension-Readability/configure.phtml b/xExtension-Readability/configure.phtml new file mode 100644 index 0000000..f200fda --- /dev/null +++ b/xExtension-Readability/configure.phtml @@ -0,0 +1,41 @@ +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+

Shown below are the feeds, on which this addon will apply either Mercury or Readability Parsing

+ + + getFeeds() as $f) { + ?> + + + + + + + +
MercuryReadabilityFeed
getConfStore('m', $f->id()) ? 'checked' : ''; ?>> getConfStore('r', $f->id()) ? 'checked' : ''; ?>> name() ?>
+
+ +
+
+ + +
+
+
diff --git a/xExtension-Readability/extension.php b/xExtension-Readability/extension.php index b6b7c94..7393ad5 100644 --- a/xExtension-Readability/extension.php +++ b/xExtension-Readability/extension.php @@ -1,24 +1,31 @@ registerTranslates(); - #$current_user = Minz_Session::param('currentUser'); + #$current_user = Minz_Session::param('currentUser'); + Minz_View::appendScript($this->getFileUrl('read_ext.js', 'js')); $this->registerHook('entry_before_insert', array($this, 'fetchStuff')); } public function fetchStuff($entry) { + $this->loadConfigValues(); + /* $read = false; $regex = [ - 'washingtonpost.com', - 'heise.de', - 'nytimes.com' + 'nytimes.com', + 'ncsjdnfsd.de' ]; foreach ( $regex as $ex ) { @@ -26,30 +33,121 @@ class ReadabilityExtension extends Minz_Extension { $read = true; } } + */ + $host = ''; - if (! $read){ + if ( array_key_exists($entry->feed(false), $this->mStore) ) + $host = $this->mercHost; + + if ( array_key_exists($entry->feed(false), $this->rStore) ) + $host = $this->readHost; + + if ($host === '') return $entry; - } + /*if (! $read){ + return $entry; + }*/ $data = "{\"url\": \"" . $entry->link() ."\"}"; $headers[] = 'Content-Type: application/json'; - $c = curl_init("http://read:3000/"); + $c = curl_init($host); curl_setopt($c, CURLOPT_POSTFIELDS, $data); curl_setopt($c, CURLOPT_HTTPHEADER, $headers); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($c); $c_status = curl_getinfo($c, CURLINFO_HTTP_CODE); + //$c_error = curl_error($c); curl_close($c); if ($c_status !== 200) { - return $entry; + return $entry; } - $val = json_decode($result, true); $entry->_content($val["content"]); - return $entry; } + public function getReadHost() { + return $this->readHost; + } + + public function getMercHost() { + return $this->mercHost; + } + + public function getFeeds() { + return $this->feeds; + } + + public function loadConfigValues() + { + if (!class_exists('FreshRSS_Context', false) || null === FreshRSS_Context::$user_conf) { + return; + } + + if (FreshRSS_Context::$user_conf->read_ext_read_host != '') { + $this->readHost = FreshRSS_Context::$user_conf->read_ext_read_host; + } + if (FreshRSS_Context::$user_conf->read_ext_merc_host != '') { + $this->mercHost = FreshRSS_Context::$user_conf->read_ext_merc_host; + } + if (FreshRSS_Context::$user_conf->read_ext_mercury != '') { + $this->mStore = json_decode(FreshRSS_Context::$user_conf->read_ext_mercury, true); + } else { + $this->mStore = []; + } + if (FreshRSS_Context::$user_conf->read_ext_readability != '') { + $this->rStore = json_decode(FreshRSS_Context::$user_conf->read_ext_readability, true); + } else { + $this->rStore = []; + } + } + + public function getConfStore( $list, $id ) { + if ($list === 'm' ) { + return array_key_exists($id, $this->mStore); + } else { + return array_key_exists($id, $this->rStore); + } + return false; + } + + public function handleConfigureAction() + { + //$this->registerTranslates(); + + $feedDAO = FreshRSS_Factory::createFeedDao(); + $this->feeds = $feedDAO->listFeeds(); + + if (Minz_Request::isPost()) { + //FreshRSS_Context::$user_conf->yt_nocookie = (int)Minz_Request::param('yt_nocookie', 0); + $mstore = []; + $rstore = []; + foreach ( $this->feeds as $f ) { + if ((bool)Minz_Request::param("read_".$f->id(), 0)){ + $rstore[$f->id()] = true; + } + + if ( (bool)Minz_Request::param("merc_".$f->id(), 0) ) { + $mstore[$f->id()] = true; + } + } + + FreshRSS_Context::$user_conf->read_ext_mercury = (string)json_encode($mstore); + FreshRSS_Context::$user_conf->read_ext_readability = (string)json_encode($rstore); + + + FreshRSS_Context::$user_conf->read_ext_merc_host = (string)Minz_Request::param('read_mercury_host'); + FreshRSS_Context::$user_conf->read_ext_read_host = (string)Minz_Request::param('read_readability_host'); + + FreshRSS_Context::$user_conf->save(); + } + + + $this->loadConfigValues(); + } + + + } diff --git a/xExtension-Readability/metadata.json b/xExtension-Readability/metadata.json index ccfdb0b..fb0869b 100644 --- a/xExtension-Readability/metadata.json +++ b/xExtension-Readability/metadata.json @@ -4,5 +4,5 @@ "description": "fetch article content for every feed with readability", "version": "0.7.1", "entrypoint": "Readability", - "type": "system" + "type": "user" }