setTitle(trim($data['title'])); if(isset($data['content'])) $banner->setContent(trim($data['content'])); if(isset($data['type'])) $banner->setType(trim($data['type'])); if(isset($data['enabled'])) $banner->setEnabled(boolval($data['enabled'])); $banner->setLocation($location); return $banner; } /** * @param Summit $summit * @param SummitAbstractLocation $location * @param ScheduledSummitLocationBanner $banner * @param array $data * @return ScheduledSummitLocationBanner * @throws ValidationException */ private static function populateScheduledSummitLocationBanner(Summit $summit, SummitAbstractLocation $location, ScheduledSummitLocationBanner $banner, array $data){ self::populateSummitLocationBanner($summit, $location, $banner, $data); if (isset($data['start_date']) && isset($data['end_date'])) { $start_datetime = intval($data['start_date']); $start_datetime = new \DateTime("@$start_datetime"); $start_datetime->setTimezone($summit->getTimeZone()); $end_datetime = intval($data['end_date']); $end_datetime = new \DateTime("@$end_datetime"); $end_datetime->setTimezone($summit->getTimeZone()); $interval_seconds = $end_datetime->getTimestamp() - $start_datetime->getTimestamp(); $minutes = $interval_seconds / 60; if ($minutes < self::MinBannerDisplayMinutes) throw new ValidationException ( sprintf ( "schedule banner should last at least %s minutes - current duration %s", self::MinBannerDisplayMinutes, $minutes ) ); // set local time from UTC $banner->setStartDate($start_datetime); $banner->setEndDate($end_datetime); if(!$summit->isTimeFrameInsideSummitDuration($banner->getLocalStartDate(), $banner->getLocalEndDate())){ throw new ValidationException ( sprintf ( 'start/end datetime must be between summit start/end datetime! (%s - %s)', $summit->getLocalBeginDate()->format('Y-m-d H:i:s'), $summit->getLocalEndDate()->format('Y-m-d H:i:s') ) ); } } return $banner; } /** * @param Summit $summit * @param SummitAbstractLocation $location * @param SummitLocationBanner $banner * @param array $data * @return ScheduledSummitLocationBanner|SummitLocationBanner */ public static function populate ( Summit $summit, SummitAbstractLocation $location, SummitLocationBanner $banner, array $data ) { if($banner instanceof ScheduledSummitLocationBanner){ return self::populateScheduledSummitLocationBanner($summit, $location, $banner, $data); } else if($banner instanceof SummitLocationBanner){ return self::populateSummitLocationBanner($summit, $location, $banner, $data); } return $banner; } }