<?php
/**
* Handles the transactions related to Posts
*
* @author Dana Murad
* @file PostCT.php
*
* @todo
*/
require_once("../config/main.php");
class PostCT extends CT
{
//__________________________________ M E M B E R S _____________________________________
/**
* @desc DAO
* @var object
*/
private $DAO;
//__________________________________ C O N S T R U C T O R ____________________________
/**
* @desc Constructor
*/
function __construct
(
)
{
$this->DAO = new DAO();
parent::__construct();
}
//__________________________________ U T I L I T Y __________________________________
/**
* @desc Gets a post object by its primary key
* @access public
* @param integer $id
* @return object
*/
public function getPostByID
(
$id
)
{
try
{
$vo = new PostVO();
return $this->DAO->findByPK($vo,$id);
}
catch (Exception $e)
{
Error::report($e);
return NULL;
}
}
/**
* @desc Adds a Post object to the database
* @access public
* @param resource $vo
* @return string
*/
public function add
(
&$vo
)
{
try
{
return $this->DAO->insert($vo);
}
catch (Exception $e)
{
Error::report($e);
return NULL;
}
}
/**
* @desc Updates a Post object in the database.
* @access public
* @param resource $vo
* @return string
*/
public function update
(
&$vo
)
{
try
{
return $this->DAO->update($vo);
}
catch (Exception $e)
{
Error::report($e);
return NULL;
}
}
/**
* @desc Delete a Post by its primary key.
* @access public
* @param integer $id
* @return string
*/
public function delete
(
$id
)
{
try
{
$userVO = new PostVO($id);
return $this->DAO->delete($userVO);
}
catch (Exception $e)
{
Error::report($e);
return NULL;
}
}
/**
* @desc Get the most recent post to a limit (default is ten)
* @access public
* @param integer $userID
* @return array
*/
public function buildActivePosts
(
$userID
)
{
try
{
$postVO = new PostVO();
$userID = mysql_real_escape_string($userID);
$voList = $this->DAO->findWhere($postVO,"`userID` = $userID","datePosted","DESC");
return $voList;
}
catch(Exception $e)
{
Error::report($e);
}
}
/**
* @desc validates fields for POST
* @access public
* @param string $title
* @param string $author
* @param string $email
* @param string $description
* @return bool
*/
public function validateFields
(
$title,
$author,
$email,
$description,
$city,
$state
)
{
$noError = TRUE;
if(empty($title))
{
$this->addMessage("Please provide a title for the book. ");
$noError = FALSE;
}
if(empty($author))
{
$this->addMessage("Please provide an author for this book, if no other type 'none'.");
$noError = FALSE;
}
if(!empty($email))
{
if(!checkEmailAddress($email))
{
$this->addMessage("Invalid email address given.");
$noError = FALSE;
}
}
if(empty($email) && empty($description))
{
$this->addMessage("Please provide an email address or some other contact information in the description field.");
$noError = FALSE;
}
if(empty($state))
{
$this->addMessage("Please a state.");
$noError = FALSE;
}
if(empty($city))
{
$this->addMessage("Please select the closest city.");
$noError = FALSE;
}
return $noError;
}
}