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; return $view;
} }
/**
* Validate news create request
*
* @param RequestAbstract $request Request
*
* @return array
*
* @since 1.0.0
*/
private function validateNewsCreate(RequestAbstract $request) : array private function validateNewsCreate(RequestAbstract $request) : array
{ {
$val = []; $val = [];
@ -263,13 +272,73 @@ class Controller extends ModuleAbstract implements WebInterface
} }
/** /**
* Api method to create news article
*
* @param RequestAbstract $request Request * @param RequestAbstract $request Request
* @param ResponseAbstract $response Response * @param ResponseAbstract $response Response
* @param mixed $data Generic data * @param mixed $data Generic data
*
* @return void
* *
* @since 1.0.0 * @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( if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::CREATE, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::ARTICLE) 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()); $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 private function createNewsArticleFromRequest(RequestAbstract $request) : NewsArticle
{ {
$mardkownParser = new Markdown();
$newsArticle = new NewsArticle(); $newsArticle = new NewsArticle();
$newsArticle->setCreatedBy($request->getHeader()->getAccount()); $newsArticle->setCreatedBy($request->getHeader()->getAccount());
$newsArticle->setPublish(new \DateTime((string) ($request->getData('publish') ?? 'now'))); $newsArticle->setPublish(new \DateTime((string) ($request->getData('publish') ?? 'now')));
$newsArticle->setTitle((string) ($request->getData('title') ?? '')); $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->setContent(Markdown::parse((string) ($request->getData('plain') ?? '')));
$newsArticle->setLanguage(strtolower((string) ($request->getData('lang') ?? $request->getHeader()->getL11n()->getLanguage()))); $newsArticle->setLanguage(strtolower((string) ($request->getData('lang') ?? $request->getHeader()->getL11n()->getLanguage())));
$newsArticle->setType((int) ($request->getData('type') ?? 1)); $newsArticle->setType((int) ($request->getData('type') ?? 1));
@ -309,6 +385,45 @@ class Controller extends ModuleAbstract implements WebInterface
return $newsArticle; 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 private function validateBadgeCreate(RequestAbstract $request) : array
{ {
$val = []; $val = [];
@ -321,13 +436,17 @@ class Controller extends ModuleAbstract implements WebInterface
} }
/** /**
* Api method to create Badge
*
* @param RequestAbstract $request Request * @param RequestAbstract $request Request
* @param ResponseAbstract $response Response * @param ResponseAbstract $response Response
* @param mixed $data Generic data * @param mixed $data Generic data
*
* @return void
* *
* @since 1.0.0 * @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( if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::CREATE, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::BADGE) 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()); $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 private function createBadgeFromRequest(RequestAbstract $request) : Badge
{ {
$mardkownParser = new Markdown(); $mardkownParser = new Markdown();
@ -409,7 +537,18 @@ class Controller extends ModuleAbstract implements WebInterface
return NewsArticleMapper::getAllByQuery($query); 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( if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::DELETE, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::ARTICLE) 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')); $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( if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission(
PermissionType::DELETE, $this->app->orgId, $this->app->appName, self::MODULE_ID, PermissionState::BADGE) 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'); $this->publish = new \DateTime('now');
} }
/**
* Get badges
*
* @return array
*
* @since 1.0.0
*/
public function getBadges() : array public function getBadges() : array
{ {
return $this->badges; return $this->badges;
} }
/**
* Add badge
*
* @param Badge $badge Badge to add
*
* @return void
*
* @since 1.0.0
*/
public function addBadge(Badge $badge) /* : void */ public function addBadge(Badge $badge) /* : void */
{ {
$this->badges[] = $badge; $this->badges[] = $badge;
} }
/** /**
* Get content
*
* @return string * @return string
* *
* @since 1.0.0 * @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 * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function setContent(string $content) public function setContent(string $content) /* : void */
{ {
$this->content = $content; $this->content = $content;
} }
/** /**
* @param string $plain * Set plain content
*
* @param string $plain Plain/raw content
* *
* @return void * @return void
* *
@ -181,6 +203,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
} }
/** /**
* Get plain/raw content
*
* @return string * @return string
* *
* @since 1.0.0 * @since 1.0.0
@ -191,6 +215,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
} }
/** /**
* Get date of creation
*
* @return \DateTime * @return \DateTime
* *
* @since 1.0.0 * @since 1.0.0
@ -201,6 +227,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
} }
/** /**
* Get id
*
* @return int * @return int
* *
* @since 1.0.0 * @since 1.0.0
@ -211,6 +239,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
} }
/** /**
* Get news language
*
* @return string * @return string
* *
* @since 1.0.0 * @since 1.0.0
@ -221,6 +251,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
} }
/** /**
* Get publish date
*
* @return \DateTime * @return \DateTime
* *
* @since 1.0.0 * @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 * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function setLanguage(string $language) public function setLanguage(string $language) /* : void */
{ {
if (!ISO639x1Enum::isValidValue($language)) { if (!ISO639x1Enum::isValidValue($language)) {
throw new InvalidEnumValue($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 * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function setPublish(\DateTime $publish) public function setPublish(\DateTime $publish) /* : void */
{ {
$this->publish = $publish; $this->publish = $publish;
} }
/** /**
* @return int * Get created by
*
* @return mixed
* *
* @since 1.0.0 * @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 * @since 1.0.0
*/ */
public function setCreatedBy($id) public function setCreatedBy($id) /* : void */
{ {
$this->createdBy = $id; $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 * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function setTitle(string $title) public function setTitle(string $title) /* : void */
{ {
$this->title = $title; $this->title = $title;
} }
/** /**
* Get news article type
*
* @return int * @return int
* *
* @since 1.0.0 * @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 * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function setType(int $type) public function setType(int $type) /* : void */
{ {
if (!NewsType::isValidValue($type)) { if (!NewsType::isValidValue($type)) {
throw new InvalidEnumValue((string) $type); throw new InvalidEnumValue((string) $type);
@ -327,6 +375,8 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
} }
/** /**
* Get news article status
*
* @return int * @return int
* *
* @since 1.0.0 * @since 1.0.0
@ -337,7 +387,7 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
} }
/** /**
* @param int $status * @param int $status News status
* *
* @return void * @return void
* *
@ -345,7 +395,7 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function setStatus(int $status) public function setStatus(int $status) /* : void */
{ {
if (!NewsStatus::isValidValue($status)) { if (!NewsStatus::isValidValue($status)) {
throw new InvalidEnumValue((string) $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 * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function setFeatured(bool $featured) public function setFeatured(bool $featured) /* : void */
{ {
$this->featured = $featured; $this->featured = $featured;
} }
/**
* {@inheritdoc}
*/
public function toArray() : array public function toArray() : array
{ {
return [ return [
@ -392,11 +447,17 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable
]; ];
} }
/**
* {@inheritdoc}
*/
public function __toString() public function __toString()
{ {
return json_encode($this->toArray()); return json_encode($this->toArray());
} }
/**
* {@inheritdoc}
*/
public function jsonSerialize() public function jsonSerialize()
{ {
return $this->toArray(); return $this->toArray();