|
|
|
|
@ -48,6 +48,7 @@ use Sabre\VObject\Splitter\VCard as VCardSplitter; |
|
|
|
|
use Sabre\VObject\UUIDUtil; |
|
|
|
|
use Safe\Exceptions\ArrayException; |
|
|
|
|
use Safe\Exceptions\StringsException; |
|
|
|
|
use Symfony\Component\Console\Output\NullOutput; |
|
|
|
|
use Symfony\Component\Console\Output\OutputInterface; |
|
|
|
|
use Throwable; |
|
|
|
|
|
|
|
|
|
@ -198,15 +199,21 @@ class ContactsMigrator implements IMigrator, ISizeEstimationMigrator { |
|
|
|
|
* {@inheritDoc} |
|
|
|
|
*/ |
|
|
|
|
public function getEstimatedExportSize(IUser $user): int { |
|
|
|
|
$principalUri = $this->getPrincipalUri($user); |
|
|
|
|
$addressBookExports = $this->getAddressBookExports($user, new NullOutput()); |
|
|
|
|
$addressBookCount = count($addressBookExports); |
|
|
|
|
|
|
|
|
|
return array_sum(array_map( |
|
|
|
|
function (array $addressBookInfo) use ($user): int { |
|
|
|
|
// FIXME 1MiB by addressbook, no idea if this is accurate and if we should go into more details |
|
|
|
|
return 1000; |
|
|
|
|
}, |
|
|
|
|
$this->cardDavBackend->getAddressBooksForUser($principalUri), |
|
|
|
|
// 50B for each metadata JSON |
|
|
|
|
$size = ($addressBookCount * 50) / 1024; |
|
|
|
|
|
|
|
|
|
$contactsCount = array_sum(array_map( |
|
|
|
|
fn (array $data): int => count($data['vCards']), |
|
|
|
|
$addressBookExports, |
|
|
|
|
)); |
|
|
|
|
|
|
|
|
|
// 350B for each contact |
|
|
|
|
$size += ($contactsCount * 350) / 1024; |
|
|
|
|
|
|
|
|
|
return (int)ceil($size); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|