getEventManager()->getListeners() as $event => $listeners) { foreach ($listeners as $hash => $listener) { if ($listener instanceof \Gedmo\Tree\TreeListener) { $treeListener = $listener; break; } } if ($treeListener) { break; } } if (is_null($treeListener)) { throw new \Gedmo\Exception\InvalidMappingException('This repository can be attached only to ORM tree listener'); } $this->listener = $treeListener; if (!$this->validates()) { throw new \Gedmo\Exception\InvalidMappingException('This repository cannot be used for tree type: ' . $treeListener->getStrategy($em, $class->name)->getName()); } } /** * Checks if current repository is right * for currently used tree strategy * * @return bool */ abstract protected function validates(); }