diff --git a/app/ModelSerializers/SerializerRegistry.php b/app/ModelSerializers/SerializerRegistry.php index 1efb993d..811fd1c7 100644 --- a/app/ModelSerializers/SerializerRegistry.php +++ b/app/ModelSerializers/SerializerRegistry.php @@ -76,6 +76,7 @@ final class SerializerRegistry $this->registry['SummitAttendee'] = SummitAttendeeSerializer::class; $this->registry['SummitAttendeeSchedule'] = SummitAttendeeScheduleSerializer::class; $this->registry['SummitEntityEvent'] = SummitEntityEventSerializer::class; + $this->registry['SummitEventWithFile'] = SummitEventWithFileSerializer::class; // locations $this->registry['SummitVenue'] = SummitVenueSerializer::class; diff --git a/app/ModelSerializers/SummitEventWithFileSerializer.php b/app/ModelSerializers/SummitEventWithFileSerializer.php new file mode 100644 index 00000000..e222dbc9 --- /dev/null +++ b/app/ModelSerializers/SummitEventWithFileSerializer.php @@ -0,0 +1,38 @@ +object; + + if (!$event instanceof SummitEventWithFile) return []; + + $values = parent::serialize($expand, $fields, $relations, $params); + + $values['attachment'] = $event->hasAttachment()? Config::get("server.assets_base_url", 'https://www.openstack.org/') . $event->getAttachment()->getFilename() : null; + + return $values; + } +} \ No newline at end of file diff --git a/app/Models/Foundation/Summit/EntityEvents/Types/EntityEventTypeFactory.php b/app/Models/Foundation/Summit/EntityEvents/Types/EntityEventTypeFactory.php index 4077f8f0..02b06e08 100644 --- a/app/Models/Foundation/Summit/EntityEvents/Types/EntityEventTypeFactory.php +++ b/app/Models/Foundation/Summit/EntityEvents/Types/EntityEventTypeFactory.php @@ -52,6 +52,7 @@ final class EntityEventTypeFactory { case 'Presentation': case 'SummitEvent': + case 'SummitEventWithFile': { if ($e->getType() === 'UPDATE' || $e->getType() === "INSERT") return new SummitEventEntityEventInsertOrUpdateType($e, $ctx); diff --git a/app/Models/Foundation/Summit/Events/SummitEvent.php b/app/Models/Foundation/Summit/Events/SummitEvent.php index bbbee061..b614f61f 100644 --- a/app/Models/Foundation/Summit/Events/SummitEvent.php +++ b/app/Models/Foundation/Summit/Events/SummitEvent.php @@ -34,7 +34,7 @@ use Cocur\Slugify\Slugify; * @ORM\Table(name="SummitEvent") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="ClassName", type="string") - * @ORM\DiscriminatorMap({"SummitEvent" = "SummitEvent", "Presentation" = "Presentation", "SummitGroupEvent" = "SummitGroupEvent"}) + * @ORM\DiscriminatorMap({"SummitEvent" = "SummitEvent", "Presentation" = "Presentation", "SummitGroupEvent" = "SummitGroupEvent", "SummitEventWithFile" = "SummitEventWithFile"}) * @ORM\Entity(repositoryClass="repositories\summit\DoctrineSummitEventRepository") * @ORM\HasLifecycleCallbacks * Class SummitEvent diff --git a/app/Models/Foundation/Summit/Events/SummitEventWithFile.php b/app/Models/Foundation/Summit/Events/SummitEventWithFile.php new file mode 100644 index 00000000..cbae3911 --- /dev/null +++ b/app/Models/Foundation/Summit/Events/SummitEventWithFile.php @@ -0,0 +1,68 @@ +attachment; + } + + /** + * @param File $attachment + */ + public function setAttachment($attachment) + { + $this->attachment = $attachment; + } + + /** + * @return bool + */ + public function hasAttachment(){ + return $this->getAttachmentId() > 0; + } + + /** + * @return int + */ + public function getAttachmentId(){ + try{ + return !is_null($this->attachment)?$this->attachment->getId():0; + } + catch(\Exception $ex){ + return 0; + } + } +} \ No newline at end of file