/** * @param int $id * @param int $miner * @param int|string $rules * @param bool $inRuleClipboard * @throws BadRequestException * @throws ForbiddenRequestException * @return Rule[] */ private function changeRulesClipboardState($id = null, $miner, $rules, $inRuleClipboard) { $task = $this->tasksFacade->findTask($id); $this->checkMinerAccess($task->miner); $ruleIdsArr = explode(',', str_replace(';', ',', $rules)); $result = array(); if (count($ruleIdsArr) > 0) { foreach ($ruleIdsArr as $ruleId) { try { $rule = $this->rulesFacade->findRule($ruleId); //TODO optimalizovat kontroly... $ruleTask = $rule->task; if ($ruleTask->taskId != $task->taskId) { throw new InvalidArgumentException(); } if ($ruleTask->miner->minerId != $miner) { throw new InvalidArgumentException(); } if ($rule->inRuleClipboard != $inRuleClipboard) { $rule->inRuleClipboard = $inRuleClipboard; $this->rulesFacade->saveRule($rule); } $result[] = $rule; } catch (\Exception $e) { continue; } } } $this->tasksFacade->checkTaskInRuleClipoard($ruleTask); return $result; }