public function deleteEnumeration($enumerationId) { $db = Zend_Registry::get("dbAdapter"); $enumeration = new Enumeration(); $enumeration->enumerationId = (int) $enumerationId; $enumeration->setPersistMode(WebVista_Model_ORM::DELETE); $enumeration->persist(); // delete recursively $enumerationIterator = $this->getAllDescendants($enumeration->enumerationId, 1); foreach ($enumerationIterator as $enum) { $this->deleteEnumeration($enum->enumerationId); } $db->beginTransaction(); try { // remove all its descendants $sql = "DELETE `ec1` FROM `enumerationsClosure` AS `ec1`\n\t\t\t\tJOIN `enumerationsClosure` `ec2` USING (`descendant`)\n\t\t\t\tWHERE ec2.`ancestor` = {$enumerationId}"; $db->query($sql); $db->commit(); } catch (Exception $e) { $db->rollBack(); trigger_error($e->getMessage(), E_USER_NOTICE); } }