docblocks+api functions

This commit is contained in:
Dennis Eichhorn 2018-02-17 18:31:04 +01:00
parent b59e4c1e98
commit 0c954cf19f
2 changed files with 236 additions and 25 deletions

View File

@ -238,6 +238,15 @@ class Controller extends ModuleAbstract implements WebInterface
return $view;
}
/**
* Validate news create request
*
* @param RequestAbstract $request Request
*
* @return array
*
* @since 1.0.0
*/
private function validateNewsCreate(RequestAbstract $request) : array
{
$val = [];
@ -263,13 +272,73 @@ class Controller extends ModuleAbstract implements WebInterface
}
/**
* Api method to create news article
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @since 1.0.0
*/
public function apiNewsCreate(RequestAbstract $request, ResponseAbstract $response, $data = null)
public function apiNewsUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) /* : void */
{
if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::MODIFY, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::ARTICLE)
) {
$response->set('news_update', null);
$response->getHeader()->setStatusCode(RequestStatusCode::R_403);
return;
}
$news = $this->updateNewsFromRequest($request);
NewsArticleMapper::update($news);
$response->set($request->__toString(), [
'status' => 'ok',
'title' => 'Group',
'message' => 'Group successfully updated.',
'response' => $news->jsonSerialize()
]);
}
/**
* Method to update news from request.
*
* @param RequestAbstract $request Request
*
* @return NewsArticle
*
* @since 1.0.0
*/
private function updateNewsFromRequest(RequestAbstract $request) : NewsArticle
{
$newsArticle = NewsArticleMapper::get((int) $request->getData('id'));
$newsArticle->setPublish(new \DateTime((string) ($request->getData('publish') ?? $newsArticle->getPublish()->format('Y-m-d H:i:s'))));
$newsArticle->setTitle((string) ($request->getData('title') ?? $newsArticle->getTitle()));
$newsArticle->setPlain($request->getData('plain') ?? $newsArticle->getPlain());
$newsArticle->setContent(Markdown::parse((string) ($request->getData('plain') ?? $newsArticle->getPlain())));
$newsArticle->setLanguage(strtolower((string) ($request->getData('lang') ?? $newsArticle->getLanguage())));
$newsArticle->setType((int) ($request->getData('type') ?? $newsArticle->getType()));
$newsArticle->setStatus((int) ($request->getData('status') ?? $newsArticle->getStatus()));
$newsArticle->setFeatured((bool) ($request->getData('featured') ?? $newsArticle->isFeatured()));
return $newsArticle;
}
/**
* Api method to create news article
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @since 1.0.0
*/
public function apiNewsCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) /* : void */
{
if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::CREATE, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::ARTICLE)
@ -291,15 +360,22 @@ class Controller extends ModuleAbstract implements WebInterface
$response->set($request->__toString(), $newsArticle->jsonSerialize());
}
/**
* Method to create news article from request.
*
* @param RequestAbstract $request Request
*
* @return NewsArticle
*
* @since 1.0.0
*/
private function createNewsArticleFromRequest(RequestAbstract $request) : NewsArticle
{
$mardkownParser = new Markdown();
$newsArticle = new NewsArticle();
$newsArticle->setCreatedBy($request->getHeader()->getAccount());
$newsArticle->setPublish(new \DateTime((string) ($request->getData('publish') ?? 'now')));
$newsArticle->setTitle((string) ($request->getData('title') ?? ''));
$newsArticle->setPlain($mardkownParser->parse($request->getData('plain') ?? ''));
$newsArticle->setPlain($request->getData('plain') ?? '');
$newsArticle->setContent(Markdown::parse((string) ($request->getData('plain') ?? '')));
$newsArticle->setLanguage(strtolower((string) ($request->getData('lang') ?? $request->getHeader()->getL11n()->getLanguage())));
$newsArticle->setType((int) ($request->getData('type') ?? 1));
@ -309,6 +385,45 @@ class Controller extends ModuleAbstract implements WebInterface
return $newsArticle;
}
/**
* Api method for getting a news article
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @since 1.0.0
*/
public function apiNewsGet(RequestAbstract $request, ResponseAbstract $response, $data = null) /* : void */
{
if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::News)
) {
$response->set('news_read', null);
$response->getHeader()->setStatusCode(RequestStatusCode::R_403);
return;
}
$news = NewsArticleMapper::get((int) $request->getData('id'));
$response->set($request->__toString(), [
'status' => 'ok',
'title' => 'News',
'message' => 'News successfully returned.',
'response' => $news->jsonSerialize()
]);
}
/**
* Validate badge create request
*
* @param RequestAbstract $request Request
*
* @return array
*
* @since 1.0.0
*/
private function validateBadgeCreate(RequestAbstract $request) : array
{
$val = [];
@ -321,13 +436,17 @@ class Controller extends ModuleAbstract implements WebInterface
}
/**
* Api method to create Badge
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @since 1.0.0
*/
public function apiBadgeCreate(RequestAbstract $request, ResponseAbstract $response, $data = null)
public function apiBadgeCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) /* : void */
{
if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::CREATE, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::BADGE)
@ -349,6 +468,15 @@ class Controller extends ModuleAbstract implements WebInterface
$response->set('badge', $badge->jsonSerialize());
}
/**
* Method to create badge from request.
*
* @param RequestAbstract $request Request
*
* @return NewsArticle
*
* @since 1.0.0
*/
private function createBadgeFromRequest(RequestAbstract $request) : Badge
{
$mardkownParser = new Markdown();
@ -409,7 +537,18 @@ class Controller extends ModuleAbstract implements WebInterface
return NewsArticleMapper::getAllByQuery($query);
}
public function apiDeleteNewsArticle(RequestAbstract $request, ResponseAbstract $response, $data = null)
/**
* Api method to delete news article
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @since 1.0.0
*/
public function apiDeleteNewsArticle(RequestAbstract $request, ResponseAbstract $response, $data = null) /* : void */
{
if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::DELETE, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::ARTICLE)
@ -423,7 +562,18 @@ class Controller extends ModuleAbstract implements WebInterface
$response->set('news_delete', (int) $request->getData('id'));
}
public function apiDeleteNewsBadge(RequestAbstract $request, ResponseAbstract $response, $data = null)
/**
* Api method to delete badge
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @since 1.0.0
*/
public function apiDeleteNewsBadge(RequestAbstract $request, ResponseAbstract $response, $data = null) /* : void */
{
if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::DELETE, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::BADGE)

