Commit:    a5b6fa0704230cfb13b1fe592ec0908924ccb1a8
Author:    Peter Kokot <peterko...@gmail.com>         Sun, 16 Dec 2018 18:08:33 
+0100
Parents:   357ba9e05191981d97a0da68c4014217db96eed3
Branches:  master

Link:       
http://git.php.net/?p=web/bugs.git;a=commitdiff;h=a5b6fa0704230cfb13b1fe592ec0908924ccb1a8

Log:
Refactor get_resolve_reasons() to repository class

Changed paths:
  M  include/functions.php
  M  scripts/cron/no-feedback
  A  src/Repository/ReasonRepository.php
  M  www/bug.php
  M  www/fix.php
  M  www/quick-fix-desc.php
  M  www/report.php


Diff:
diff --git a/include/functions.php b/include/functions.php
index e3d9a97..5384fb4 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1422,38 +1422,6 @@ function unsubscribe($bug_id, $hash)
        return true;
 }
 
-
-/**
- * Fetch bug resolves
- *
- * @return array array of resolves
- */
-function get_resolve_reasons($project = false)
-{
-       global $dbh;
-
-       $where = '';
-
-       if ($project !== false) {
-               $project = $dbh->quote($project);
-               $where.= "WHERE (project = {$project} OR project = '')";
-       }
-
-       $resolves = $variations = [];
-       $res = $dbh->prepare("SELECT * FROM bugdb_resolves 
$where")->execute([]);
-       if (!$res) {
-               throw new Exception("SQL Error in get_resolve_reasons");
-       }
-       while ($row = $res->fetch()) {
-               if (!empty($row['package_name'])) {
-                       $variations[$row['name']][$row['package_name']] = 
$row['message'];
-               } else {
-                       $resolves[$row['name']] = $row;
-               }
-       }
-       return [$resolves, $variations];
-}
-
 /**
  * Fetch bug data
  *
diff --git a/scripts/cron/no-feedback b/scripts/cron/no-feedback
index e3154f8..25f15b5 100755
--- a/scripts/cron/no-feedback
+++ b/scripts/cron/no-feedback
@@ -3,6 +3,8 @@
 
 # this script closes bugs due to lack of feedback.
 
+use App\Repository\ReasonRepository;
+
 require __DIR__.'/../../include/prepend.php';
 
 # date interval to close after
@@ -14,7 +16,9 @@ $in = ['status' => 'No Feedback'];
 # Update relevant reports
 if ($dbh)
 {
-       list($RESOLVE_REASONS, $FIX_VARIATIONS) = get_resolve_reasons($site);
+       $reasonRepository = new ReasonRepository($dbh);
+
+       list($RESOLVE_REASONS, $FIX_VARIATIONS) = 
$reasonRepository->findByProject($site);
 
        $res = $dbh->prepare("
                SELECT id, package_name, bug_type, email, passwd, sdesc, ldesc, 
php_version,
diff --git a/src/Repository/ReasonRepository.php 
b/src/Repository/ReasonRepository.php
new file mode 100644
index 0000000..c8d74c8
--- /dev/null
+++ b/src/Repository/ReasonRepository.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace App\Repository;
+
+/**
+ * Repository class for fetching data from the bugdb_resolves database table.
+ */
+class ReasonRepository
+{
+    /**
+     * Database handle.
+     * @var \PDO
+     */
+    private $dbh;
+
+    /**
+     * Class constructor
+     */
+    public function __construct(\PDO $dbh)
+    {
+        $this->dbh = $dbh;
+    }
+
+    /**
+     * Fetch bug resolves.
+     */
+    public function findByProject(string $project = ''): array
+    {
+        $sql = 'SELECT * FROM bugdb_resolves';
+        $arguments = [];
+
+        if ($project !== '') {
+            $sql = " WHERE (project = ? OR project = '')";
+            $arguments[] = $project;
+        }
+
+        $resolves = $variations = [];
+        $statement = $this->dbh->prepare($sql);
+        $exec = $statement->execute($arguments);
+
+        if (!$exec) {
+            throw new \Exception('Error when fetching resolve reasons.');
+        }
+
+        while ($row = $statement->fetch()) {
+            if (!empty($row['package_name'])) {
+                $variations[$row['name']][$row['package_name']] = 
$row['message'];
+            } else {
+                $resolves[$row['name']] = $row;
+            }
+        }
+
+        return [$resolves, $variations];
+    }
+}
diff --git a/www/bug.php b/www/bug.php
index 29c10f1..a41065a 100644
--- a/www/bug.php
+++ b/www/bug.php
@@ -7,6 +7,7 @@ use App\Repository\PackageRepository;
 use App\Repository\PatchRepository;
 use App\Utils\Captcha;
 use App\Repository\PullRequestRepository;
+use App\Repository\ReasonRepository;
 
 // Obtain common includes
 require_once '../include/prepend.php';
@@ -190,7 +191,8 @@ if ($edit && $edit < 3) {
 
 // Fetch RESOLVE_REASONS array
 if ($edit === 1) {
-       list($RESOLVE_REASONS, $FIX_VARIATIONS) = get_resolve_reasons($project);
+       $reasonRepository = new ReasonRepository($dbh);
+       list($RESOLVE_REASONS, $FIX_VARIATIONS) = 
$reasonRepository->findByProject($project);
 }
 
 if (isset($_POST['ncomment']) && !isset($_POST['preview']) && $edit == 3) {
diff --git a/www/fix.php b/www/fix.php
index 963cb43..9ec7158 100644
--- a/www/fix.php
+++ b/www/fix.php
@@ -1,5 +1,7 @@
 <?php
 
+use App\Repository\ReasonRepository;
+
 session_start();
 
 /* Admin interface for closing bug reports via direct link */
@@ -37,7 +39,8 @@ if ($logged_in != 'developer') {
 
 $project = !empty($_GET['project']) ? $_GET['project'] : false;
 
-list($RESOLVE_REASONS, $FIX_VARIATIONS) = get_resolve_reasons($site);
+$reasonRepository = new ReasonRepository($dbh);
+list($RESOLVE_REASONS, $FIX_VARIATIONS) = 
$reasonRepository->findByProject($site);
 
 // Handle reason / comments
 $reason = filter_var($_REQUEST['r'], FILTER_SANITIZE_STRING);
diff --git a/www/quick-fix-desc.php b/www/quick-fix-desc.php
index 5d6c67b..01ff098 100644
--- a/www/quick-fix-desc.php
+++ b/www/quick-fix-desc.php
@@ -1,11 +1,14 @@
 <?php
 
+use App\Repository\ReasonRepository;
+
 session_start();
 
 // Obtain common includes
 require_once '../include/prepend.php';
 
-list($RESOLVE_REASONS, $FIX_VARIATIONS) = get_resolve_reasons($site);
+$reasonRepository = new ReasonRepository($dbh);
+list($RESOLVE_REASONS, $FIX_VARIATIONS) = 
$reasonRepository->findByProject($site);
 
 // Authenticate
 bugs_authenticate($user, $pw, $logged_in, $user_flags);
diff --git a/www/report.php b/www/report.php
index 7009edb..408dfdf 100644
--- a/www/report.php
+++ b/www/report.php
@@ -1,6 +1,7 @@
 <?php
 
 use App\Repository\PackageRepository;
+use App\Repository\ReasonRepository;
 use App\Utils\Captcha;
 use App\Utils\PatchTracker;
 use App\Utils\Uploader;
@@ -279,7 +280,8 @@ REPORT;
                        }
 
                        // provide shortcut URLS for "quick bug fixes"
-                       list($RESOLVE_REASONS, $FIX_VARIATIONS) = 
get_resolve_reasons($_GET['project'] ?? false);
+                       $reasonRepository = new ReasonRepository($dbh);
+                       list($RESOLVE_REASONS, $FIX_VARIATIONS) = 
$reasonRepository->findByProject($_GET['project'] ?? '');
 
                        $dev_extra = '';
                        $maxkeysize = 0;


--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to