157 lines
No EOL
3.5 KiB
PHP
157 lines
No EOL
3.5 KiB
PHP
<?php
|
|
|
|
class BlogPost extends Fiktiv_Model_Abstract
|
|
{
|
|
protected $_data = array();
|
|
|
|
protected $_default = array(
|
|
'id' => 0,
|
|
'title' => null,
|
|
'content' => null,
|
|
'pubDate' => null,
|
|
'author' => null,
|
|
'permalink' => null,
|
|
'isPublished' => false,
|
|
'tags' => array(),
|
|
);
|
|
|
|
public function setAttribs(array $data) {
|
|
|
|
foreach ($data as $key => $value) {
|
|
|
|
switch(strtolower($key)) {
|
|
case 'title':
|
|
$this->setTitle($value);
|
|
break;
|
|
case 'content':
|
|
$this->setContent($value);
|
|
break;
|
|
case 'author':
|
|
$this->setAuthor($value);
|
|
break;
|
|
case 'pubdate':
|
|
$this->setPubDate(new Zend_Date($value));
|
|
break;
|
|
case 'tags':
|
|
$this->setTags($value);
|
|
break;
|
|
case 'permalink':
|
|
$this->setPermalink($value);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function setId($id)
|
|
{
|
|
if (is_numeric($id))
|
|
$this->_data['id'] = $id;
|
|
}
|
|
|
|
public function setTitle($title)
|
|
{
|
|
if (is_string($title) && null == $title[30]) {
|
|
|
|
$this->_data['title'] = $title;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function setContent($content)
|
|
{
|
|
if (is_string($content)) {
|
|
|
|
$this->_data['content'] = $content;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function setAuthor($author)
|
|
{
|
|
if ($author instanceof User) {
|
|
|
|
$this->_data['author'] = $author;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function addTag($tag)
|
|
{
|
|
if (is_string($tag)) {
|
|
$this->_data['tags'][] = $tag;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function setTags(array $tags)
|
|
{
|
|
// make sure the all elements are strings
|
|
foreach ($tags as $tag) {
|
|
if (!is_string($tag))
|
|
return false;
|
|
}
|
|
|
|
$this->_data['tags'] = $tags;
|
|
return true;
|
|
}
|
|
|
|
public function setPubDate($date)
|
|
{
|
|
|
|
if (Fiktiv_Date::isDate($date)) {
|
|
|
|
$this->_data['pubDate'] = new Fiktiv_Date($date);
|
|
|
|
} else if ($date instanceof Zend_Date) {
|
|
|
|
$this->_data['pubDate'] = $date;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function isPublished($flag = null)
|
|
{
|
|
if (null === $flag) {
|
|
return $this->_data['isPublished'];
|
|
}
|
|
|
|
$this->_data['isPublished'] = (boolean)$flag;
|
|
}
|
|
|
|
protected function generatePermalink()
|
|
{
|
|
$permalink = $this->_data['title'];
|
|
|
|
// All to lowercase
|
|
$permalink = strtolower($permalink);
|
|
|
|
// Remove special characters
|
|
//$permalink = filter_var($permalink, FILTER_SANITIZE_SPECIAL_CHARS);
|
|
|
|
// Replace stuff
|
|
$replace = array(
|
|
' ' => '-',
|
|
'å' => 'a',
|
|
'ä' => 'a',
|
|
'ö' => 'o',
|
|
);
|
|
foreach($replace as $char => $value) {
|
|
$permalink = str_replace($char,$value,$permalink);
|
|
}
|
|
|
|
$this->_data['permalink'] = $permalink;
|
|
}
|
|
} |