/** * updateSystemFields * * @param KVDdom_DomainObject $domainObject * @param string $gebruiker * @return void */ public function updateSystemFields(KVDdom_DomainObject $domainObject, $gebruiker = null) { if (!$domainObject->hasSystemFields()) { throw new LogicException('Kan de systemFields van een object dat geen systemFields heeft niet updaten.'); } $domainObject->getSystemFields()->setUpdated($gebruiker); }
/** * Verwijder een bepaald DomainObject uit de databank. * * Implementeert Optimist Offline Locking, indien het object gewijzigd is door iemand anders sinds het geladen werd wordt er een Exception gegenereerd. * @param KVDdom_DomainObject $domainObject Het DomainObject dat moet verwijderd worden. * @throws KVDdom_ConcurrencyException */ public function delete($domainObject) { try { $currentVersie = $domainObject->getSystemFields()->getVersie(); $this->LogInsert($domainObject->getId()); $stmt = $this->_conn->prepare($this->getDeleteStatement()); $this->doSetUpdateWhere($stmt, $domainObject->getId(), $currentVersie, 1); $stmt->execute(); } catch (PDOException $e) { throw KVDdom_ExceptionConvertor::convert($e, $domainObject); } if ($stmt->rowCount() === 0) { $message = 'Het object dat u probeert te verwijderen is gewijzigd sinds u het geopend hebt. U hebt geprobeerd om versie ' . $currentVersie . ' te verwijderen.'; throw new KVDdom_ConcurrencyException($message, $domainObject); } }
/** * deleteDependentCollection * * @param KVDdom_DomainObject $owner * @param string $sql Een sql statement dat de afhankelijke collectie verwijderd. Er wordt verwacht dat * er twee parameters beschikbaar zijn, de eerste bevat het id van de eigenaar, * de tweede het huidige versienummer. * @param integer $owerIdType Een PDO constante * @return void */ protected function deleteDependentCollection(KVDdom_DomainObject $owner, $sql, $owerIdType = PDO::PARAM_INT) { $stmt = $this->_conn->prepare($sql); $stmt->bindValue(1, $owner->getId(), PDO::PARAM_INT); $stmt->bindValue(2, $owner->getSystemFields()->getVersie(), PDO::PARAM_INT); $stmt->execute(); }