Example #1
0
 public function testAddGroupsToTheMix()
 {
     $form = new Event();
     $form->setData(['subject' => 'subject1', 'event_date' => '2014-01-01', 'event_time' => '13:00', 'event_end' => '13:01']);
     $form->bind(new \ArrayObject(['groups' => [(object) ['id' => 1, 'name_short' => '01']]]));
     $this->assertTrue($form->isValid(), print_r($form->getMessages(), true));
 }
 /**
  * @return bool
  */
 public function isValid()
 {
     return parent::isValid() && $this->hasMetaData('uid');
 }
 public static function create(Inputter $inputter, JSONOutputter $outputter)
 {
     //	Create
     //
     //	1) Test all data is available and valid
     //
     //		Availability
     //
     $required_keys = array(EVENT_KEY_DRESS_CODE => array(), EVENT_KEY_PRIVACY => '', 'creating_user_identification' => '', EVENT_RELATIONSHIP_NAME_OCCURRENCE => array(array(SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION => array(LOCATION_KEY_COORDINATE_LATITUDE => '', LOCATION_KEY_COORDINATE_LONGITUDE => ''), SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE => array(CONFINED_DATE_START => '', CONFINED_DATE_END => ''))), EVENT_RELATIONSHIP_NAME_TYPE => array(EVENT_TYPE_FACTORY_KEY_EVENT_TYPE_NAME => ''));
     //          Optional
     //
     $optional_dictionary = array(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION => uniqid(), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED => date('c'), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED => date('c'), EVENT_RELATIONSHIP_NAME_OCCURRENCE => array(), EVENT_RELATIONSHIP_NAME_TYPE => array(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION => uniqid(), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED => date('c'), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED => date('c')));
     //              Add to optional
     //
     $total_occurrences = 1 + (isset($inputter->variables_array[EVENT_RELATIONSHIP_NAME_OCCURRENCE]) && is_array($inputter->variables_array[EVENT_RELATIONSHIP_NAME_OCCURRENCE])) ? count($inputter->variables_array[EVENT_RELATIONSHIP_NAME_OCCURRENCE]) : 0;
     for ($i = 0; $i < $total_occurrences; $i++) {
         $optional_dictionary[EVENT_RELATIONSHIP_NAME_OCCURRENCE][$i] = array(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION => uniqid(), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED => date('c'), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED => date('c'), SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION => array(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION => uniqid(), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED => date('c'), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED => date('c')), SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE => array(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION => uniqid(), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED => date('c'), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED => date('c')), EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_RANGE => array(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION => uniqid(), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED => date('c'), UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED => date('c'), RANGE_POSITION => 0, RANGE_LENGTH => 0));
     }
     //			Validate input
     //
     $inputter->validate_input($required_keys, $optional_dictionary);
     //		Valid
     //
     $create_event_error = null;
     //			Identifiers
     //
     UniversallyUniqueIdentifier::propertyIsValid('rawIdentifier', $inputter->variables_array['creating_user_identification'], $create_event_error);
     //			Event
     //
     Event::isValid($inputter->variables_array, false, $create_event_error);
     //			Occurrence(s)
     //
     foreach ($inputter->variables_array[EVENT_RELATIONSHIP_NAME_OCCURRENCE] as &$occurrence_dictionary) {
         EventSpaceTimeOccurrence::isValid($occurrence_dictionary, false, $create_event_error);
     }
     //			Event type
     //
     EventTypeFactory::isValid($inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE], false, $create_event_error);
     //		Print error
     //
     if (isset($create_event_error)) {
         $outputter->print_error($create_event_error);
         return;
     }
     //	2) Check request we want to process CAN go ahead
     //
     //		IDs are all different
     //
     $identifications_array = array($inputter->variables_array[UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION], $inputter->variables_array['creating_user_identification'], $inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
     foreach ($inputter->variables_array[EVENT_RELATIONSHIP_NAME_OCCURRENCE] as $occurrence) {
         array_push($identifications_array, $occurrence[UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
         array_push($identifications_array, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
     }
     if (count(array_unique($identifications_array)) !== count($identifications_array)) {
         $identification_exists = Error::withDomain(PRIVATE_EVENTS_REST_CONTROLLER_ERROR_DOMAIN, PRIVATE_EVENTS_REST_CONTROLLER_ERROR_CODE_INPUT_NOT_UNIQUE, 'identifications provided are not unique.');
         $outputter->print_error($identification_exists);
     }
     //		Event identification might exist
     //
     $client = new Everyman\Neo4j\Client('events.sb04.stations.graphenedb.com', 24789);
     $client->getTransport()->setAuth('Events', '3TP9LHROhv8LIcGmbYzq');
     $query_string_check_event = "MATCH (uniqueObject:UniversallyUniqueObject) " . "WHERE uniqueObject." . UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION . " = '" . $inputter->variables_array[UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION] . "' " . "RETURN uniqueObject";
     $query_check_event = new Everyman\Neo4j\Cypher\Query($client, $query_string_check_event);
     $result_check_event = $query_check_event->getResultSet();
     if ($result_check_event->count() > 0) {
         $identification_exists = Error::withDomain(PRIVATE_EVENTS_REST_CONTROLLER_ERROR_DOMAIN, PRIVATE_EVENTS_REST_CONTROLLER_ERROR_CODE_ENTITY_DOES_NOT_EXIST, 'Identifier is not unique.');
         $outputter->print_error($identification_exists);
     }
     //		Creating user must exist
     //
     $query_string_check_creator = "MATCH (creator:CreatingUser) " . "WHERE creator." . UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION . " = '" . $inputter->variables_array['creating_user_identification'] . "' " . "RETURN creator";
     $query_check_creator = new Everyman\Neo4j\Cypher\Query($client, $query_string_check_creator);
     $result_check_creator = $query_check_creator->getResultSet();
     if ($result_check_creator->count() < 1) {
         //	No creating user exists
         //
         $error = Error::withDomain(PRIVATE_EVENTS_REST_CONTROLLER_ERROR_DOMAIN, PRIVATE_EVENTS_REST_CONTROLLER_ERROR_CODE_ENTITY_DOES_NOT_EXIST, 'creating_user_identification should be of a valid user.');
         $outputter->print_error($error);
     }
     //		Event type must not exist
     //
     $query_string_check_event_type = "MATCH (uniqueObject:UniversallyUniqueObject) " . "WHERE uniqueObject." . UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION . " = '" . $inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION] . "' " . "RETURN uniqueObject";
     $query_check_event_type = new Everyman\Neo4j\Cypher\Query($client, $query_string_check_event_type);
     $result_check_event_type = $query_check_event_type->getResultSet();
     if ($result_check_event_type->count() > 0) {
         //	Event type identification exists
         //
         $identification_exists = Error::withDomain(PRIVATE_EVENTS_REST_CONTROLLER_ERROR_DOMAIN, PRIVATE_EVENTS_REST_CONTROLLER_ERROR_CODE_ENTITY_EXISTS, 'Identifier is not unique.');
         $outputter->print_error($identification_exists);
     }
     //		Event occurrences
     //
     foreach ($inputter->variables_array[EVENT_RELATIONSHIP_NAME_OCCURRENCE] as $occurrence) {
         //	Occurrence
         //
         $query_string_check_occurrence = "MATCH (uniqueObject:UniversallyUniqueObject) " . "WHERE uniqueObject." . UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION . " = '" . $occurrence[UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION] . "' " . "RETURN uniqueObject";
         $query_check_occurrence = new Everyman\Neo4j\Cypher\Query($client, $query_string_check_occurrence);
         $result_check_occurrence = $query_check_occurrence->getResultSet();
         if ($result_check_occurrence->count() > 0) {
             $identification_exists = Error::withDomain(PRIVATE_EVENTS_REST_CONTROLLER_ERROR_DOMAIN, PRIVATE_EVENTS_REST_CONTROLLER_ERROR_CODE_ENTITY_EXISTS, 'Identifier is not unique.');
             $outputter->print_error($identification_exists);
         }
         //	Location identification must not exist
         //
         $query_string_check_location = "MATCH (uniqueObject:UniversallyUniqueObject) " . "WHERE uniqueObject." . UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION . " = '" . $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION] . "' " . "RETURN uniqueObject";
         $query_check_location = new Everyman\Neo4j\Cypher\Query($client, $query_string_check_location);
         $result_check_location = $query_check_location->getResultSet();
         if ($result_check_location->count() > 0) {
             //	Location identification exists
             //
             $identification_exists = Error::withDomain(PRIVATE_EVENTS_REST_CONTROLLER_ERROR_DOMAIN, PRIVATE_EVENTS_REST_CONTROLLER_ERROR_CODE_ENTITY_EXISTS, 'Identifier is not unique.');
             $outputter->print_error($identification_exists);
         }
     }
     //	3) We've got the go ahead to process the request as it's intended - create a new user in the data store
     //
     //		Event
     //
     $event_to_create = $client->makeNode();
     $event_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION, $inputter->variables_array[UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
     $event_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED, $inputter->variables_array[UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED]);
     $event_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED, $inputter->variables_array[UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED]);
     $event_to_create->setProperty(EVENT_KEY_DRESS_CODE, $inputter->variables_array[EVENT_KEY_DRESS_CODE]);
     $event_to_create->setProperty(EVENT_KEY_PRIVACY, $inputter->variables_array[EVENT_KEY_PRIVACY]);
     $event_to_create->save();
     //			Relationship
     //
     $creator = $result_check_creator[0]['creator'];
     if (isset($creator)) {
         $event_to_create->relateTo($creator, EVENT_RELATIONSHIP_NAME_CREATOR)->save();
         $creator->relateTo($event_to_create, CREATINGUSER_RELATIONSHIP_NAME_EVENT)->save();
     } else {
         $identification_exists = Error::withDomain(PRIVATE_EVENTS_REST_CONTROLLER_ERROR_DOMAIN, PRIVATE_EVENTS_REST_CONTROLLER_ERROR_CODE_ENTITY_DOES_NOT_EXIST, 'An event creator is required.');
         $outputter->print_error($identification_exists);
     }
     //			Add labels
     //
     $event_label_objects = array();
     foreach (Event::labels() as $name) {
         array_push($event_label_objects, new Everyman\Neo4j\Label($client, $name));
     }
     if (count($event_label_objects) > 0) {
         $event_to_create->addLabels($event_label_objects);
     }
     //		Event type
     //
     $event_type_to_create = $client->makeNode();
     $event_type_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION, $inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
     $event_type_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED, $inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED]);
     $event_type_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED, $inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED]);
     $event_type_label_names = EventTypeFactory::labels($inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][EVENT_TYPE_FACTORY_KEY_EVENT_TYPE_NAME]);
     if ($inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][EVENT_TYPE_FACTORY_KEY_EVENT_TYPE_NAME] === 'EventTypeAnniversary') {
         $event_type_to_create->setProperty(EVENT_TYPE_ANNIVERSARY_KEY_YEAR, $inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][EVENT_TYPE_ANNIVERSARY_KEY_YEAR]);
     } else {
         if ($inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][EVENT_TYPE_FACTORY_KEY_EVENT_TYPE_NAME] === 'EventTypeBirthday') {
             $event_type_to_create->setProperty(EVENT_TYPE_BIRTHDAY_KEY_DATE_OF_BIRTH, $inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][EVENT_TYPE_BIRTHDAY_KEY_DATE_OF_BIRTH]);
         } else {
             if ($inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][EVENT_TYPE_FACTORY_KEY_EVENT_TYPE_NAME] === 'EventTypePartyLaunch') {
                 $event_type_to_create->setProperty(EVENT_TYPE_PARTY_LAUNCH_KEY_LAUNCH_ITEM_TITLE, $inputter->variables_array[EVENT_RELATIONSHIP_NAME_TYPE][EVENT_TYPE_PARTY_LAUNCH_KEY_LAUNCH_ITEM_TITLE]);
             }
         }
     }
     $event_type_to_create->save();
     //			Relationship
     //
     $event_type_to_create->relateTo($event_to_create, EVENT_TYPE_RELATIONSHIP_NAME_EVENT)->save();
     $event_to_create->relateTo($event_type_to_create, EVENT_RELATIONSHIP_NAME_TYPE)->save();
     //			Add labels
     //
     $event_type_label_objects = array();
     foreach ($event_type_label_names as $name) {
         array_push($event_type_label_objects, new Everyman\Neo4j\Label($client, $name));
     }
     if (count($event_type_label_objects) > 0) {
         $event_type_to_create->addLabels($event_type_label_objects);
     }
     //		Occurrences
     //
     $occurrences_to_create = array();
     $locations_to_create = array();
     $ranges_to_create = array();
     $confined_dates_to_create = array();
     //			Create
     //
     foreach ($inputter->variables_array[EVENT_RELATIONSHIP_NAME_OCCURRENCE] as $occurrence) {
         //	Occurrence
         //
         $occurrence_to_create = $client->makeNode();
         $occurrence_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION, $occurrence[UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
         $occurrence_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED, $occurrence[UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED]);
         $occurrence_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED, $occurrence[UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED]);
         $occurrence_to_create->save();
         //		Relationship
         //
         $occurrence_to_create->relateTo($event_to_create, EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_EVENT)->save();
         $event_to_create->relateTo($occurrence_to_create, EVENT_RELATIONSHIP_NAME_OCCURRENCE)->save();
         //		Add labels
         //
         $occurrence_label_objects = array();
         foreach (EventSpaceTimeOccurrence::labels() as $name) {
             array_push($occurrence_label_objects, new Everyman\Neo4j\Label($client, $name));
         }
         if (count($occurrence_label_objects) > 0) {
             $occurrence_to_create->addLabels($occurrence_label_objects);
         }
         //	Location
         //
         $location_to_create = $client->makeNode();
         $location_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
         $location_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED]);
         $location_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED]);
         $location_to_create->setProperty(LOCATION_KEY_COORDINATE_LATITUDE, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][LOCATION_KEY_COORDINATE_LATITUDE]);
         $location_to_create->setProperty(LOCATION_KEY_COORDINATE_LONGITUDE, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][LOCATION_KEY_COORDINATE_LONGITUDE]);
         if (isset($occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][LOCATION_KEY_NAME])) {
             $location_to_create->setProperty(LOCATION_KEY_NAME, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION][LOCATION_KEY_NAME]);
         }
         $location_to_create->save();
         //		Relationship
         //
         $location_to_create->relateTo($occurrence_to_create, LOCATION_RELATIONSHIP_NAME_EVENT_OCCURRENCE)->save();
         $occurrence_to_create->relateTo($location_to_create, SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION)->save();
         //		Add labels
         //
         $location_label_objects = array();
         foreach (Location::labels() as $name) {
             array_push($location_label_objects, new Everyman\Neo4j\Label($client, $name));
         }
         if (count($location_label_objects) > 0) {
             $location_to_create->addLabels($location_label_objects);
         }
         //	Range
         //
         $range_to_create = $client->makeNode();
         $range_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION, $occurrence[EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_RANGE][UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
         $range_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED, $occurrence[EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_RANGE][UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED]);
         $range_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED, $occurrence[EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_RANGE][UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED]);
         $range_to_create->setProperty(RANGE_POSITION, $occurrence[EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_RANGE][RANGE_POSITION]);
         $range_to_create->setProperty(RANGE_LENGTH, $occurrence[EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_RANGE][RANGE_LENGTH]);
         $range_to_create->save();
         //		Relationship
         //
         $occurrence_to_create->relateTo($range_to_create, EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_RANGE)->save();
         //		Add labels
         //
         $range_label_objects = array();
         foreach (Range::labels() as $name) {
             array_push($range_label_objects, new Everyman\Neo4j\Label($client, $name));
         }
         if (count($range_label_objects) > 0) {
             $range_to_create->addLabels($range_label_objects);
         }
         //	Confined date
         //
         $confined_date_to_create = $client->makeNode();
         $confined_date_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE][UNIVERSALLY_UNIQUE_OBJECT_KEY_IDENTIFICATION]);
         $confined_date_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE][UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED]);
         $confined_date_to_create->setProperty(UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE][UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_UPDATED]);
         $confined_date_to_create->setProperty(CONFINED_DATE_START, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE][CONFINED_DATE_START]);
         $confined_date_to_create->setProperty(CONFINED_DATE_END, $occurrence[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE][CONFINED_DATE_END]);
         $confined_date_to_create->save();
         //		Relationship
         //
         $occurrence_to_create->relateTo($confined_date_to_create, SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE)->save();
         //		Add labels
         //
         $confined_date_label_objects = array();
         foreach (ConfinedDate::labels() as $name) {
             array_push($confined_date_label_objects, new Everyman\Neo4j\Label($client, $name));
         }
         if (count($confined_date_label_objects) > 0) {
             $confined_date_to_create->addLabels($confined_date_label_objects);
         }
         //	Add occurrence
         //
         array_push($occurrences_to_create, $occurrence_to_create);
         array_push($locations_to_create, $location_to_create);
         array_push($ranges_to_create, $range_to_create);
         array_push($confined_dates_to_create, $confined_date_to_create);
     }
     //	4) Output results
     //
     $output = Event::printer_dictionary($event_to_create);
     $output[EVENT_RELATIONSHIP_NAME_CREATOR] = CreatingUser::printer_dictionary($creator);
     $output[EVENT_RELATIONSHIP_NAME_TYPE] = EventType::printer_dictionary($event_type_to_create);
     $output[EVENT_RELATIONSHIP_NAME_OCCURRENCE] = array();
     for ($i = 0; $i < count($occurrences_to_create); $i++) {
         $occurrence_output = EventSpaceTimeOccurrence::printer_dictionary($occurrences_to_create[$i]);
         $occurrence_output[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_LOCATION] = Location::printer_dictionary($locations_to_create[$i]);
         $occurrence_output[EVENT_SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_RANGE] = EventSpaceTimeOccurrence::printer_dictionary($ranges_to_create[$i]);
         $occurrence_output[SPACE_TIME_OCCURRENCE_RELATIONSHIP_NAME_CONFINED_DATE] = ConfinedDate::printer_dictionary($confined_dates_to_create[$i]);
         array_push($output[EVENT_RELATIONSHIP_NAME_OCCURRENCE], $occurrence_output);
     }
     $outputter->print_data(array($output));
 }