/** * Overrides the delete method to delete the associated tasks and the sharings * * @see parent::delete() * @param PropelPDO Optional Connection object. * @return PcList */ public function delete(PropelPDO $con = null) { // deleting all the tasks related to the list $tasksCriteria = new Criteria(); $tasksCriteria->add(PcTaskPeer::LIST_ID, $this->getId(), Criteria::EQUAL); $tasks = PcTaskPeer::doSelect($tasksCriteria); foreach ($tasks as $task) { $task->delete(); } // deleting all the sharing related to the list $sharingsCriteria = new Criteria(); $sharingsCriteria->add(PcTaskPeer::LIST_ID, $this->getId(), Criteria::EQUAL); $sharings = PcTaskPeer::doSelect($sharingsCriteria); foreach ($sharings as $sharing) { $sharing->delete(); } $this->clearRelevantCache(); $con = Propel::getConnection(); $ret = null; try { $con->beginTransaction(); $this->copyObjectToTrashBin(); $ret = parent::delete($con); $con->commit(); } catch (Exception $e) { $con->rollback(); throw $e; } return $ret; }