Delete linked objects

This commit is contained in:
Julius Haertl
2016-10-15 12:05:27 +02:00
parent db97043c97
commit b82b1ef2f0
6 changed files with 63 additions and 19 deletions

View File

@@ -31,16 +31,14 @@ use Symfony\Component\Config\Definition\Exception\Exception;
class BoardMapper extends DeckMapper implements IPermissionMapper {
private $labelMapper;
private $_relationMappers = array();
private $aclMapper;
private $stackMapper;
public function addRelationMapper($name, $mapper) {
$this->_relationMappers[$name] = $mapper;
}
public function __construct(IDb $db, LabelMapper $labelMapper, AclMapper $aclMapper) {
public function __construct(IDb $db, LabelMapper $labelMapper, AclMapper $aclMapper, StackMapper $stackMapper) {
parent::__construct($db, 'deck_boards', '\OCA\Deck\Db\Board');
$this->labelMapper = $labelMapper;
$this->aclMapper = $aclMapper;
$this->stackMapper = $stackMapper;
}
@@ -113,7 +111,23 @@ class BoardMapper extends DeckMapper implements IPermissionMapper {
}
public function delete(\OCP\AppFramework\Db\Entity $entity) {
//$this->deleteRelationalEntities('label', $entity);
// delete acl
$acl = $this->aclMapper->findAll($entity->getId());
foreach ($acl as $item) {
$this->aclMapper->delete($item);
}
// delete stacks ( includes cards, assigned labels)
$stacks = $this->stackMapper->findAll($entity->getId());
foreach ($stacks as $stack) {
$this->stackMapper->delete($stack);
}
// delete labels
$labels = $this->labelMapper->findAll($entity->getId());
foreach ($labels as $label) {
$this->labelMapper->delete($label);
}
return parent::delete($entity);
}