From 7ada6e5ab011f142dfb2bb4312dd3bd1128981da Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Fri, 28 Aug 2020 14:30:33 +0200 Subject: [PATCH] Fix writing BLOBs to postgres with recent contacts interaction Signed-off-by: Christoph Wurst --- apps/contactsinteraction/lib/Db/RecentContact.php | 2 +- lib/public/AppFramework/Db/Entity.php | 7 ++++++- lib/public/AppFramework/Db/QBMapper.php | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/contactsinteraction/lib/Db/RecentContact.php b/apps/contactsinteraction/lib/Db/RecentContact.php index 475de09341..e6c379d0aa 100644 --- a/apps/contactsinteraction/lib/Db/RecentContact.php +++ b/apps/contactsinteraction/lib/Db/RecentContact.php @@ -66,7 +66,7 @@ class RecentContact extends Entity { $this->addType('uid', 'string'); $this->addType('email', 'string'); $this->addType('federatedCloudId', 'string'); - $this->addType('card', 'string'); + $this->addType('card', 'blob'); $this->addType('lastContact', 'int'); } } diff --git a/lib/public/AppFramework/Db/Entity.php b/lib/public/AppFramework/Db/Entity.php index 954b8787c4..34719c82ae 100644 --- a/lib/public/AppFramework/Db/Entity.php +++ b/lib/public/AppFramework/Db/Entity.php @@ -110,7 +110,12 @@ abstract class Entity { // if type definition exists, cast to correct type if ($args[0] !== null && array_key_exists($name, $this->_fieldTypes)) { - settype($args[0], $this->_fieldTypes[$name]); + $type = $this->_fieldTypes[$name]; + if ($type === 'blob') { + // (B)LOB is treated as string when we read from the DB + $type = 'string'; + } + settype($args[0], $type); } $this->$name = $args[0]; } else { diff --git a/lib/public/AppFramework/Db/QBMapper.php b/lib/public/AppFramework/Db/QBMapper.php index 9b39696570..ebbe92e787 100644 --- a/lib/public/AppFramework/Db/QBMapper.php +++ b/lib/public/AppFramework/Db/QBMapper.php @@ -230,6 +230,8 @@ abstract class QBMapper { case 'bool': case 'boolean': return IQueryBuilder::PARAM_BOOL; + case 'blob': + return IQueryBuilder::PARAM_LOB; } return IQueryBuilder::PARAM_STR;