function getTorrents() { $auth = $this->config["bittorrent"]["user"] . ":" . $this->config["bittorrent"]["user"]; $result = BittorrentBo::sendCommand("transmission-remote --auth {$auth} -l"); $result = preg_split("/\n/", $result); $torrents = array(); foreach ($result as $index => $line) { $data = preg_split("/[\\s]+/", trim($line)); if (!is_numeric($data[0])) { continue; } // print_r($data); $torrent = array(); // ID Done Have ETA Up Down Ratio Status Name $state = "id"; for ($index = 0; $index < count($data); $index++) { $torrent[$state] = $data[$index]; switch ($state) { case "id": $state = "done"; break; case "done": $state = "have"; break; case "have": if ($torrent["have"] != "None") { $index++; $unit = $data[$index]; $torrent["have_unit"] = $unit; } $state = "eta"; break; case "eta": if ($torrent["eta"] != "Done" && $torrent["eta"] != "Unknown") { $index++; $unit = $data[$index]; $torrent["eta_unit"] = $unit; } $state = "up"; break; case "up": $state = "down"; break; case "down": $state = "ratio"; break; case "ratio": $state = "status"; break; case "status": $state = "name"; break; } } $torrent["up"] *= 1024; $torrent["down"] *= 1024; $torrents[] = $torrent; } return $torrents; }