コード例 #1
0
ファイル: DoTracks.php プロジェクト: pldin601/HomeMusic
 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;
     });
 }
コード例 #2
0
ファイル: DoArtists.php プロジェクト: pldin601/HomeMusic
 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;
     });
 }
コード例 #3
0
 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;
     });
 }
コード例 #4
0
ファイル: Song.php プロジェクト: pldin601/HomeMusic
 /**
  * @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;
 }
コード例 #5
0
ファイル: gb.php プロジェクト: jask0/hh_gbook
 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;
     }
 }
コード例 #6
0
ファイル: Track.php プロジェクト: pldin601/HomeMusic
 /**
  * @return string
  */
 public function getGenreUrl()
 {
     if (is_null($this->track_genre)) {
         return null;
     }
     return "genre/" . escape_url($this->track_genre);
 }
コード例 #7
0
/**
 * 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;
}