*/
require_once "setup.php";
$menu = $_GET["menu"];
$artistfirst = $_GET["artistfirst"];
if ($artistfirst == "newest") {
    $SelectStmtAlbum = "SELECT * FROM Album order by MusicTime DESC Limit 50";
} elseif ($artistfirst != "*") {
    $SelectStmtAlbum = "SELECT * FROM Album WHERE RootMenuNo == :q1 and ArtistFirst == :q2 order by SortArtist, Date, Album";
} else {
    $SelectStmtAlbum = "SELECT * FROM Album WHERE RootMenuNo == :q1 order by SortArtist, Date, Album";
}
$db = new SQLite3($DATABASE_FILENAME);
$stmtAlbum = $db->prepare($SelectStmtAlbum);
if ($artistfirst != "newest") {
    $stmtAlbum->bindValue(":q1", $menu);
    if ($artistfirst != "*") {
        $stmtAlbum->bindValue(":q2", $artistfirst);
    }
}
$resultAlbum = $stmtAlbum->execute();
$R = array();
$i = 0;
// fetchArray(SQLITE3_NUM | SQLITE_ASSOC | SQLITE_BOTH) - default both
while ($row = $resultAlbum->fetchArray(SQLITE3_ASSOC)) {
    $R[$i] = AbsoluteURL($row);
    $i++;
}
$stmtAlbum->close();
$db->close();
//print_r($R);
echo json_encode($R);
Beispiel #2
0
 function image_properties()
 {
     global $WikiTheme;
     $img_url = AbsoluteURL($WikiTheme->getImageURL('logo'));
     if (!$img_url) {
         return false;
     }
     return array('title' => WIKI_NAME, 'link' => WikiURL(HOME_PAGE, false, 'absurl'), 'url' => $img_url);
 }
Beispiel #3
0
function DataURL($url)
{
    if (preg_match('/^https?:/', $url)) {
        return $url;
    }
    $url = NormalizeWebFileName($url);
    if (DEBUG and $GLOBALS['request']->getArg('start_debug') and substr($url, -4, 4) == '.php') {
        $url .= "?start_debug=1";
    }
    // XMLRPC and SOAP debugging helper.
    return AbsoluteURL($url);
}
Beispiel #4
0
/**
 *  Does an http-1.1-compliant redirection to an absolute or relative url.
 *
 * @param string $url
 * @return void        Calls exit to end PHP processing.
 */
