Author: Christer Edvartsen (cogo@starzinger.net)
Inheritance: implements Imbo\Model\ModelInterface, implements ArrayAcces\ArrayAccess
Example #1
0
 /**
  * @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());
 }
Example #2
0
 /**
  * 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);
 }
Example #3
0
File: XML.php Project: ASP96/imbo
    /**
     * {@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;
    }
Example #4
0
 /**
  * @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());
 }
Example #5
0
File: XML.php Project: imbo/imbo
    /**
     * {@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;
    }
Example #6
0
 /**
  * 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);
 }
Example #7
0
File: JSON.php Project: ASP96/imbo
 /**
  * {@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);
 }