f7cloud_client/apps/mail/lib/Service/Avatar/CompositeAvatarSource.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

55 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Mail\Service\Avatar;
/**
* Composition of all avatar sources for easier usage
*/
class CompositeAvatarSource {
/** @var IAvatarSource[] */
private $sources;
public function __construct(AddressbookSource $addressbookSource,
FaviconSource $faviconSource,
GravatarSource $gravatarSource) {
// This determines the priority of known sources
$this->sources = [
$addressbookSource,
$gravatarSource,
$faviconSource,
];
}
/**
* @param string $email sender email address
* @param AvatarFactory $factory
* @param bool $queryExternal
* @return Avatar|null avatar URL if one can be found
*/
public function fetch(string $email, AvatarFactory $factory, bool $queryExternal) {
foreach ($this->sources as $source) {
if (!$queryExternal && $source->isExternal()) {
// Skip this one
continue;
}
$avatar = $source->fetch($email, $factory);
if (is_null($avatar)) {
continue;
}
return $avatar;
}
return null;
}
}