You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.1 KiB

<?php
use App\Enumerators\SessionElement;
use App\Wrappers\DatabaseInteractions;
use App\Wrappers\SessionWrapper;
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"]
)
->cols(cols: [
'SUM(CASE WHEN T_TR.Rating = 1 THEN 1 ELSE 0 END) AS Likes',
'SUM(CASE WHEN T_TR.Rating = -1 THEN 1 ELSE 0 END) AS Dislikes',
])
->join(
join: 'LEFT',
spec: 'TuneRatings AS T_TR',
cond: 'T.ID=T_TR.TuneID',
)
);
$setsThisTuneIsIn = $db->RunSelect(
queryBuilder: SQLQueryBuilderWrapper::SELECT(
table: 'TuneSetTunes'
)
->cols(cols: [
'T_TS.ID AS TuneSetID',
'T_TS.Description AS TuneSetName',
])
->join(
join: 'INNER',
spec: 'TuneSets AS T_TS',
cond: 'T.TuneSetID=T_TS.ID',
)
->where(cond: 'T.TuneID LIKE :__tune_id__')
->bindValue(name: '__tune_id__', value: $_GET["tune-id"])
->groupBy(spec: [
'T.TuneSetID',
])
);
$myVote = 0;
if(SessionWrapper::Get(SessionElement::IS_LOGGED_IN))
{
$myVote = $db->RunSelect(
queryBuilder: SQLQueryBuilderWrapper::SELECT(
table: 'TuneRatings',
)
->cols(cols: [
'Rating'
])
->where(cond: 'CreatedBy=:__user_id__')
->where(cond: 'TuneID=:__tune_id__')
->bindValue(name: '__user_id__', value: SessionWrapper::Get(SessionElement::USER_ID))
->bindValue(name: '__tune_id__', value: $_GET["tune-id"])
);
if($myVote == [])
$myVote = 0;
else
{
$myVote = $myVote[0]['Rating'];
}
}
TwigWrapper::RenderTwig(
target: "Pages/tune/uuid.html.twig",
arguments: [
"TuneDetails"=>$tuneDetails,
"SetsThisTuneIsIn" => $setsThisTuneIsIn,
"MyVote"=>$myVote,
]
);