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 <?php
use App\Wrappers\TwigWrapper; header("Location: /tunes");
die();
require_once __DIR__ . "/../vendor/autoload.php";
TwigWrapper::AutoRenderTwig([
]);

49
Pages/profile.php

@ -3,6 +3,7 @@
use App\Enumerators\SessionElement; use App\Enumerators\SessionElement;
use App\Wrappers\DatabaseInteractions; use App\Wrappers\DatabaseInteractions;
use App\Wrappers\SessionWrapper; use App\Wrappers\SessionWrapper;
use App\Wrappers\SQLQueryBuilderWrapper;
use App\Wrappers\TwigWrapper; use App\Wrappers\TwigWrapper;
require_once __DIR__ . "/../vendor/autoload.php"; require_once __DIR__ . "/../vendor/autoload.php";
@ -11,15 +12,49 @@ require_once __DIR__ . "/../vendor/autoload.php";
$db = new DatabaseInteractions(); $db = new DatabaseInteractions();
$yourTunes = $db->RunSelect( $yourTunes = $db->RunSelect(
queryBuilder: \App\Wrappers\SQLQueryBuilderWrapper::SELECT( queryBuilder: SQLQueryBuilderWrapper::SELECT(
table: 'Tunes' table: 'Tunes'
) )
->where(cond: 'T.CreatedBy LIKE :__user_id__') ->where(cond: 'T.CreatedBy LIKE :__user_id__')
->bindValue(name: '__user_id__', value: SessionWrapper::Get(target: SessionElement::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( $yourLikedTunes = $db->RunSelect(
queryBuilder: \App\Wrappers\SQLQueryBuilderWrapper::SELECT( queryBuilder: SQLQueryBuilderWrapper::SELECT(
table: 'TuneRatings' table: 'TuneRatings'
) )
->cols(cols: [ ->cols(cols: [
@ -38,7 +73,7 @@ $yourLikedTunes = $db->RunSelect(
); );
$yourDislikedTunes = $db->RunSelect( $yourDislikedTunes = $db->RunSelect(
queryBuilder: \App\Wrappers\SQLQueryBuilderWrapper::SELECT( queryBuilder: SQLQueryBuilderWrapper::SELECT(
table: 'TuneRatings' table: 'TuneRatings'
) )
->cols(cols: [ ->cols(cols: [
@ -60,9 +95,11 @@ TwigWrapper::RenderTwig(
target: "Pages/profile.html.twig", target: "Pages/profile.html.twig",
arguments: [ arguments: [
"YourTunes" => $yourTunes, "YourTunes" => $yourTunes,
"YourDances" => [], "YourTuneSets"=> $yourTuneSets,
"YourLikedTunes"=> $yourLikedTunes, "YourLikedTunes"=> $yourLikedTunes,
"YourDislikedTunes"=> $yourDislikedTunes, "YourDislikedTunes"=> $yourDislikedTunes,
"YourBookmarkedTunes"=> [], "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); $requestUri = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
$requestElements = explode("/", trim($requestUri, "/")); $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": return false;
case "Static": }
case "API":
case "FormHandling": // Route handling for top-level pages
default: if (isset($routes[$requestElements[0]]))
return false; {
case "": require_once __DIR__ . $routes[$requestElements[0]];
require_once __DIR__ . '/../Pages/index.php'; return true;
return true; }
case "login":
require_once __DIR__ . '/../Pages/login.php'; // Route handling for tune-related pages
return true; if ($requestElements[0] === "tune" && isset($requestElements[1]))
case "logout": {
require_once __DIR__ . '/../Pages/logout.php'; $_GET['tune-id'] = $requestElements[1];
return true;
case "change-password": if (count($requestElements) === 2)
require_once __DIR__ . '/../Pages/change-password.php'; {
require_once __DIR__ . '/../Pages/tune/uuid.php';
return true; 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; 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"> <div class="main_container">
<nav> <nav>
<ul> <ul>
<li><a href="/">Home</a></li> <li><a href="/tunes" {% if _CURRENT_PAGE_ == '/tunes' %}class="active"{% endif %}>Tunes</a></li>
<li> <li><a href="/tune-sets" {% if _CURRENT_PAGE_ == '/tune-sets' %}class="active"{% endif %}>Tune Sets</a></li>
<input type="text" placeholder="Search for tunes..."> <li><a href="/dances" {% if _CURRENT_PAGE_ == '/dances' %}class="active"{% endif %}>Dances</a></li>
</li>
{% if _SESSION_.IS_LOGGED_IN %} {% 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 %} {% 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 %} {% endif %}
</ul> </ul>
</nav> </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