3131
3232namespace OCA \Circles \Model ;
3333
34- use Exception ;
3534use OCA \Circles \AppInfo \Application ;
3635use OCA \Circles \Db \CircleRequest ;
3736use OCA \Circles \Db \CoreQueryBuilder ;
5857use OCA \Circles \Service \MembershipService ;
5958use OCA \Circles \Service \RemoteService ;
6059use OCA \Circles \Tools \Traits \TNCLogger ;
60+ use OCP \App \IAppManager ;
6161use OCP \IURLGenerator ;
6262
6363/**
@@ -69,42 +69,26 @@ class ModelManager {
6969 use TNCLogger;
7070
7171
72- /** @var IURLGenerator */
73- private $ urlGenerator ;
74-
75- /** @var CoreQueryBuilder */
76- private $ coreRequestBuilder ;
77-
78- /** @var CircleRequest */
79- private $ circleRequest ;
80-
81- /** @var MemberRequest */
82- private $ memberRequest ;
83-
84- /** @var MembershipRequest */
85- private $ membershipRequest ;
86-
87- /** @var InterfaceService */
88- private $ interfaceService ;
89-
90- /** @var MembershipService */
91- private $ membershipService ;
92-
93- /** @var RemoteService */
94- private $ remoteService ;
95-
96- /** @var ConfigService */
97- private $ configService ;
98-
99-
100- /** @var bool */
101- private $ fullDetails = false ;
72+ private IURLGenerator $ urlGenerator ;
73+ private IAppManager $ appManager ;
74+ private CoreQueryBuilder $ coreRequestBuilder ;
75+ private CircleRequest $ circleRequest ;
76+ private MemberRequest $ memberRequest ;
77+ private MembershipRequest $ membershipRequest ;
78+ private InterfaceService $ interfaceService ;
79+ private MembershipService $ membershipService ;
80+ private RemoteService $ remoteService ;
81+ private ConfigService $ configService ;
10282
83+ private bool $ fullDetails = false ;
84+ private bool $ pathLinkGenerated = false ;
85+ private string $ pathLinkGeneration = '' ;
10386
10487 /**
10588 * ModelManager constructor.
10689 *
10790 * @param IURLGenerator $urlGenerator
91+ * @param IAppManager $appManager
10892 * @param CoreQueryBuilder $coreRequestBuilder
10993 * @param CircleRequest $circleRequest
11094 * @param MemberRequest $memberRequest
@@ -116,6 +100,7 @@ class ModelManager {
116100 */
117101 public function __construct (
118102 IURLGenerator $ urlGenerator ,
103+ IAppManager $ appManager ,
119104 CoreQueryBuilder $ coreRequestBuilder ,
120105 CircleRequest $ circleRequest ,
121106 MemberRequest $ memberRequest ,
@@ -126,6 +111,7 @@ public function __construct(
126111 ConfigService $ configService
127112 ) {
128113 $ this ->urlGenerator = $ urlGenerator ;
114+ $ this ->appManager = $ appManager ;
129115 $ this ->coreRequestBuilder = $ coreRequestBuilder ;
130116 $ this ->circleRequest = $ circleRequest ;
131117 $ this ->memberRequest = $ memberRequest ;
@@ -554,16 +540,24 @@ public function fixInstance(string $instance): string {
554540 * @return string
555541 */
556542 public function generateLinkToCircle (string $ singleId ): string {
557- $ path = $ this ->configService ->getAppValue (ConfigService::ROUTE_TO_CIRCLE );
543+ if (!$ this ->pathLinkGenerated ) {
544+ $ this ->pathLinkGenerated = true ;
545+ $ path = $ this ->configService ->getAppValue (ConfigService::ROUTE_TO_CIRCLE );
546+ $ pos = strpos ($ path , '. ' );
547+ if (!$ pos ) {
548+ return '' ;
549+ }
558550
559- try {
560- if ($ path !== '' ) {
561- return $ this ->urlGenerator ->linkToRoute ($ path , ['singleId ' => $ singleId ]);
551+ if (!$ this ->appManager ->isInstalled (substr ($ path , 0 , $ pos ))) {
552+ $ this ->pathLinkGeneration = $ path ;
562553 }
563- } catch (Exception $ e ) {
564554 }
565555
566- return '' ;
556+ if ($ this ->pathLinkGeneration === '' ) {
557+ return '' ;
558+ }
559+
560+ return $ this ->urlGenerator ->linkToRoute ($ this ->pathLinkGeneration , ['singleId ' => $ singleId ]);
567561 }
568562
569563
0 commit comments