humanizer = $humanizer; } public function buildFileTreeDataArrayFromTorrent( Torrent $torrent, ?string $fileIcon = self::DEFAULT_FILE_ICON, ?string $dirIcon = self::DEFAULT_DIR_ICON ): array { return $this->buildFileTreeDataArray( FileTreeNode::createFromTorrent($torrent), $fileIcon, $dirIcon ); } public function buildFileTreeDataArray( FileTreeNode $node, ?string $fileIcon = self::DEFAULT_FILE_ICON, ?string $dirIcon = self::DEFAULT_DIR_ICON ): array { $data = []; foreach ($node->getChildren() as $name => $child) { $element = [ 'text' => ''.$name.'', ]; if ($child->isDirectory()) { $element['nodes'] = $this->buildFileTreeDataArray($child, $fileIcon, $dirIcon); if ($dirIcon) { $element['icon'] = $dirIcon; } // Adding number of chilren $element['text'] .= ' ['.$child->countChildren().']'; } else { if ($fileIcon) { $element['icon'] = $fileIcon; } // Adding file size. $element['text'] .= ' ('.$this->humanizer->humanize($child->getSize()).')'; } $data[] = $element; } return $data; } }