function do_mpd_command($command, $return_array = false, $force_array_results = false) { global $is_connected, $connection, $prefs; $retarr = array(); if ($is_connected) { debuglog("MPD Command " . $command, "MPD", 9); $success = fputs($connection, $command . "\n"); if ($success) { while (!feof($connection)) { $var = parse_mpd_var(fgets($connection, 1024)); if (isset($var)) { if ($var === true && count($retarr) == 0) { // Got an OK or ACK but - no results or return_array is false return true; } if ($var === true) { break; } if ($var[0] == false) { debuglog("Error for '" . $command . "'' : " . $var[1], "MPD", 1); if ($return_array == true) { $retarr['error'] = $var[1]; } else { return false; } break; } if ($return_array == true) { if (array_key_exists($var[0], $retarr)) { if (is_array($retarr[$var[0]])) { array_push($retarr[$var[0]], $var[1]); } else { $tmp = $retarr[$var[0]]; $retarr[$var[0]] = array($tmp, $var[1]); } } else { if ($force_array_results) { $retarr[$var[0]] = array($var[1]); } else { $retarr[$var[0]] = $var[1]; } } } } } } else { if (array_key_exists('player_backend', $prefs)) { $retarr['error'] = "There was an error communicating with " . ucfirst($prefs['player_backend']) . "! (could not write to socket)"; } else { $retarr['error'] = "There was an error communicating with the player! (could not write to socket)"; } } } return $retarr; }
function do_mpd_command_list($conn, $command, $arglist) { fputs($conn, "command_list_begin\n"); foreach ($arglist as $key => $arg) { fputs($conn, $command . " " . $arg . "\n"); } fputs($conn, "command_list_end\n"); while (!feof($conn)) { $var = parse_mpd_var(fgets($conn, 1024)); if (isset($var)) { if ($var === true) { return true; } } } return false; }
<div id="tagfiles"> <?php echo "<h2><a name=\"tagfiles\"></a>Files"; if (array_key_exists("artist", $configuration) || array_key_exists("album", $configuration)) { echo " <small>["; $letters_tagfiles = array(); $tagfiles = array(); $thisfile = ""; fputs($connection, "find " . (array_key_exists("album", $configuration) ? "album \"" . $configuration["album"] : "artist \"" . $configuration["artist"]) . "\"\n"); while (!feof($connection)) { $var = parse_mpd_var(fgets($connection, 1024)); if (isset($var)) { if ($var === true) { break; } if ($var[0] == "file") { $thisfile = $var[1]; $tagfiles[$thisfile] = array("file" => $thisfile); } else { $tagfiles[$thisfile][$var[0]] = $var[1]; } } } foreach ($tagfiles as $key => $val) { if (!isset($letters_tagfiles[strtoupper(mbFirstChar(get_songinfo_first($val, isset($configuration["sort"]) ? $configuration["sort"] : array("file"), 0)))])) { $letters_tagfiles[strtoupper(mbFirstChar(get_songinfo_first($val, isset($configuration["sort"]) ? $configuration["sort"] : array("file"), 0)))] = true; } } make_link("", "playlist", "add all", $arguments = array("command" => "addlist", "arg" => $tagfiles)); echo "] "; if (count($tagfiles) > 0) {
<?php $is_connected = false; $authorized = false; if ($configuration["use_cookies"] == true) { if (isset($configuration["hide"])) { make_config_cookie("playlist_hide", $hide); } } $connection = fsockopen($configuration["mpd_host"], $configuration["mpd_port"], $errno, $errstr, 10); if (isset($connection) && is_resource($connection)) { while (!feof($connection)) { $gt = fgets($connection, 1024); if (parse_mpd_var($gt)) { break; } } if (array_key_exists("action", $_REQUEST) && $_REQUEST["action"] == "Logout") { eat_config_cookie("password"); } else { $pass = array_key_exists("action", $_REQUEST) && $_REQUEST["action"] == "Login" ? $_REQUEST["password"] : (isset($configuration["password"]) ? $configuration["password"] : null); if (isset($pass)) { if (do_mpd_command($connection, "password " . $pass) === true) { $authorized = true; if ($configuration["use_cookies"] == "yes") { make_config_cookie("password", $pass); } } } } if (array_key_exists("command", $_REQUEST)) {