/** * После физического удаления сообщения методом deleteMsg вызывается данный метод для попытки удалить предка. * Если сам предок удалён и у него нет не удалённых потомков, то предок также будет удалён физически. * * @param DiscussionMsg $msg - сообщение, удалённое физически */ private function tryCleanParentOf(DiscussionMsg $msg) { if ($msg->isRoot()) { return; //--- } if ($this->hasChilds($msg->getParentId())) { return; //--- } $parent = $this->getMsgById($msg->getParentId()); if (!$parent->isDeleted()) { return; //--- } $this->update("delete from {$this->table} where {$this->idColumn}=?", $parent->getId()); $this->tryCleanParentOf($parent); }