private static function flattenByBlock(Ticket $ticket, array &$flattened) { if (!isset($flattened[$ticket->getId()])) { $flattened[$ticket->getId()] = $ticket; foreach ($ticket->getBlocking() as $blocking) { self::flattenByBlock($blocking, $flattened); } foreach ($ticket->getBlockedBy() as $blockedBy) { self::flattenByBlock($blockedBy, $flattened); } } }
protected function populateDependencies(Model\Ticket $ticket = null, array &$populated = array()) { if ($ticket) { if (!isset($populated[$ticket->getId()])) { $populated[$ticket->getId()] = true; $blocking = array(); foreach ($ticket->getBlocking() as $id) { if (is_scalar($id) && !empty($id)) { $blocking[] = $this->getPopulatedDependenciesById($id, $populated); } } $ticket->setBlocking($blocking); $blockedBy = array(); foreach ($ticket->getBlockedBy() as $id) { if (is_scalar($id) && !empty($id)) { $blockedBy[] = $this->getPopulatedDependenciesById($id, $populated); } } $ticket->setBlockedBy($blockedBy); } } }