*/ protected $params = []; const UPLOAD = 'upload'; const INSTALL = 'install'; const UNINSTALL = 'uninstall'; const DELETE = 'delete'; /** * @param \Espo\Core\Container $container */ public function __construct($container) { $this->container = $container; $this->actionManager = new ActionManager($this->name ?? '', $container, $this->params); } /** * @return \Espo\Core\Container */ protected function getContainer() { return $this->container; } /** * @return ActionManager */ protected function getActionManager() { return $this->actionManager; } /** * @return array * @throws Error */ public function getManifest() { return $this->getActionManager()->getManifest(); } /** * @param string $processId * @return array * @throws Error */ public function getManifestById($processId) { $actionClass = $this->getActionManager()->getActionClass(self::INSTALL); $actionClass->setProcessId($processId); return $actionClass->getManifest(); } /** * @param string $data * @return string * @throws Error */ public function upload($data) { $this->getActionManager()->setAction(self::UPLOAD); return $this->getActionManager()->run($data); } /** * @param array $data * @return mixed * @throws Error */ public function install($data) { $this->getActionManager()->setAction(self::INSTALL); return $this->getActionManager()->run($data); } /** * @param array $data * @return mixed * @throws Error */ public function uninstall($data) { $this->getActionManager()->setAction(self::UNINSTALL); return $this->getActionManager()->run($data); } /** * @param array $data * @return mixed * @throws Error */ public function delete($data) { $this->getActionManager()->setAction(self::DELETE); return $this->getActionManager()->run($data); } /** * @param string $stepName * @param array $params * @return bool * @throws Error */ public function runInstallStep($stepName, array $params = []) { return $this->runActionStep(self::INSTALL, $stepName, $params); } /** * * @param string $actionName * @param string $stepName * @param array $params * @return bool * @throws Error */ protected function runActionStep($actionName, $stepName, array $params = []) { $actionClass = $this->getActionManager()->getActionClass($actionName); $methodName = 'step' . ucfirst($stepName); if (!method_exists($actionClass, $methodName)) { if (!empty($params['id'])) { $actionClass->setProcessId($params['id']); $actionClass->throwErrorAndRemovePackage('Step "'. $stepName .'" is not found.'); } throw new Error('Step "'. $stepName .'" is not found.'); } $actionClass->$methodName($params); // throw an Exception on error return true; } }