function action_default() { global $config; $data = getData(); if (isset($data["ppid"])) { $data = killChild($data); } if (isset($data["curTrack"]) and isset($data["playlist"][$data["curTrack"]])) { $track = $data["playlist"][$data["curTrack"]]; } else { $tmp = $data["playlist"]; $track = array_shift($tmp); $data["curTrack"] = $track["token"]; } doPrint("playing: " . $track["filename"]); # clean up playlist if ($data['partymode'] == 1) { # clean everything up to 3 songs after the current one $x = 0; $num = 0; foreach ($data['playlist'] as $token => $tr) { if ($tr['token'] == $track["token"]) { $num = $x; continue; } $x++; } $num = $num - 3; $num = max(0, $num); for ($x = 0; $x < $num; $x++) { array_shift($data["playlist"]); } } elseif ($data['partymode'] == 2) { # clean everything up to the first song of the cur album $newPlaylist = array(); $found = 0; foreach ($data['playlist'] as $token => $tr) { if ($tr['token'] == $track["token"] or $tr['album'] == $track['album']) { $found = 1; } if ($found == 1) { $newPlaylist[$token] = $tr; } } $data['playlist'] = $newPlaylist; } $data["start"] = time(); $data["length"] = $track["lengths"]; $data["title"] = $track["title"]; $data["artist"] = $track["artist"]; $data["album"] = $track["album"]; $data["track"] = $track["tracknum"]; $data["token"] = $track["token"]; $data["filename"] = $track["filename"]; if (!isset($track["bitrate"])) { $track["bitrate"] = ""; } $data["bitrate"] = $track["bitrate"]; $data["play"] = 1; $data["gmtimestart"] = gmdate("U"); $data["playingPic"] = getPictureForPath(dirname($track["filename"])); if (isset($config["notifyCommand"])) { $tmp = $config["notifyCommand"]; $tmpTrack = $track["tracknum"]; $tmpArtist = $track["artist"]; $tmpTitle = $track["title"]; $tmpArtist = str_replace('\'', '', $tmpArtist); $tmpArtist = str_replace('\\"', '', $tmpArtist); $tmpArtist = str_replace(';', '', $tmpArtist); $tmpTitle = str_replace('\'', '', $tmpTitle); $tmpTitle = str_replace('\\"', '', $tmpTitle); $tmpTitle = str_replace(';', '', $tmpTitle); $tmpTrack = str_replace('\'', '', $tmpTrack); $tmpTrack = str_replace('\\"', '', $tmpTrack); $tmpTrack = str_replace(';', '', $tmpTrack); $tmp = str_replace("%#", $tmpTrack, $tmp); $tmp = str_replace("%T", $tmpTitle, $tmp); $tmp = str_replace("%A", $tmpArtist, $tmp); doPrint("notify: " . $tmp); $output = ""; $rc = 0; exec($tmp, $output, $rc); if ($rc != 0) { doPrint("notify failed: " . join("\n", $output)); } } $data["ppid"] = getmypid(); # most played addFileToHitlist($track["filename"]); if (strpos($track["filename"], "http://") === 0) { doPrint("playing stream"); $options = $config["playStrOpt"]; $playBin = $config["streamBin"]; if (!isset($config["streamUrlPre"])) { $config["streamUrlPre"] = ""; } $track["filename"] = $config["streamUrlPre"] . $track["filename"]; $data["playingStream"] = 1; } else { doPrint("playing normal file"); $tmp = explode(".", $track["filename"]); $ext = "." . array_pop($tmp); if (isset($config["ext"][$ext])) { $playBin = $config["ext"][$ext]["binary"]; $options = $config["ext"][$ext]["option"]; } else { doPrint("Extension {$ext} not supported"); } $data["playingStream"] = 0; } $options[] = $track["filename"]; $data["aktBin"] = $playBin; storeData($data); #$options = array_map("myescapeshellarg", $options); setlocale(LC_CTYPE, "en_US.UTF-8"); $options = array_map("escapeshellarg", $options); $data = brokerPlugin("pre_playing_song", $data); doPrint("executing: " . $playBin . " " . join(" ", $options)); system($playBin . " " . join(" ", $options) . ' >> ' . $config["logfile"] . ' 2>&1'); doPrint("finished playing"); $data = getData(); $data = brokerPlugin("post_playing_song", $data); unset($data["ppid"]); unset($data["start"]); unset($data["length"]); unset($data["title"]); unset($data["track"]); unset($data["artist"]); unset($data["album"]); unset($data["aktBin"]); unset($data["playingPic"]); $lastToken = $track["token"]; $track = ""; storeData($data); if ($data["play"]) { $data["play"] = 0; $track = getNextTrack($data["playlist"], $lastToken); if ($track) { $data["curTrack"] = $track; storeData($data); action_default(); } } }
function action_setToggle() { global $config; if (!isset($_REQUEST['param'])) { print "missing parameter: param!"; return 1; } if (!isset($_REQUEST['button'])) { print "missing parameter: button!"; return 1; } doPrint("got json toggle request ('" . $_REQUEST['button'] . "', '" . $_REQUEST['param'] . "')"); # doPrint($_REQUEST); $param = 1; if ($_REQUEST['param'] == "false") { $param = 0; } $data = getData(); # Repeat if ($_REQUEST['button'] == "Repeat") { $data["repeat"] = $param; print "Set Repeat to: " . $param; storeData($data); } # Play if ($_REQUEST['button'] == "Play") { $data["play"] = 1; $data["pause"] = 0; if (isset($_REQUEST["token"])) { $data = brokerPlugin("user_pressed_next", $data); $data["curTrack"] = $_REQUEST["token"]; $data = killChild($data); } system($config["cliPHPbinary"] . ' play.php >> ' . $config["logfile"] . ' 2>&1 &'); # wait until play.php started up for ($x = 0; $x <= 30; $x++) { usleep(50000); $data = getData(); #doPrint("check: ".$x); if (isset($data['aktBin'])) { $x = 100; } } action_getPlaylist(); } # Stop if ($_REQUEST['button'] == "Stop") { doPrint("pressed stop"); $data = brokerPlugin("user_pressed_stop", $data); killChild(); action_getPlaylist(); } # Pause if ($_REQUEST['button'] == "Pause") { doPrint("pressed pause"); $signal = 17; $data["pause"] = 1; if ($param == "false") { $data["pause"] = 0; $signal = 19; } # get child pids if (isset($data["ppid"])) { $pids = getChildPids($data["ppid"]); foreach ($pids as $pid) { posix_kill($pid, $signal); } if ($data["pause"]) { $data["pauseStart"] = time(); } else { $data["start"] = $data["start"] + (time() - $data["pauseStart"]); unset($data["pauseStart"]); } } storeData($data); } # Mute if ($_REQUEST['button'] == "Mute") { $data["mute"] = $param; $data["quiet"] = 0; doPrint("pressed mute"); $data["origVolume"] = getVolume(); $_REQUEST["vol"] = 0; action_setVolume(); print "mute set to true"; storeData($data); } if ($_REQUEST['button'] == "Unmute") { $data["quiet"] = 0; $data["mute"] = $param; doPrint("pressed unmute"); $_REQUEST["vol"] = $data['origVolume']; unset($data["origVolume"]); action_setVolume(); print "mute set to false"; storeData($data); } # Quiet if ($_REQUEST['button'] == "Quiet") { $data["mute"] = 0; $data["quiet"] = $param; doPrint("pressed quiet"); if ($param) { $data["origVolume"] = getVolume(); $_REQUEST["vol"] = $config["quietVol"]; action_setVolume(); } else { $_REQUEST["vol"] = $data["origVolume"]; unset($data["origVolume"]); action_setVolume(); } print "quiet set to " . $param; storeData($data); } if ($_REQUEST['button'] == "partymode") { $data["partymode"] = $_REQUEST['param']; print "partymode set to " . $_REQUEST['param']; storeData($data); } }