Skip to content

Commit efb49ce

Browse files
committed
check app is enabled
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
1 parent cc8f3c9 commit efb49ce

1 file changed

Lines changed: 31 additions & 37 deletions

File tree

lib/Model/ModelManager.php

Lines changed: 31 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131

3232
namespace OCA\Circles\Model;
3333

34-
use Exception;
3534
use OCA\Circles\AppInfo\Application;
3635
use OCA\Circles\Db\CircleRequest;
3736
use OCA\Circles\Db\CoreQueryBuilder;
@@ -58,6 +57,7 @@
5857
use OCA\Circles\Service\MembershipService;
5958
use OCA\Circles\Service\RemoteService;
6059
use OCA\Circles\Tools\Traits\TNCLogger;
60+
use OCP\App\IAppManager;
6161
use 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

Comments
 (0)