1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82:
<?php
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace predictionio;
trait Exporter
{
abstract public function export($json);
public function jsonEncode($data)
{
return json_encode($data);
}
/**
* Create and export a json-encoded event.
*
* @see \predictionio\EventClient::CreateEvent()
*
* @param $event
* @param $entityType
* @param $entityId
* @param null $targetEntityType
* @param null $targetEntityId
* @param array $properties
* @param $eventTime
*/
public function createEvent(
$event,
$entityType,
$entityId,
$targetEntityType=null,
$targetEntityId=null,
array $properties=null,
$eventTime=null
) {
if (!isset($eventTime)) {
$eventTime = new \DateTime();
} elseif (!($eventTime instanceof \DateTime)) {
$eventTime = new \DateTime($eventTime);
}
$eventTime = $eventTime->format(\DateTime::ISO8601);
$data = [
'event' => $event,
'entityType' => $entityType,
'entityId' => $entityId,
'eventTime' => $eventTime,
];
if (isset($targetEntityType)) {
$data['targetEntityType'] = $targetEntityType;
}
if (isset($targetEntityId)) {
$data['targetEntityId'] = $targetEntityId;
}
if (isset($properties)) {
$data['properties'] = $properties;
}
$json = $this->jsonEncode($data);
$this->export($json);
}
}