getScriptingBuiltinVariables() public static method

public static getScriptingBuiltinVariables ( )
Beispiel #1
0
 public function setRevision($script, $version = null)
 {
     if ($version == null) {
         $version = $this->getLatestRevision() + 1;
     }
     $variables = array();
     $builtin = array_keys(Scalr_Scripting_Manager::getScriptingBuiltinVariables());
     foreach ((array) $this->getCustomVariables($script) as $var) {
         if (!in_array($var, $builtin)) {
             $variables[$var] = ucwords(str_replace("_", " ", $var));
         }
     }
     $variables = serialize($variables);
     $this->db->Execute('INSERT INTO `script_revisions` SET
             scriptid = ?,
             revision = ?,
             script = ?,
             variables = ?,
             dtcreated = NOW()
         ON DUPLICATE KEY UPDATE
             script = ?,
             variables = ?,
             dtcreated = NOW()
         ', array($this->id, $version, $script, $variables, $script, $variables));
 }
Beispiel #2
0
 public function viewAction()
 {
     $this->request->restrictAccess('SCRIPTS');
     $vars = Scalr_Scripting_Manager::getScriptingBuiltinVariables();
     $environments = $this->user->getEnvironments();
     $this->response->page('ui/scripts/view.js', array('variables' => "%" . implode("%, %", array_keys($vars)) . "%", 'timeouts' => $this->getContainer()->config->get('scalr.script.timeout'), 'environments' => $environments, 'scope' => $this->request->getScope()), array('codemirror/codemirror.js'), array('codemirror/codemirror.css'));
 }
Beispiel #3
0
 public function save()
 {
     $this->variables = [];
     $variables = Script::fetchVariables($this->content);
     if (!empty($variables)) {
         $builtin = array_keys(\Scalr_Scripting_Manager::getScriptingBuiltinVariables());
         foreach ($variables as $var) {
             if (!in_array($var, $builtin)) {
                 $this->variables[$var] = ucwords(str_replace("_", " ", $var));
             }
         }
     }
     parent::save();
 }
Beispiel #4
0
 public function save()
 {
     $this->variables = [];
     $matches = [];
     $text = preg_replace('/(\\\\%)/si', '$$scalr$$', $this->content);
     preg_match_all("/\\%([^\\%\\s]+)\\%/si", $text, $matches);
     $builtin = array_keys(\Scalr_Scripting_Manager::getScriptingBuiltinVariables());
     foreach ($matches[1] as $var) {
         if (!in_array($var, $builtin)) {
             $this->variables[$var] = ucwords(str_replace("_", " ", $var));
         }
     }
     parent::save();
 }
 public function ScriptGetDetails($ScriptID, $ShowContent = false, $Revision = false)
 {
     $this->restrictAccess(Acl::RESOURCE_ADMINISTRATION_SCRIPTS);
     /* @var $script Script */
     $script = Script::findPk($ScriptID);
     if (!$script) {
         throw new Exception(sprintf("Script ID: %s not found in our database (1)", $ScriptID));
     }
     if ($script->accountId && $this->user->getAccountId() != $script->accountId) {
         throw new Exception(sprintf("Script ID: %s not found in our database (2)", $ScriptID));
     }
     $response = $this->CreateInitialResponse();
     $response->ScriptID = $ScriptID;
     $response->ScriptRevisionSet = new stdClass();
     $response->ScriptRevisionSet->Item = array();
     $response->RevisionsNum = 0;
     foreach (array_reverse($script->getVersions()->getArrayCopy()) as $rev) {
         /* @var $rev ScriptVersion */
         $response->RevisionsNum++;
         if ($response->RevisionsNum >= 10) {
             continue;
         }
         if ($Revision && $rev->version != $Revision) {
             continue;
         }
         $itm = new stdClass();
         $itm->{"Revision"} = $rev->version;
         $itm->{"Date"} = $rev->dtCreated->format('Y-m-d H:i:s');
         if ($ShowContent) {
             $itm->{"Content"} = base64_encode($rev->content);
         }
         $itm->{"ConfigVariables"} = new stdClass();
         $itm->{"ConfigVariables"}->Item = array();
         $text = preg_replace('/(\\\\%)/si', '$$scalr$$', $rev->content);
         preg_match_all("/\\%([^\\%\\s]+)\\%/si", $text, $matches);
         $vars = $matches[1];
         $data = array();
         foreach ($vars as $var) {
             if (!in_array($var, array_keys(Scalr_Scripting_Manager::getScriptingBuiltinVariables()))) {
                 $ditm = new stdClass();
                 $ditm->Name = $var;
                 $itm->{"ConfigVariables"}->Item[] = $ditm;
             }
         }
         $response->ScriptRevisionSet->Item[] = $itm;
     }
     return $response;
 }
Beispiel #6
0
 public function createAction()
 {
     $this->request->restrictAccess(Acl::RESOURCE_FARMS_SCRIPTS, Acl::PERM_FARMS_SCRIPTS_MANAGE);
     $vars = Scalr_Scripting_Manager::getScriptingBuiltinVariables();
     $this->response->page('ui/scripts/create.js', array('versions' => array(1), 'latestVersion' => 0, 'variables' => "%" . implode("%, %", array_keys($vars)) . "%"), array('codemirror/codemirror.js'), array('codemirror/codemirror.css'));
 }
Beispiel #7
0
 public function createAction()
 {
     $this->request->restrictAccess(Acl::RESOURCE_ADMINISTRATION_SCRIPTS, Acl::PERM_ADMINISTRATION_SCRIPTS_MANAGE);
     $vars = Scalr_Scripting_Manager::getScriptingBuiltinVariables();
     $environments = $this->user->getEnvironments();
     array_unshift($environments, ['id' => '0', 'name' => 'All environments']);
     $this->response->page('ui/scripts/create.js', array('versions' => array(1), 'variables' => "%" . implode("%, %", array_keys($vars)) . "%", 'timeouts' => $this->getContainer()->config->get('scalr.script.timeout'), 'environments' => $environments), array('codemirror/codemirror.js', 'ux-boxselect.js'), array('codemirror/codemirror.css'));
 }
Beispiel #8
0
 public function ScriptGetDetails($ScriptID, $ShowContent = false, $Revision = false)
 {
     $this->restrictAccess(Acl::RESOURCE_FARMS_SCRIPTS);
     $script_info = $this->DB->GetRow("SELECT * FROM scripts WHERE id=?", array($ScriptID));
     if (!$script_info) {
         throw new Exception(sprintf("Script ID: %s not found in our database (1)", $ScriptID));
     }
     if ($script_info['clientid'] != 0 && $this->user->getAccountId() != $script_info['clientid']) {
         throw new Exception(sprintf("Script ID: %s not found in our database (2)", $ScriptID));
     }
     $response = $this->CreateInitialResponse();
     $response->ScriptID = $ScriptID;
     $response->ScriptRevisionSet = new stdClass();
     $response->ScriptRevisionSet->Item = array();
     $revisionFilter = "";
     if ($Revision) {
         $Revision = (int) $Revision;
         $revisionFilter = " AND revision='{$Revision}'";
     }
     $revisions = $this->DB->Execute("SELECT * FROM script_revisions WHERE scriptid=? {$revisionFilter} ORDER BY id DESC", array($ScriptID));
     $response->RevisionsNum = $revisions->RecordCount();
     $i = 0;
     while ($revision = $revisions->FetchRow()) {
         $itm = new stdClass();
         $itm->{"Revision"} = $revision['revision'];
         $itm->{"Date"} = $revision['dtcreated'];
         if ($ShowContent) {
             $itm->{"Content"} = base64_encode($revision['script']);
         }
         $itm->{"ConfigVariables"} = new stdClass();
         $itm->{"ConfigVariables"}->Item = array();
         $text = preg_replace('/(\\\\%)/si', '$$scalr$$', $revision['script']);
         preg_match_all("/\\%([^\\%\\s]+)\\%/si", $text, $matches);
         $vars = $matches[1];
         $data = array();
         foreach ($vars as $var) {
             if (!in_array($var, array_keys(Scalr_Scripting_Manager::getScriptingBuiltinVariables()))) {
                 $ditm = new stdClass();
                 $ditm->Name = $var;
                 $itm->{"ConfigVariables"}->Item[] = $ditm;
             }
         }
         $response->ScriptRevisionSet->Item[] = $itm;
         $i++;
         if ($i >= 10) {
             break;
         }
     }
     return $response;
 }