%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/rest/definitions/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/rest/definitions/ContentDefinitions.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2018 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\rest\definitions; use humhub\modules\content\components\ActiveQueryContent; use humhub\modules\content\models\Content; use humhub\modules\content\models\ContentContainer; use humhub\modules\topic\models\Topic; use Yii; /** * Class ContentDefinitions * @package humhub\modules\rest\definitions */ class ContentDefinitions { public static function getContent($content) { return [ 'id' => $content->id, 'metadata' => static::getContentMetadata($content), 'comments' => CommentDefinitions::getCommentsSummary($content), 'likes' => LikeDefinitions::getLikesSummary($content), 'topics' => static::getTopics($content), 'files' => FileDefinitions::getFiles($content), ]; } public static function getContentMetadata(Content $content) { return [ 'id' => $content->id, 'guid' => $content->guid, 'object_model' => $content->object_model, 'object_id' => $content->object_id, 'visibility' => (int) $content->visibility, 'archived' => (bool) $content->archived, 'pinned' => (bool) $content->pinned, 'locked_comments' => (bool) $content->locked_comments, 'created_by' => UserDefinitions::getUserShort($content->createdBy), 'created_at' => $content->created_at, 'updated_by' => UserDefinitions::getUserShort($content->updatedBy), 'updated_at' => $content->updated_at, 'url' => $content->getUrl(true), 'contentcontainer_id' => $content->contentcontainer_id, 'stream_channel' => $content->stream_channel ]; } public static function getContentContainer(ContentContainer $container) { return [ 'id' => $container->id, 'guid' => $container->guid, 'objectClass' => $container->class, 'objectPk' => $container->pk, ]; } public static function getTopics(Content $content) { $topics = []; foreach (Topic::findByContent($content)->all() as $topic) { $topics[] = static::getTopic($topic); } return $topics; } public static function getTopic(Topic $topic) { return [ 'id' => $topic->id, 'name' => $topic->name, ]; } public static function handleTopicsParam(ActiveQueryContent $query, $contentContainerId) { $topicsParam = Yii::$app->request->get('topics'); if (!empty($topicsParam)) { $topics = []; foreach (explode(',', $topicsParam) as $topicName) { $topic = Topic::findOne(['contentcontainer_id' => $contentContainerId, 'name' => $topicName]); if ($topic !== null) { $topics[] = $topic; } } if (!empty($topics)) { $query->contentTag($topics, 'OR'); } } } }