예제 #1
0
파일: Actor.php 프로젝트: cultuurnet/cdb
 /**
  * @see CultureFeed_Cdb_IElement::parseFromCdbXml(SimpleXMLElement
  *     $xmlElement)
  * @throws CultureFeed_Cdb_ParseException
  * @return CultureFeed_Cdb_Item_Actor
  */
 public static function parseFromCdbXml(SimpleXMLElement $xmlElement)
 {
     if (empty($xmlElement->categories)) {
         throw new CultureFeed_Cdb_ParseException('Categories missing for actor element');
     }
     if (empty($xmlElement->actordetails)) {
         throw new CultureFeed_Cdb_ParseException('Actordetails missing for actor element');
     }
     $actor = new self();
     CultureFeed_Cdb_Item_Base::parseCommonAttributes($actor, $xmlElement);
     $actor->setDetails(CultureFeed_Cdb_Data_ActorDetailList::parseFromCdbXml($xmlElement->actordetails));
     // Set categories
     $actor->setCategories(CultureFeed_Cdb_Data_CategoryList::parseFromCdbXml($xmlElement->categories));
     // Set contact information.
     if (!empty($xmlElement->contactinfo)) {
         $actor->setContactInfo(CultureFeed_Cdb_Data_ContactInfo::parseFromCdbXml($xmlElement->contactinfo));
     }
     // Set the keywords.
     self::parseKeywords($xmlElement, $actor);
     // Set the weekscheme.
     if (!empty($xmlElement->weekscheme)) {
         $actor->setWeekScheme(CultureFeed_Cdb_Data_Calendar_Weekscheme::parseFromCdbXml($xmlElement->weekscheme));
     }
     return $actor;
 }
예제 #2
0
파일: Base.php 프로젝트: cultuurnet/cdb
 /**
  * @param CultureFeed_Cdb_Item_Base $item
  * @param SimpleXMLElement $xmlElement
  */
 protected static function parseCommonAttributes(CultureFeed_Cdb_Item_Base $item, SimpleXMLElement $xmlElement)
 {
     $attributes = $xmlElement->attributes();
     if (isset($attributes['cdbid'])) {
         $item->setCdbId((string) $attributes['cdbid']);
     }
     if (isset($attributes['externalid'])) {
         $item->setExternalId((string) $attributes['externalid']);
     }
     if (isset($attributes['availablefrom'])) {
         $item->setAvailableFrom((string) $attributes['availablefrom']);
     }
     if (isset($attributes['availableto'])) {
         $item->setAvailableTo((string) $attributes['availableto']);
     }
     if (isset($attributes['createdby'])) {
         $item->setCreatedBy((string) $attributes['createdby']);
     }
     if (isset($attributes['creationdate'])) {
         $item->setCreationDate((string) $attributes['creationdate']);
     }
     if (isset($attributes['lastupdated'])) {
         $item->setLastUpdated((string) $attributes['lastupdated']);
     }
     if (isset($attributes['lastupdatedby'])) {
         $item->setLastUpdatedBy((string) $attributes['lastupdatedby']);
     }
     if (isset($attributes['owner'])) {
         $item->setOwner((string) $attributes['owner']);
     }
     if (isset($attributes['publisher'])) {
         $item->setPublisher((string) $attributes['publisher']);
     }
     if (isset($attributes['wfstatus'])) {
         $item->setWfStatus((string) $attributes['wfstatus']);
     }
 }
