/** * Deletes this instance */ public function delete() { $where = self::$instanceTable->getAdapter()->quoteInto('instanceID = ?', $this->instanceID); $transactionNumber = self::startSerializableTransaction(); self::$instanceTable->delete($where); self::$pageTable->delete($where); self::$questionTable->delete($where); self::$ruleTable->delete($where); self::$questionTypeTable->delete($where); self::$questionPromptTable->delete($where); self::$questionReferenceTable->delete($where); self::$referenceTable->delete($where); self::$referenceDetailTable->delete($where); self::$responseTable->delete($where); self::$sectionReferenceTable->delete($where); self::$pageReferenceTable->delete($where); self::$sectionTable->delete($where); self::dbCommit($transactionNumber); // Delete files after transaction to ensure a healthy state such that the worst case // scenario is that there may be orphaned files left on disk if the file operation // is not successful. FileModel::deleteByInstance($this->instanceRow->instanceID); }
public function testDeleteByInstance() { $properties = array('filename' => 'sample.pdf', 'mime' => 'application/pdf'); $filesNoId = new FileModel(new NoInstanceFoo()); $filesNoId->storeFilename(TEST_PATH . '/fixtures/sample.pdf', $properties); $filesId = new FileModel(new InstanceFoo()); $filesId->storeFilename(TEST_PATH . '/fixtures/sample.pdf', $properties); FileModel::deleteByInstance(1); $this->assertEquals(count($filesId->fetchAll()), 0); $this->assertEquals(count($filesNoId->fetchAll()), 1); }