summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/index.php4
-rwxr-xr-xclasses/api.php2
-rw-r--r--classes/digest.php9
-rwxr-xr-xclasses/feeds.php6
-rwxr-xr-xclasses/handler/public.php10
-rwxr-xr-xclasses/pluginhost.php3
-rw-r--r--classes/pref/prefs.php7
-rw-r--r--include/functions.php8
-rwxr-xr-xinclude/sanity_check.php6
-rw-r--r--include/sanity_config.php4
-rw-r--r--include/sessions.php8
-rw-r--r--phpstan.neon4
-rw-r--r--plugins/af_fsckportal/init.php5
-rwxr-xr-xplugins/af_redditimgur/init.php5
-rwxr-xr-xupdate.php4
-rwxr-xr-xutils/regen_config_checks.sh4
16 files changed, 35 insertions, 54 deletions
diff --git a/api/index.php b/api/index.php
index eb79422f9..1b713d561 100644
--- a/api/index.php
+++ b/api/index.php
@@ -18,8 +18,8 @@
require_once "functions.php";
require_once "sessions.php";
- ini_set('session.use_cookies', 0);
- ini_set("session.gc_maxlifetime", 86400);
+ ini_set('session.use_cookies', "0");
+ ini_set("session.gc_maxlifetime", "86400");
ob_start();
diff --git a/classes/api.php b/classes/api.php
index 03eea1927..5677cb908 100755
--- a/classes/api.php
+++ b/classes/api.php
@@ -292,7 +292,7 @@ class API extends Handler {
$sanitize_content = !isset($_REQUEST["sanitize"]) ||
self::_param_to_bool($_REQUEST["sanitize"]);
- if ($article_ids) {
+ if (count($article_ids) > 0) {
$article_qmarks = arr_qmarks($article_ids);
diff --git a/classes/digest.php b/classes/digest.php
index 77eb92c54..e0c23d705 100644
--- a/classes/digest.php
+++ b/classes/digest.php
@@ -1,12 +1,6 @@
<?php
class Digest
{
-
- /**
- * Send by mail a digest of last articles.
- *
- * @return boolean Return false if digests are not enabled.
- */
static function send_headlines_digests() {
$user_limit = 15; // amount of users to process (e.g. emails to send out)
@@ -81,9 +75,7 @@ class Digest
}
}
}
-
Debug::log("All done.");
-
}
static function prepare_headlines_digest($user_id, $days = 1, $limit = 1000) {
@@ -210,5 +202,4 @@ class Digest
return array($tmp, $headlines_count, $affected_ids, $tmp_t);
}
-
}
diff --git a/classes/feeds.php b/classes/feeds.php
index 63b84edae..b59504c03 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -1067,22 +1067,16 @@ class Feeds extends Handler_Protected {
switch ($id) {
case 0:
return "archive";
- break;
case -1:
return "star";
- break;
case -2:
return "rss_feed";
- break;
case -3:
return "whatshot";
- break;
case -4:
return "inbox";
- break;
case -6:
return "restore";
- break;
default:
if ($id < LABEL_BASE_INDEX) {
return "label";
diff --git a/classes/handler/public.php b/classes/handler/public.php
index b0ce2306d..3910cf7c1 100755
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -146,9 +146,9 @@ class Handler_Public extends Handler {
$tpl->addBlock('enclosure');
}
} else {
- $tpl->setVariable('ARTICLE_ENCLOSURE_URL', null, true);
- $tpl->setVariable('ARTICLE_ENCLOSURE_TYPE', null, true);
- $tpl->setVariable('ARTICLE_ENCLOSURE_LENGTH', null, true);
+ $tpl->setVariable('ARTICLE_ENCLOSURE_URL', "", true);
+ $tpl->setVariable('ARTICLE_ENCLOSURE_TYPE', "", true);
+ $tpl->setVariable('ARTICLE_ENCLOSURE_LENGTH', "", true);
}
list ($og_image, $og_stream) = Article::_get_image($enclosures, $line['content'], $feed_site_url);
@@ -207,8 +207,8 @@ class Handler_Public extends Handler {
$article['content'] = Sanitizer::sanitize($line["content"], false, $owner_uid, $feed_site_url, false, $line["id"]);
$article['updated'] = date('c', strtotime($line["updated"]));
- if ($line['note']) $article['note'] = $line['note'];
- if ($article['author']) $article['author'] = $line['author'];
+ if (!empty($line['note'])) $article['note'] = $line['note'];
+ if (!empty($line['author'])) $article['author'] = $line['author'];
if (count($line["tags"]) > 0) {
$article['tags'] = array();
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index a05938111..5121c8491 100755
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -108,8 +108,9 @@ class PluginHost {
return false;
}
+ // needed for compatibility with API 2 (?)
function get_dbh() {
- return Db::get();
+ return false;
}
function get_pdo(): PDO {
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php
index a26281fee..adb249dac 100644
--- a/classes/pref/prefs.php
+++ b/classes/pref/prefs.php
@@ -311,13 +311,6 @@ class Pref_Prefs extends Handler_Protected {
<input dojoType='dijit.form.ValidationTextBox' name='email' required='1' value="<?= $email ?>">
</fieldset>
- <?php if (!SINGLE_USER_MODE && !empty($_SESSION["hide_hello"])) { ?>
- <fieldset>
- <label><?= __('Access level:') ?></label>
- <?= $access_level_names[$row["access_level"]] ?>
- </fieldset>
- <?php } ?>
-
<hr/>
<button dojoType='dijit.form.Button' type='submit' class='alt-primary'>
diff --git a/include/functions.php b/include/functions.php
index 174ef39f0..bf9b374a2 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -34,8 +34,8 @@
error_reporting(E_ALL & ~E_NOTICE);
}
- ini_set('display_errors', 0);
- ini_set('display_startup_errors', 0);
+ ini_set('display_errors', "false");
+ ini_set('display_startup_errors', "false");
require_once 'config.php';
@@ -281,7 +281,7 @@
} else if (is_string($param)) {
return trim(strip_tags($param));
} else {
- return trim($param);
+ return $param;
}
}
@@ -430,7 +430,7 @@
}
function uniqid_short() {
- return uniqid(base_convert(rand(), 10, 36));
+ return uniqid(base_convert((string)rand(), 10, 36));
}
function T_sprintf() {
diff --git a/include/sanity_check.php b/include/sanity_check.php
index 9407b606f..2786f012f 100755
--- a/include/sanity_check.php
+++ b/include/sanity_check.php
@@ -40,8 +40,6 @@
array_push($errors, "Configuration file not found. Looks like you forgot to copy config.php-dist to config.php and edit it.");
} else {
- require_once "sanity_config.php";
-
if (!file_exists("config.php")) {
array_push($errors, "Please copy config.php-dist to config.php");
}
@@ -78,12 +76,14 @@
array_push($errors, "Data export cache is not writable (chmod -R 777 ".CACHE_DIR."/export)");
}
+ require_once "sanity_config.php";
+
if (GENERATED_CONFIG_CHECK != EXPECTED_CONFIG_VERSION) {
array_push($errors,
"Configuration option checker sanity_config.php is outdated, please recreate it using ./utils/regen_config_checks.sh");
}
- foreach ($required_defines as $d) {
+ foreach (get_required_defines() as $d) {
if (!defined($d)) {
array_push($errors,
"Required configuration file parameter $d is not defined in config.php. You might need to copy it from config.php-dist.");
diff --git a/include/sanity_config.php b/include/sanity_config.php
index 5059ee83b..b304adf54 100644
--- a/include/sanity_config.php
+++ b/include/sanity_config.php
@@ -1,3 +1,3 @@
-<?php # This file has been generated at: Fri Feb 12 21:33:46 MSK 2021
+<?php # This file has been generated at: Mon Feb 22 14:17:27 MSK 2021
define('GENERATED_CONFIG_CHECK', 26);
-$required_defines = array( 'DB_TYPE', 'DB_HOST', 'DB_USER', 'DB_NAME', 'DB_PASS', 'MYSQL_CHARSET', 'SELF_URL_PATH', 'SINGLE_USER_MODE', 'SIMPLE_UPDATE_MODE', 'PHP_EXECUTABLE', 'LOCK_DIRECTORY', 'CACHE_DIR', 'ICONS_DIR', 'ICONS_URL', 'AUTH_AUTO_CREATE', 'AUTH_AUTO_LOGIN', 'FORCE_ARTICLE_PURGE', 'SESSION_COOKIE_LIFETIME', 'SMTP_FROM_NAME', 'SMTP_FROM_ADDRESS', 'DIGEST_SUBJECT', 'CHECK_FOR_UPDATES', 'PLUGINS', 'LOG_DESTINATION', 'CONFIG_VERSION'); ?>
+function get_required_defines() { return [ 'DB_TYPE', 'DB_HOST', 'DB_USER', 'DB_NAME', 'DB_PASS', 'MYSQL_CHARSET', 'SELF_URL_PATH', 'SINGLE_USER_MODE', 'SIMPLE_UPDATE_MODE', 'PHP_EXECUTABLE', 'LOCK_DIRECTORY', 'CACHE_DIR', 'ICONS_DIR', 'ICONS_URL', 'AUTH_AUTO_CREATE', 'AUTH_AUTO_LOGIN', 'FORCE_ARTICLE_PURGE', 'SESSION_COOKIE_LIFETIME', 'SMTP_FROM_NAME', 'SMTP_FROM_ADDRESS', 'DIGEST_SUBJECT', 'CHECK_FOR_UPDATES', 'PLUGINS', 'LOG_DESTINATION', 'CONFIG_VERSION']; }
diff --git a/include/sessions.php b/include/sessions.php
index 16de53ab2..5b372612b 100644
--- a/include/sessions.php
+++ b/include/sessions.php
@@ -12,14 +12,14 @@
$session_name = (!defined('TTRSS_SESSION_NAME')) ? "ttrss_sid" : TTRSS_SESSION_NAME;
if (is_server_https()) {
- ini_set("session.cookie_secure", true);
+ ini_set("session.cookie_secure", "true");
}
- ini_set("session.gc_probability", 75);
+ ini_set("session.gc_probability", "75");
ini_set("session.name", $session_name);
- ini_set("session.use_only_cookies", true);
+ ini_set("session.use_only_cookies", "true");
ini_set("session.gc_maxlifetime", $session_expire);
- ini_set("session.cookie_lifetime", 0);
+ ini_set("session.cookie_lifetime", "0");
function session_get_schema_version() {
global $schema_version;
diff --git a/phpstan.neon b/phpstan.neon
index 0703e0d15..b2cd978d8 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -2,7 +2,9 @@ parameters:
level: 5
ignoreErrors:
- '#Constant.*not found#'
- - '#Call to an undefined method DOMNode::getAttribute\(\).#'
+ - '#Comparison operation ">" between int<1, max> and 0 is always true.#'
+ - '#Access to an undefined property DOMNode::\$tagName.#'
+ - '#Call to an undefined method DOMNode::(get|remove|set)Attribute\(\).#'
- '#PHPDoc tag @param has invalid value#'
- message: '##'
paths:
diff --git a/plugins/af_fsckportal/init.php b/plugins/af_fsckportal/init.php
index 04b77a15a..8caa617c6 100644
--- a/plugins/af_fsckportal/init.php
+++ b/plugins/af_fsckportal/init.php
@@ -19,9 +19,7 @@ class Af_Fsckportal extends Plugin {
$doc = new DOMDocument();
- @$doc->loadHTML('<?xml encoding="UTF-8">' . $article["content"]);
-
- if ($doc) {
+ if (@$doc->loadHTML('<?xml encoding="UTF-8">' . $article["content"])) {
$xpath = new DOMXPath($doc);
$entries = $xpath->query('(//img[@src]|//a[@href])');
@@ -34,7 +32,6 @@ class Af_Fsckportal extends Plugin {
}
$article["content"] = $doc->saveHTML();
-
}
return $article;
diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php
index 2677fdd90..713eaea5c 100755
--- a/plugins/af_redditimgur/init.php
+++ b/plugins/af_redditimgur/init.php
@@ -207,7 +207,7 @@ class Af_RedditImgur extends Plugin {
$found = false;
// embed before reddit <table> post layout
- $anchor = $xpath->query('//body/*')->item(0);
+ $anchor = $xpath->query('//_body/*')->item(0);
// deal with json-provided media content first
if ($article["link"] && $anchor) {
@@ -217,6 +217,7 @@ class Af_RedditImgur extends Plugin {
$this->fallback_preview_urls = [];
+ // @phpstan-ignore-next-line
if ($tmp && $anchor) {
$json = json_decode($tmp, true);
@@ -346,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);
diff --git a/update.php b/update.php
index 1f79dccf0..71b8cf76c 100755
--- a/update.php
+++ b/update.php
@@ -32,7 +32,7 @@
if (DB_TYPE == "pgsql") {
$interval_query = "date_updated < NOW() - INTERVAL '$days days'";
- } else if (DB_TYPE == "mysql") {
+ } else /*if (DB_TYPE == "mysql") */ {
$interval_query = "date_updated < DATE_SUB(NOW(), INTERVAL $days DAY)";
}
@@ -459,7 +459,7 @@
if (isset($options["list-plugins"])) {
$tmppluginhost = new PluginHost();
- $tmppluginhost->load_all($tmppluginhost::KIND_ALL, false);
+ $tmppluginhost->load_all($tmppluginhost::KIND_ALL);
$enabled = array_map("trim", explode(",", PLUGINS));
echo "List of all available plugins:\n";
diff --git a/utils/regen_config_checks.sh b/utils/regen_config_checks.sh
index e8b1ed830..b20ce0480 100755
--- a/utils/regen_config_checks.sh
+++ b/utils/regen_config_checks.sh
@@ -8,10 +8,10 @@ echo -n "define('GENERATED_CONFIG_CHECK', " >> $DESTINATION
grep CONFIG_VERSION config.php-dist | awk -F ' |\)' '{ print $2 }' | xargs echo -n >> $DESTINATION
echo ");" >> $DESTINATION
-echo -n "\$required_defines = array( " >> $DESTINATION
+echo -n "function get_required_defines() { return [ " >> $DESTINATION
grep define\( config.php-dist | awk -F\' '{ print "*" $2 "*," }' | grep -v DB_PORT | xargs echo -n | sed -e s/,$// -e s/*/\'/g >> $DESTINATION
-echo "); ?>" >> $DESTINATION
+echo "]; }" >> $DESTINATION