function Redirect($url)
{
    $absoluteURL = MakeURLPretty(AbsoluteURL($url));
    if (headers_sent()) {
        // Right, can't just spit out a Location: header, last-ditch effort:
        // Spit out JavaScript code to do a redirect...
        //    echo "<SCRIPT>location.href=\"$absoluteURL\"</SCRIPT>";
        echo "<br>Would like to Redirect to: ";
        echo '<a href="' . $absoluteURL . '">';
        echo $absoluteURL;
        echo "</a>";
    } else {
        header("Location: {$absoluteURL}");
    }
    exit;
}
function PrepareXML($xml)
{
    $xml = AbsoluteURL($xml);
    // late binding of http server
    $xml = htmlspecialchars(str_replace(array("\n", "\r"), '', $xml));
    $xml = str_replace("&amp;#", "&#", $xml);
    // e.g. danish "å" is transcoded from "&#E5;" to "&amp;#E5;" so we convert back
    return $xml;
}
function createPaymentRequest($params, &$formErrors)
{
    $memcache = new Memcache();
    $memcache->connect('localhost', 11211) or die("Could not connect to memcache");
    // $params contains:
    // merchant / address123 / amount123 / time / expires / memo
    // payment_url / ACK_message
    $codec = new \DrSlump\Protobuf\Codec\Binary();
    $details = new \payments\PaymentDetails();
    $details->setTime(time() + (int) $params['time']);
    if ($params['expires'] != "never") {
        $details->setExpires(time() + (int) $params['expires']);
    }
    setField($params, 'memo', array($details, 'setMemo'));
    $testnet = false;
    $totalAmount = 0;
    $nAddresses = 0;
    for ($i = 1; $i <= 3; $i++) {
        $field = "address" . $i;
        if (!empty($params[$field])) {
            $output = new \payments\Output();
            $r = address_to_script($params[$field]);
            if ($r === false) {
                $script = pubkeys_to_script($params[$field]);
                if ($script === false) {
                    $formErrors[$field] = "Invalid address/pubkey";
                    continue;
                }
                $r = array(true, $script);
            }
            $testnet = $r[0];
            $output->setScript($r[1]);
            $output->setAmount($params["amount" . $i] * 100000000.0);
            $totalAmount += $params["amount" . $i];
            $nAddresses += 1;
            $details->addOutputs($output);
            // Testnet only, we don't want anybody to be able to create
            // real-money payment requests
            // from bitcoincore.org/gavinandresen@gmail.com:
            if (!$testnet && $params['merchant'] != "None") {
                $formErrors[$field] = "Testnet-only addresses, please";
                return NULL;
            }
        }
    }
    if ($testnet) {
        $details->setNetwork("test");
    }
    if (isset($params['payment_url'])) {
        /* Generate a unique id for this request: */
        $id = uniqid(mySecret($memcache));
        /* ... store it in merchant data: */
        $details->setMerchantData($id);
        $ackURL = AbsoluteURL('') . "payACK.php";
        $details->setPaymentUrl($ackURL);
        if (isset($params['ACK_message'])) {
            $memcache->set($id, $params['ACK_message'], 0, 60 * 60 * 24);
        } else {
            $memcache->set($id, '', 0, 60 * 60 * 24);
        }
    }
    $paymentRequest = new \payments\PaymentRequest();
    $serialized = $details->serialize($codec);
    $paymentRequest->setSerializedPaymentDetails($serialized);
    // Signed?
    if ($params['merchant'] != "None") {
        $certK = $params['merchant'] . "certificate";
        $keyK = $params['merchant'] . "key";
        $certChain = new \payments\X509Certificates();
        $cachedCertChain = $memcache->get($certK);
        if ($cachedCertChain === FALSE) {
            $leafCert = file_get_contents("/home/gavin/.certs/" . $params['merchant'] . ".crt");
            $certs = fetch_chain($leafCert);
            foreach ($certs as $cert) {
                $certChain->addCertificate($cert);
            }
            $cachedCertChain = $certChain->serialize($codec);
            $memcache->set($certK, $cachedCertChain);
        } else {
            $certChain->parse($cachedCertChain);
        }
        $paymentRequest->setPkiType("x509+sha1");
        $paymentRequest->setPkiData($certChain->serialize($codec));
        $priv_key = file_get_contents("/home/gavin/.certs/" . $params['merchant'] . ".key");
        $pkeyid = openssl_get_privatekey($priv_key);
        $paymentRequest->setSignature("");
        $dataToSign = $paymentRequest->serialize($codec);
        $signature = "";
        $result = openssl_sign($dataToSign, $signature, $pkeyid, OPENSSL_ALGO_SHA1);
        if ($signature === FALSE) {
            return "ERROR: signing failed.\n";
        }
        $paymentRequest->setSignature($signature);
    }
    $data = $paymentRequest->serialize($codec);
    if (isset($params['produce_uri'])) {
        $urlParams = array();
        $hash = hash('ripemd128', $data);
        $memcache->set($hash, $data, FALSE, 60 * 60 * 24);
        /* cache for 24 hours */
        // f.php is fetch payment request from memcache:
        $urlParams['r'] = AbsoluteURL('') . "f.php?h=" . $hash;
        if ($nAddresses == 1 && $totalAmount > 0) {
            $urlParams['amount'] = $totalAmount;
        }
        if ($nAddresses == 1) {
            $url = AddArgsToURL("bitcoin:" . $params["address1"], $urlParams);
        } else {
            $url = AddArgsToURL("bitcoin:", $urlParams);
        }
        return MakeAnchor("CLICK TO PAY", $url);
    }
    header('Content-Type: application/bitcoin-paymentrequest');
    $filename = "r" . (string) time() . ".bitcoinpaymentrequest";
    header('Content-Disposition: inline; filename=' . $filename);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . (string) strlen($data));
    echo $data;
    exit(0);
}
    $Queue[0][MaxLinnId] = $row[MaxLinnId];
}
$Stmt->close();
$Stmt = $db->prepare("SELECT * FROM State");
$result = $Stmt->execute();
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
    $Queue[0][$row[Id]] = $row[Value];
}
$Stmt->close();
if ($RevNo == -1 || $Queue[0][RevNo] != $RevNo) {
    $QueueStmt = $db->prepare("SELECT S.Seq-L.Seq AS PlayState, Q.LinnId AS LinnId, S.Seq AS Seq, T.* FROM Queue Q, Sequence S, Tracks T, (SELECT S2.Seq FROM Sequence S2, (SELECT ST.value FROM State ST where ST.Id == 'LinnId') L2 WHERE S2.LinnId == L2.value) L WHERE Q.LinnId == S.LinnId AND Q.Preset == T.Preset AND Q.TrackSeq == T.TrackSeq ORDER BY S.Seq");
    $result = $QueueStmt->execute();
    $QueueCount = 1;
    while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
        if ($row[PlayState] < 0) {
            $row[PlayState] = "Played";
        } else {
            if ($row[PlayState] > 0) {
                $row[PlayState] = "Pending";
            } else {
                $row[PlayState] = "Playing";
            }
        }
        $Queue[$QueueCount] = AbsoluteURL($row);
        $QueueCount++;
    }
    $QueueStmt->close();
}
$db->close();
//print_r($Queue);
echo json_encode($Queue);