private function getDefaultCriteria()
{
$environment = $this->getEnvironment();
$criteria = [['envId' => $environment->id]];
if (!$this->hasPermissions(Acl::RESOURCE_FARMS)) {
$where = [];
$farm = new Farm();
$farmTeam = new FarmTeam();
if ($this->hasPermissions(Acl::RESOURCE_OWN_FARMS)) {
$where[] = "{$farm->columnOwnerId()} = " . $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()}\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()}\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] = '(' . join(' OR ', $where) . ')';
}
if (!empty($join)) {
if (empty($criteria[Farm::STMT_FROM])) {
$criteria[Farm::STMT_FROM] = $farm->table();
}
$criteria[Farm::STMT_FROM] .= implode(' ', $join);
}
}
return $criteria;
}