/** * Funkce vracející instanci zvoleného mineru po kontrole, jestli má uživatel právo k němu přistupovat * @param int|Miner $miner * @return Miner * @throws BadRequestException * @throws ForbiddenRequestException */ protected function findMinerWithCheckAccess($miner) { if (!$miner instanceof Miner) { try { $miner = $this->minersFacade->findMiner($miner); } catch (\Exception $e) { throw new BadRequestException('Requested miner not specified!', 404, $e); } } $this->checkMinerAccess($miner); return $miner; }
/** * Funkce nastavující konfiguraci aktuálně otevřeného mineru * @param array $minerConfig * @param bool $save = true */ private function setMinerConfig($minerConfig, $save = true) { $this->miner->setConfig($minerConfig); $this->minerConfig = $minerConfig; if ($save) { $this->minersFacade->saveMiner($this->miner); } }
/** * Metoda pro kontrolu oprávněnosti přistupovat ke zvolenému mineru * @param Miner|int|null $miner * @throws UnauthorizedRequestException */ protected function checkMinerAccess($miner) { if (!$this->minersFacade->checkMinerAccess($miner, $this->getCurrentUser())) { throw new UnauthorizedRequestException('You are not authorized to use the selected miner!'); } }
/** * Funkce pro inicializaci Metasource pro konkrétní miner * * @param Miner $miner * @param MinersFacade $minersFacade * @return MetasourceTask */ public function startMinerMetasourceInitialization(Miner $miner, MinersFacade $minersFacade) { //vytvoření úlohy pro $ppType = $this->preprocessingFactory->getPreprocessingTypeByDatabaseType($miner->datasource->type); /** @var PpConnection $ppConnection - DB/API connection for preprocessing */ $ppConnection = $this->preprocessingFactory->getDefaultPpConnection($ppType, $miner->user); $metasource = Metasource::newFromPpConnection($ppConnection); $metasource->datasource = $miner->datasource; $metasource->state = Metasource::STATE_PREPARATION; $metasource->user = $miner->user; $this->saveMetasource($metasource); //připojení metasource k mineru $miner->metasource = $metasource; $minersFacade->saveMiner($miner); //vytvoření úlohy, v rámci které dojde k inicializaci $metasourceTask = new MetasourceTask(); $metasourceTask->type = MetasourceTask::TYPE_INITIALIZATION; $metasourceTask->state = MetasourceTask::STATE_NEW; $metasourceTask->metasource = $metasource; $this->saveMetasourceTask($metasourceTask); return $metasourceTask; }