diff options
author | Georg Ehrke <developer@georgehrke.com> | 2020-04-15 16:47:27 +0300 |
---|---|---|
committer | Georg Ehrke <developer@georgehrke.com> | 2020-04-15 16:49:49 +0300 |
commit | fe4527a8e2275de51ea86715931e4df254b4fe23 (patch) | |
tree | 471fe85e837547e2365024182d833add7db782fc /apps | |
parent | 648c8df51645147f99fd687511003062ae01978c (diff) |
Update Contact Size after removing photo
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/CardDAV/CardDavBackend.php | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index bfdf7e53f40..f4de1b717fb 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -501,7 +501,13 @@ class CardDavBackend implements BackendInterface, SyncSupport { $result = $query->execute(); while ($row = $result->fetch()) { $row['etag'] = '"' . $row['etag'] . '"'; - $row['carddata'] = $this->readBlob($row['carddata']); + + $modified = false; + $row['carddata'] = $this->readBlob($row['carddata'], $modified); + if ($modified) { + $row['size'] = strlen($row['carddata']); + } + $cards[] = $row; } $result->closeCursor(); @@ -535,7 +541,12 @@ class CardDavBackend implements BackendInterface, SyncSupport { return false; } $row['etag'] = '"' . $row['etag'] . '"'; - $row['carddata'] = $this->readBlob($row['carddata']); + + $modified = false; + $row['carddata'] = $this->readBlob($row['carddata'], $modified); + if ($modified) { + $row['size'] = strlen($row['carddata']); + } return $row; } @@ -572,7 +583,13 @@ class CardDavBackend implements BackendInterface, SyncSupport { while ($row = $result->fetch()) { $row['etag'] = '"' . $row['etag'] . '"'; - $row['carddata'] = $this->readBlob($row['carddata']); + + $modified = false; + $row['carddata'] = $this->readBlob($row['carddata'], $modified); + if ($modified) { + $row['size'] = strlen($row['carddata']); + } + $cards[] = $row; } $result->closeCursor(); @@ -872,7 +889,12 @@ class CardDavBackend implements BackendInterface, SyncSupport { ]); } - private function readBlob($cardData) { + /** + * @param resource|string $cardData + * @param bool $modified + * @return string + */ + private function readBlob($cardData, &$modified=false) { if (is_resource($cardData)) { $cardData = stream_get_contents($cardData); } @@ -886,6 +908,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { && strpos($line, 'PHOTO:data:image/') !== 0) { // Filter out PHOTO data of non-images $removingPhoto = true; + $modified = true; continue; } @@ -952,7 +975,11 @@ class CardDavBackend implements BackendInterface, SyncSupport { $result->closeCursor(); return array_map(function ($array) { - $array['carddata'] = $this->readBlob($array['carddata']); + $modified = false; + $array['carddata'] = $this->readBlob($array['carddata'], $modified); + if ($modified) { + $array['size'] = strlen($array['carddata']); + } return $array; }, $cards); } @@ -1017,8 +1044,13 @@ class CardDavBackend implements BackendInterface, SyncSupport { $queryResult->closeCursor(); if (is_array($contact)) { + $modified = false; $contact['etag'] = '"' . $contact['etag'] . '"'; - $contact['carddata'] = $this->readBlob($contact['carddata']); + $contact['carddata'] = $this->readBlob($contact['carddata'], $modified); + if ($modified) { + $contact['size'] = strlen($contact['carddata']); + } + $result = $contact; } |