Browse Source

site reorganisation

master
Cerys 4 weeks ago
parent
commit
2739b2b5da
  1. 10
      Pages/dances.php
  2. 8
      Pages/index.php
  3. 49
      Pages/profile.php
  4. 10
      Pages/tune-sets.php
  5. 10
      Pages/tunes.php
  6. 92
      Routing/Router.php
  7. 11
      Templates/Bases/StandardWebPage.html.twig
  8. 7
      Templates/Pages/dances.html.twig
  9. 7
      Templates/Pages/tune-sets.html.twig
  10. 0
      Templates/Pages/tunes.html.twig

10
Pages/dances.php

@ -0,0 +1,10 @@
<?php
use App\Wrappers\TwigWrapper;
require_once __DIR__ . "/../vendor/autoload.php";
TwigWrapper::RenderTwig(
target: 'Pages/dances.html.twig',
arguments: [],
);

8
Pages/index.php

@ -1,8 +1,4 @@
<?php
use App\Wrappers\TwigWrapper;
require_once __DIR__ . "/../vendor/autoload.php";
TwigWrapper::AutoRenderTwig([
]);
header("Location: /tunes");
die();

49
Pages/profile.php

@ -3,6 +3,7 @@
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";
@ -11,15 +12,49 @@ require_once __DIR__ . "/../vendor/autoload.php";
$db = new DatabaseInteractions();
$yourTunes = $db->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" => [],
],
);

10
Pages/tune-sets.php

@ -0,0 +1,10 @@
<?php
use App\Wrappers\TwigWrapper;
require_once __DIR__ . "/../vendor/autoload.php";
TwigWrapper::RenderTwig(
target: 'Pages/tune-sets.html.twig',
arguments: [],
);

10
Pages/tunes.php

@ -0,0 +1,10 @@
<?php
use App\Wrappers\TwigWrapper;
require_once __DIR__ . "/../vendor/autoload.php";
TwigWrapper::RenderTwig(
target: 'Pages/tunes.html.twig',
arguments: [],
);

92
Routing/Router.php

@ -13,43 +13,63 @@ SessionWrapper::Start();
$requestUri = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
$requestElements = explode("/", trim($requestUri, "/"));
switch($requestElements[0])
// Define routing map
$routes = [
"" => '/../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;

11
Templates/Bases/StandardWebPage.html.twig

@ -27,14 +27,13 @@
<div class="main_container">
<nav>
<ul>
<li><a href="/">Home</a></li>
<li>
<input type="text" placeholder="Search for tunes...">
</li>
<li><a href="/tunes" {% if _CURRENT_PAGE_ == '/tunes' %}class="active"{% endif %}>Tunes</a></li>
<li><a href="/tune-sets" {% if _CURRENT_PAGE_ == '/tune-sets' %}class="active"{% endif %}>Tune Sets</a></li>
<li><a href="/dances" {% if _CURRENT_PAGE_ == '/dances' %}class="active"{% endif %}>Dances</a></li>
{% if _SESSION_.IS_LOGGED_IN %}
<li style="float:right"><a class="active" href="/profile">My Account</a></li>
<li style="float:right"><a href="/profile" {% if _CURRENT_PAGE_ == '/profile' %}class="active"{% endif %}>My Account</a></li>
{% else %}
<li style="float:right"><a class="active" href="/login">Login</a></li>
<li style="float:right"><a href="/login" {% if _CURRENT_PAGE_ == '/login' %}class="active"{% endif %}>Login</a></li>
{% endif %}
</ul>
</nav>

7
Templates/Pages/dances.html.twig

@ -0,0 +1,7 @@
{% extends "/Bases/StandardWebPage.html.twig" %}
{% block content %}
<div class="InnerContent">
<h1>Dance Search</h1>
</div>
{% endblock %}

7
Templates/Pages/tune-sets.html.twig

@ -0,0 +1,7 @@
{% extends "/Bases/StandardWebPage.html.twig" %}
{% block content %}
<div class="InnerContent">
<h1>Folk Tune Set Search</h1>
</div>
{% endblock %}

0
Templates/Pages/index.html.twig → Templates/Pages/tunes.html.twig

Loading…
Cancel
Save