コード例 #1
0
ファイル: webmp3.php プロジェクト: sni/webmp3
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);
    }
}
コード例 #2
0
ファイル: common.php プロジェクト: sni/webmp3
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;
}