4040use OCA \Circles \AppInfo \Application ;
4141use OCA \Circles \Db \CircleRequest ;
4242use OCA \Circles \Db \MemberRequest ;
43+ use OCA \Circles \Db \ShareTokenRequest ;
4344use OCA \Circles \Exceptions \CircleNotFoundException ;
4445use OCA \Circles \Exceptions \ContactAddressBookNotFoundException ;
4546use OCA \Circles \Exceptions \ContactFormatException ;
5556use OCA \Circles \Exceptions \RemoteNotFoundException ;
5657use OCA \Circles \Exceptions \RemoteResourceNotFoundException ;
5758use OCA \Circles \Exceptions \RequestBuilderException ;
59+ use OCA \Circles \Exceptions \ShareTokenNotFoundException ;
5860use OCA \Circles \Exceptions \SingleCircleNotFoundException ;
5961use OCA \Circles \Exceptions \UnknownRemoteException ;
6062use OCA \Circles \Exceptions \UserTypeNotFoundException ;
6163use OCA \Circles \Model \Circle ;
6264use OCA \Circles \Model \FederatedUser ;
6365use OCA \Circles \Model \Member ;
66+ use OCA \Circles \Model \ShareToken ;
6467use OCA \DAV \CardDAV \ContactsManager ;
6568use OCP \Contacts \IManager ;
6669use OCP \IDBConnection ;
6770use OCP \IURLGenerator ;
71+ use OCP \Share \IShare ;
6872
6973
7074/**
@@ -91,6 +95,9 @@ class MigrationService {
9195 /** @var MemberRequest */
9296 private $ memberRequest ;
9397
98+ /** @var ShareTokenRequest */
99+ private $ shareTokenRequest ;
100+
94101 /** @var MembershipService */
95102 private $ membershipService ;
96103
@@ -124,6 +131,7 @@ class MigrationService {
124131 * @param IURLGenerator $urlGenerator
125132 * @param CircleRequest $circleRequest
126133 * @param MemberRequest $memberRequest
134+ * @param ShareTokenRequest $shareTokenRequest
127135 * @param MembershipService $membershipService
128136 * @param FederatedUserService $federatedUserService
129137 * @param CircleService $circleService
@@ -137,6 +145,7 @@ public function __construct(
137145 IURLGenerator $ urlGenerator ,
138146 CircleRequest $ circleRequest ,
139147 MemberRequest $ memberRequest ,
148+ ShareTokenRequest $ shareTokenRequest ,
140149 MembershipService $ membershipService ,
141150 FederatedUserService $ federatedUserService ,
142151 CircleService $ circleService ,
@@ -149,6 +158,7 @@ public function __construct(
149158 $ this ->urlGenerator = $ urlGenerator ;
150159 $ this ->circleRequest = $ circleRequest ;
151160 $ this ->memberRequest = $ memberRequest ;
161+ $ this ->shareTokenRequest = $ shareTokenRequest ;
152162 $ this ->membershipService = $ membershipService ;
153163 $ this ->federatedUserService = $ federatedUserService ;
154164 $ this ->circleService = $ circleService ;
@@ -208,6 +218,7 @@ private function migrationTo22(): void {
208218
209219 $ this ->migrationTo22_Circles ();
210220 $ this ->migrationTo22_Members ();
221+ $ this ->migrationTo22_Tokens ();
211222 $ this ->membershipService ->resetMemberships ('' , true );
212223 $ this ->membershipService ->manageAll ();
213224
@@ -469,5 +480,73 @@ private function saveGeneratedMember(Member $member): void {
469480 }
470481 }
471482
483+
484+ /**
485+ */
486+ public function migrationTo22_Tokens (): void {
487+ $ qb = $ this ->dbConnection ->getQueryBuilder ();
488+ $ qb ->select ('* ' )->from ('circle_tokens ' );
489+
490+ try {
491+ $ cursor = $ qb ->executeQuery ();
492+ $ this ->outputService ->startMigrationProgress ($ cursor ->rowCount ());
493+
494+ while ($ row = $ cursor ->fetch ()) {
495+ try {
496+ $ data = new SimpleDataStore ($ row );
497+ $ this ->outputService ->output (
498+ 'Migrating ShareToken \'' . $ data ->g ('token ' ) . '\' for \'' . $ data ->g ('user_id ' )
499+ . '\'' ,
500+ true
501+ );
502+
503+ $ shareToken = $ this ->generateShareTokenFrom21 ($ data );
504+ $ this ->saveGeneratedShareToken ($ shareToken );
505+ } catch (Exception $ e ) {
506+ }
507+ }
508+
509+ $ cursor ->closeCursor ();
510+ } catch (\OCP \DB \Exception $ e ) {
511+ }
512+
513+ $ this ->outputService ->finishMigrationProgress ();
514+ }
515+
516+
517+ /**
518+ * @param SimpleDataStore $data
519+ *
520+ * @return ShareToken
521+ * @throws MemberNotFoundException
522+ * @throws RequestBuilderException
523+ */
524+ private function generateShareTokenFrom21 (SimpleDataStore $ data ): ShareToken {
525+ $ shareToken = new ShareToken ();
526+ $ member = $ this ->memberRequest ->getMemberById ($ data ->g ('member_id ' ));
527+
528+ $ shareToken ->setShareId ($ data ->gInt ('share_id ' ))
529+ ->setCircleId ($ data ->g ('circle_id ' ))
530+ ->setSingleId ($ member ->getSingleId ())
531+ ->setMemberId ($ data ->g ('member_id ' ))
532+ ->setToken ($ data ->g ('token ' ))
533+ ->setPassword ($ data ->g ('password ' ))
534+ ->setAccepted (IShare::STATUS_ACCEPTED );
535+
536+ return $ shareToken ;
537+ }
538+
539+ /**
540+ * @param ShareToken $shareToken
541+ */
542+ private function saveGeneratedShareToken (ShareToken $ shareToken ): void {
543+ try {
544+ $ this ->shareTokenRequest ->getByToken ($ shareToken ->getToken ());
545+ } catch (ShareTokenNotFoundException $ e ) {
546+ $ this ->shareTokenRequest ->save ($ shareToken );
547+ } catch (RequestBuilderException $ e ) {
548+ }
549+ }
550+
472551}
473552
0 commit comments