fix several issues reported by phpstan

This commit is contained in:
Andrew Dolgov 2021-02-22 14:41:09 +03:00
parent 043ef3dad6
commit be4e7b1340
16 changed files with 35 additions and 54 deletions

View File

@ -18,8 +18,8 @@
require_once "functions.php"; require_once "functions.php";
require_once "sessions.php"; require_once "sessions.php";
ini_set('session.use_cookies', 0); ini_set('session.use_cookies', "0");
ini_set("session.gc_maxlifetime", 86400); ini_set("session.gc_maxlifetime", "86400");
ob_start(); ob_start();

View File

@ -292,7 +292,7 @@ class API extends Handler {
$sanitize_content = !isset($_REQUEST["sanitize"]) || $sanitize_content = !isset($_REQUEST["sanitize"]) ||
self::_param_to_bool($_REQUEST["sanitize"]); self::_param_to_bool($_REQUEST["sanitize"]);
if ($article_ids) { if (count($article_ids) > 0) {
$article_qmarks = arr_qmarks($article_ids); $article_qmarks = arr_qmarks($article_ids);

View File

@ -1,12 +1,6 @@
<?php <?php
class Digest class Digest
{ {
/**
* Send by mail a digest of last articles.
*
* @return boolean Return false if digests are not enabled.
*/
static function send_headlines_digests() { static function send_headlines_digests() {
$user_limit = 15; // amount of users to process (e.g. emails to send out) $user_limit = 15; // amount of users to process (e.g. emails to send out)
@ -81,9 +75,7 @@ class Digest
} }
} }
} }
Debug::log("All done."); Debug::log("All done.");
} }
static function prepare_headlines_digest($user_id, $days = 1, $limit = 1000) { 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); return array($tmp, $headlines_count, $affected_ids, $tmp_t);
} }
} }

View File

