From 390251ac43ca889a318369342b4663ef928349d8 Mon Sep 17 00:00:00 2001
From: Camil Staps
Date: Wed, 27 Jul 2016 21:06:48 +0200
Subject: Contact: use Model

---
 classes/Contact.php        | 340 ++-------------------------------------------
 classes/Correspondence.php |  10 +-
 2 files changed, 18 insertions(+), 332 deletions(-)

(limited to 'classes')

diff --git a/classes/Contact.php b/classes/Contact.php
index 6ed2a78..ed2a80d 100644
--- a/classes/Contact.php
+++ b/classes/Contact.php
@@ -24,73 +24,20 @@
 /**
  * An interface to the contact table in the database
  */
-class Contact {
-	/**
-	 * @var PDO $pdo                    The PDO class for database communication
-	 * @var int $id                     The id of the contact
-	 * @var int $clientId               The id of the client the contact is linked to
-	 * @var string $name                The name of the contact
-	 * @var string $email               The email address of the contact
-	 * @var string $address             The first address line (normally street and house number) of the contact
-	 * @var string $address_2           The second address line (can be null)
-	 * @var string $postal_code         The postal code of the contact
-	 * @var string $city                The city of the contact
-	 * @var string $country             The country of the contact
-	 * @var string $language            The language of the contact
-	 */
-	protected $pdo, $id, $clientId, $name, $email, $address, $postal_code, $city, $country, $language;
-
-	/**
-	 * Create a new instance
-	 *
-	 * @param PDO $pdo                  The PDO class, to access the database
-	 * @param int $id                   The id of the contact to fetch
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 * @throws Exception                If the contact could not be found
-	 */
-	public function __construct($pdo, $id) {
-		$this->pdo = $pdo;
-
-		$stmt = $this->pdo->prepare("SELECT * FROM `".Constants::db_prefix."contact` WHERE `id`=?");
-		$stmt->execute(array($id));
-		if ($stmt->rowCount() == 0) {
-			throw new Exception("The contact with id '$id' could not be found.");
+class Contact extends Model {
+	public
+		$table = 'contact',
+		$fillable_columns = ['clientId', 'name', 'email', 'address', 'address_2', 'postal_code', 'city', 'country', 'language'];
+
+	protected function mutator($key, $value) {
+		switch ($key) {
+			case 'language':
+				if (!in_array($value, Correspondence::LANGUAGES)) {
+					throw new Exception("Language $value not available.");
+				}
+			default:
+				return parent::mutator($key, $value);
 		}
-		$contact = $stmt->fetch(PDO::FETCH_ASSOC);
-
-		$this->id = $contact['id'];
-		$this->clientId = $contact['clientId'];
-		$this->name = $contact['name'];
-		$this->email = $contact['email'];
-		$this->address = $contact['address'];
-		$this->address_2 = $contact['address_2'];
-		$this->postal_code = $contact['postal_code'];
-		$this->city = $contact['city'];
-		$this->country = $contact['country'];
-		$this->language = $contact['language'];
-	}
-
-	//------------------------------------------------------------------------------
-	// Getters and setters
-	//------------------------------------------------------------------------------
-
-	/**
-	 * Get the ID of the contact
-	 *
-	 * @return int                      The ID
-	 */
-	public function getId() {
-		return $this->id;
-	}
-
-	/**
-	 * Get the ID of the client that this contact is linked to
-	 *
-	 * @return int                      The ID
-	 */
-	public function getClientId() {
-		return $this->clientId;
 	}
 
 	/**
@@ -102,267 +49,6 @@ class Contact {
 		return new Client($this->pdo, $this->clientId);
 	}
 
-	/**
-	 * Get the name of the contact
-	 *
-	 * @return string                   The name
-	 */
-	public function getName() {
-		return $this->name;
-	}
-
-	/**
-	 * Set the name of the contact
-	 *
-	 * @param string $name              The new name for the contact
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 *
-	 * @return bool                     True on succes, false on failure
-	 */
-	public function setName($name) {
-		$stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."contact` SET `name`=? WHERE `id`=?");
-		$stmt->execute(array($name, $this->id));
-		if ($stmt->rowCount() == 1) {
-			$this->name = $name;
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * Get the email of the contact
-	 *
-	 * @return string                   The email
-	 */
-	public function getEmail() {
-		return $this->email;
-	}
-
-	/**
-	 * Set the email of the contact
-	 *
-	 * @param string $email             The new email for the contact
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 *
-	 * @return bool                     True on succes, false on failure
-	 */
-	public function setEmail($email) {
-		$stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."contact` SET `email`=? WHERE `id`=?");
-		$stmt->execute(array($email, $this->id));
-		if ($stmt->rowCount() == 1) {
-			$this->email = $email;
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * Get the first address line of the contact
-	 *
-	 * @return string                   The address
-	 */
-	public function getAddress() {
-		return $this->address;
-	}
-
-	/**
-	 * Set the first address line of the contact
-	 *
-	 * @param string $address           The new address for the contact
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 *
-	 * @return bool                     True on succes, false on failure
-	 */
-	public function setAddress($address) {
-		$stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."contact` SET `address`=? WHERE `id`=?");
-		$stmt->execute(array($address, $this->id));
-		if ($stmt->rowCount() == 1) {
-			$this->address = $address;
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * Get the second address line of the contact
-	 *
-	 * @return string                   The address
-	 */
-	public function getAddress_2() {
-		return $this->address_2;
-	}
-
-	/**
-	 * Set the second address line of the contact
-	 *
-	 * @param string $address_2         The new address for the contact
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 *
-	 * @return bool                     True on succes, false on failure
-	 */
-	public function setAddress_2($address_2) {
-		$stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."contact` SET `address_2`=? WHERE `id`=?");
-		$stmt->execute(array($address_2, $this->id));
-		if ($stmt->rowCount() == 1) {
-			$this->address_2 = $address_2;
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * Get the postal_code of the contact
-	 *
-	 * @return string                   The postal_code
-	 */
-	public function getPostalCode() {
-		return $this->postal_code;
-	}
-
-	/**
-	 * Set the postal code of the contact
-	 *
-	 * @param $postal_code string       The new postal code for the contact
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 *
-	 * @return bool                     True on succes, false on failure
-	 */
-	public function setPostalCode($postal_code) {
-		$stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."contact` SET `postal_code`=? WHERE `id`=?");
-		$stmt->execute(array($postal_code, $this->id));
-		if ($stmt->rowCount() == 1) {
-			return true;
-			$this->postal_code = $postal_code;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * Get the city of the contact
-	 *
-	 * @return string                   The city
-	 */
-	public function getCity() {
-		return $this->city;
-	}
-
-	/**
-	 * Set the city of the contact
-	 *
-	 * @param string $city              The new city for the contact
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 *
-	 * @return bool                     True on succes, false on failure
-	 */
-	public function setCity($city) {
-		$stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."contact` SET `city`=? WHERE `id`=?");
-		$stmt->execute(array($city, $this->id));
-		if ($stmt->rowCount() == 1) {
-			$this->city = $city;
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * Get the country of the contact
-	 *
-	 * @return string                   The country
-	 */
-	public function getCountry() {
-		return $this->country;
-	}
-
-	/**
-	 * Set the country of the contact
-	 *
-	 * @param string $country           The new country for the contact
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 *
-	 * @return bool                     True on succes, false on failure
-	 */
-	public function setCountry($country) {
-		$stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."contact` SET `country`=? WHERE `id`=?");
-		$stmt->execute(array($country, $this->id));
-		if ($stmt->rowCount() == 1) {
-			$this->country = $country;
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * Get the language of the contact
-	 *
-	 * @return string                   The language
-	 */
-	public function getLanguage() {
-		return $this->language;
-	}
-
-	/**
-	 * Set the language of the contact
-	 *
-	 * @see correspondence::LANGUAGES   The available languages
-	 *
-	 * @param string $language          The new language for the contact
-	 *
-	 * @throws PDOException             If something went wrong with the database
-	 * @throws Exception                If the language is unknown
-	 *
-	 * @return bool                     True on succes, false on failure
-	 */
-	public function setLanguage($language) {
-		if (!in_array($language, correspondence::LANGUAGES)) {
-			throw new Exception("Language $language not available.");
-		}
-		$stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."contact` SET `language`=? WHERE `id`=?");
-		$stmt->execute(array($language, $this->id));
-		if ($stmt->rowCount() == 1) {
-			$this->language = $language;
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	//------------------------------------------------------------------------------
-	// Other functions
-	//------------------------------------------------------------------------------
-
-	/**
-	 * Remove this contact from the database
-	 *
-	 * If this doesn't succeed (i.e. false is returned), that means the contact 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."contact` WHERE `id`=?");
-		$stmt->execute(array($this->id));
-		if ($stmt->rowCount() != 1) {
-			return false;
-		} else {
-			return true;
-		}
-	}
-
 	/**
 	 * Make a new offer for this contact
 	 *
diff --git a/classes/Correspondence.php b/classes/Correspondence.php
index 4c7a23b..09873c3 100644
--- a/classes/Correspondence.php
+++ b/classes/Correspondence.php
@@ -183,7 +183,7 @@ class Correspondence extends FPDF {
 	function SetContact($contact) {
 		$this->contact = $contact;
 
-		$this->language = $contact->getLanguage();
+		$this->language = $contact->language;
 	}
 
 	/**
@@ -262,16 +262,16 @@ class Correspondence extends FPDF {
 
 		$this->SetFont('','',11);
 		$this->SetXY(30,56.5);
-		$this->Cell(90,5.5,utf8_decode($this->contact->getName()));
+		$this->Cell(90,5.5,utf8_decode($this->contact->name));
 		$this->Ln();
 		$this->SetXY(30,61.5);
-		$this->Cell(90,5.5,utf8_decode($this->contact->getAddress()));
+		$this->Cell(90,5.5,utf8_decode($this->contact->address));
 		$this->Ln();
 		$this->SetXY(30,66.5);
-		$this->Cell(90,5.5,utf8_decode($this->contact->getPostalCode().' '.$this->contact->getCity()));
+		$this->Cell(90,5.5,utf8_decode($this->contact->postal_code.' '.$this->contact->city));
 		$this->Ln();
 		$this->SetXY(30,71.5);
-		$this->Cell(90,5.5,utf8_decode($this->contact->getCountry()));
+		$this->Cell(90,5.5,utf8_decode($this->contact->country));
 		$this->Ln();
 	}
 
-- 
cgit v1.2.3