Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorGeorg Ehrke <developer@georgehrke.com>2020-04-15 16:47:27 +0300
committerGeorg Ehrke <developer@georgehrke.com>2020-04-15 16:49:49 +0300
commitfe4527a8e2275de51ea86715931e4df254b4fe23 (patch)
tree471fe85e837547e2365024182d833add7db782fc /apps
parent648c8df51645147f99fd687511003062ae01978c (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.php44
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;
}