public static function getList($accountId, $envId)
{
$criteria = [];
if ($accountId && $envId) {
//environment scope
$criteria[] = ['$or' => [['$and' => [['accountId' => $accountId], ['envId' => $envId]]], ['$and' => [['accountId' => $accountId], ['envId' => null]]], ['$and' => [['accountId' => null], ['envId' => null]]]]];
} elseif ($accountId && !$envId) {
//account scope
$criteria[] = ['$or' => [['$and' => [['accountId' => $accountId], ['envId' => null]]], ['$and' => [['accountId' => null], ['envId' => null]]]]];
} else {
//scalr scope
$criteria[] = ['envId' => null];
$criteria[] = ['accountId' => null];
}
return array_map(function (Script $script) {
return ['id' => $script->id, 'name' => $script->name, 'description' => $script->description, 'os' => $script->os, 'isSync' => $script->isSync, 'allowScriptParameters' => $script->allowScriptParameters, 'timeout' => $script->timeout ? $script->timeout : ($script->isSync == 1 ? \Scalr::config('scalr.script.timeout.sync') : \Scalr::config('scalr.script.timeout.async')), 'createdByEmail' => $script->createdByEmail, 'accountId' => $script->accountId, 'scope' => $script->envId ? self::SCOPE_ENVIRONMENT : ($script->accountId ? self::SCOPE_ACCOUNT : self::SCOPE_SCALR), 'versions' => array_map(function (ScriptVersion $version) use($script) {
return ['version' => $version->version, 'versionName' => $version->version, 'variables' => $script->allowScriptParameters ? $version->variables : []];
}, $script->getVersions()->getArrayCopy())];
}, self::find($criteria, null, ['name' => true])->getArrayCopy());
}