Cleanup and function pull out

This commit is contained in:
Dennis Eichhorn 2016-01-30 22:13:15 +01:00
parent a9a95d3dd2
commit 5b293282fa
5 changed files with 88 additions and 249 deletions

View File

@ -48,21 +48,20 @@ class Installer extends InstallerAbstract
`news_title` varchar(250) NOT NULL,
`news_featured` tinyint(1) DEFAULT NULL,
`news_content` text NOT NULL,
`news_plain` text NOT NULL,
`news_type` tinyint(2) NOT NULL,
`news_status` tinyint(1) NOT NULL,
`news_lang` varchar(2) NOT NULL,
`news_publish` datetime NOT NULL,
`news_created` datetime NOT NULL,
`news_author` int(11) NOT NULL,
`news_created_at` datetime NOT NULL,
`news_created_by` int(11) NOT NULL,
PRIMARY KEY (`news_id`),
KEY `news_author` (`news_author`)
KEY `news_created_by` (`news_created_by`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get('core')->con->prepare(
'ALTER TABLE `' . $dbPool->get('core')->prefix . 'news`
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'news_ibfk_1` FOREIGN KEY (`news_author`) REFERENCES `' . $dbPool->get('core')->prefix . 'account` (`account_id`);'
ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'news_ibfk_1` FOREIGN KEY (`news_created_by`) REFERENCES `' . $dbPool->get('core')->prefix . 'account` (`account_id`);'
)->execute();
$dbPool->get('core')->con->prepare(

View File

@ -121,7 +121,7 @@ class Controller extends ModuleAbstract implements WebInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-dashboard');
$view->addData('nav', $this->createNavigation(1000701001, $request, $response));
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response));
$news = $this->getNewsListR(20, 0, 'news.news_publish', 'DESC', $this->app->accountManager->get($request->getAccount()));
$headline = $this->getHeadlineListR(20, 0, 'news.news_publish', 'ASC', $this->app->accountManager->get($request->getAccount()));
@ -145,7 +145,7 @@ class Controller extends ModuleAbstract implements WebInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-single');
$view->addData('nav', $this->createNavigation(1000701001, $request, $response));
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response));
$newsArticleMapper = new NewsArticleMapper($this->app->dbPool->get());
$article = $newsArticleMapper->get((int) $request->getData('id'));
@ -168,7 +168,7 @@ class Controller extends ModuleAbstract implements WebInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-archive');
$view->addData('nav', $this->createNavigation(1000701001, $request, $response));
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response));
return $view;
}
@ -187,7 +187,7 @@ class Controller extends ModuleAbstract implements WebInterface
{
$view = new View($this->app, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-create');
$view->addData('nav', $this->createNavigation(1000701001, $request, $response));
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000701001, $request, $response));
return $view;
}
@ -283,25 +283,4 @@ class Controller extends ModuleAbstract implements WebInterface
return $newsArticleMapper->getAllByQuery($query);
}
/**
* @param int $pageId Page/parent Id for navigation
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
*
* @return RenderableInterface
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
private function createNavigation(int $pageId, RequestAbstract $request, ResponseAbstract $response)
{
$nav = Navigation::getInstance($request, $this->app->dbPool);
$navView = new NavigationView($this->app, $request, $response);
$navView->setTemplate('/Modules/Navigation/Theme/Backend/mid');
$navView->setNav($nav->getNav());
$navView->setLanguage($request->getL11n()->getLanguage());
$navView->setParent($pageId);
return $navView;
}
}

View File

@ -15,8 +15,8 @@
*/
namespace Modules\News\Models;
use phpOMS\Localization\ISO639Enum;
use phpOMS\Datatypes\Exception\InvalidEnumValue;
use phpOMS\Localization\ISO639x1Enum;
/**
* News article class.
@ -40,14 +40,6 @@ class NewsArticle
*/
private $id = 0;
/**
* Author ID.
*
* @var int
* @since 1.0.0
*/
private $author = 0;
/**
* Title.
*
@ -64,14 +56,6 @@ class NewsArticle
*/
private $content = '';
/**
* Plain.
*
* @var string
* @since 1.0.0
*/
private $plain = '';
/**
* News type.
*
@ -86,7 +70,7 @@ class NewsArticle
* @var int
* @since 1.0.0
*/
private $status = NewsStatus::VISIBLE;
private $status = NewsStatus::DRAFT;
/**
* Language.
@ -94,7 +78,7 @@ class NewsArticle
* @var string
* @since 1.0.0
*/
private $lang = ISO639Enum::_EN;
private $language = ISO639x1Enum::_EN;
/**
* Created.
@ -102,7 +86,15 @@ class NewsArticle
* @var \DateTime
* @since 1.0.0
*/
private $created = null;
private $createdAt = null;
/**
* Creator.
*
* @var int
* @since 1.0.0
*/
private $createdBy = 0;
/**
* Publish.
@ -128,21 +120,10 @@ class NewsArticle
*/
public function __construct()
{
$this->created = new \DateTime('NOW');
$this->createdAt = new \DateTime('NOW');
$this->publish = new \DateTime('NOW');
}
/**
* @return int
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getAuthor() : int
{
return $this->author;
}
/**
* @return string
*
@ -173,9 +154,9 @@ class NewsArticle
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getCreated() : \DateTime
public function getCreatedAt() : \DateTime
{
return $this->created;
return $this->createdAt;
}
/**
@ -189,19 +170,6 @@ class NewsArticle
return $this->id;
}
/**
* @param int $id Id
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setId(int $id)
{
$this->id = $id;
}
/**
* @return string
*
@ -210,31 +178,7 @@ class NewsArticle
*/
public function getLanguage() : string
{
return $this->lang;
}
/**
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getPlain() : string
{
return $this->plain;
}
/**
* @param string $plain
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setPlain(string $plain)
{
$this->plain = $plain;
return $this->language;
}
/**
@ -249,16 +193,20 @@ class NewsArticle
}
/**
* @param string $lang
* @param string $language
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setLang(string $lang)
public function setLanguage(string $language)
{
$this->lang = $lang;
if(!ISO639x1Enum::isValidValue($language)) {
throw new InvalidEnumValue($language);
}
$this->language = $language;
}
/**
@ -275,29 +223,38 @@ class NewsArticle
}
/**
* @param \DateTime $created
*
* @return void
* @return int
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setCreated(\DateTime $created)
public function getCreatedBy() : int
{
$this->created = $created;
return $this->createdBy;
}
/**
* @param int $author
* @param int $id
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setCreatedBy(int $id)
{
$this->createdBy = $id;
}
/**
* @param \DateTime $createdAt
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setAuthor(int $author)
public function setCreatedAt(\DateTime $createdAt)
{
$this->author = $author;
$this->createdAt = $createdAt;
}
/**
@ -345,6 +302,10 @@ class NewsArticle
*/
public function setType(int $type)
{
if(!NewsType::isValidValue($type)) {
throw new InvalidEnumValue($type);
}
$this->type = $type;
}
@ -364,11 +325,17 @@ class NewsArticle
*
* @return void
*
* @throws
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setStatus(int $status)
{
if(!NewsStatus::isValidValue($status)) {
throw new InvalidEnumValue($status);
}
$this->status = $status;
}

