Fix mysql datetime format

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2017-10-08 14:26:37 +02:00
parent 3bd32e6c0d
commit a5b566edd0
4 changed files with 32 additions and 4 deletions

View File

@@ -53,6 +53,10 @@ class Application extends App {
});
$container->registerMiddleware('SharingMiddleware');
$container->registerService('databaseType', function($container) {
return $container->getServer()->getConfig()->getSystemValue('dbtype', 'sqlite');
});
// Delete user/group acl entries when they get deleted
/** @var IUserManager $userManager */
$userManager = $server->getUserManager();

View File

@@ -42,6 +42,8 @@ class Card extends RelationalEntity implements JsonSerializable {
protected $archived = false;
protected $duedate = null;
private $databaseType = 'sqlite';
const DUEDATE_FUTURE = 0;
const DUEDATE_NEXT = 1;
const DUEDATE_NOW = 2;
@@ -58,10 +60,17 @@ class Card extends RelationalEntity implements JsonSerializable {
$this->addResolvable('owner');
}
public function getDuedate() {
public function setDatabaseType($type) {
$this->databaseType = $type;
}
public function getDuedate($isoFormat = false) {
if($this->duedate === null)
return null;
$dt = new DateTime($this->duedate);
if (!$isoFormat && $this->databaseType === 'mysql') {
return $dt->format('Y-m-d H:i:s');
}
return $dt->format('c');
}
@@ -91,7 +100,7 @@ class Card extends RelationalEntity implements JsonSerializable {
$json['overdue'] = self::DUEDATE_OVERDUE;
}
}
$json['duedate'] = $this->getDuedate();
$json['duedate'] = $this->getDuedate(true);
return $json;
}

View File

@@ -32,14 +32,22 @@ class CardMapper extends DeckMapper implements IPermissionMapper {
private $labelMapper;
private $userManager;
private $databaseType;
public function __construct(IDBConnection $db, LabelMapper $labelMapper, IUserManager $userManager) {
public function __construct(
IDBConnection $db,
LabelMapper $labelMapper,
IUserManager $userManager,
$databaseType
) {
parent::__construct($db, 'deck_cards', '\OCA\Deck\Db\Card');
$this->labelMapper = $labelMapper;
$this->userManager = $userManager;
$this->databaseType = $databaseType;
}
public function insert(Entity $entity) {
$entity->setDatabaseType($this->databaseType);
$entity->setCreatedAt(time());
$entity->setLastModified(time());
return parent::insert($entity);

View File

@@ -99,4 +99,11 @@ class CardTest extends \PHPUnit_Framework_TestCase {
], $card->jsonSerialize());
}
public function testMysqlDateFallback() {
$date = new DateTime();
$card = new Card();
$card->setDuedate($date->format('c'));
$card->setDatabaseType('mysql');
$this->assertEquals($date->format('Y-m-d H:i:s'), $card->getDuedate(false));
}
}