2023-05-09 13:17:39 -04:00
< ? php
declare ( strict_types = 1 );
/**
* @ copyright Copyright ( c ) 2023 Anna Larch < anna . larch @ gmx . net >
*
* @ author Anna Larch < anna . larch @ gmx . net >
*
* @ license GNU AGPL version 3 or any later version
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation , either version 3 of the
* License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*
*/
namespace OCA\DAV\Migration ;
use Closure ;
use OCA\DAV\CardDAV\SyncService ;
use OCP\DB\ISchemaWrapper ;
2023-08-17 04:19:10 -04:00
use OCP\IConfig ;
use OCP\IUserManager ;
2023-05-09 13:17:39 -04:00
use OCP\Migration\IOutput ;
use OCP\Migration\SimpleMigrationStep ;
use Psr\Log\LoggerInterface ;
2023-06-26 04:52:07 -04:00
use Throwable ;
2023-05-09 13:17:39 -04:00
class Version1027Date20230504122946 extends SimpleMigrationStep {
2023-08-17 04:19:10 -04:00
public function __construct ( private SyncService $syncService ,
2023-11-23 04:22:34 -05:00
private LoggerInterface $logger ,
private IUserManager $userManager ,
private IConfig $config ) {
}
2023-05-09 13:17:39 -04:00
/**
* @ param IOutput $output
* @ param Closure () : ISchemaWrapper $schemaClosure
* @ param array $options
*/
public function postSchemaChange ( IOutput $output , Closure $schemaClosure , array $options ) : void {
2023-11-21 13:46:13 -05:00
if ( $this -> userManager -> countSeenUsers () > 100 || array_sum ( $this -> userManager -> countUsers ()) > 100 ) {
2023-08-17 04:19:10 -04:00
$this -> config -> setAppValue ( 'dav' , 'needs_system_address_book_sync' , 'yes' );
$output -> info ( 'Could not sync system address books during update - too many user records have been found. Please call occ dav:sync-system-addressbook manually.' );
return ;
}
2023-06-26 04:52:07 -04:00
try {
$this -> syncService -> syncInstance ();
2023-08-17 04:19:10 -04:00
$this -> config -> setAppValue ( 'dav' , 'needs_system_address_book_sync' , 'no' );
2023-06-26 04:52:07 -04:00
} catch ( Throwable $e ) {
2023-08-17 04:19:10 -04:00
$this -> config -> setAppValue ( 'dav' , 'needs_system_address_book_sync' , 'yes' );
2023-06-26 04:52:07 -04:00
$this -> logger -> error ( 'Could not sync system address books during update' , [
'exception' => $e ,
]);
$output -> warning ( 'System address book sync failed. See logs for details' );
}
2023-05-09 13:17:39 -04:00
}
}