diff options
author | Andrew Dolgov <[email protected]> | 2021-02-24 21:56:52 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2021-02-24 21:56:52 +0300 |
commit | 93940d2a9f80d9e1dac49b5eb7db23230d31c5f6 (patch) | |
tree | 71016661f6017918d0934eb462bd9552018d557a /plugins/af_redditimgur/init.php | |
parent | 8b022c2bfb356d7dddaf334bc931d6dec77086fb (diff) | |
parent | 1adacd057230aea4ede29dab510385bf01cf99a3 (diff) |
Merge branch 'master' of git.fakecake.org:fox/tt-rss into weblate-integration
Diffstat (limited to 'plugins/af_redditimgur/init.php')
-rwxr-xr-x | plugins/af_redditimgur/init.php | 121 |
1 files changed, 64 insertions, 57 deletions
diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php index 2e89fcdff..1aa4793ea 100755 --- a/plugins/af_redditimgur/init.php +++ b/plugins/af_redditimgur/init.php @@ -31,65 +31,62 @@ class Af_RedditImgur extends Plugin { function hook_prefs_tab($args) { if ($args != "prefFeeds") return; - print "<div dojoType=\"dijit.layout.AccordionPane\" - title=\"<i class='material-icons'>extension</i> ".__('Reddit content settings (af_redditimgur)')."\">"; + $enable_readability = $this->host->get($this, "enable_readability"); + $enable_content_dupcheck = $this->host->get($this, "enable_content_dupcheck"); + $reddit_to_teddit = $this->host->get($this, "reddit_to_teddit"); + ?> - $enable_readability = $this->host->get($this, "enable_readability"); - $enable_content_dupcheck = $this->host->get($this, "enable_content_dupcheck"); - $reddit_to_teddit = $this->host->get($this, "reddit_to_teddit"); + <div dojoType="dijit.layout.AccordionPane" + title="<i class='material-icons'>extension</i> <?= __('Reddit content settings (af_redditimgur)') ?>"> - if (version_compare(PHP_VERSION, '5.6.0', '<')) { - print_error("Readability requires PHP version 5.6."); - } + <form dojoType='dijit.form.Form'> - print "<form dojoType='dijit.form.Form'>"; + <?= \Controls\pluginhandler_tags($this, "save") ?> - print "<script type='dojo/method' event='onSubmit' args='evt'> - evt.preventDefault(); - if (this.validate()) { - console.log(dojo.objectToQuery(this.getValues())); - new Ajax.Request('backend.php', { - parameters: dojo.objectToQuery(this.getValues()), - onComplete: function(transport) { - Notify.info(transport.responseText); + <script type="dojo/method" event="onSubmit" args="evt"> + evt.preventDefault(); + if (this.validate()) { + Notify.progress('Saving data...', true); + xhr.post("backend.php", this.getValues(), (reply) => { + Notify.info(reply); + }) } - }); - //this.reset(); - } - </script>"; - - print_hidden("op", "pluginhandler"); - print_hidden("method", "save"); - print_hidden("plugin", "af_redditimgur"); - - print "<fieldset class='narrow'>"; - print "<label class='checkbox'>"; - print_checkbox("enable_readability", $enable_readability); - print " " . __("Extract missing content using Readability (requires af_readability)") . "</label>"; - print "</fieldset>"; - - print "<fieldset class='narrow'>"; - print "<label class='checkbox'>"; - print_checkbox("enable_content_dupcheck", $enable_content_dupcheck); - print " " . __("Enable additional duplicate checking") . "</label>"; - print "</fieldset>"; - - print "<fieldset class='narrow'>"; - print "<label class='checkbox'>"; - print_checkbox("reddit_to_teddit", $reddit_to_teddit); - print " " . T_sprintf("Rewrite Reddit URLs to %s", - "<a target=\"_blank\" href=\"https://teddit.net/about\">Teddit</a>") . "</label>"; - - print_button("submit", __("Save"), 'class="alt-primary"'); - print "</form>"; - - print "</div>"; + </script> + + <fieldset class='narrow'> + <label class='checkbox'> + <?= \Controls\checkbox_tag("enable_readability", $enable_readability) ?> + <?= __("Extract missing content using Readability (requires af_readability)") ?> + </label> + </fieldset> + + <fieldset class='narrow'> + <label class='checkbox'> + <?= \Controls\checkbox_tag("enable_content_dupcheck", $enable_content_dupcheck) ?> + <?= __("Enable additional duplicate checking") ?> + </label> + </fieldset> + + <fieldset class='narrow'> + <label class='checkbox'> + <?= \Controls\checkbox_tag("reddit_to_teddit", $reddit_to_teddit) ?> + <?= T_sprintf("Rewrite Reddit URLs to %s", + "<a target=\"_blank\" href=\"https://teddit.net/about\">Teddit</a>") ?> + </label> + </fieldset> + + <hr/> + <?= \Controls\submit_tag(__("Save")) ?> + </form> + </div> + + <?php } function save() { - $enable_readability = checkbox_to_sql_bool($_POST["enable_readability"]); - $enable_content_dupcheck = checkbox_to_sql_bool($_POST["enable_content_dupcheck"]); - $reddit_to_teddit = checkbox_to_sql_bool($_POST["reddit_to_teddit"]); + $enable_readability = checkbox_to_sql_bool($_POST["enable_readability"] ?? ""); + $enable_content_dupcheck = checkbox_to_sql_bool($_POST["enable_content_dupcheck"] ?? ""); + $reddit_to_teddit = checkbox_to_sql_bool($_POST["reddit_to_teddit"] ?? ""); $this->host->set($this, "enable_readability", $enable_readability, false); $this->host->set($this, "reddit_to_teddit", $reddit_to_teddit, false); @@ -220,6 +217,7 @@ class Af_RedditImgur extends Plugin { $this->fallback_preview_urls = []; + // @phpstan-ignore-next-line if ($tmp && $anchor) { $json = json_decode($tmp, true); @@ -349,6 +347,8 @@ class Af_RedditImgur extends Plugin { if (strpos($source_stream, "imgur.com") !== false) $poster_url = str_replace(".mp4", "h.jpg", $source_stream); + else + $poster_url = false; $this->handle_as_video($doc, $entry, $source_stream, $poster_url); @@ -530,7 +530,7 @@ class Af_RedditImgur extends Plugin { $entry_guid = $article["guid_hashed"]; $owner_uid = $article["owner_uid"]; - if (DB_TYPE == "pgsql") { + if (Config::get(Config::DB_TYPE) == "pgsql") { $interval_qpart = "date_entered < NOW() - INTERVAL '1 day'"; } else { $interval_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 DAY)"; @@ -631,6 +631,10 @@ class Af_RedditImgur extends Plugin { $entry->parentNode->insertBefore($img, $entry);*/ } + function csrf_ignore($method) { + return $method === "testurl"; + } + function testurl() { $url = clean($_POST["url"]); @@ -645,14 +649,17 @@ class Af_RedditImgur extends Plugin { fieldset { border : 0; } label { display : inline-block; min-width : 120px; } </style> - <form action="backend.php?op=pluginhandler&method=testurl&plugin=af_redditimgur" method="post"> + <form action="backend.php" method="post"> + <input type="hidden" name="op" value="pluginhandler"> + <input type="hidden" name="method" value="testurl"> + <input type="hidden" name="plugin" value="af_redditimgur"> <fieldset> <label>URL:</label> - <input name="url" size="100" value="<?php echo htmlspecialchars($url) ?>"></input> + <input name="url" size="100" value="<?= htmlspecialchars($url) ?>"></input> </fieldset> <fieldset> <label>Article URL:</label> - <input name="article_url" size="100" value="<?php echo htmlspecialchars($article_url) ?>"></input> + <input name="article_url" size="100" value="<?= htmlspecialchars($article_url) ?>"></input> </fieldset> <fieldset> <button type="submit">Test</button> @@ -694,7 +701,7 @@ class Af_RedditImgur extends Plugin { private function get_header($url, $header, $useragent = SELF_USER_AGENT) { $ret = false; - if (function_exists("curl_init") && !defined("NO_CURL")) { + if (function_exists("curl_init")) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); @@ -720,7 +727,7 @@ class Af_RedditImgur extends Plugin { private function readability($article, $url, $doc, $xpath, $debug = false) { - if (!defined('NO_CURL') && function_exists("curl_init") && $this->host->get($this, "enable_readability") && + if (function_exists("curl_init") && $this->host->get($this, "enable_readability") && mb_strlen(strip_tags($article["content"])) <= 150) { // do not try to embed posts linking back to other reddit posts |