View File

@ -29,16 +29,16 @@ class NewsArticleMapper extends DataMapperAbstract
* @since 1.0.0
*/
static protected $columns = [
'news_id' => ['name' => 'news_id', 'type' => 'int', 'internal' => 'id'],
'news_author' => ['name' => 'news_author', 'type' => 'string', 'internal' => 'author'],
'news_publish' => ['name' => 'news_publish', 'type' => 'DateTime', 'internal' => 'publish'],
'news_title' => ['name' => 'news_title', 'type' => 'string', 'internal' => 'title'],
'news_plain' => ['name' => 'news_plain', 'type' => 'string', 'internal' => 'plain'],
'news_content' => ['name' => 'news_content', 'type' => 'string', 'internal' => 'content'],
'news_status' => ['name' => 'news_status', 'type' => 'int', 'internal' => 'status'],
'news_type' => ['name' => 'news_type', 'type' => 'int', 'internal' => 'type'],
'news_featured' => ['name' => 'news_featured', 'type' => 'bool', 'internal' => 'featured'],
'news_created' => ['name' => 'news_created', 'type' => 'DateTime', 'internal' => 'created'],
'news_id' => ['name' => 'news_id', 'type' => 'int', 'internal' => 'id'],
'news_created_by' => ['name' => 'news_created_by', 'type' => 'string', 'internal' => 'createdBy'],
'news_publish' => ['name' => 'news_publish', 'type' => 'DateTime', 'internal' => 'publish'],
'news_title' => ['name' => 'news_title', 'type' => 'string', 'internal' => 'title'],
'news_content' => ['name' => 'news_content', 'type' => 'string', 'internal' => 'content'],
'news_lang' => ['name' => 'news_lang', 'type' => 'string', 'internal' => 'language'],
'news_status' => ['name' => 'news_status', 'type' => 'int', 'internal' => 'status'],
'news_type' => ['name' => 'news_type', 'type' => 'int', 'internal' => 'type'],
'news_featured' => ['name' => 'news_featured', 'type' => 'bool', 'internal' => 'featured'],
'news_created_at' => ['name' => 'news_created_at', 'type' => 'DateTime', 'internal' => 'createdAt'],
];
/**
@ -55,7 +55,7 @@ class NewsArticleMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static $primaryField = 'id';
protected static $primaryField = 'news_id';
/**
* Create article.
@ -73,20 +73,20 @@ class NewsArticleMapper extends DataMapperAbstract
$objId = parent::create($obj);
$query = new Builder($this->db);
$query->prefix($this->db->getPrefix())
->insert(
'account_permission_account',
'account_permission_from',
'account_permission_for',
'account_permission_id1',
'account_permission_id2',
'account_permission_r',
'account_permission_w',
'account_permission_m',
'account_permission_d',
'account_permission_p'
)
->into('account_permission')
->values($obj->getAuthor(), 'news', 'news', 1, $objId, 1, 1, 1, 1, 1);
->insert(
'account_permission_account',
'account_permission_from',
'account_permission_for',
'account_permission_id1',
'account_permission_id2',
'account_permission_r',
'account_permission_w',
'account_permission_m',
'account_permission_d',
'account_permission_p'
)
->into('account_permission')
->values($obj->getCreatedBy(), 'news', 'news', 1, $objId, 1, 1, 1, 1, 1);
$this->db->con->prepare($query->toSql())->execute();
} catch (\Exception $e) {
@ -109,9 +109,9 @@ class NewsArticleMapper extends DataMapperAbstract
public function find(...$columns) : Builder
{
return parent::find(...$columns)->from('account_permission')
->where('account_permission.account_permission_for', '=', 'news')
->where('account_permission.account_permission_id1', '=', 1)
->where('news.news_id', '=', new Column('account_permission.account_permission_id2'))
->where('account_permission.account_permission_r', '=', 1);
->where('account_permission.account_permission_for', '=', 'news')
->where('account_permission.account_permission_id1', '=', 1)
->where('news.news_id', '=', new Column('account_permission.account_permission_id2'))
->where('account_permission.account_permission_r', '=', 1);
}
}

View File

@ -1,106 +0,0 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright 2013 Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
namespace Modules\News\Models;
use phpOMS\DataStorage\Database\DatabaseType;
/**
* News list class.
*
* @category Modules
* @package Modules\News
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class NewsList
{
/**
* Database instance.
*
* @var \phpOMS\DataStorage\Database\Database
* @since 1.0.0
*/
private $dbPool = null;
/**
* Constructor.
*
* @param \phpOMS\DataStorage\Database\Pool $dbPool Database pool instance
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function __construct($dbPool)
{
$this->dbPool = $dbPool;
}
/**
* Get all news.
*
* This function gets all accounts in a range
*
* @param array $filter Filter for search results
* @param int $offset Offset for first account
* @param int $limit Limit for results
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getList($filter = null, $offset = 0, $limit = 100)
{
$result = null;
switch ($this->dbPool->get('core')->getType()) {
case DatabaseType::MYSQL:
$search = $this->dbPool->get('core')->generate_sql_filter($filter, true);
// SQL_CALC_FOUND_ROWS
$sth = $this->dbPool->get('core')->con->prepare(
'SELECT DISTINCT
`' . $this->dbPool->get('core')->prefix . 'news`.*,
`' . $this->dbPool->get('core')->prefix . 'account_data`.`name1`,
`' . $this->dbPool->get('core')->prefix . 'account_data`.`name2`,
`' . $this->dbPool->get('core')->prefix . 'account_data`.`name3`
FROM
`' . $this->dbPool->get('core')->prefix . 'news`
LEFT JOIN `' . $this->dbPool->get('core')->prefix . 'account_data`
ON `' . $this->dbPool->get('core')->prefix . 'news`.`news_author` = `' . $this->dbPool->get('core')->prefix . 'account_data`.`account`
GROUP BY `' . $this->dbPool->get('core')->prefix . 'news`.`news_id` '
. $search . 'LIMIT ' . $offset . ',' . $limit
);
$sth->execute();
$result['list'] = $sth->fetchAll();
$sth = $this->dbPool->get('core')->con->prepare(
'SELECT FOUND_ROWS();'
);
$sth->execute();
$result['count'] = $sth->fetchAll()[0][0];
break;
}
return $result;
}
}