Scalr_Account::delete PHP Méthode

delete() public méthode

See also: Scalr_Model::delete()
public delete ( $id = null )
    public function delete($id = null)
    {
        $servers = \DBServer::listByFilter(['clientId' => $this->id]);
        foreach ($servers as $server) {
            /* @var $server \DBServer */
            $server->Remove();
        }
        try {
            $this->db->StartTrans();
            //TODO: Use models
            $this->db->Execute("\n                DELETE account_team_users FROM account_team_users, account_teams\n                WHERE account_teams.account_id = ?\n                AND account_team_users.team_id = account_teams.id\n            ", array($this->id));
            $this->db->Execute("DELETE FROM account_users WHERE account_id=?", array($this->id));
            $this->db->Execute("DELETE FROM account_teams WHERE account_id=?", array($this->id));
            $this->db->Execute("DELETE FROM account_limits WHERE account_id=?", array($this->id));
            /* @var $environment Environment */
            foreach (Environment::findByAccountId($this->id) as $environment) {
                $environment->delete(true);
            }
            CloudCredentials::deleteByAccountId($this->id);
            $this->db->Execute("\n                DELETE account_team_user_acls FROM account_team_user_acls, acl_account_roles\n                WHERE acl_account_roles.account_id = ?\n                AND account_team_user_acls.account_role_id = acl_account_roles.account_role_id\n            ", array($this->id));
            $this->db->Execute("DELETE FROM acl_account_roles WHERE account_id=?", array($this->id));
            $this->db->Execute("DELETE FROM ec2_ebs WHERE client_id=?", array($this->id));
            $this->db->Execute("DELETE FROM apache_vhosts WHERE client_id=?", array($this->id));
            $this->db->Execute("DELETE FROM scheduler WHERE account_id=?", array($this->id));
            foreach ($this->db->Execute("SELECT id FROM farms WHERE clientid=?", [$this->id]) as $farm) {
                $this->db->Execute("DELETE FROM farms WHERE id=?", array($farm["id"]));
                $this->db->Execute("DELETE FROM farm_roles WHERE farmid=?", array($farm["id"]));
                $this->db->Execute("DELETE FROM elastic_ips WHERE farmid=?", array($farm["id"]));
            }
            $roles = $this->db->GetAll("SELECT id FROM roles WHERE client_id = '{$this->id}'");
            foreach ($roles as $role) {
                $this->db->Execute("DELETE FROM roles WHERE id = ?", array($role['id']));
                $this->db->Execute("DELETE FROM role_behaviors WHERE role_id = ?", array($role['id']));
                $this->db->Execute("DELETE FROM role_images WHERE role_id = ?", array($role['id']));
                $this->db->Execute("DELETE FROM role_properties WHERE role_id = ?", array($role['id']));
                $this->db->Execute("DELETE FROM role_security_rules WHERE role_id = ?", array($role['id']));
            }
            //Removing cost centres and projects which are set up from this account
            $this->db->Execute("\n                DELETE project_properties FROM project_properties, projects\n                WHERE projects.project_id = project_properties.project_id\n                AND projects.account_id = ?\n            ", [$this->id]);
            $this->db->Execute("DELETE FROM projects WHERE account_id = ?", [$this->id]);
            $this->db->Execute("\n                DELETE cc_properties FROM cc_properties, ccs\n                WHERE ccs.cc_id = cc_properties.cc_id\n                AND ccs.account_id = ?\n            ", [$this->id]);
            $this->db->Execute("DELETE FROM ccs WHERE account_id = ?", [$this->id]);
            parent::delete();
            ReportEntity::deleteByAccountId($this->id);
            NotificationEntity::deleteByAccountId($this->id);
            $this->db->CompleteTrans();
        } catch (\Exception $e) {
            $this->db->RollbackTrans();
            throw $e;
        }
    }