szurubooru/src/Dao/SnapshotDao.php

55 lines
1.2 KiB
PHP
Raw Normal View History

2014-09-26 20:41:28 +02:00
<?php
namespace Szurubooru\Dao;
use Szurubooru\Dao\EntityConverters\SnapshotEntityConverter;
use Szurubooru\Dao\UserDao;
use Szurubooru\DatabaseConnection;
use Szurubooru\Entities\Entity;
use Szurubooru\Entities\Snapshot;
2014-09-26 20:41:28 +02:00
class SnapshotDao extends AbstractDao
{
private $userDao;
public function __construct(
DatabaseConnection $databaseConnection,
UserDao $userDao)
2014-09-26 20:41:28 +02:00
{
parent::__construct(
$databaseConnection,
'snapshots',
new SnapshotEntityConverter());
2014-09-26 20:41:28 +02:00
$this->userDao = $userDao;
}
2014-11-18 21:22:46 +01:00
public function findEarlierSnapshots(Snapshot $snapshot)
2014-09-26 20:41:28 +02:00
{
$query = $this->pdo
2014-09-26 20:41:28 +02:00
->from($this->tableName)
2014-11-18 21:22:46 +01:00
->where('type', $snapshot->getType())
->where('primaryKey', $snapshot->getPrimaryKey())
2014-09-26 20:41:28 +02:00
->orderBy('time DESC');
2014-11-18 21:22:46 +01:00
if ($snapshot->getId())
$query->where('id < ?', $snapshot->getId());
2014-09-26 20:41:28 +02:00
return $this->arrayToEntities(iterator_to_array($query));
}
public function afterLoad(Entity $snapshot)
2014-09-26 20:41:28 +02:00
{
$snapshot->setLazyLoader(
Snapshot::LAZY_LOADER_USER,
function (Snapshot $snapshot)
2014-09-26 20:41:28 +02:00
{
return $this->getUser($snapshot);
});
}
private function getUser(Snapshot $snapshot)
2014-09-26 20:41:28 +02:00
{
$userId = $snapshot->getUserId();
return $this->userDao->findById($userId);
}
}