<?php
/*{
"_id" : ObjectId("595baefce2810a6a8a94fe2d"),
"user" : "1234abc",
"type" : "session-started",
"name" : "moja o sesja",
"reference_id" : "hippo-123",
"created_on" : ISODate("2017-01-01T01:01:01.123Z")
}*/
class A {
private static $_id = 0x10a6a8a94fe2d;
private $user;
private $type;
private $reference_id;
private $created_on;
public function __construct($user, $type, $reference_id, $created_on) {
$this->user = $user;
$this->type = $type;
$this->reference_id = $reference_id;
$this->created_on = $created_on;
}
public function __toString()
{
return sprintf('{
"_id": ObjectId("595baefce28%x"),
"user": "%s",
"type": "%s",
"name": "my %s",
"reference_id": "%s%s",
"created_on": ISODate("%s.000Z")
}',
++self::$_id,
$this->user,
$this->type,
$this->type,
$this->user,
$this->reference_id ? 'hippo-' . $this->reference_id : '',
$this->created_on
);
}
}
$history = [
new A('u1', 'onboarded', '', '2017-01-01T01:01:01'),
new A('u1', 'category_activated', 11, '2017-01-01T01:02:01'),
new A('u1', 'category_started', 11, '2017-01-01T01:03:01'),
new A('u1', 'series_started', 21, '2017-01-01T01:04:01'),
new A('u1', 'session_started', 31, '2017-01-01T01:05:01'),
new A('u1', 'session_progress_updated', 31, '2017-01-01T01:06:01'),
new A('u1', 'session_completed', 31, '2017-01-01T01:07:01'),
new A('u1', 'session_started', 32, '2017-01-01T01:08:01'),
new A('u1', 'session_completed', 32, '2017-01-01T01:09:01'), // seesion completed (2/2)
new A('u1', 'session_started', 33, '2017-01-02T01:10:01'),
new A('u1', 'session_completed', 33, '2017-01-02T01:11:01'), // session completed (1/1)
new A('u1', 'session_started', 34, '2017-01-03T01:12:01'), // session started (0/1)
new A('u1', 'session_completed', 34, '2017-01-04T01:13:01'), // session completed (1/1)
new A('u2', 'onboarded', '', '2017-01-01T01:01:01'),
new A('u2', 'category_activated', 11, '2017-01-01T01:02:01'),
new A('u2', 'category_started', 11, '2017-01-01T01:03:01'),
new A('u2', 'series_started', 21, '2017-01-01T01:04:01'),
new A('u2', 'session_started', 31, '2017-01-01T01:05:01'),
new A('u2', 'session_progress_updated', 31, '2017-01-01T01:06:01'),
new A('u2', 'session_completed', 31, '2017-01-01T01:07:01'),
new A('u1', 'session_started', 35, '2017-01-05T01:14:01'),
new A('u1', 'session_progress_updated', 35, '2017-01-05T01:15:01'),
new A('u1', 'session_completed', 35, '2017-01-05T01:16:01'),
new A('u1', 'session_started', 36, '2017-01-05T01:17:01'), // session started (1/2)
new A('u1', 'session_skipped', 36, '2017-01-06T01:18:01'), // session skipped (0/1)
new A('u1', 'session_started', 37, '2017-01-07T01:19:01'),
new A('u1', 'session_completed', 37, '2017-01-07T01:20:01'), // session completed (1/1)
//new A('u1', 'session_started', 34, '2017-01-09T01:21:01'), // day skipped
new A('u1', 'session_started', 38, '2017-01-09T01:21:01'),
new A('u1', 'session_completed', 38, '2017-01-09T01:21:01'),
];
echo implode(',', $history);
preferences:
53.02 ms | 402 KiB | 5 Q