예제 #3
0
파일: Event.php 프로젝트: cultuurnet/cdb
 /**
  * @see CultureFeed_Cdb_IElement::parseFromCdbXml(SimpleXMLElement
  *     $xmlElement)
  * @return CultureFeed_Cdb_Item_Event
  */
 public static function parseFromCdbXml(SimpleXMLElement $xmlElement)
 {
     if (empty($xmlElement->calendar)) {
         throw new CultureFeed_Cdb_ParseException('Calendar missing for event element');
     }
     if (empty($xmlElement->categories)) {
         throw new CultureFeed_Cdb_ParseException('Categories missing for event element');
     }
     if (empty($xmlElement->contactinfo)) {
         throw new CultureFeed_Cdb_ParseException('Contact info missing for event element');
     }
     if (empty($xmlElement->eventdetails)) {
         throw new CultureFeed_Cdb_ParseException('Eventdetails missing for event element');
     }
     if (empty($xmlElement->location)) {
         throw new CultureFeed_Cdb_ParseException('Location missing for event element');
     }
     $event_attributes = $xmlElement->attributes();
     $event = new CultureFeed_Cdb_Item_Event();
     CultureFeed_Cdb_Item_Base::parseCommonAttributes($event, $xmlElement);
     if (isset($event_attributes['private'])) {
         $event->setPrivate(filter_var((string) $event_attributes['private'], FILTER_VALIDATE_BOOLEAN));
     }
     if (isset($event_attributes['isparent'])) {
         $event->setIsParent(filter_var((string) $event_attributes['isparent'], FILTER_VALIDATE_BOOLEAN));
     }
     if (isset($event_attributes['pctcomplete'])) {
         $event->setPctComplete(floatval($event_attributes['pctcomplete']));
     }
     if (isset($event_attributes['published'])) {
         $event->setPublished(filter_var((string) $event_attributes['published'], FILTER_VALIDATE_BOOLEAN));
     }
     if (isset($event_attributes['validator'])) {
         $event->setValidator((string) $event_attributes['validator']);
     }
     if (isset($event_attributes['weight'])) {
         $event->setWeight((int) $event_attributes['weight']);
     }
     if (isset($xmlElement->agefrom)) {
         $event->setAgeFrom((int) $xmlElement->agefrom);
     }
     // Set calendar information.
     $calendar_type = key($xmlElement->calendar);
     if ($calendar_type == 'permanentopeningtimes') {
         $event->setCalendar(CultureFeed_Cdb_Data_Calendar_Permanent::parseFromCdbXml($xmlElement->calendar));
     } elseif ($calendar_type == 'timestamps') {
         $event->setCalendar(CultureFeed_Cdb_Data_Calendar_TimestampList::parseFromCdbXml($xmlElement->calendar->timestamps));
     } elseif ($calendar_type == 'periods') {
         $event->setCalendar(CultureFeed_Cdb_Data_Calendar_PeriodList::parseFromCdbXml($xmlElement->calendar));
     }
     // Set categories
     $event->setCategories(CultureFeed_Cdb_Data_CategoryList::parseFromCdbXml($xmlElement->categories));
     // Set contact information.
     $event->setContactInfo(CultureFeed_Cdb_Data_ContactInfo::parseFromCdbXml($xmlElement->contactinfo));
     // Set event details.
     $event->setDetails(CultureFeed_Cdb_Data_EventDetailList::parseFromCdbXml($xmlElement->eventdetails));
     // Set location.
     $event->setLocation(CultureFeed_Cdb_Data_Location::parseFromCdbXml($xmlElement->location));
     // Set organiser
     if (!empty($xmlElement->organiser)) {
         $event->setOrganiser(CultureFeed_Cdb_Data_Organiser::parseFromCdbXml($xmlElement->organiser));
     }
     // Set max participants.
     if (!empty($xmlElement->maxparticipants)) {
         $event->setMaxParticipants((int) $xmlElement->maxparticipants);
     }
     // Set booking period.
     if (!empty($xmlElement->bookingperiod)) {
         $event->setBookingPeriod(CultureFeed_Cdb_Data_Calendar_BookingPeriod::parseFromCdbXml($xmlElement->bookingperiod));
     }
     // Set relations.
     if (!empty($xmlElement->eventrelations) && !empty($xmlElement->eventrelations->relatedproduction)) {
         foreach ($xmlElement->eventrelations->relatedproduction as $relatedProduction) {
             $attributes = $relatedProduction->attributes();
             $event->addRelation(new CultureFeed_Cdb_Item_Reference((string) $attributes['cdbid'], (string) $relatedProduction, (string) $attributes['externalid']));
         }
     }
     self::parseKeywords($xmlElement, $event);
     if (!empty($xmlElement->languages)) {
         $event->setLanguages(CultureFeed_Cdb_Data_LanguageList::parseFromCdbXml($xmlElement->languages));
     }
     return $event;
 }
예제 #4
0
 /**
  * @param \CultureFeed_Cdb_Item_Base $cdbItem
  */
 private function createLabelAggregatesFromCdbItem(\CultureFeed_Cdb_Item_Base $cdbItem)
 {
     /* @var \CultureFeed_Cdb_Data_Keyword[] $keywords */
     $keywords = $cdbItem->getKeywords(true);
     foreach ($keywords as $keyword) {
         $this->labelService->createLabelAggregateIfNew(new LabelName($keyword->getValue()), $keyword->isVisible());
     }
 }
예제 #5
0
파일: Base.php 프로젝트: RustiSub/Cdb
 /**
  * Parses keywords from cdbxml.
  * @param SimpleXMLElement $xmlElement
  * @param CultureFeed_Cdb_Item_Base $item
  */
 protected static function parseKeywords(SimpleXMLElement $xmlElement, CultureFeed_Cdb_Item_Base $item)
 {
     if (@count($xmlElement->keywords)) {
         $keywordsString = trim($xmlElement->keywords);
         if ($keywordsString === '') {
             /** @var SimpleXMLElement $keywordElement */
             foreach ($xmlElement->keywords->keyword as $keywordElement) {
                 $attributes = $keywordElement->attributes();
                 $visible = !isset($attributes['visible']) || $attributes['visible'] == 'true';
                 $item->addKeyword(new CultureFeed_Cdb_Data_Keyword((string) $keywordElement, $visible));
             }
         } else {
             $keywords = explode(';', $keywordsString);
             foreach ($keywords as $keyword) {
                 $item->addKeyword(trim($keyword));
             }
         }
     }
 }