@ -1067,22 +1067,16 @@ class Feeds extends Handler_Protected {
switch ($id) { switch ($id) {
case 0: case 0:
return "archive"; return "archive";
break;
case -1: case -1:
return "star"; return "star";
break;
case -2: case -2:
return "rss_feed"; return "rss_feed";
break;
case -3: case -3:
return "whatshot"; return "whatshot";
break;
case -4: case -4:
return "inbox"; return "inbox";
break;
case -6: case -6:
return "restore"; return "restore";
break;
default: default:
if ($id < LABEL_BASE_INDEX) { if ($id < LABEL_BASE_INDEX) {
return "label"; return "label";

View File

@ -146,9 +146,9 @@ class Handler_Public extends Handler {
$tpl->addBlock('enclosure'); $tpl->addBlock('enclosure');
} }
} else { } else {
$tpl->setVariable('ARTICLE_ENCLOSURE_URL', null, true); $tpl->setVariable('ARTICLE_ENCLOSURE_URL', "", true);
$tpl->setVariable('ARTICLE_ENCLOSURE_TYPE', null, true); $tpl->setVariable('ARTICLE_ENCLOSURE_TYPE', "", true);
$tpl->setVariable('ARTICLE_ENCLOSURE_LENGTH', null, true); $tpl->setVariable('ARTICLE_ENCLOSURE_LENGTH', "", true);
} }
list ($og_image, $og_stream) = Article::_get_image($enclosures, $line['content'], $feed_site_url); 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['content'] = Sanitizer::sanitize($line["content"], false, $owner_uid, $feed_site_url, false, $line["id"]);
$article['updated'] = date('c', strtotime($line["updated"])); $article['updated'] = date('c', strtotime($line["updated"]));
if ($line['note']) $article['note'] = $line['note']; if (!empty($line['note'])) $article['note'] = $line['note'];
if ($article['author']) $article['author'] = $line['author']; if (!empty($line['author'])) $article['author'] = $line['author'];
if (count($line["tags"]) > 0) { if (count($line["tags"]) > 0) {
$article['tags'] = array(); $article['tags'] = array();

View File

@ -108,8 +108,9 @@ class PluginHost {
return false; return false;
} }
// needed for compatibility with API 2 (?)
function get_dbh() { function get_dbh() {
return Db::get(); return false;
} }
function get_pdo(): PDO { function get_pdo(): PDO {

View File

@ -311,13 +311,6 @@ class Pref_Prefs extends Handler_Protected {
<input dojoType='dijit.form.ValidationTextBox' name='email' required='1' value="<?= $email ?>"> <input dojoType='dijit.form.ValidationTextBox' name='email' required='1' value="<?= $email ?>">
</fieldset> </fieldset>
<?php if (!SINGLE_USER_MODE && !empty($_SESSION["hide_hello"])) { ?>
<fieldset>
<label><?= __('Access level:') ?></label>
<?= $access_level_names[$row["access_level"]] ?>
</fieldset>
<?php } ?>
<hr/> <hr/>
<button dojoType='dijit.form.Button' type='submit' class='alt-primary'> <button dojoType='dijit.form.Button' type='submit' class='alt-primary'>

View File

@ -34,8 +34,8 @@
error_reporting(E_ALL & ~E_NOTICE); error_reporting(E_ALL & ~E_NOTICE);
} }
ini_set('display_errors', 0); ini_set('display_errors', "false");
ini_set('display_startup_errors', 0); ini_set('display_startup_errors', "false");
require_once 'config.php'; require_once 'config.php';
@ -281,7 +281,7 @@
} else if (is_string($param)) { } else if (is_string($param)) {
return trim(strip_tags($param)); return trim(strip_tags($param));
} else { } else {
return trim($param); return $param;
} }
} }
@ -430,7 +430,7 @@
} }
function uniqid_short() { function uniqid_short() {
return uniqid(base_convert(rand(), 10, 36)); return uniqid(base_convert((string)rand(), 10, 36));
} }
function T_sprintf() { function T_sprintf() {

View File

@ -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."); array_push($errors, "Configuration file not found. Looks like you forgot to copy config.php-dist to config.php and edit it.");
} else { } else {
require_once "sanity_config.php";
if (!file_exists("config.php")) { if (!file_exists("config.php")) {
array_push($errors, "Please copy config.php-dist to 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)"); 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) { if (GENERATED_CONFIG_CHECK != EXPECTED_CONFIG_VERSION) {
array_push($errors, array_push($errors,
"Configuration option checker sanity_config.php is outdated, please recreate it using ./utils/regen_config_checks.sh"); "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)) { if (!defined($d)) {
array_push($errors, array_push($errors,
"Required configuration file parameter $d is not defined in config.php. You might need to copy it from config.php-dist."); "Required configuration file parameter $d is not defined in config.php. You might need to copy it from config.php-dist.");

View File

@ -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); 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']; }

View File

@ -12,14 +12,14 @@
$session_name = (!defined('TTRSS_SESSION_NAME')) ? "ttrss_sid" : TTRSS_SESSION_NAME; $session_name = (!defined('TTRSS_SESSION_NAME')) ? "ttrss_sid" : TTRSS_SESSION_NAME;
if (is_server_https()) { 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.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.gc_maxlifetime", $session_expire);
ini_set("session.cookie_lifetime", 0); ini_set("session.cookie_lifetime", "0");
function session_get_schema_version() { function session_get_schema_version() {
global $schema_version; global $schema_version;

View File

@ -2,7 +2,9 @@ parameters:
level: 5 level: 5
ignoreErrors: ignoreErrors:
- '#Constant.*not found#' - '#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#' - '#PHPDoc tag @param has invalid value#'
- message: '##' - message: '##'
paths: paths:

View File

@ -19,9 +19,7 @@ class Af_Fsckportal extends Plugin {
$doc = new DOMDocument(); $doc = new DOMDocument();
@$doc->loadHTML('<?xml encoding="UTF-8">' . $article["content"]); if (@$doc->loadHTML('<?xml encoding="UTF-8">' . $article["content"])) {
if ($doc) {
$xpath = new DOMXPath($doc); $xpath = new DOMXPath($doc);
$entries = $xpath->query('(//img[@src]|//a[@href])'); $entries = $xpath->query('(//img[@src]|//a[@href])');
@ -34,7 +32,6 @@ class Af_Fsckportal extends Plugin {
} }
$article["content"] = $doc->saveHTML(); $article["content"] = $doc->saveHTML();
} }
return $article; return $article;

View File

@ -207,7 +207,7 @@ class Af_RedditImgur extends Plugin {
$found = false; $found = false;
// embed before reddit <table> post layout // 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 // deal with json-provided media content first
if ($article["link"] && $anchor) { if ($article["link"] && $anchor) {
@ -217,6 +217,7 @@ class Af_RedditImgur extends Plugin {
$this->fallback_preview_urls = []; $this->fallback_preview_urls = [];
// @phpstan-ignore-next-line
if ($tmp && $anchor) { if ($tmp && $anchor) {
$json = json_decode($tmp, true); $json = json_decode($tmp, true);
@ -346,6 +347,8 @@ class Af_RedditImgur extends Plugin {
if (strpos($source_stream, "imgur.com") !== false) if (strpos($source_stream, "imgur.com") !== false)
$poster_url = str_replace(".mp4", "h.jpg", $source_stream); $poster_url = str_replace(".mp4", "h.jpg", $source_stream);
else
$poster_url = false;
$this->handle_as_video($doc, $entry, $source_stream, $poster_url); $this->handle_as_video($doc, $entry, $source_stream, $poster_url);

View File

@ -32,7 +32,7 @@
if (DB_TYPE == "pgsql") { if (DB_TYPE == "pgsql") {
$interval_query = "date_updated < NOW() - INTERVAL '$days days'"; $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)"; $interval_query = "date_updated < DATE_SUB(NOW(), INTERVAL $days DAY)";
} }
@ -459,7 +459,7 @@
if (isset($options["list-plugins"])) { if (isset($options["list-plugins"])) {
$tmppluginhost = new PluginHost(); $tmppluginhost = new PluginHost();
$tmppluginhost->load_all($tmppluginhost::KIND_ALL, false); $tmppluginhost->load_all($tmppluginhost::KIND_ALL);
$enabled = array_map("trim", explode(",", PLUGINS)); $enabled = array_map("trim", explode(",", PLUGINS));
echo "List of all available plugins:\n"; echo "List of all available plugins:\n";

View File

@ -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 grep CONFIG_VERSION config.php-dist | awk -F ' |\)' '{ print $2 }' | xargs echo -n >> $DESTINATION
echo ");" >> $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 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