diff --git a/Localisation/en-GB.yaml b/Localisation/en-GB.yaml
index ac2f575..04cd07a 100644
--- a/Localisation/en-GB.yaml
+++ b/Localisation/en-GB.yaml
@@ -133,6 +133,7 @@ Password: Password
##################################################
# S
##################################################
+Sets this tune is in: Sets this tune is in
Suggest another: Suggest another
Summary: Summary
diff --git a/Pages/tune-set/uuid.php b/Pages/tune-set/uuid.php
new file mode 100644
index 0000000..1787c76
--- /dev/null
+++ b/Pages/tune-set/uuid.php
@@ -0,0 +1,48 @@
+RunOneSelect(
+ queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE(
+ table: 'TuneSets',
+ id: $_GET["tune-set-id"]
+ )
+);
+
+$tunesInSet = $db->RunSelect(
+ queryBuilder: SQLQueryBuilderWrapper::SELECT(
+ table: 'TuneSetTunes'
+ )
+ ->cols(cols: [
+ 'T_T.ID AS TuneID',
+ 'T_T.CreatedAt AS TuneCreatedAT',
+ 'T_T.CreatedBy AS TuneCreatedBy',
+ 'T_T.Title AS TuneTitle',
+ 'T_T.Copyright AS TuneCopyright',
+ ])
+ ->join(
+ join: 'INNER',
+ spec: 'Tunes AS T_T',
+ cond: 'T.TuneID=T_T.ID',
+ )
+ ->orderBy(spec: [
+ 'T.Order ASC',
+ ])
+);
+
+TwigWrapper::RenderTwig(
+ target: "Pages/tune-set/uuid.html.twig",
+ arguments: [
+ "TuneSetDetails"=>$tuneSetDetails,
+ "TunesInSet"=>$tunesInSet,
+ ]
+);
diff --git a/Pages/tune/uuid.php b/Pages/tune/uuid.php
index 427eba0..7560278 100644
--- a/Pages/tune/uuid.php
+++ b/Pages/tune/uuid.php
@@ -26,54 +26,26 @@ $tuneDetails = $db->RunOneSelect(
)
);
-
-
-$dances = $db->RunSelect(
+$setsThisTuneIsIn = $db->RunSelect(
queryBuilder: SQLQueryBuilderWrapper::SELECT(
- table: 'Dances',
+ table: 'TuneSetTunes'
)
->cols(cols: [
- "CONCAT('[', GROUP_CONCAT(
- CONCAT(
- '{\"ID\":', JSON_QUOTE(T_DS.ID), ',',
- '\"CreatedAt\":', JSON_QUOTE(T_DS.CreatedAt), ',',
- '\"DanceID\":', JSON_QUOTE(T_DS.DanceID), ',',
- '\"BarCountAtStart\":', T_DS.BarCountAtStart, ',',
- '\"BarCountAtEnd\":', T_DS.BarCountAtEnd, ',',
- '\"Description\":', JSON_QUOTE(T_DS.Description), '}'
- )
- ), ']') AS Steps"
+ 'T_TS.ID AS TuneSetID',
+ 'T_TS.Description AS TuneSetName',
])
->join(
join: 'INNER',
- spec: 'DanceSteps AS T_DS',
- cond: 'T.ID=T_DS.DanceID'
+ spec: 'TuneSets AS T_TS',
+ cond: 'T.TuneSetID=T_TS.ID',
)
- ->join(
- join: 'INNER',
- spec: '_Junction_Tunes_Dances AS _J_T_D',
- cond: 'T.ID=_J_T_D.DanceID'
- )
- ->where(cond: '_J_T_D.TuneID=:__tune_id__')
+ ->where(cond: 'T.TuneID LIKE :__tune_id__')
->bindValue(name: '__tune_id__', value: $_GET["tune-id"])
->groupBy(spec: [
- 'T.ID',
- 'T.CreatedAt',
- 'T.Title',
- '_J_T_D.ID',
- '_J_T_D.CreatedAt',
- '_J_T_D.TuneID',
- '_J_T_D.DanceID',
+ 'T.TuneSetID',
])
);
-for ($i = 0; $i < count($dances); $i++)
- $dances[$i]['Steps'] = json_decode(
- $dances[$i]['Steps'],
- true,
- JSON_THROW_ON_ERROR
- );
-
$myVote = 0;
if(SessionWrapper::Get(SessionElement::IS_LOGGED_IN))
{
@@ -102,7 +74,7 @@ TwigWrapper::RenderTwig(
target: "Pages/tune/uuid.html.twig",
arguments: [
"TuneDetails"=>$tuneDetails,
- "Dances"=>$dances,
+ "SetsThisTuneIsIn" => $setsThisTuneIsIn,
"MyVote"=>$myVote,
]
);
diff --git a/Routing/Router.php b/Routing/Router.php
index 3ee6425..ccc6dcc 100644
--- a/Routing/Router.php
+++ b/Routing/Router.php
@@ -57,10 +57,20 @@ if ($requestElements[0] === "tune" && isset($requestElements[1]))
require_once __DIR__ . '/../Pages/tune/uuid.php';
return true;
}
+}
+elseif ($requestElements[0] === "tune-set" && isset($requestElements[1]))
+{
+ $_GET['tune-set-id'] = $requestElements[1];
+
+ if (count($requestElements) === 2)
+ {
+ require_once __DIR__ . '/../Pages/tune-set/uuid.php';
+ return true;
+ }
$tuneSubRoutes = [
- "suggest-variant" => '/../Pages/tune/uuid/suggest-variant.php',
- "suggest-dance" => '/../Pages/tune/uuid/suggest-dance.php',
+ "suggest-variant" => '/../Pages/tune-set/uuid/suggest-variant.php',
+ "suggest-dance" => '/../Pages/tune-set/uuid/suggest-dance.php',
];
if (isset($tuneSubRoutes[$requestElements[2]])) {
diff --git a/Templates/Pages/profile.html.twig b/Templates/Pages/profile.html.twig
index b0e2ed8..b9da783 100644
--- a/Templates/Pages/profile.html.twig
+++ b/Templates/Pages/profile.html.twig
@@ -20,6 +20,8 @@
+
+
@@ -46,6 +48,61 @@
+
+
{{ "My Tune Sets"|translate }}
+
+
+
+ {{ "Title"|translate }} |
+ {{ "Created At"|translate }} |
+ {{ "Tunes In Set"|translate }} |
+
+
+
+ {% for tuneSetDetails in YourTuneSets %}
+
+ {{ tuneSetDetails.Description }} |
+ {{ tuneSetDetails.CreatedAt }} |
+
+
+
+ {% for tuneDetails in tuneSetDetails.TunesInSet %}
+
+ {{ tuneDetails.Title }} |
+ {{ tuneDetails.TimesThrough }} |
+
+ {% endfor %}
+
+
+ |
+
+ {% endfor %}
+
+
+
+
+
+
{{ "My Bookmarked Tunes"|translate }}
+
+
+
+ {{ "Title"|translate }} |
+ {{ "Created At"|translate }} |
+ {{ "Copyright"|translate }} |
+
+
+
+ {% for tuneDetails in YourBookmarkedTunes %}
+
+ {{ tuneDetails.Title }} |
+ {{ tuneDetails.CreatedAt }} |
+ {{ tuneDetails.Copyright }} |
+
+ {% endfor %}
+
+
+
+
{{ "My Liked Tunes"|translate }}
diff --git a/Templates/Pages/tune-set/uuid.html.twig b/Templates/Pages/tune-set/uuid.html.twig
new file mode 100644
index 0000000..5ff6c10
--- /dev/null
+++ b/Templates/Pages/tune-set/uuid.html.twig
@@ -0,0 +1,117 @@
+{% extends "/Bases/StandardWebPage.html.twig" %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ "Tune Set Overview"|translate }}
+
+ - {{ "Description"|translate }}
+ - {{ TuneSetDetails.Description }}
+
+
+
+
{{ "Rating"|translate }}
+
+ {% if _SESSION_.IS_LOGGED_IN %}
+
+
+ {% else %}
+ {{ "Log in to vote"|translate }}
+ {% endif %}
+
+
+ |
+ 👎 {{ TuneSetDetails.Dislikes }}
+ |
+ 👍 {{ TuneSetDetails.Likes }}
+ |
+ ⭐ {{ TuneSetDetails.Bookmarks }}
+ |
+
+
+
+
+
+ {% for tune in TunesInSet %}
+
+ {% endfor %}
+
+
+
+
{{ "Audio"|translate }}
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/Templates/Pages/tune/uuid.html.twig b/Templates/Pages/tune/uuid.html.twig
index 4781652..ccfdf0b 100644
--- a/Templates/Pages/tune/uuid.html.twig
+++ b/Templates/Pages/tune/uuid.html.twig
@@ -82,6 +82,16 @@
{{ "Audio"|translate }}
+
+
{{ "Sets this tune is in"|translate }}
+
+