|
|
|
<?php
|
|
|
|
|
|
|
|
use App\Wrappers\DatabaseInteractions;
|
|
|
|
use App\Wrappers\SQLQueryBuilderWrapper;
|
|
|
|
use App\Wrappers\TwigWrapper;
|
|
|
|
|
|
|
|
require_once __DIR__ . "/../../vendor/autoload.php";
|
|
|
|
|
|
|
|
$db = new DatabaseInteractions();
|
|
|
|
|
|
|
|
$tuneDetails = $db->RunOneSelect(
|
|
|
|
queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE(
|
|
|
|
table: 'Tunes',
|
|
|
|
id: $_GET["tune-id"]
|
|
|
|
),
|
|
|
|
);
|
|
|
|
|
|
|
|
$dances = $db->RunSelect(
|
|
|
|
queryBuilder: SQLQueryBuilderWrapper::SELECT(
|
|
|
|
table: 'Dances',
|
|
|
|
)
|
|
|
|
->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"
|
|
|
|
])
|
|
|
|
->join(
|
|
|
|
join: 'INNER',
|
|
|
|
spec: 'DanceSteps AS T_DS',
|
|
|
|
cond: 'T.ID=T_DS.DanceID'
|
|
|
|
)
|
|
|
|
->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__')
|
|
|
|
->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',
|
|
|
|
])
|
|
|
|
);
|
|
|
|
|
|
|
|
for ($i = 0; $i < count($dances); $i++)
|
|
|
|
$dances[$i]['Steps'] = json_decode(
|
|
|
|
$dances[$i]['Steps'],
|
|
|
|
true,
|
|
|
|
JSON_THROW_ON_ERROR
|
|
|
|
);
|
|
|
|
|
|
|
|
TwigWrapper::RenderTwig(
|
|
|
|
target: "Pages/tune/uuid.html.twig",
|
|
|
|
arguments: [
|
|
|
|
"TuneDetails"=>$tuneDetails,
|
|
|
|
"Dances"=>$dances,
|
|
|
|
]
|
|
|
|
);
|
|
|
|
|