private function getDefaultCriteria()
{
$server = new Server();
$defaultCondition = sprintf("{$server->columnAccountId()} = %d AND {$server->columnEnvId()} = %d ", $this->getUser()->accountId, $this->getEnvironment()->id);
$and = " AND {$server->columnFarmId()} IS NOT NULL ";
if (!$this->hasPermissions(Acl::RESOURCE_FARMS)) {
$where = [];
$farm = new Farm();
$farmTeam = new FarmTeam();
$join[] = " LEFT JOIN {$farm->table('f')} ON {$farm->columnId('f')} = {$server->columnFarmId()}";
if ($this->hasPermissions(Acl::RESOURCE_OWN_FARMS)) {
$where[] = "{$farm->columnOwnerId('f')} = " . $farm->qstr('ownerId', $this->getUser()->id);
}
if ($this->hasPermissions(Acl::RESOURCE_TEAM_FARMS)) {
$join[] = "\n LEFT JOIN {$farmTeam->table('ft')} ON {$farmTeam->columnFarmId('ft')} = {$farm->columnId('f')}\n LEFT JOIN `account_team_users` `atu` ON `atu`.`team_id` = {$farmTeam->columnTeamId('ft')}\n LEFT JOIN `account_team_envs` `ate` ON `ate`.`team_id` = {$farmTeam->columnTeamId('ft')} AND `ate`.`env_id` = {$farm->columnEnvId('f')}\n ";
$where[] = "`atu`.`user_id` = " . $farmTeam->db()->qstr($this->getUser()->id) . " AND `ate`.`team_id` IS NOT NULL";
}
if (!empty($where)) {
$criteria[Farm::STMT_WHERE] = '(' . $defaultCondition . $and . ' AND ' . join(' OR ', $where) . ')';
}
$criteria[Farm::STMT_FROM] = $server->table() . implode(' ', $join);
}
// add Temporary and Importing Servers to response
if ($this->hasPermissions(Acl::RESOURCE_IMAGES_ENVIRONMENT, Acl::PERM_IMAGES_ENVIRONMENT_MANAGE)) {
$extraCondition = sprintf("({$defaultCondition} AND {$server->columnFarmId()} IS NULL AND {$server->columnStatus()} IN ('%s', '%s'))", Server::STATUS_IMPORTING, Server::STATUS_TEMPORARY);
if (empty($criteria[Farm::STMT_WHERE]) && $this->hasPermissions(Acl::RESOURCE_FARMS)) {
$criteria[Farm::STMT_WHERE] = "(({$defaultCondition}{$and}) OR {$extraCondition})";
} else {
if (empty($criteria[Farm::STMT_WHERE])) {
$criteria[Farm::STMT_WHERE] = "{$extraCondition}";
} else {
$criteria[Farm::STMT_WHERE] = "({$criteria[Farm::STMT_WHERE]} OR {$extraCondition})";
}
}
}
if (empty($criteria[Farm::STMT_WHERE])) {
$criteria[Farm::STMT_WHERE] = $defaultCondition;
}
return $criteria;
}