function array_flatten_with_type($array, $parent = "") { $return = array(); foreach ($array as $key => $value) { if ($parent == "") { $new_key = $key; } else { $new_key = $parent . "@" . $key; } if (is_object($value)) { $value = (array) $value; } if (is_array($value)) { $return = array_merge($return, array_flatten_with_type($value, $new_key)); } if (!is_numeric($key) && $key != 'id') { $pretty_name = explode("@", $new_key); $pretty_name = array_map(function ($word) { return ucfirst($word); }, $pretty_name); $type = 'string'; if (strpos($key, 'At') !== false) { $type = 'date'; } if (substr($key, 0, 2) == 'is') { $type = 'boolean'; } $return[$new_key] = array("name" => implode(" ", $pretty_name), "type" => $type); } } return $return; }
<?php require_once "require.php"; $event = $data; if (property_exists($event, "person") && property_exists($event->person, "id") && property_exists($event, "story")) { $person_id = preg_replace("/[^A-Za-z0-9 :]/", '', $event->person->id); $person = $event->person; if (!property_exists($event, "createdAt")) { $event->createdAt = date('Y-m-d\\TH:i:s.000\\Z', time()); } $createdAt = $event->createdAt; unset($event->createdAt); $story = $event->story; unset($event->story); if (!property_exists($event, "page") && isset($_SERVER["HTTP_REFERER"])) { $url = urldecode(urlencode($_SERVER["HTTP_REFERER"])); $event->page = (object) array("url" => $url); } if (property_exists($event, "page")) { $person->lastPage = (object) array("url" => $event->page->url); if (property_exists($event->page, "title")) { $person->lastPage->title = $event->page->title; } } $event = (object) array("createdAt" => $createdAt, "person" => $person_id, "story" => $story, "info" => $event); $new_event = $firebase->push("{$api_key}/events", $event); $firebase->update("{$api_key}/people/{$person_id}/info", $person); $firebase->set("{$api_key}/people/{$person_id}/lastSeenAt", $event->createdAt); $firebase->update("{$api_key}/settings/peopleInfo", array_flatten_with_type($person)); $firebase->push("{$api_key}/people/{$person_id}/events/" . json_decode($new_event, true)["name"], true); }