/** * @param Script $script * @return array */ protected function getScriptInfo($script) { $result = ['versions' => [], 'tags' => join(',', Tag::getTags(Tag::RESOURCE_SCRIPT, $script->id))]; foreach ($script->getVersions(true) as $version) { /** var ScriptVersion $version */ $result['versions'][] = ['version' => $version->version, 'variables' => $version->variables, 'dtCreated' => Scalr_Util_DateTime::convertTz($version->dtCreated), 'content' => $version->content]; $result['version'] = $version->version; } return $result; }
/** * @param int $scriptId * @throws Scalr_UI_Exception_NotFound * @throws Scalr_Exception_InsufficientPermissions */ public function editAction($scriptId) { $this->request->restrictAccess(Acl::RESOURCE_ADMINISTRATION_SCRIPTS, Acl::PERM_ADMINISTRATION_SCRIPTS_MANAGE); $vars = Scalr_Scripting_Manager::getScriptingBuiltinVariables(); /* @var Script $script */ $script = Script::findPk($scriptId); if (!$script) { throw new Scalr_UI_Exception_NotFound(); } $script->checkPermission($this->user, $this->getEnvironmentId(true)); if (!$script->accountId && $this->user->getType() != Scalr_Account_User::TYPE_SCALR_ADMIN) { throw new Scalr_Exception_InsufficientPermissions(); } $version = $script->getLatestVersion(); $versionIds = array_map(function ($v) { return $v->version; }, $script->getVersions()->getArrayCopy()); $environments = $this->user->getEnvironments(); array_unshift($environments, array('id' => 0, 'name' => 'All environments')); $this->response->page('ui/scripts/create.js', array('script' => array('id' => $script->id, 'name' => $script->name, 'description' => $script->description, 'envId' => $script->envId ? $script->envId : 0, 'isSync' => !is_null($script->isSync) ? $script->isSync : 0, 'timeout' => $script->timeout, 'content' => $version->content, 'version' => $version->version, 'tags' => join(',', Tag::getTags(Tag::RESOURCE_SCRIPT, $script->id))), 'versions' => $versionIds, 'timeouts' => $this->getContainer()->config->get('scalr.script.timeout'), 'environments' => $environments, 'variables' => "%" . implode("%, %", array_keys($vars)) . "%"), array('codemirror/codemirror.js', 'ux-boxselect.js'), array('codemirror/codemirror.css')); }