getParsedBody(); if (empty($data->id)) { throw new BadRequest(); } $id = $data->id; $parentType = $data->parentType ?? null; $field = $data->field ?? null; return $this->getEmailService()->getCopiedAttachments($id, $parentType, null, $field); } /** * @throws Forbidden * @throws NotFound * @throws Error * @throws BadRequest */ public function postActionSendTestEmail(Request $request): bool { if (!$this->acl->checkScope(EmailEntity::ENTITY_TYPE)) { throw new Forbidden(); } $data = $request->getParsedBody(); $type = $data->type ?? null; $id = $data->id ?? null; $server = $data->server ?? null; $port = $data->int ?? null; $username = $data->username ?? null; $password = $data->password ?? null; $auth = $data->auth ?? null; $authMechanism = $data->authMechanism ?? null; $security = $data->security ?? null; $userId = $data->userId ?? null; $fromAddress = $data->fromAddress ?? null; $fromName = $data->fromName ?? null; $emailAddress = $data->emailAddress ?? null; if (!is_string($server)) { throw new BadRequest("`server`"); } if (!is_int($port)) { throw new BadRequest("`port`."); } if (!is_string($emailAddress)) { throw new BadRequest("`emailAddress`."); } $smtpParams = SmtpParams ::create($server, $port) ->withSecurity($security) ->withFromName($fromName) ->withFromAddress($fromAddress) ->withAuth($auth); if ($auth) { $smtpParams = $smtpParams ->withUsername($username) ->withPassword($password) ->withAuthMechanism($authMechanism); } $data = new TestSendData($emailAddress, $type, $id, $userId); $this->getSendService()->sendTestEmail($smtpParams, $data); return true; } /** * @throws BadRequest */ public function postActionMarkAsRead(Request $request): bool { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } $this->getEmailToolService()->markAsReadIdList($idList); return true; } /** * @throws BadRequest */ public function postActionMarkAsNotRead(Request $request): bool { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } $this->getEmailToolService()->markAsNotReadIdList($idList); return true; } public function postActionMarkAllAsRead(): bool { $this->getEmailToolService()->markAllAsRead(); return true; } /** * @throws BadRequest */ public function postActionMarkAsImportant(Request $request): bool { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } $this->getEmailToolService()->markAsImportantIdList($idList); return true; } /** * @throws BadRequest */ public function postActionMarkAsNotImportant(Request $request): bool { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } $this->getEmailToolService()->markAsNotImportantIdList($idList); return true; } /** * @throws BadRequest */ public function postActionMoveToTrash(Request $request): bool { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } $this->getEmailToolService()->moveToTrashIdList($idList); return true; } /** * @throws BadRequest */ public function postActionRetrieveFromTrash(Request $request): bool { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else { if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } } $this->getEmailToolService()->retrieveFromTrashIdList($idList); return true; } public function getActionGetFoldersNotReadCounts(): stdClass { return (object) $this->getEmailToolService()->getFoldersNotReadCounts(); } /** * @throws BadRequest * @throws Forbidden * @throws NotFound */ public function postActionMoveToFolder(Request $request): bool { $data = $request->getParsedBody(); if (!empty($data->ids)) { $idList = $data->ids; } else if (!empty($data->id)) { $idList = [$data->id]; } else { throw new BadRequest(); } if (empty($data->folderId)) { throw new BadRequest(); } if (count($idList) === 1) { $this->getEmailToolService()->moveToFolder($idList[0], $data->folderId); return true; } $this->getEmailToolService()->moveToFolderIdList($idList, $data->folderId); return true; } /** * @throws Forbidden */ public function getActionGetInsertFieldData(Request $request): stdClass { if (!$this->acl->checkScope(EmailEntity::ENTITY_TYPE, Table::ACTION_CREATE)) { throw new Forbidden(); } return $this->injectableFactory ->create(InsertFieldService::class) ->getData( $request->getQueryParam('parentType'), $request->getQueryParam('parentId'), $request->getQueryParam('to') ); } private function getEmailToolService(): ToolService { return $this->injectableFactory->create(ToolService::class); } private function getSendService(): SendService { return $this->injectableFactory->create(SendService::class); } private function getEmailService(): Service { /** @var Service */ return $this->getRecordService(); } }