public function doGet(Option $q, HttpGet $get, LoggedIn $me, Option $compilations) { $artist = $get->get("artist")->map("urldecode"); $album = $get->get("album")->map("urldecode"); $genre = $get->get("genre")->map("urldecode"); $order_field = $get->getOrElse("sort", "auto"); $filter = $q->map("trim")->reject(""); $query = (new SelectQuery(TSongs::_NAME))->where(TSongs::USER_ID, $me->getId())->where(TSongs::FILE_ID . " IS NOT NULL"); $query->select(TSongs::defaultSelection()); if ($compilations->nonEmpty()) { $query->where(TSongs::IS_COMP, $compilations->get()); } Context::contextify($query); if ($artist->nonEmpty()) { $query->where(TSongs::A_ARTIST, $artist->get()); } if ($album->nonEmpty()) { $query->where(TSongs::T_ALBUM, $album->get()); } if ($genre->nonEmpty()) { $query->where(TSongs::T_GENRE, $genre->get()); } if ($filter->nonEmpty()) { if (strpos($filter->get(), ":") !== false) { list($key, $value) = explode(":", $filter->get(), 2); switch ($key) { case "id": $query->where(TSongs::ID, $value); break; } } else { $query->where(TSongs::FTS_ANY . " @@ plainto_tsquery(?)", [$filter->get()]); } } else { switch ($order_field) { case 'upload': $query->orderBy(TSongs::C_DATE . " DESC")->orderBy(TSongs::ID); break; default: $query->orderBy(TSongs::A_ARTIST)->orderBy(TSongs::T_ALBUM)->orderBy(TSongs::DISC)->orderBy(TSongs::T_NUMBER)->orderBy(TSongs::ID); } } ob_start("ob_gzhandler"); $query->renderAllAsJson(function ($row) { $artist_encoded = escape_url($row["album_artist"]); $album_encoded = escape_url($row["track_album"]); $genre_encoded = escape_url($row["track_genre"]); $row["artist_url"] = "artist/{$artist_encoded}"; $row["album_url"] = "artist/{$artist_encoded}/{$album_encoded}"; $row["genre_url"] = "genre/{$genre_encoded}"; return $row; }); }
public function doGet(Option $q, LoggedIn $me) { $filter = $q->map("trim")->reject(""); $query = (new SelectQuery(TSongs::_NAME))->select(TSongs::A_ARTIST)->where(TSongs::USER_ID, $me->getId())->selectAlias("MIN(" . TSongs::C_BIG_ID . ")", TSongs::C_BIG_ID)->selectAlias("MIN(" . TSongs::C_MID_ID . ")", TSongs::C_MID_ID)->selectAlias("MIN(" . TSongs::C_SMALL_ID . ")", TSongs::C_SMALL_ID); $query->where(TSongs::IS_COMP, "0"); Context::contextify($query); if ($filter->nonEmpty()) { $query->where(TSongs::FTS_ARTIST . " @@ plainto_tsquery(?)", [$filter->get()]); } $query->addGroupBy(TSongs::A_ARTIST); $query->orderBy(TSongs::A_ARTIST); ob_start("ob_gzhandler"); $query->renderAllAsJson(function ($row) { $artist_encoded = escape_url($row["album_artist"]); $row["artist_url"] = "artist/{$artist_encoded}"; return $row; }); }
public function doGet(LoggedIn $me, $playlist_id) { $query = (new SelectQuery(TSongs::_NAME))->innerJoin(TPlaylistSongLinks::_NAME, TPlaylistSongLinks::_NAME . "." . TPlaylistSongLinks::SONG_ID, TSongs::_NAME . "." . TSongs::ID)->where(TPlaylistSongLinks::PLAYLIST_ID, $playlist_id)->where(TSongs::USER_ID, $me->getId())->where(TSongs::FILE_ID . " IS NOT NULL")->orderBy(TPlaylistSongLinks::ORDER_ID); $query->select(TSongs::defaultSelection()); $query->select(TPlaylistSongLinks::LINK_ID); $query->select(TPlaylistSongLinks::ORDER_ID); ob_start("ob_gzhandler"); $query->renderAllAsJson(function ($row) use($playlist_id) { $artist_encoded = escape_url($row["album_artist"]); $album_encoded = escape_url($row["track_album"]); $genre_encoded = escape_url($row["track_genre"]); $ror["playlist_id"] = $playlist_id; $row["playlist_url"] = "playlist/{$playlist_id}"; $row["artist_url"] = "artist/{$artist_encoded}"; $row["album_url"] = "artist/{$artist_encoded}/{$album_encoded}"; $row["genre_url"] = "genre/{$genre_encoded}"; return $row; }); }
/** * @return array */ public function jsonSerialize() { $song = $this->track_data; $artist_encoded = escape_url($song["album_artist"]); $album_encoded = escape_url($song["track_album"]); $genre_encoded = escape_url($song["track_genre"]); $song["artist_url"] = "artist/{$artist_encoded}"; $song["album_url"] = "artist/{$artist_encoded}/{$album_encoded}"; $song["genre_url"] = "genre/{$genre_encoded}"; return $song; }
private function sendPost($post) { $form = getFormDefault(); $_POST['info_msg'] = "<p class=\"alert alert-danger\">"; $form['name'] = htmlspecialchars(escape_input($post['name'], $this->getConn(), 2, 20), ENT_NOQUOTES); if (isset($post['email']) && !empty($post['email'])) { $form['email'] = htmlspecialchars(escape_email($post['email'], $this->getConn()), ENT_NOQUOTES); } else { $form['email'] = "###.."; } if (isset($post['homepage']) && !empty($post['homepage'])) { $form['homepage'] = htmlspecialchars(escape_url($post['homepage'], $this->getConn()), ENT_NOQUOTES); } else { $form['homepage'] = "###.."; } if (isset($post['betreff']) && !empty($post['betreff'])) { $form['betreff'] = htmlspecialchars(escape_input($post['betreff'], $this->getConn()), ENT_NOQUOTES); } else { $form['betreff'] = "###.."; } if (isset($post['bild_url']) && !empty($post['bild_url'])) { $form['bild_url'] = htmlspecialchars(escape_url($post['bild_url'], $this->getConn()), ENT_NOQUOTES); } else { $form['bild_url'] = "###.."; } $form['nachricht'] = htmlspecialchars($this->scaleImages($post['nachricht']), ENT_NOQUOTES); $form['nachricht'] = $this->addSmilieBbCode(mysqli_escape_string($this->getConn(), $form['nachricht'])); foreach ($form as $key => $value) { if ($value == FALSE && $key != "public") { $_POST['info_msg'] .= "Ungültige Eingabe in: " . strtoupper($key) . "<br>"; return false; } if ($value == "###..") { $form[$key] = ""; } } if ($this->db->insertInToPosts($form)) { return true; } else { return false; } }
/** * @return string */ public function getGenreUrl() { if (is_null($this->track_genre)) { return null; } return "genre/" . escape_url($this->track_genre); }
/** * Scrape torrent and return stats * * @param $scrape * string: Scrape URL * @param $hash * string: SHA1 hash (info_hash) of torrent * @return * array: * All -1 if failed * - seeds: integer - number of seeders * - leechers: integer - number of leechers * - downloaded: integer - number of complete downloads * */ function torrent_scrape_url($scrape, $hash) { if (function_exists("curl_exec")) { $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $scrape . '?info_hash=' . escape_url($hash)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_HEADER, false); $fp = curl_exec($ch); curl_close($ch); } else { ini_set('default_socket_timeout', 10); $fp = @file_get_contents($scrape . '?info_hash=' . escape_url($hash)); } $ret = array(); if ($fp) { $stats = BDecode($fp); $binhash = pack("H*", $hash); $binhash = addslashes($binhash); $seeds = $stats['files'][$binhash]['complete']; $peers = $stats['files'][$binhash]['incomplete']; $downloaded = $stats['files'][$binhash]['downloaded']; $ret['seeds'] = $seeds; $ret['peers'] = $peers; $ret['downloaded'] = $downloaded; } if ($ret['seeds'] === null) { $ret['seeds'] = -1; $ret['peers'] = -1; $ret['downloaded'] = -1; } return $ret; }