/** * @covers Imbo\Model\Stats::getCustomStats * @covers Imbo\Model\Stats::offsetExists * @covers Imbo\Model\Stats::offsetSet * @covers Imbo\Model\Stats::offsetGet * @covers Imbo\Model\Stats::offsetUnset */ public function testSupportsCustomStats() { $this->assertSame(array(), $this->model->getCustomStats()); $this->model['foo'] = 'bar'; $this->model['bar'] = 'foo'; $this->assertSame(array('foo' => 'bar', 'bar' => 'foo'), $this->model->getCustomStats()); $this->assertTrue(isset($this->model['bar'])); $this->assertSame('foo', $this->model['bar']); unset($this->model['bar']); $this->assertFalse(isset($this->model['bar'])); $this->assertSame(array('foo' => 'bar'), $this->model->getCustomStats()); }
/** * Load stats * * @param EventInterface $event An event instance */ public function loadStats(EventInterface $event) { $response = $event->getResponse(); $database = $event->getDatabase(); $userLookup = $event->getUserLookup(); $publicKeys = $userLookup->getPublicKeys(); $users = array(); foreach ($publicKeys as $key) { $users[$key] = array('numImages' => $database->getNumImages($key), 'numBytes' => $database->getNumBytes($key)); } $statsModel = new Model\Stats(); $statsModel->setUsers($users); $response->setModel($statsModel); }
/** * {@inheritdoc} */ public function formatStats(Model\Stats $model) { $users = ''; $numUsers = 0; foreach ($model->getUsers() as $user => $stats) { $users .= '<user publicKey="' . $user . '">' . $this->formatArray($stats) . '</user>'; $numUsers++; } $total = $this->formatArray(array('numImages' => $model->getNumImages(), 'numBytes' => $model->getNumBytes(), 'numUsers' => $numUsers)); $custom = $this->formatArray($model->getCustomStats() ?: array()); return <<<STATUS <?xml version="1.0" encoding="UTF-8"?> <imbo> <stats> <users>{$users}</users> <total>{$total}</total> <custom>{$custom}</custom> </stats> </imbo> STATUS; }
/** * @covers Imbo\Model\Stats::getData */ public function testGetData() { $this->model->setNumUsers(100)->setNumBytes(1000)->setNumImages(10000); $this->model['some'] = 'value'; $this->assertSame(['numUsers' => 100, 'numBytes' => 1000, 'numImages' => 10000, 'customStats' => ['some' => 'value']], $this->model->getData()); }
/** * {@inheritdoc} */ public function formatStats(Model\Stats $model) { $total = $this->formatArray(['numImages' => $model->getNumImages(), 'numUsers' => $model->getNumUsers(), 'numBytes' => $model->getNumBytes()]); $custom = $this->formatArray($model->getCustomStats() ?: []); return <<<STATS <?xml version="1.0" encoding="UTF-8"?> <imbo> <stats> {$total} <custom>{$custom}</custom> </stats> </imbo> STATS; }
/** * Load stats * * @param EventInterface $event An event instance */ public function loadStats(EventInterface $event) { $response = $event->getResponse(); $database = $event->getDatabase(); $statsModel = new Model\Stats(); $statsModel->setNumUsers($database->getNumUsers()); $statsModel->setNumBytes($database->getNumBytes()); $statsModel->setNumImages($database->getNumImages()); $response->setModel($statsModel); }
/** * {@inheritdoc} */ public function formatStats(Model\Stats $model) { $data = array('users' => $model->getUsers(), 'total' => array('numImages' => $model->getNumImages(), 'numUsers' => $model->getNumUsers(), 'numBytes' => $model->getNumBytes()), 'custom' => $model->getCustomStats() ?: new stdClass()); return $this->encode($data); }