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); } }
function getChildPids($pid) { $pid = trim($pid); doPrint("getChildPids(" . $pid . ")"); if (empty($pid) or !is_numeric($pid)) { return array(); } $pids = array(); $return = array(); exec("ps -eo pid,ppid | grep " . $pid, $pids); foreach ($pids as $pidStr) { $pidStr = trim($pidStr); list($cpid, $egal) = preg_split("/\\s+/", $pidStr, 2); $cpid = trim($cpid); if ($cpid == $pid) { continue; } if (empty($cpid)) { continue; } $return = array_merge(array($cpid), getChildPids($cpid)); } return $return; }