diff --git a/Pages/dances.php b/Pages/dances.php new file mode 100644 index 0000000..be37870 --- /dev/null +++ b/Pages/dances.php @@ -0,0 +1,10 @@ +RunSelect( - queryBuilder: \App\Wrappers\SQLQueryBuilderWrapper::SELECT( + queryBuilder: SQLQueryBuilderWrapper::SELECT( table: 'Tunes' ) - ->where(cond: 'T.CreatedBy LIKE :__user_id__') - ->bindValue(name: '__user_id__', value: SessionWrapper::Get(target: SessionElement::USER_ID)) + ->where(cond: 'T.CreatedBy LIKE :__user_id__') + ->bindValue(name: '__user_id__', value: SessionWrapper::Get(target: SessionElement::USER_ID)) +); + +$yourTuneSets = $db->RunSelect( + queryBuilder: SQLQueryBuilderWrapper::SELECT( + table: 'TuneSets' + ) + ->cols(cols: [ + "CONCAT('[', + GROUP_CONCAT( + CONCAT( + '{\"ID\":', JSON_QUOTE(IFNULL(T_T.ID, '')), ',', + '\"CreatedAt\":', JSON_QUOTE(IFNULL(T_TST.CreatedAt, '')), ',', + '\"Title\":', JSON_QUOTE(IFNULL(T_T.Title, '')), ',', + '\"TimesThrough\":', IFNULL(T_TST.TimesThrough, 0), '}' + ) + ), + ']' + ) AS TunesInSet" + ]) + ->join( + join: 'LEFT', + spec: 'TuneSetTunes AS T_TST', + cond: 'T.ID=T_TST.TuneSetID' + ) + ->join( + join: 'LEFT', + spec: 'Tunes AS T_T', + cond: 'T_TST.TuneID=T_T.ID' + ) + ->where(cond: 'T.CreatedBy LIKE :__user_id__') + ->bindValue(name: '__user_id__', value: SessionWrapper::Get(target: SessionElement::USER_ID)) ); +for($i = 0; $i < sizeof($yourTuneSets); $i++) + $yourTuneSets[$i]["TunesInSet"] = json_decode($yourTuneSets[$i]["TunesInSet"], true); + $yourLikedTunes = $db->RunSelect( - queryBuilder: \App\Wrappers\SQLQueryBuilderWrapper::SELECT( + queryBuilder: SQLQueryBuilderWrapper::SELECT( table: 'TuneRatings' ) ->cols(cols: [ @@ -38,7 +73,7 @@ $yourLikedTunes = $db->RunSelect( ); $yourDislikedTunes = $db->RunSelect( - queryBuilder: \App\Wrappers\SQLQueryBuilderWrapper::SELECT( + queryBuilder: SQLQueryBuilderWrapper::SELECT( table: 'TuneRatings' ) ->cols(cols: [ @@ -60,9 +95,11 @@ TwigWrapper::RenderTwig( target: "Pages/profile.html.twig", arguments: [ "YourTunes" => $yourTunes, - "YourDances" => [], + "YourTuneSets"=> $yourTuneSets, "YourLikedTunes"=> $yourLikedTunes, "YourDislikedTunes"=> $yourDislikedTunes, "YourBookmarkedTunes"=> [], + + "YourDances" => [], ], ); diff --git a/Pages/tune-sets.php b/Pages/tune-sets.php new file mode 100644 index 0000000..9ec6b62 --- /dev/null +++ b/Pages/tune-sets.php @@ -0,0 +1,10 @@ + '/../Pages/index.php', + + "login" => '/../Pages/login.php', + "logout" => '/../Pages/logout.php', + "change-password" => '/../Pages/change-password.php', + "profile" => '/../Pages/profile.php', + + "tunes" => '/../Pages/tunes.php', + "tune-sets" => '/../Pages/tune-sets.php', + + "dances" => '/../Pages/dances.php', +]; + +// Handle static and API routes +$excludedRoutes = [ + "favicon.ico", + "Static", + "API", + "FormHandling", +]; +if (in_array($requestElements[0], $excludedRoutes)) { - case "favicon.ico": - case "Static": - case "API": - case "FormHandling": - default: - return false; - case "": - require_once __DIR__ . '/../Pages/index.php'; - return true; - case "login": - require_once __DIR__ . '/../Pages/login.php'; - return true; - case "logout": - require_once __DIR__ . '/../Pages/logout.php'; - return true; - case "change-password": - require_once __DIR__ . '/../Pages/change-password.php'; + return false; +} + +// Route handling for top-level pages +if (isset($routes[$requestElements[0]])) +{ + require_once __DIR__ . $routes[$requestElements[0]]; + return true; +} + +// Route handling for tune-related pages +if ($requestElements[0] === "tune" && isset($requestElements[1])) +{ + $_GET['tune-id'] = $requestElements[1]; + + if (count($requestElements) === 2) + { + require_once __DIR__ . '/../Pages/tune/uuid.php'; return true; - case "profile": - require_once __DIR__ . '/../Pages/profile.php'; + } + + $tuneSubRoutes = [ + "suggest-variant" => '/../Pages/tune/uuid/suggest-variant.php', + "suggest-dance" => '/../Pages/tune/uuid/suggest-dance.php', + ]; + + if (isset($tuneSubRoutes[$requestElements[2]])) { + require_once __DIR__ . $tuneSubRoutes[$requestElements[2]]; return true; - case "tune": - $_GET['tune-id'] = $requestElements[1]; - if(sizeof($requestElements) == 2) - { - require_once __DIR__ . '/../Pages/tune/uuid.php'; - return true; - } - switch($requestElements[2]) - { - case "suggest-variant": - require_once __DIR__ . '/../Pages/tune/uuid/suggest-variant.php'; - return true; - case "suggest-dance": - require_once __DIR__ . '/../Pages/tune/uuid/suggest-dance.php'; - return true; - } + } } + +// Default: route not found +http_response_code(404); +echo "404 Not Found"; +return false; diff --git a/Templates/Bases/StandardWebPage.html.twig b/Templates/Bases/StandardWebPage.html.twig index d19866d..2dc360d 100644 --- a/Templates/Bases/StandardWebPage.html.twig +++ b/Templates/Bases/StandardWebPage.html.twig @@ -27,14 +27,13 @@