Ejemplo n.º 1
0
 public function doGet(Option $q, LoggedIn $me, Option $compilations)
 {
     $filter = $q->reject("");
     $query = (new SelectQuery(TSongs::_NAME))->where(TSongs::USER_ID, $me->getId())->select(TSongs::A_ARTIST)->select(TSongs::T_ALBUM)->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);
     if ($compilations->nonEmpty()) {
         $query->where(TSongs::IS_COMP, $compilations->get());
     }
     Context::contextify($query);
     if ($filter->nonEmpty()) {
         $query->where(TSongs::FTS_ALBUM . " @@ plainto_tsquery(?)", [$filter->get()]);
     }
     $query->addGroupBy(TSongs::A_ARTIST);
     $query->addGroupBy(TSongs::T_ALBUM);
     $query->orderBy(TSongs::T_ALBUM);
     ob_start("ob_gzhandler");
     $query->renderAllAsJson(function ($row) {
         $artist_encoded = escape_url($row["album_artist"]);
         $album_encoded = escape_url($row["track_album"]);
         $row["artist_url"] = "artist/{$artist_encoded}";
         $row["album_url"] = "artist/{$artist_encoded}/{$album_encoded}";
         return $row;
     });
 }