Commit: 9a8dbe29c491d31872421f91807667473fedf248 Author: Peter Kokot <peterko...@gmail.com> Wed, 19 Dec 2018 03:11:46 +0100 Parents: a1e9fe6f6a7750b008dfe92cf8ecd9ab877b3f67 Branches: master
Link: http://git.php.net/?p=web/bugs.git;a=commitdiff;h=9a8dbe29c491d31872421f91807667473fedf248 Log: Add Vote repository class Changed paths: A src/Repository/VoteRepository.php M www/vote.php Diff: diff --git a/src/Repository/VoteRepository.php b/src/Repository/VoteRepository.php new file mode 100644 index 0000000..e832e7c --- /dev/null +++ b/src/Repository/VoteRepository.php @@ -0,0 +1,42 @@ +<?php + +namespace App\Repository; + +/** + * Repository class for fetching data from the bugdb_votes database table. + */ +class VoteRepository +{ + /** + * Database handle. + * @var \PDO + */ + private $dbh; + + /** + * Class constructor + */ + public function __construct(\PDO $dbh) + { + $this->dbh = $dbh; + } + + /** + * Find vote row by bug id and IP. + */ + public function findOneByIdAndIp(int $id, string $ip): array + { + $sql = 'SELECT bug, ip FROM bugdb_votes WHERE bug = ? AND ip = ? LIMIT 1'; + + $statement = $this->dbh->prepare($sql); + $statement->execute([$id, $ip]); + + $result = $statement->fetch(); + + if ($result === false) { + return []; + } + + return $result; + } +} diff --git a/www/vote.php b/www/vote.php index 73f2a9c..e5d6817 100644 --- a/www/vote.php +++ b/www/vote.php @@ -1,6 +1,7 @@ <?php use App\Repository\BugRepository; +use App\Repository\VoteRepository; // Obtain common includes require_once '../include/prepend.php'; @@ -63,11 +64,7 @@ $ip = ip2long(get_real_ip()); // TODO: check if ip address has been banned. hopefully this will never need to be implemented. // Check whether the user has already voted on this bug. -$bug_check = $dbh->prepare("SELECT bug, ip FROM bugdb_votes WHERE bug = ? AND ip = ? LIMIT 1") - ->execute([$id, $ip]) - ->fetch(\PDO::FETCH_BOTH); - -if (empty($bug_check)) { +if (empty((new VoteRepository($dbh))->findOneByIdAndIp($id, $ip))) { // If the user vote isn't found, create one. $dbh->prepare(" INSERT INTO bugdb_votes (bug, ip, score, reproduced, tried, sameos, samever) -- PHP Webmaster List Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php