Merge "Improved performance at summit event serializer"

This commit is contained in:
Zuul 2020-10-22 22:06:07 +00:00 committed by Gerrit Code Review
commit 402822821c
2 changed files with 78 additions and 19 deletions

View File

@ -85,9 +85,7 @@ class PresentationSerializer extends SummitEventSerializer
{ {
$slides = []; $slides = [];
foreach ($presentation->getSlides() as $slide) { foreach ($presentation->getSlides() as $slide) {
$slide_values = SerializerRegistry::getInstance()->getSerializer($slide)->serialize(AbstractSerializer::filterExpandByPrefix($expand, 'slides')); $slides[] = $slide->getId();
if(empty($slide_values['link'])) continue;
$slides[] = $slide_values;
} }
$values['slides'] = $slides; $values['slides'] = $slides;
} }
@ -96,7 +94,7 @@ class PresentationSerializer extends SummitEventSerializer
{ {
$public_comments = []; $public_comments = [];
foreach ($presentation->getPublicComments() as $comment) { foreach ($presentation->getPublicComments() as $comment) {
$public_comments[] = SerializerRegistry::getInstance()->getSerializer($comment)->serialize(AbstractSerializer::filterExpandByPrefix($expand, 'public_comments')); $public_comments[] = $comment->getId();
} }
$values['public_comments'] = $public_comments; $values['public_comments'] = $public_comments;
} }
@ -105,9 +103,7 @@ class PresentationSerializer extends SummitEventSerializer
{ {
$links = []; $links = [];
foreach ($presentation->getLinks() as $link) { foreach ($presentation->getLinks() as $link) {
$link_values = SerializerRegistry::getInstance()->getSerializer($link)->serialize(AbstractSerializer::filterExpandByPrefix($expand, 'links')); $links[] = $link->getId();
if(empty($link_values['link'])) continue;
$links[] = $link_values;
} }
$values['links'] = $links; $values['links'] = $links;
} }
@ -116,9 +112,7 @@ class PresentationSerializer extends SummitEventSerializer
{ {
$videos = []; $videos = [];
foreach ($presentation->getVideos() as $video) { foreach ($presentation->getVideos() as $video) {
$video_values = SerializerRegistry::getInstance()->getSerializer($video)->serialize(AbstractSerializer::filterExpandByPrefix($expand, 'videos')); $videos[] = $video->getId();
if(empty($video_values['youtube_id'])) continue;
$videos[] = $video_values;
} }
$values['videos'] = $videos; $values['videos'] = $videos;
} }
@ -126,15 +120,10 @@ class PresentationSerializer extends SummitEventSerializer
if(in_array('media_uploads', $relations)) if(in_array('media_uploads', $relations))
{ {
$media_uploads = []; $media_uploads = [];
$serializerType = SerializerRegistry::SerializerType_Public; foreach ($presentation->getMediaUploads() as $mediaUpload) {
$currentUser = $this->resource_server_context->getCurrentUser(); $media_uploads[] = $mediaUpload->getId();
if(!is_null($currentUser) && $currentUser->isAdmin()){
$serializerType = SerializerRegistry::SerializerType_Private;
} }
foreach ($presentation->getMediaUploads() as $mediaUpload) {
$media_uploads[] = SerializerRegistry::getInstance()->getSerializer($mediaUpload, $serializerType)->serialize(AbstractSerializer::filterExpandByPrefix($expand, 'media_uploads'));;
}
$values['media_uploads'] = $media_uploads; $values['media_uploads'] = $media_uploads;
} }
@ -142,7 +131,7 @@ class PresentationSerializer extends SummitEventSerializer
{ {
$answers = []; $answers = [];
foreach ($presentation->getAnswers() as $answer) { foreach ($presentation->getAnswers() as $answer) {
$answers[]= SerializerRegistry::getInstance()->getSerializer($answer)->serialize(AbstractSerializer::filterExpandByPrefix($expand, 'extra_questions')); $answers[] = $answer->getId();
} }
$values['extra_questions'] = $answers; $values['extra_questions'] = $answers;
} }
@ -161,6 +150,7 @@ class PresentationSerializer extends SummitEventSerializer
$values['moderator'] = SerializerRegistry::getInstance()->getSerializer($presentation->getModerator())->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation)); $values['moderator'] = SerializerRegistry::getInstance()->getSerializer($presentation->getModerator())->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
} }
} }
break;
case 'creator':{ case 'creator':{
if($presentation->getCreatorId() > 0) { if($presentation->getCreatorId() > 0) {
$member = $this->resource_server_context->getCurrentUser(); $member = $this->resource_server_context->getCurrentUser();
@ -180,6 +170,67 @@ class PresentationSerializer extends SummitEventSerializer
} }
} }
break; break;
case 'slides':{
$slides = [];
foreach ($presentation->getSlides() as $slide) {
$slide_values = SerializerRegistry::getInstance()->getSerializer($slide)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
if(empty($slide_values['link'])) continue;
$slides[] = $slide_values;
}
$values['slides'] = $slides;
}
break;
case 'public_comments':{
$public_comments = [];
foreach ($presentation->getPublicComments() as $comment) {
$public_comments[] = SerializerRegistry::getInstance()->getSerializer($comment)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
}
$values['public_comments'] = $public_comments;
}
break;
case 'links':{
$links = [];
foreach ($presentation->getLinks() as $link) {
$link_values = SerializerRegistry::getInstance()->getSerializer($link)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
if(empty($link_values['link'])) continue;
$links[] = $link_values;
}
$values['links'] = $links;
}
break;
case 'videos':{
$videos = [];
foreach ($presentation->getVideos() as $video) {
$video_values = SerializerRegistry::getInstance()->getSerializer($video)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
if(empty($video_values['youtube_id'])) continue;
$videos[] = $video_values;
}
$values['videos'] = $videos;
}
break;
case 'media_uploads':{
$media_uploads = [];
$serializerType = SerializerRegistry::SerializerType_Public;
$currentUser = $this->resource_server_context->getCurrentUser();
if(!is_null($currentUser) && $currentUser->isAdmin()){
$serializerType = SerializerRegistry::SerializerType_Private;
}
foreach ($presentation->getMediaUploads() as $mediaUpload) {
$media_uploads[] = SerializerRegistry::getInstance()->getSerializer($mediaUpload, $serializerType)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
}
$values['media_uploads'] = $media_uploads;
}
break;
case 'extra_questions':{
$answers = [];
foreach ($presentation->getAnswers() as $answer) {
$answers[]= SerializerRegistry::getInstance()->getSerializer($answer)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
}
$values['extra_questions'] = $answers;
}
break;
} }
} }
} }

View File

@ -112,7 +112,7 @@ class SummitEventSerializer extends SilverStripeSerializer
{ {
$tags = []; $tags = [];
foreach ($event->getTags() as $tag) { foreach ($event->getTags() as $tag) {
$tags[] = SerializerRegistry::getInstance()->getSerializer($tag)->serialize(); $tags[] = $tag->getId();
} }
$values['tags'] = $tags; $values['tags'] = $tags;
} }
@ -199,6 +199,14 @@ class SummitEventSerializer extends SilverStripeSerializer
$values['type'] = SerializerRegistry::getInstance()->getSerializer($event->getType())->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation)); $values['type'] = SerializerRegistry::getInstance()->getSerializer($event->getType())->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
} }
break; break;
case 'tags':{
$tags = [];
foreach ($event->getTags() as $tag) {
$tags[] = SerializerRegistry::getInstance()->getSerializer($tag)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
}
$values['tags'] = $tags;
}
break;
} }
} }
} }