From 2739b2b5da72c8f64a32c9c944729ad8844dda91 Mon Sep 17 00:00:00 2001 From: Cerys Date: Tue, 28 Jan 2025 13:48:20 +0000 Subject: [PATCH] site reorganisation --- Pages/dances.php | 10 ++ Pages/index.php | 8 +- Pages/profile.php | 49 ++++++++-- Pages/tune-sets.php | 10 ++ Pages/tunes.php | 10 ++ Routing/Router.php | 92 +++++++++++-------- Templates/Bases/StandardWebPage.html.twig | 11 +-- Templates/Pages/dances.html.twig | 7 ++ Templates/Pages/tune-sets.html.twig | 7 ++ .../{index.html.twig => tunes.html.twig} | 0 10 files changed, 150 insertions(+), 54 deletions(-) create mode 100644 Pages/dances.php create mode 100644 Pages/tune-sets.php create mode 100644 Pages/tunes.php create mode 100644 Templates/Pages/dances.html.twig create mode 100644 Templates/Pages/tune-sets.html.twig rename Templates/Pages/{index.html.twig => tunes.html.twig} (100%) 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 @@
diff --git a/Templates/Pages/dances.html.twig b/Templates/Pages/dances.html.twig new file mode 100644 index 0000000..5a8443b --- /dev/null +++ b/Templates/Pages/dances.html.twig @@ -0,0 +1,7 @@ +{% extends "/Bases/StandardWebPage.html.twig" %} + +{% block content %} +
+

Dance Search

+
+{% endblock %} \ No newline at end of file diff --git a/Templates/Pages/tune-sets.html.twig b/Templates/Pages/tune-sets.html.twig new file mode 100644 index 0000000..1085d68 --- /dev/null +++ b/Templates/Pages/tune-sets.html.twig @@ -0,0 +1,7 @@ +{% extends "/Bases/StandardWebPage.html.twig" %} + +{% block content %} +
+

Folk Tune Set Search

+
+{% endblock %} \ No newline at end of file diff --git a/Templates/Pages/index.html.twig b/Templates/Pages/tunes.html.twig similarity index 100% rename from Templates/Pages/index.html.twig rename to Templates/Pages/tunes.html.twig