View File

@ -136,17 +136,35 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
$this->publish = new \DateTime('now');
}
/**
* Get badges
*
* @return array
*
* @since 1.0.0
*/
public function getBadges() : array
{
return $this->badges;
}
/**
* Add badge
*
* @param Badge $badge Badge to add
*
* @return void
*
* @since 1.0.0
*/
public function addBadge(Badge $badge) /* : void */
{
$this->badges[] = $badge;
}
/**
* Get content
*
* @return string
*
* @since 1.0.0
@ -157,19 +175,23 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* @param string $content
* Set content
*
* @param string $content News article content
*
* @return void
*
* @since 1.0.0
*/
public function setContent(string $content)
public function setContent(string $content) /* : void */
{
$this->content = $content;
}
/**
* @param string $plain
* Set plain content
*
* @param string $plain Plain/raw content
*
* @return void
*
@ -181,6 +203,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* Get plain/raw content
*
* @return string
*
* @since 1.0.0
@ -191,6 +215,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* Get date of creation
*
* @return \DateTime
*
* @since 1.0.0
@ -201,6 +227,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* Get id
*
* @return int
*
* @since 1.0.0
@ -211,6 +239,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* Get news language
*
* @return string
*
* @since 1.0.0
@ -221,6 +251,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* Get publish date
*
* @return \DateTime
*
* @since 1.0.0
@ -231,13 +263,15 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* @param string $language
* Set language
*
* @param string $language News article language
*
* @return void
*
* @since 1.0.0
*/
public function setLanguage(string $language)
public function setLanguage(string $language) /* : void */
{
if (!ISO639x1Enum::isValidValue($language)) {
throw new InvalidEnumValue($language);
@ -247,19 +281,23 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* @param \DateTime $publish
* Set publish date
*
* @param \DateTime $publish Publish date
*
* @return void
*
* @since 1.0.0
*/
public function setPublish(\DateTime $publish)
public function setPublish(\DateTime $publish) /* : void */
{
$this->publish = $publish;
}
/**
* @return int
* Get created by
*
* @return mixed
*
* @since 1.0.0
*/
@ -269,11 +307,15 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* @param int $id
* Set created by
*
* @param int $id Created by
*
* @return void
*
* @since 1.0.0
*/
public function setCreatedBy($id)
public function setCreatedBy($id) /* : void */
{
$this->createdBy = $id;
}
@ -289,18 +331,22 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* @param string $title
* Set news article title
*
* @param string $title News article title
*
* @return mixed
*
* @since 1.0.0
*/
public function setTitle(string $title)
public function setTitle(string $title) /* : void */
{
$this->title = $title;
}
/**
* Get news article type
*
* @return int
*
* @since 1.0.0
@ -311,13 +357,15 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* @param int $type
* Set news article type
*
* @param int $type News article type
*
* @return void
*
* @since 1.0.0
*/
public function setType(int $type)
public function setType(int $type) /* : void */
{
if (!NewsType::isValidValue($type)) {
throw new InvalidEnumValue((string) $type);
@ -327,6 +375,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* Get news article status
*
* @return int
*
* @since 1.0.0
@ -337,7 +387,7 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* @param int $status
* @param int $status News status
*
* @return void
*
@ -345,7 +395,7 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
*
* @since 1.0.0
*/
public function setStatus(int $status)
public function setStatus(int $status) /* : void */
{
if (!NewsStatus::isValidValue($status)) {
throw new InvalidEnumValue((string) $status);
@ -365,17 +415,22 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
}
/**
* @param bool $featured
* Set featured
*
* @param bool $featured Is featured
*
* @return void
*
* @since 1.0.0
*/
public function setFeatured(bool $featured)
public function setFeatured(bool $featured) /* : void */
{
$this->featured = $featured;
}
/**
* {@inheritdoc}
*/
public function toArray() : array
{
return [
@ -392,11 +447,17 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
];
}
/**
* {@inheritdoc}
*/
public function __toString()
{
return json_encode($this->toArray());
}
/**
* {@inheritdoc}
*/
public function jsonSerialize()
{
return $this->toArray();