com web/bugs: Refactor bugs_get_bug() to repository : include/functions.php src/Repository/BugRepository. php www/bug.php www/fix.php
www/gh-pull-add.php w ww/patch-add.php www/patch-display.php www/rpc.php www/rss/bug.php
| From: | Peter Kokot | Date: | Mon, 17 Dec 2018 22:46:01 +0000 |
| Subject: | com web/bugs: Refactor bugs_get_bug() to repository : include/functions.php src/Repository/BugRepository. php www/bug.php www/fix.php www/gh-pull-add.php w ww/patch-add.php www/patch-display.php www/rpc.php www/rss/bug.php |
||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-27591@lists.php.net to get a copy of this message | ||
Commit: 10b0ad9cbe6a764b72b2fad0ed2ce3d349992d6c
Author: Peter Kokot <peterkokot@gmail.com> Sun, 16 Dec 2018 20:45:17 +0100
Parents: a5b6fa0704230cfb13b1fe592ec0908924ccb1a8
Branches: master
Link: http://git.php.net/?p=web/bugs.git;a=commitdiff;h=10b0ad9cbe6a764b72b2fad0ed2ce3d349992d6c
Log:
Refactor bugs_get_bug() to repository
Changed paths:
M include/functions.php
A src/Repository/BugRepository.php
M www/bug.php
M www/fix.php
M www/gh-pull-add.php
M www/patch-add.php
M www/patch-display.php
M www/rpc..php
M www/rss/bug.php
Diff:
diff --git a/include/functions.php b/include/functions.php
index 5384fb4..767a929 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1423,34 +1423,6 @@ function unsubscribe($bug_id, $hash)
}
/**
- * Fetch bug data
- *
- * @return mixed array of bug data or object with error info
- */
-function bugs_get_bug($bug_id)
-{
- global $dbh;
-
- $query = 'SELECT b.id, b.package_name, b.bug_type, b.email, b.reporter_name,
- b.sdesc, b.ldesc, b.php_version, b.php_os,
- b.status, b.ts1, b.ts2, b.assign, b.block_user_comment,
- b.private, b.cve_id,
- UNIX_TIMESTAMP(b.ts1) AS submitted,
- UNIX_TIMESTAMP(b.ts2) AS modified,
- COUNT(bug=b.id) AS votes,
- IFNULL((SELECT z.project FROM bugdb_pseudo_packages z WHERE z.name = b.package_name LIMIT 1),
"php") project,
- SUM(reproduced) AS reproduced, SUM(tried) AS tried,
- SUM(sameos) AS sameos, SUM(samever) AS samever,
- AVG(score)+3 AS average, STD(score) AS deviation
- FROM bugdb b
- LEFT JOIN bugdb_votes ON b.id = bug
- WHERE b.id = ?
- GROUP BY bug';
-
- return $dbh->prepare($query)->execute([$bug_id])->fetch();
-}
-
-/**
* Add bug comment
*/
function bugs_add_comment($bug_id, $from, $from_name, $comment, $type = 'comment')
diff --git a/src/Repository/BugRepository.php b/src/Repository/BugRepository.php
new file mode 100644
index 0000000..66ac511
--- /dev/null
+++ b/src/Repository/BugRepository.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Repository;
+
+/**
+ * Repository class for fetching data from the database table bugdb.
+ */
+class BugRepository
+{
+ /**
+ * Database handler.
+ * @var \PDO
+ */
+ private $dbh;
+
+ /**
+ * Class constructor.
+ */
+ public function __construct(\PDO $dbh)
+ {
+ $this->dbh = $dbh;
+ }
+
+ /**
+ * Fetch bug data by bug id.
+ */
+ public function findOneById(int $id): array
+ {
+ $sql = 'SELECT b.id, b.package_name, b.bug_type, b.email, b.reporter_name,
+ b.sdesc, b.ldesc, b.php_version, b.php_os,
+ b.status, b.ts1, b.ts2, b.assign, b.block_user_comment,
+ b.private, b.cve_id,
+ UNIX_TIMESTAMP(b.ts1) AS submitted,
+ UNIX_TIMESTAMP(b.ts2) AS modified,
+ COUNT(bug=b.id) AS votes,
+ IFNULL((SELECT z.project FROM bugdb_pseudo_packages z WHERE z.name =
b.package_name LIMIT 1), "php") project,
+ SUM(reproduced) AS reproduced, SUM(tried) AS tried,
+ SUM(sameos) AS sameos, SUM(samever) AS samever,
+ AVG(score)+3 AS average, STD(score) AS deviation
+ FROM bugdb b
+ LEFT JOIN bugdb_votes ON b.id = bug
+ WHERE b.id = ?
+ GROUP BY bug
+ ';
+
+ $statement = $this->dbh->prepare($sql);
+ $statement->execute([$id]);
+
+ return $statement->fetch();
+ }
+}
diff --git a/www/bug.php b/www/bug.php
index a41065a..3d50389 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\BugRepository;
use App\Repository\CommentRepository;
use App\Repository\ObsoletePatchRepository;
use App\Repository\PackageRepository;
@@ -131,7 +132,8 @@ $trytoforce = isset($_POST['trytoforce']) ? (int)
$_POST['trytoforce'] : 0;
// fetch info about the bug into $bug
if (!isset($bug)) {
- $bug = bugs_get_bug($bug_id);
+ $bugRepository = new BugRepository($dbh);
+ $bug = $bugRepository->findOneById($bug_id);
}
// DB error
diff --git a/www/fix.php b/www/fix.php
index 9ec7158..f1be1db 100644
--- a/www/fix.php
+++ b/www/fix.php
@@ -1,5 +1,6 @@
<?php
+use App\Repository\BugRepository;
use App\Repository\ReasonRepository;
session_start();
@@ -19,7 +20,8 @@ if (!$bug_id) {
bugs_authenticate($user, $pw, $logged_in, $user_flags);
// fetch info about the bug into $bug
-$bug = bugs_get_bug($bug_id);
+$bugRepository = new BugRepository($dbh);
+$bug = $bugRepository->findOneById($bug_id);
if (!is_array($bug)) {
response_header('No Such Bug');
diff --git a/www/gh-pull-add.php b/www/gh-pull-add.php
index c86d4bd..1821d9e 100644
--- a/www/gh-pull-add.php
+++ b/www/gh-pull-add.php
@@ -1,5 +1,6 @@
<?php
+use App\Repository\BugRepository;
use App\Repository\PullRequestRepository;
use App\Utils\Captcha;
use App\Utils\GitHub;
@@ -26,7 +27,9 @@ if (empty($bug_id)) {
exit;
}
-if (!($buginfo = bugs_get_bug($bug_id))) {
+$bugRepository = new BugRepository($dbh);
+
+if (!($buginfo = $bugRepository->findOneById($bug_id))) {
response_header('Error :: invalid bug selected');
display_bug_error("Invalid bug #{$bug_id} selected");
response_footer();
diff --git a/www/patch-add.php b/www/patch-add.php
index 763a011..f0eaf26 100644
--- a/www/patch-add.php
+++ b/www/patch-add.php
@@ -1,5 +1,6 @@
<?php
+use App\Repository\BugRepository;
use App\Repository\PatchRepository;
use App\Utils\Captcha;
use App\Utils\PatchTracker;
@@ -32,7 +33,9 @@ if (empty($bug_id)) {
exit;
}
-if (!($buginfo = bugs_get_bug($bug_id))) {
+$bugRepository = new BugRepository($dbh);
+
+if (!($buginfo = $bugRepository->findOneById($bug_id))) {
response_header('Error :: invalid bug selected');
display_bug_error("Invalid bug #{$bug_id} selected");
response_footer();
diff --git a/www/patch-display.php b/www/patch-display.php
index 1735b1c..863c386 100644
--- a/www/patch-display.php
+++ b/www/patch-display.php
@@ -1,5 +1,6 @@
<?php
+use App\Repository\BugRepository;
use App\Repository\ObsoletePatchRepository;
use App\Repository\PatchRepository;
use App\Utils\PatchTracker;
@@ -40,7 +41,9 @@ if (empty($bug_id)) {
$bug_id = (int) $_GET['bug_id'];
}
-if (!($buginfo = bugs_get_bug($bug_id))) {
+$bugRepository = new BugRepository($dbh);
+
+if (!($buginfo = $bugRepository->findOneById($bug_id))) {
response_header('Error :: invalid bug selected');
display_bug_error("Invalid bug #{$bug_id} selected");
response_footer();
diff --git a/www/rpc.php b/www/rpc.php
index 8297695..1430c7a 100644
--- a/www/rpc.php
+++ b/www/rpc.php
@@ -1,5 +1,7 @@
<?php
+use App\Repository\BugRepository;
+
/**
* This API page is used by https://svn.php.net/viewvc/SVNROOT/commit-bugs.php
* to manage bugs automatically.
@@ -37,7 +39,8 @@ if (empty($auth_user->handle)) {
}
// fetch info about the bug into $bug
-$bug = bugs_get_bug($bug_id);
+$bugRepository = new BugRepository($dbh);
+$bug = $bugRepository->findOneById($bug_id);
if (!is_array($bug)) {
echo json_encode(['result' => ['error' => 'No such bug']]);
diff --git a/www/rss/bug.php b/www/rss/bug.php
index 0546820..2198161 100644
--- a/www/rss/bug.php
+++ b/www/rss/bug.php
@@ -1,5 +1,6 @@
<?php
+use App\Repository\BugRepository;
use App\Repository\CommentRepository;
/* Generates an RSS/RDF feed for a particular bug specified as the "id"
@@ -15,7 +16,8 @@ require_once '../../include/prepend.php';
$bug_id = isset($_REQUEST['id']) ? (int)$_REQUEST['id'] : 0;
$format = isset($_REQUEST['format']) ? $_REQUEST['format'] : 'rss2';
-$bug = bugs_get_bug($bug_id);
+$bugRepository = new BugRepository($dbh);
+$bug = $bugRepository->findOneById($bug_id);
if (!$bug) {
header('HTTP/1.0 404 Not Found');