. */ /** * An interface to the payment table in the database */ class payment { /** * @var pdo $pdo The PDO class for database communication * @var int $id The id of the payment * @var int $offerId The id of the offer this payment is linked to * @var int $date A unix timestamp describing the date of the payment */ protected $pdo, $offerId, $id, $date; /** * Create a new instance * * @param PDO $pdo The PDO class, to access the database * @param int $id The id of the payment to fetch * * @throws PDOException If something went wrong with the database * @throws Exception If the payment could not be found */ public function __construct($pdo, $id) { $this->pdo = $pdo; $stmt = $this->pdo->prepare("SELECT * FROM `".constants::db_prefix."payment` WHERE `id`=?"); $stmt->execute(array($id)); if ($stmt->rowCount() == 0) { throw new Exception("The payment with id '$id' could not be found."); } $payment = $stmt->fetch(PDO::FETCH_ASSOC); $this->id = $payment['id']; $this->offerId = $payment['offerId']; $this->date = strtotime($payment['date']); } //------------------------------------------------------------------------------ // Getters and setters //------------------------------------------------------------------------------ /** * Get the ID of the payment * * @return int The ID */ public function getId() { return $this->id; } /** * Get the ID of the offer that this payment is linked to * * @return int The ID */ public function getOfferId() { return $this->offerId; } /** * Get the offer that this payment is linked to * * @return offer The offer */ public function getOffer() { return new offer($this->pdo, $this->offerId); } /** * Get the date of the payment * * @return int A unix timestamp describing the date of the payment */ public function getDate() { return $this->date; } /** * Set the date of the payment * * @param int $date The new date for the payment * * @throws PDOException If something went wrong with the database * * @return bool True on success, false on failure */ public function setDate($date) { $stmt = $this->pdo->prepare("UPDATE `".constants::db_prefix."payment` SET `date`=? WHERE `id`=?"); $stmt->execute([date('Y-m-d H:i:s', $date), $this->id]); if ($stmt->rowCount() == 1) { $this->date = $date; return true; } else { return false; } } //------------------------------------------------------------------------------ // Other functions //------------------------------------------------------------------------------ /** * Remove this payment from the database * * If this doesn't succeed (i.e. false is returned), that means the payment was removed manually or by another instance of this class * * @throws PDOException If something went wrong with the database * * @return bool True on success, false on failure */ public function delete() { $stmt = $this->pdo->prepare("DELETE FROM `".constants::db_prefix."payment` WHERE `id`=?"); $stmt->execute(array($this->id)); if ($stmt->rowCount() != 1) { return false; } else { return true; } } }