mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-09-08 11:43:20 -04:00
PDO refactoring for code simplification (#2522)
* PDO refactor * Automatic prefix when using the syntax `_tableName` * Uniformity: MySQL is now PDO::ATTR_EMULATE_PREPARES = false just like SQLite and PostgreSQL, with consequences such as only one statement per query * Use PDO methods exec(), query(), prepare() + execute() in a more efficient way * Remove auto-update SQL code for versions older than FreshRSS 1.5 (3 years old) * The name of the default category is set in PHP instead of in the DB (simplies SQL and allows changing the name according to the FreshRSS language) * Rename `->bd` to `->pdo` (less of a frenshism, and more informative) * Fix some requests, which were not compatible with MySQL prepared statements * Whitespace * Fix syntax for PostgreSQL sequences + MySQL install * Minor formatting * Fix lastInsertId for PostgreSQL * Use PHP 5.6+ const Take advantage of https://github.com/FreshRSS/FreshRSS/pull/2527 https://www.php.net/manual/en/migration56.new-features.php * A bit of forgotten PHP 5.6 simplification for cURL * Forgotten $s * Mini fix custom user config https://github.com/FreshRSS/FreshRSS/pull/2490/files#r326290346 * More work on install.php but not finished * install.php working * More cleaning of PDO in install * Even more simplification Take advantage of PDO->exec() to run multiple statements * Disallow changing the name of the default category https://github.com/FreshRSS/FreshRSS/pull/2522#discussion_r326967724
This commit is contained in:
1 parent
ec4307c1a6
commit
e3e5954394
34 files changed
+891
-1206
No files matched your search
+16
-31
@@ -45,13 +45,11 @@ SELECT COUNT(1) AS total,
|
||||
COUNT(1) - SUM(e.is_read) AS count_unreads,
|
||||
SUM(e.is_read) AS count_reads,
|
||||
SUM(e.is_favorite) AS count_favorites
|
||||
FROM `{$this->prefix}entry` AS e
|
||||
, `{$this->prefix}feed` AS f
|
||||
FROM `_entry` AS e, `_feed` AS f
|
||||
WHERE e.id_feed = f.id
|
||||
{$filter}
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$stm = $this->pdo->query($sql);
|
||||
$res = $stm->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
return $res[0];
|
||||
@@ -73,13 +71,12 @@ SQL;
|
||||
$sql = <<<SQL
|
||||
SELECT {$sqlDay} AS day,
|
||||
COUNT(*) as count
|
||||
FROM `{$this->prefix}entry`
|
||||
FROM `_entry`
|
||||
WHERE date >= {$oldest} AND date < {$midnight}
|
||||
GROUP BY day
|
||||
ORDER BY day ASC
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$stm = $this->pdo->query($sql);
|
||||
$res = $stm->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
foreach ($res as $value) {
|
||||
@@ -143,14 +140,13 @@ SQL;
|
||||
$sql = <<<SQL
|
||||
SELECT DATE_FORMAT(FROM_UNIXTIME(e.date), '{$period}') AS period
|
||||
, COUNT(1) AS count
|
||||
FROM `{$this->prefix}entry` AS e
|
||||
FROM `_entry` AS e
|
||||
{$restrict}
|
||||
GROUP BY period
|
||||
ORDER BY period ASC
|
||||
SQL;
|
||||
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$stm = $this->pdo->query($sql);
|
||||
$res = $stm->fetchAll(PDO::FETCH_NAMED);
|
||||
|
||||
$repartition = array();
|
||||
@@ -207,11 +203,10 @@ SQL;
|
||||
SELECT COUNT(1) AS count
|
||||
, MIN(date) AS date_min
|
||||
, MAX(date) AS date_max
|
||||
FROM `{$this->prefix}entry` AS e
|
||||
FROM `_entry` AS e
|
||||
{$restrict}
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$stm = $this->pdo->query($sql);
|
||||
$res = $stm->fetch(PDO::FETCH_NAMED);
|
||||
$date_min = new \DateTime();
|
||||
$date_min->setTimestamp($res['date_min']);
|
||||
@@ -251,14 +246,12 @@ SQL;
|
||||
$sql = <<<SQL
|
||||
SELECT c.name AS label
|
||||
, COUNT(f.id) AS data
|
||||
FROM `{$this->prefix}category` AS c,
|
||||
`{$this->prefix}feed` AS f
|
||||
FROM `_category` AS c, `_feed` AS f
|
||||
WHERE c.id = f.category
|
||||
GROUP BY label
|
||||
ORDER BY data DESC
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$stm = $this->pdo->query($sql);
|
||||
$res = $stm->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
return $res;
|
||||
@@ -274,16 +267,13 @@ SQL;
|
||||
$sql = <<<SQL
|
||||
SELECT c.name AS label
|
||||
, COUNT(e.id) AS data
|
||||
FROM `{$this->prefix}category` AS c,
|
||||
`{$this->prefix}feed` AS f,
|
||||
`{$this->prefix}entry` AS e
|
||||
FROM `_category` AS c, `_feed` AS f, `_entry` AS e
|
||||
WHERE c.id = f.category
|
||||
AND f.id = e.id_feed
|
||||
GROUP BY label
|
||||
ORDER BY data DESC
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$stm = $this->pdo->query($sql);
|
||||
$res = $stm->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
return $res;
|
||||
@@ -300,17 +290,14 @@ SELECT f.id AS id
|
||||
, MAX(f.name) AS name
|
||||
, MAX(c.name) AS category
|
||||
, COUNT(e.id) AS count
|
||||
FROM `{$this->prefix}category` AS c,
|
||||
`{$this->prefix}feed` AS f,
|
||||
`{$this->prefix}entry` AS e
|
||||
FROM `_category` AS c, `_feed` AS f, `_entry` AS e
|
||||
WHERE c.id = f.category
|
||||
AND f.id = e.id_feed
|
||||
GROUP BY f.id
|
||||
ORDER BY count DESC
|
||||
LIMIT 10
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$stm = $this->pdo->query($sql);
|
||||
return $stm->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
@@ -325,14 +312,12 @@ SELECT MAX(f.id) as id
|
||||
, MAX(f.name) AS name
|
||||
, MAX(date) AS last_date
|
||||
, COUNT(*) AS nb_articles
|
||||
FROM `{$this->prefix}feed` AS f,
|
||||
`{$this->prefix}entry` AS e
|
||||
FROM `_feed` AS f, `_entry` AS e
|
||||
WHERE f.id = e.id_feed
|
||||
GROUP BY f.id
|
||||
ORDER BY name
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$stm = $this->pdo->query($sql);
|
||||
return $stm->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user