Archived
1
0
Fork 0
This repository has been archived on 2026-05-10. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
fiktivkod/application/models/Mapper/BlogPost.php
Fredric N 359e42a44b BFC
2010-09-19 16:08:43 +02:00

79 lines
No EOL
1.7 KiB
PHP

<?php
class Mapper_BlogPost extends Fiktiv_Model_Mapper_DbTableAbstract
{
protected $_mapperUser = null;
public static function generatePermalink(BlogPost $post)
{
$chars = array(
' ' => '-',
);
$permalink = $post->getTitle();
foreach ($chars as $ch => $rep) {
$permalink = str_replace($ch, $rep, $permalink);
}
return strtolower($permalink);
}
public function __construct($dbtable = null) {
parent::__construct($dbtable);
$this->_mapperUser = new Mapper_User(new Table_User());
}
protected function _createBlogPost($obj)
{
$blogPost = new BlogPost();
if ($obj instanceof Zend_Db_Table_Row) {
$blogPost->setId($obj->id);
$blogPost->setTitle($obj->title);
$blogPost->setContent($obj->content);
$blogPost->setPubDate(new Fiktiv_Date($obj->pubDate));
$blogPost->setAuthor($this->_mapperUser->findById($obj->userId));
} else {
$blogPost = null;
}
return $blogPost;
}
public function findById($id)
{
if (is_numeric($id)) {
return $this->_createBlogPost($this->_dbTable->find($id)->current());
}
return null;
}
public function findAllPostByAuthor($user)
{
if ($user instanceof User) {
return $this->_createBlogPost($this->_dbTable->findByUser($user->getId()));
}
}
public function findAll($limit = null)
{
$rows = $this->_dbTable->fetchAll(null, 'pubDate DESC');
$posts = array();
foreach ($rows as $row) {
$posts[] = $this->_createBlogPost($row);
}
return $posts;
}
}