com web/bugs: Move fetching bug comments to a repository class: include/functions.php src/Repository/CommentRepository.php www/bug.php www/rss/bug.php
| From: | Peter Kokot | Date: | Mon, 17 Dec 2018 22:18:48 +0000 |
| Subject: | com web/bugs: Move fetching bug comments to a repository class: include/functions.php src/Repository/CommentRepository.php www/bug.php www/rss/bug.php | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-27589@lists.php.net to get a copy of this message | ||
Commit: 357ba9e05191981d97a0da68c4014217db96eed3
Author: Peter Kokot <peterkokot@gmail.com> Sun, 16 Dec 2018 10:07:30 +0100
Parents: 7dd4451cd5249c45c46e15a1dded596656ed9a2c
Branches: master
Link: http://git.php.net/?p=web/bugs.git;a=commitdiff;h=357ba9e05191981d97a0da68c4014217db96eed3
Log:
Move fetching bug comments to a repository class
Changes:
- This moves fetching bug comments to a dedicated repository class
- It uses vanilla PDO as current direction of the database usage
is applied in this app.
- When bug_id is set to preview types issues occur due to int type
hint. Should be refactored more in the future commits.
Changed paths:
M include/functions.php
A src/Repository/CommentRepository.php
M www/bug.php
M www/rss/bug..php
Diff:
diff --git a/include/functions.php b/include/functions..php
index 6206db3..e3d9a97 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1483,26 +1483,6 @@ function bugs_get_bug($bug_id)
}
/**
- * Fetch bug comments
- *
- * @return mixed array of bug comments or object with error info
- */
-function bugs_get_bug_comments($bug_id)
-{
- global $dbh;
-
- $query = "
- SELECT c.id, c.email, c.comment, c.comment_type,
- UNIX_TIMESTAMP(c.ts) AS added,
- c.reporter_name AS comment_name
- FROM bugdb_comments c
- WHERE c.bug = ?
- GROUP BY c.id ORDER BY c.ts
- ";
- return $dbh->prepare($query)->execute([$bug_id])->fetchAll();
-}
-
-/**
* Add bug comment
*/
function bugs_add_comment($bug_id, $from, $from_name, $comment, $type = 'comment')
diff --git a/src/Repository/CommentRepository.php b/src/Repository/CommentRepository.php
new file mode 100644
index 0000000..8f28c4b
--- /dev/null
+++ b/src/Repository/CommentRepository.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Repository;
+
+/**
+ * Repository class for fetching data from the bugdb_comments table.
+ */
+class CommentRepository
+{
+ /**
+ * Database handler.
+ * @var \PDO
+ */
+ private $dbh;
+
+ /**
+ * Class constructor.
+ */
+ public function __construct(\PDO $dbh)
+ {
+ $this->dbh = $dbh;
+ }
+
+ /**
+ * Fetch bug comments
+ */
+ public function findByBugId(int $id): array
+ {
+ $sql = 'SELECT c.id, c.email, c.comment, c.comment_type,
+ UNIX_TIMESTAMP(c.ts) AS added,
+ c.reporter_name AS comment_name
+ FROM bugdb_comments c
+ WHERE c.bug = ?
+ GROUP BY c.id ORDER BY c.ts
+ ';
+
+ $statement = $this->dbh->prepare($sql);
+ $statement->execute([$id]);
+
+ return $statement->fetchAll();
+ }
+}
diff --git a/www/bug.php b/www/bug.php
index 502e50a..29c10f1 100644
--- a/www/bug.php
+++ b/www/bug.php
@@ -1,6 +1,7 @@
<?php
/* User interface for viewing and editing bug details */
+use App\Repository\CommentRepository;
use App\Repository\ObsoletePatchRepository;
use App\Repository\PackageRepository;
use App\Repository\PatchRepository;
@@ -1100,7 +1101,9 @@ OUTPUT;
}
// Display comments
-$bug_comments = bugs_get_bug_comments($bug_id);
+$commentRepository = new CommentRepository($dbh);
+$bug_comments = is_int($bug_id) ? $commentRepository->findByBugId($bug_id) : [];
+
if ($show_bug_info && is_array($bug_comments) && count($bug_comments) &&
$bug['status'] !== 'Spam') {
$history_tabs = [
'type_all' => 'All',
diff --git a/www/rss/bug.php b/www/rss/bug.php
index 3268404..0546820 100644
--- a/www/rss/bug.php
+++ b/www/rss/bug.php
@@ -1,5 +1,7 @@
<?php
+use App\Repository\CommentRepository;
+
/* Generates an RSS/RDF feed for a particular bug specified as the "id"
* parameter. optionally, if "format" is "xml", generates data in a
* non-standard xml format.
@@ -25,7 +27,8 @@ if ($bug['private'] == 'Y') {
die('Access restricted');
}
-$comments = bugs_get_bug_comments($bug_id);
+$commentRepository = new CommentRepository($dbh);
+$comments = $commentRepository->findByBugId($bug_id);
if ($format == 'xml') {
header('Content-type: text/xml; charset=utf-8');