fix(job): Check if carddata is resource and read it to string

Fixes nextcloud/server#46100

Co-authored-by: Christoph Wurst <ChristophWurst@users.noreply.github.com>
Signed-off-by: Mikhail Kotelnikov <fox@woland.me>
This commit is contained in:
Mikhail Kotelnikov 2024-11-16 11:20:43 +05:00 committed by backportbot[bot]
parent 14f3dbefbb
commit b94f396c4f

View file

@ -71,7 +71,11 @@ class BuildSocialSearchIndexBackgroundJob extends QueuedJob {
// refresh identified contacts in order to re-index
foreach ($social_cards as $contact) {
$offset = $contact['id'];
$this->davBackend->updateCard($contact['addressbookid'], $contact['uri'], $contact['carddata']);
$cardData = $contact['carddata'];
if (is_resource($cardData) && (get_resource_type($cardData) === 'stream')) {
$cardData = stream_get_contents($cardData);
}
$this->davBackend->updateCard($contact['addressbookid'], $contact['uri'], $cardData);
// stop after 15sec (to be continued with next chunk)
if (($this->time->getTime() - $startTime) > 15) {