Example #1
0
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;
}
Example #2
0
<?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);
}