public function Delete(Domain $domain) { $this->DB->BeginTrans(); try { $this->DB->Execute('DELETE FROM domains WHERE id = ?', array($domain->ID)); $this->DB->Execute('DELETE FROM domains_data WHERE domainid = ?', array($domain->ID)); $this->DB->Execute('DELETE FROM domains_flags WHERE domainid = ?', array($domain->ID)); $this->DB->Execute("UPDATE zones SET isdeleted = '1' WHERE zone=?", array($domain->GetHostName())); $purposes = implode(',', array($this->DB->qstr(INVOICE_PURPOSE::DOMAIN_CREATE), $this->DB->qstr(INVOICE_PURPOSE::DOMAIN_RENEW), $this->DB->qstr(INVOICE_PURPOSE::DOMAIN_TRANSFER), $this->DB->qstr(INVOICE_PURPOSE::DOMAIN_TRADE))); $this->DB->Execute("UPDATE invoices SET itemid=0, status=IF(status = 0, 2, status) WHERE itemid=? AND purpose IN ({$purposes})", array($domain->ID)); $this->DBNameserverHost->DeleteList($domain->ID); $domain->ID = null; } catch (Exception $e) { $this->DB->RollbackTrans(); Log::Log(sprintf("DBDomain::Delete failed. %s", $e->getMessage()), E_ERROR); throw new ApplicationException($e->getMessage(), $e->getCode()); } $this->DB->CompleteTrans(); // Remove it from loaded objects storage unset($this->LoadedObjects[$domain->ID]); }