container = $container; /** @var EntityManager $entityManager */ $entityManager = $this->container->get('entityManager'); /** @var Config $config */ $config = $this->container->get('config'); /** @var InjectableFactory $injectableFactory */ $injectableFactory = $this->container->get('injectableFactory'); /** @var ConfigWriter $configWriter */ $configWriter = $injectableFactory->create(ConfigWriter::class); if ( $job = $entityManager ->getRDBRepository(ScheduledJob::ENTITY_TYPE) ->where(['job' => 'ReportTargetListSync']) ->findOne() ) { $entityManager->removeEntity($job); } if ( $job = $entityManager ->getRDBRepository(ScheduledJob::ENTITY_TYPE) ->where(['job' => 'ScheduleReportSending']) ->findOne() ) { $entityManager->removeEntity($job); } if ( $job = $entityManager ->getRDBRepository(ScheduledJob::ENTITY_TYPE) ->where(['job' => 'RunScheduledWorkflows']) ->findOne() ) { $entityManager->removeEntity($job); } if ( $job = $entityManager ->getRDBRepository(ScheduledJob::ENTITY_TYPE) ->where(['job' => 'ProcessPendingProcessFlows']) ->findOne() ) { $entityManager->removeEntity($job); } $this->removeAdminIframeUrl($config, $configWriter); } private function removeAdminIframeUrl(Config $config, ConfigWriter $configWriter): void { /** @var ?string $url */ $url = $config->get('adminPanelIframeUrl'); $url = $this->removeUrlParam($url, 'advanced-pack', '/'); if ($url == $config->get('adminPanelIframeUrl')) { return; } $configWriter->set('adminPanelIframeUrl', $url); $configWriter->save(); } private function removeUrlParam(string $url, string $paramName, string $suffix = ''): string { $urlQuery = parse_url($url, \PHP_URL_QUERY); if ($urlQuery) { parse_str($urlQuery, $params); if (isset($params[$paramName])) { unset($params[$paramName]); $newUrl = str_replace($urlQuery, http_build_query($params), $url); if (empty($params)) { /** @var string $newUrl */ $newUrl = preg_replace('/\/\?$/', '', $newUrl); /** @var string $newUrl */ $newUrl = preg_replace('/\/$/', '', $newUrl); $newUrl .= $suffix; } return $newUrl; } } return $url; } }