The formattening, part 2

This commit is contained in:
Oystein Kristoffer Tveit 2025-03-12 00:38:57 +01:00
parent b6697e5750
commit da8afe735c
Signed by: oysteikt
GPG Key ID: 9F2F7D8250F35146
35 changed files with 1066 additions and 1033 deletions

@ -1,19 +1,19 @@
<?php
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->hasGroup($uname, 'aktiviteter')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$eventID = $_GET['id'];

@ -1,16 +1,16 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
@ -18,10 +18,10 @@ $name = $attrs['cn'][0];
if (!$userManager->hasGroup($uname, 'aktiviteter')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$customActivity = new \pvv\side\DBActivity($pdo);
$customActivity = new pvv\side\DBActivity($pdo);
$new = 0;
if (isset($_GET['new'])) {
@ -33,21 +33,20 @@ if(isset($_GET['id'])){
$eventID = $_GET['id'];
} elseif ($new == 0) {
echo "\nID not set";
exit();
exit;
}
$today = new DateTimeImmutable;
$today = new DateTimeImmutable();
$today = $today->setTime(18, 15);
$defaultStart = $today->format("Y-m-d H:15:00");
$defaultStart = $today->format('Y-m-d H:15:00');
$inTwoHours = $today->add(new DateInterval('PT1H45M'));
$defaultEnd = $inTwoHours->format("Y-m-d H:00:00");
$defaultEnd = $inTwoHours->format('Y-m-d H:00:00');
$event;
if ($new == 0) {
$event = $customActivity->getEventByID($eventID);
}
else {
$event = new \pvv\side\SimpleEvent(
} else {
$event = new pvv\side\SimpleEvent(
0,
'',
$today,
@ -86,26 +85,26 @@ else {
<h2>Aktivietsadministrasjon</h2>
<hr class="ruler">
<h2><?= ($new == 1 ? "Ny hendelse" : "Rediger hendelse"); ?></h2>
<h2><?php echo $new == 1 ? 'Ny hendelse' : 'Rediger hendelse'; ?></h2>
<form action="update.php", method="post" class="gridsplit fullwidth_inputs">
<div class="gridl">
<p class="subtitle">Tittel</p>
<input type="text" name="title" value="<?= $event->getName() ?>" class="boxinput" required placeholder="En kul hendelse"><br>
<input type="text" name="title" value="<?php echo $event->getName(); ?>" class="boxinput" required placeholder="En kul hendelse"><br>
<div class="gridsplit5050">
<div class="gridl">
<p class="subtitle">Arrangør</p>
<input type="text" name="organiser" value="<?= $event->getOrganiser() ?>" class="boxinput" required placeholder="<?= $name ?>"><br>
<input type="text" name="organiser" value="<?php echo $event->getOrganiser(); ?>" class="boxinput" required placeholder="<?php echo $name; ?>"><br>
</div>
<div class="gridr noborder">
<p class="subtitle">Sted</p>
<input type="text" name="location" value="<?= $event->getLocation() ?>" class="boxinput" required placeholder="Terminalrommet"><br>
<input type="text" name="location" value="<?php echo $event->getLocation(); ?>" class="boxinput" required placeholder="Terminalrommet"><br>
</div>
</div>
<p class="subtitle">Beskrivelse (<i>markdown</i>)</p>
<textarea name="desc" rows="8" class="boxinput" placeholder="Beskrivelse" required><?= implode("\n", $event->getDescription()); ?></textarea>
<textarea name="desc" rows="8" class="boxinput" placeholder="Beskrivelse" required><?php echo implode("\n", $event->getDescription()); ?></textarea>
</div>
@ -113,22 +112,22 @@ else {
<div class="gridr" style="line-height: 1.3em;">
<h4>Starttid</h4><br>
<i>Måned:</i><br>
<input name="start_mon" type="month" class="boxinput" required value="<?= $event->getStart()->format('Y-m') ?>"><br>
<input name="start_mon" type="month" class="boxinput" required value="<?php echo $event->getStart()->format('Y-m'); ?>"><br>
<i>Dag:</i><br>
<input name="start_day" type="number" min="1" max="31" required class="boxinput" value="<?= $event->getStart()->format('d') ?>"><br>
<input name="start_day" type="number" min="1" max="31" required class="boxinput" value="<?php echo $event->getStart()->format('d'); ?>"><br>
<i>Klokkeslett:</i><br>
<input name="start_time" type="time" class="boxinput" required value="<?= $event->getStart()->format('H:i:s') ?>"><br>
<input name="start_time" type="time" class="boxinput" required value="<?php echo $event->getStart()->format('H:i:s'); ?>"><br>
<br>
<h4>Varighet</h4><br>
<?php $diff = $event->getStart()->diff($event->getStop()); ?>
<i>Timer:</i><br>
<input name="lasts_hours" type="number" min="0" class="boxinput" required value="<?= $diff->h ?>"><br>
<input name="lasts_hours" type="number" min="0" class="boxinput" required value="<?php echo $diff->h; ?>"><br>
<i>Minutter:</i><br>
<input name="lasts_minutes" type="number" min="0" max="59" class="boxinput" required value="<?= $diff->i ?>"><br>
<input name="lasts_minutes" type="number" min="0" max="59" class="boxinput" required value="<?php echo $diff->i; ?>"><br>
</div>
<input type="hidden" name="id" value="<?= $event->getID() ?>" />
<input type="hidden" name="id" value="<?php echo $event->getID(); ?>" />
<div class="allgrids" style="margin-top: 2em;">
<hr class="ruler">

@ -1,26 +1,26 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->hasGroup($uname, 'aktiviteter')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$customActivity = new \pvv\side\DBActivity($pdo);
$customActivity = new pvv\side\DBActivity($pdo);
$events = $customActivity->getAllEvents();
$page = 1;
@ -41,9 +41,7 @@ if(isset($_GET['organiser'])){
// filter
$events = array_values(array_filter(
$events,
function($event) use ($filterTitle, $filterOrganiser){
return (preg_match('/.*'.$filterTitle.'.*/i', $event->getName()) and preg_match('/.*'.$filterOrganiser.'.*/i', $event->getOrganiser()));
}
static fn($event) => (preg_match('/.*' . $filterTitle . '.*/i', $event->getName()) && preg_match('/.*' . $filterOrganiser . '.*/i', $event->getOrganiser()))
));
?>
<!DOCTYPE html>
@ -82,7 +80,7 @@ $events = array_values(array_filter(
$counter = 0;
$pageLimit = 10;
for($i = ($pageLimit * ($page - 1)); $i < count($events) ;$i++){
for ($i = ($pageLimit * ($page - 1)); $i < count($events); ++$i) {
if ($counter == $pageLimit) {
break;
}
@ -94,25 +92,25 @@ $events = array_values(array_filter(
<li>
<div class="event admin">
<div class="event-info">
<h3 class="no-chin"><?= $event->getName() . " (ID: " . $eventID . ")"; ?></h3>
<h3 class="no-chin"><?php echo $event->getName() . ' (ID: ' . $eventID . ')'; ?></h3>
<p class="subnote">
<?= $event->getStart()->format("(Y-m-d H:i:s)") . " - " . $event->getStop()->format("(Y-m-d H:i:s)"); ?>
<?php echo $event->getStart()->format('(Y-m-d H:i:s)') . ' - ' . $event->getStop()->format('(Y-m-d H:i:s)'); ?>
</p>
<?php
$Parsedown = new \Parsedown();
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $event->getDescription()));
?>
</div>
<div class="event-actions">
<a class="btn" href="edit.php?id=<?= $eventID ?>">Rediger</a><br>
<a class="btn" href="delete.php?id=<?= $eventID ?>" onclick="return confirm('Knallsikker? (ID: <?= $eventID ?>)');">Slett</a>
<a class="btn" href="edit.php?id=<?php echo $eventID; ?>">Rediger</a><br>
<a class="btn" href="delete.php?id=<?php echo $eventID; ?>" onclick="return confirm('Knallsikker? (ID: <?php echo $eventID; ?>)');">Slett</a>
</div>
</div>
</li>
<?php
$counter++;
++$counter;
}
?>
</ul>
@ -122,7 +120,7 @@ $events = array_values(array_filter(
echo '<a class="btn float-left" href="?page=' . ($page - 1) . '&title=' . urlencode($filterTitle) . '&organiser=' . urlencode($filterOrganiser) . '">Forrige side</a>';
}
if(($counter == $pageLimit) and (($pageLimit * $page) < count($events))){
if (($counter == $pageLimit) && (($pageLimit * $page) < count($events))) {
echo '<a class="btn float-right" href="?page=' . ($page + 1) . '&title=' . urlencode($filterTitle) . '&organiser=' . urlencode($filterOrganiser) . '">Neste side</a>';
}
?>
@ -134,9 +132,9 @@ $events = array_values(array_filter(
<h2>Filter</h2>
<form action="." method="get">
<p class="no-chin">Navn</p>
<?= '<input type="text" name="title" class="boxinput" value="' . $filterTitle . '">' ?><br>
<?php echo '<input type="text" name="title" class="boxinput" value="' . $filterTitle . '">'; ?><br>
<p class="no-chin">Organisator</p>
<?= '<input type="text" name="organiser" class="boxinput" value="' . $filterOrganiser . '">' ?><br>
<?php echo '<input type="text" name="organiser" class="boxinput" value="' . $filterOrganiser . '">'; ?><br>
<div style="margin-top: 2em;">
<input type="submit" class="btn" value="Filtrer"></input>

@ -1,34 +1,34 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->hasGroup($uname, 'aktiviteter')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
if ((!isset($_POST['title']))
or (!isset($_POST['desc']))
or (!isset($_POST['organiser']))
or (!isset($_POST['location']))
or (!isset($_POST['start_mon']))
or (!isset($_POST['start_day']))
or (!isset($_POST['start_time']))
or (!isset($_POST['lasts_hours']))
or (!isset($_POST['lasts_minutes']))) {
|| (!isset($_POST['desc']))
|| (!isset($_POST['organiser']))
|| (!isset($_POST['location']))
|| (!isset($_POST['start_mon']))
|| (!isset($_POST['start_day']))
|| (!isset($_POST['start_time']))
|| (!isset($_POST['lasts_hours']))
|| (!isset($_POST['lasts_minutes']))) {
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit();
exit;
}
$id = 0;
@ -50,12 +50,12 @@ $date_part_lasts_hours = $_POST['lasts_hours'];
$date_part_lasts_minutes = $_POST['lasts_minutes'];
while (strlen($date_part_start_day) < 2) {
$date_part_start_day = "0" . $date_part_start_day;
$date_part_start_day = '0' . $date_part_start_day;
}
$start = ($date_part_start_mon . "-" . $date_part_start_day . " " . $date_part_start_time);
if (sizeof(explode(":", $date_part_start_time))==2) {
$start .= ":00";
$start = ($date_part_start_mon . '-' . $date_part_start_day . ' ' . $date_part_start_time);
if (count(explode(':', $date_part_start_time)) == 2) {
$start .= ':00';
}
$start_date = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $start);
@ -65,10 +65,10 @@ $stop = $stop_date->format('Y-m-d H:i:s');
if ($start_date >= $stop_date) {
echo 'Invalid dates. End date must come after the start date!';
exit();
exit;
}
$statement;
if ($id == 0) {
$query = 'INSERT INTO events (name, start, stop, organiser, location, description) VALUES (:title, :start, :stop, :organiser, :loc, :desc)';
$statement = $pdo->prepare($query);

@ -1,28 +1,28 @@
<?php
ini_set('display_errors', '1');
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
error_reporting(E_ALL);
setlocale(\LC_ALL, 'nb_NO');
error_reporting(\E_ALL);
require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$attrs = $as->getAttributes();
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->isAdmin($uname)) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$users = $userManager->getAllUserData();
@ -59,16 +59,16 @@ $users = $userManager->getAllUserData();
</tr>
<?php
$users_to_update = array();
$users_to_update = [];
foreach ($users as $i => $data) {
$uname = $data['name'];
$groupFlag = $userManager->getUsergroups($uname);
array_push($users_to_update, $uname);
$users_to_update[] = $uname;
?>
<tr>
<td><?= $uname ?></td>
<td><?php echo $uname; ?></td>
<?php
foreach ($userManager->usergroups as $name => $group) {
echo '<td><input type="checkbox" ' . (($groupFlag & $group) ? 'checked' : '') . ' name="' . $uname . '_' . $name . '" class="usergroupcheckbox">' . $name . '</td>';

@ -1,35 +1,36 @@
<?php
ini_set('display_errors', '1');
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
error_reporting(E_ALL);
setlocale(\LC_ALL, 'nb_NO');
error_reporting(\E_ALL);
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->isAdmin($uname)) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$newUser;
if (isset($_POST['newuser'])) {
$newUser = $_POST['newuser'];
unset($_POST['newuser']);
}
// $updatingUsers = explode('_', $_POST['users']);
$updatingUsers = array();
foreach ($_POST as $key => $value) { if ($key === "user_to_update") {
array_push($updatingUsers, $value);
$updatingUsers = [];
foreach ($_POST as $key => $value) {
if ($key === 'user_to_update') {
$updatingUsers[] = $value;
}
}
unset($_POST['user_to_update']);
@ -43,7 +44,7 @@ if($newUser){
foreach ($_POST as $namegroup => $info) {
$data = explode('_', $namegroup);
$group = array_pop($data);
$uname = implode("_", $data);
$uname = implode('_', $data);
if ($uname == 'newuser') {
if (!$newUser) {
continue;

@ -1,11 +1,11 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
$as = new \SimpleSAML\Auth\Simple('default-sp');
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
@ -17,7 +17,7 @@ $activityGroup = $userManager->hasGroup($uname, 'aktiviteter');
if (!($isAdmin | $projectGroup | $activityGroup)) {
header('Content-Type: text/plain', true, 403);
echo "Her har du ikke lov't'å'værra!!!\r\n";
exit();
exit;
}
?>
<!DOCTYPE html>

@ -1,31 +1,31 @@
<?php
ini_set('display_errors', '1');
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'no_NO');
error_reporting(E_ALL);
setlocale(\LC_ALL, 'no_NO');
error_reporting(\E_ALL);
require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$attrs = $as->getAttributes();
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->isAdmin($uname)) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$motdfetcher = new \pvv\side\MOTD($pdo);
$motdfetcher = new pvv\side\MOTD($pdo);
$motd = $motdfetcher->getMOTD();
?>
<!DOCTYPE html>
@ -56,15 +56,15 @@ $motd = $motdfetcher->getMOTD();
<form action="update.php", method="post">
<p class="subtitle no-chin">Tittel</p>
<p class="subnote">Ikke nødvendig</p>
<input type="text" name="title" value="<?= $motd['title'] ?>" class="boxinput" style="width:66%;"><br>
<input type="text" name="title" value="<?php echo $motd['title']; ?>" class="boxinput" style="width:66%;"><br>
<p class="subtitle no-chin">Innhold (<i>markdown</i>)</p>
<textarea name="content" style="width:100%" rows="8" class="boxinput"><?= implode("\n", $motd["content"]) ?></textarea>
<textarea name="content" style="width:100%" rows="8" class="boxinput"><?php echo implode("\n", $motd['content']); ?></textarea>
<div style="margin-top: 2em;">
<hr class="ruler">
<?= '<input type="submit" class="btn" value="Lagre endringer"></a>'; ?>
<?php echo '<input type="submit" class="btn" value="Lagre endringer"></a>'; ?>
</div>
</form>
</main>

@ -1,32 +1,32 @@
<?php
ini_set('display_errors', '1');
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'no_NO');
error_reporting(E_ALL);
setlocale(\LC_ALL, 'no_NO');
error_reporting(\E_ALL);
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if(!isset($_POST['title']) or !isset($_POST['content'])){
if (!isset($_POST['title']) || !isset($_POST['content'])) {
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit();
exit;
}
if (!$userManager->isAdmin($uname)) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$motdfetcher = new \pvv\side\MOTD($pdo);
$motdfetcher = new pvv\side\MOTD($pdo);
$motdfetcher->setMOTD($_POST['title'], $_POST['content']);
header('Location: .');

@ -1,19 +1,19 @@
<?php
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->hasGroup($uname, 'prosjekt')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$projectID = $_GET['id'];

@ -1,26 +1,26 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->hasGroup($uname, 'prosjekt')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$projectManager = new \pvv\side\ProjectManager($pdo);
$projectManager = new pvv\side\ProjectManager($pdo);
$projects = $projectManager->getAll();
$new = 0;
@ -33,10 +33,10 @@ if(isset($_GET['id'])){
$projectID = $_GET['id'];
} elseif ($new == 0) {
echo "\nID not set";
exit();
exit;
}
$project = new \pvv\side\Project(
$project = new pvv\side\Project(
0,
'Kult Prosjekt',
'',
@ -85,32 +85,32 @@ foreach($members as $i => $data){
<h2>Prosjektadministrasjon</h2>
<hr class="ruler">
<h2><?= ($new == 1 ? "Nytt prosjekt" : "Rediger prosjekt"); ?></h2>
<h2><?php echo $new == 1 ? 'Nytt prosjekt' : 'Rediger prosjekt'; ?></h2>
<form action="update.php", method="post" class="gridsplit5050">
<div class="gridl">
<p class="subtitle">Tittel</p>
<?= '<input type="text" name="title" value="' . $project->getName() . '" class="boxinput">' ?><br>
<?php echo '<input type="text" name="title" value="' . $project->getName() . '" class="boxinput">'; ?><br>
<p class="subtitle">Beskrivelse (<i>markdown</i>)</p>
<textarea name="desc" cols="40" rows="5" class="boxinput"><?= implode("\n", $project->getDescription()); ?></textarea>
<textarea name="desc" cols="40" rows="5" class="boxinput"><?php echo implode("\n", $project->getDescription()); ?></textarea>
</div>
<div class="gridr noborder">
<p class="subtitle">Prosjektleder (Brukernavn)</p>
<?= '<input type="text" name="organiser" value="' . $owner['uname'] . '" class="boxinput">' ?><br>
<?php echo '<input type="text" name="organiser" value="' . $owner['uname'] . '" class="boxinput">'; ?><br>
<p class="subtitle">Prosjektleder (Navn)</p>
<?= '<input type="text" name="organisername" value="' . $owner['name'] . '" class="boxinput">' ?>
<?php echo '<input type="text" name="organisername" value="' . $owner['name'] . '" class="boxinput">'; ?>
<p class="subtitle">Prosjektleder E-post</p>
<?= '<input type="text" name="organiseremail" value="' . $owner['mail'] . '" class="boxinput">' ?><br>
<?php echo '<input type="text" name="organiseremail" value="' . $owner['mail'] . '" class="boxinput">'; ?><br>
<p class="subtitle">Aktiv</p>
<?= '<input type="checkbox" '. ($project->getActive() ? 'checked' : '') . ' name="active"/>' ?>
<?php echo '<input type="checkbox" ' . ($project->getActive() ? 'checked' : '') . ' name="active"/>'; ?>
</div>
<?= '<input type="hidden" name="id" value="' . $project->getID() . '" />' ?>
<?php echo '<input type="hidden" name="id" value="' . $project->getID() . '" />'; ?>
<?php if (!$new) { ?>
<div style="grid-column: span 2;">
@ -123,9 +123,9 @@ foreach($members as $i => $data){
<tr><th>Brukernavn</th><th>Navn</th><th>Rolle</th></tr>
<?php foreach ($members as $i => $data) { ?>
<tr>
<td><?= $data['uname']; ?></td>
<td><?= $data['name']; ?></td>
<td><?= $data['role']; ?></td>
<td><?php echo $data['uname']; ?></td>
<td><?php echo $data['name']; ?></td>
<td><?php echo $data['role']; ?></td>
</tr>
<?php } ?>

@ -1,26 +1,26 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->hasGroup($uname, 'prosjekt')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
$projectManager = new \pvv\side\ProjectManager($pdo);
$projectManager = new pvv\side\ProjectManager($pdo);
$projects = $projectManager->getAll();
$page = 1;
@ -43,9 +43,7 @@ if(isset($_POST['organiser'])){
// filter
$projects = array_values(array_filter(
$projects,
function($project) use ($filterTitle){
return (preg_match('/.*'.$filterTitle.'.*/i', $project->getName()));
}
static fn($project) => preg_match('/.*' . $filterTitle . '.*/i', $project->getName())
));
?>
<!DOCTYPE html>
@ -82,7 +80,7 @@ $projects = array_values(array_filter(
$counter = 0;
$pageLimit = 4;
for($i = ($pageLimit * ($page - 1)); $i < count($projects); $i++){
for ($i = ($pageLimit * ($page - 1)); $i < count($projects); ++$i) {
if ($counter == $pageLimit) {
break;
}
@ -95,23 +93,23 @@ $projects = array_values(array_filter(
<li>
<div class="event admin">
<div class="event-info">
<h3 class="no-chin"><?= $project->getName() . " (ID: " . $projectID . ")"; ?></h3>
<p class="subnote"><?= 'Organisert av: ' . $owner['name']; ?></p>
<h3 class="no-chin"><?php echo $project->getName() . ' (ID: ' . $projectID . ')'; ?></h3>
<p class="subnote"><?php echo 'Organisert av: ' . $owner['name']; ?></p>
<?php
$Parsedown = new \Parsedown();
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $project->getDescription()));
?>
</div>
<div class="event-actions">
<?= '<a href="edit.php?id=' . $projectID . '">🖊</a>'; ?>
<?= '<a href="delete.php?id=' . $projectID . '" onclick="return confirm(\'Knallsikker? (ID: ' . $projectID . ')\');">🗑</a>'; ?>
<?php echo '<a href="edit.php?id=' . $projectID . '">🖊</a>'; ?>
<?php echo '<a href="delete.php?id=' . $projectID . '" onclick="return confirm(\'Knallsikker? (ID: ' . $projectID . ')\');">🗑</a>'; ?>
</div>
</div>
</li>
<?php
$counter++;
++$counter;
}
?>
</ul>
@ -121,7 +119,7 @@ $projects = array_values(array_filter(
echo '<a class="btn float-left" href="?page=' . ($page - 1) . '">Forrige side</a>';
}
if(($counter == $pageLimit) and (($pageLimit * $page) < count($projects))){
if (($counter == $pageLimit) && (($pageLimit * $page) < count($projects))) {
echo '<a class="btn float-right" href="?page=' . ($page + 1) . '">Neste side</a>';
}
?>
@ -133,9 +131,9 @@ $projects = array_values(array_filter(
<h2>Filter</h2>
<form action="." method="post">
<p class="no-chin">Prosjektnavn</p>
<?= '<input type="text" name="title" class="boxinput" value="' . $filterTitle . '">' ?><br>
<?php echo '<input type="text" name="title" class="boxinput" value="' . $filterTitle . '">'; ?><br>
<p class="no-chin">Leders brukernavn</p>
<?= '<input type="text" name="organiser" class="boxinput" value="">' ?><br>
<?php echo '<input type="text" name="organiser" class="boxinput" value="">'; ?><br>
<div style="margin-top: 2em;">
<input type="submit" class="btn" value="Filtrer"></input>

@ -1,26 +1,26 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if (!$userManager->hasGroup($uname, 'prosjekt')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit();
exit;
}
if(!isset($_POST['title']) or !isset($_POST['desc']) or !isset($_POST['organisername']) or !isset($_POST['organiser'])){
if (!isset($_POST['title']) || !isset($_POST['desc']) || !isset($_POST['organisername']) || !isset($_POST['organiser'])) {
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit();
exit;
}
$id = 0;
@ -33,9 +33,9 @@ $desc = $_POST['desc'];
$name = $_POST['organisername'];
$uname = $_POST['organiser'];
$mail = $_POST['organiseremail'];
$active = (isset($_POST['active']) ? $_POST['active'] : 0);
$active = ($_POST['active'] ?? 0);
$statement;
if ($id == 0) {
$query = 'INSERT INTO projects (name, description, active) VALUES (:title, :desc, :active)';
$statement = $pdo->prepare($query);

@ -1,12 +1,15 @@
<?php namespace pvv\side;
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
<?php
namespace pvv\side;
require_once \dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$year = (isset($_GET['year']))
? $_GET['year']
: date("Y");
: date('Y');
$month = (isset($_GET['month']))
? $_GET['month']
: date("m");
: date('m');
$day = (isset($_GET['day']))
? $_GET['day']
: -1;
@ -34,38 +37,42 @@ $day = (isset($_GET['day']))
<main>
<?php
use \DateTimeImmutable;
use DateTimeImmutable;
$events = ($day == -1)
? $agenda->getNextOfEach(new \DateTimeImmutable)
? $agenda->getNextOfEach(new DateTimeImmutable())
: $agenda->getEventsBetween(
new DateTimeImmutable("$year-$month-$day 00:00:00"),
new DateTimeImmutable("$year-$month-$day 23:59:59"));
new DateTimeImmutable("{$year}-{$month}-{$day} 00:00:00"),
new DateTimeImmutable("{$year}-{$month}-{$day} 23:59:59")
);
$limit = 0;
foreach ($events as $event) {
?>
<article>
<h2>
<?php if (\pvv\side\Agenda::isToday($event->getStart())) { ?><strong><?php } ?>
<em><?= $event->getRelativeDate() ?></em>
<?php if (\pvv\side\Agenda::isToday($event->getStart())) { ?></strong><?php } ?>
<?php if (Agenda::isToday($event->getStart())) { ?><strong><?php } ?>
<em><?php echo $event->getRelativeDate(); ?></em>
<?php if (Agenda::isToday($event->getStart())) { ?></strong><?php } ?>
<?php if ($event->getURL()) { ?>
<a href="<?= $event->getURL() ?>"><?= $event->getName() ?></a>
<a href="<?php echo $event->getURL(); ?>"><?php echo $event->getName(); ?></a>
<?php } else { ?>
<?= $event->getName() ?>
<?php echo $event->getName(); ?>
<?php } ?>
<?php if ($event->getImageURL()) { ?>
<img src="<?= $event->getImageURL() ?>">
<img src="<?php echo $event->getImageURL(); ?>">
<?php } ?>
</h2>
<ul class="subtext">
<li>Tid: <strong><?= Agenda::getFormattedDate($event->getStart()) ?></strong></li>
<li>Sted: <strong><?= $event->getLocation() ?></strong></li>
<li>Arrangør: <strong><?= $event->getOrganiser() ?></strong></li>
<li>Tid: <strong><?php echo Agenda::getFormattedDate($event->getStart()); ?></strong></li>
<li>Sted: <strong><?php echo $event->getLocation(); ?></strong></li>
<li>Arrangør: <strong><?php echo $event->getOrganiser(); ?></strong></li>
</ul>
<?php $description = $event->getDescription(); ?>
<?php if ($limit) array_splice($description, $limit); ?>
<?php if ($limit) {
array_splice($description, $limit);
} ?>
<?php
$Parsedown = new \Parsedown();
echo $Parsedown->text(implode("\n", $description));

@ -1,6 +1,7 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use \pvv\side\Agenda;
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use pvv\side\Agenda;
?>
<!DOCTYPE html>
<html lang="no">
@ -20,33 +21,33 @@ use \pvv\side\Agenda;
<main>
<?php
$activity = new \pvv\side\social\AnimekveldActivity;
$nextEvent = $activity->getNextEventFrom(new DateTimeImmutable);
$activity = new pvv\side\social\AnimekveldActivity();
$nextEvent = $activity->getNextEventFrom(new DateTimeImmutable());
?>
<article>
<h2><em><?= $nextEvent->getRelativeDate()?></em> Animekveld
<h2><em><?php echo $nextEvent->getRelativeDate(); ?></em> Animekveld
<?php if ($nextEvent->getImageURL()) { ?>
<img src="<?= $nextEvent->getImageURL() ?>">
<img src="<?php echo $nextEvent->getImageURL(); ?>">
<?php } ?>
</h2>
<ul class="subtext">
<li>Tid:
<strong>
<?= Agenda::getFormattedDate($nextEvent->getStart());?>
<?php echo Agenda::getFormattedDate($nextEvent->getStart()); ?>
</strong>
<li>Sted:
<strong>
<?= $nextEvent->getLocation();?>
<?php echo $nextEvent->getLocation(); ?>
</strong>
<li>Arrangør:
<strong>
<?= $nextEvent->getOrganiser();?>
<?php echo $nextEvent->getOrganiser(); ?>
</strong>
</ul>
<?php
$Parsedown = new \Parsedown();
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $nextEvent->getDescription()));
?>
</article>
@ -54,6 +55,6 @@ $nextEvent = $activity->getNextEventFrom(new DateTimeImmutable);
</main>
<nav>
<?= navbar(1, 'aktiviteter'); ?>
<?= loginbar($sp, $pdo); ?>
<?php echo navbar(1, 'aktiviteter'); ?>
<?php echo loginbar($sp, $pdo); ?>
</nav>

@ -1,6 +1,7 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use \pvv\side\Agenda;
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use pvv\side\Agenda;
?>
<!DOCTYPE html>
<html lang="no">
@ -20,34 +21,34 @@ use \pvv\side\Agenda;
<main>
<?php
$activity = new \pvv\side\social\BrettspillActivity;
$nextEvent = $activity->getNextEventFrom(new DateTimeImmutable);
$activity = new pvv\side\social\BrettspillActivity();
$nextEvent = $activity->getNextEventFrom(new DateTimeImmutable());
?>
<article>
<h2><em><?= $nextEvent->getRelativeDate()?></em> Brettspillkveld
<h2><em><?php echo $nextEvent->getRelativeDate(); ?></em> Brettspillkveld
<?php if ($nextEvent->getImageURL()) { ?>
<img src="<?= $nextEvent->getImageURL() ?>">
<img src="<?php echo $nextEvent->getImageURL(); ?>">
<?php } ?>
</h2>
<ul class="subtext">
<li>Tid:
<strong>
<?= Agenda::getFormattedDate($nextEvent->getStart());?>
<?php echo Agenda::getFormattedDate($nextEvent->getStart()); ?>
</strong>
<li>Sted:
<strong>
<?= $nextEvent->getLocation();?>
<?php echo $nextEvent->getLocation(); ?>
</strong>
<li>Arrangør:
<strong>
<?= $nextEvent->getOrganiser();?>
<?php echo $nextEvent->getOrganiser(); ?>
</strong>
</ul>
<?php
$Parsedown = new \Parsedown();
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $nextEvent->getDescription()));
?>
</article>
@ -55,6 +56,6 @@ $nextEvent = $activity->getNextEventFrom(new DateTimeImmutable);
</main>
<nav>
<?= navbar(1, 'aktiviteter'); ?>
<?= loginbar($sp, $pdo); ?>
<?php echo navbar(1, 'aktiviteter'); ?>
<?php echo loginbar($sp, $pdo); ?>
</nav>

@ -1,65 +1,67 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
declare(strict_types=1);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
header('Content-Type: application/json');
$door = new \pvv\side\Door($pdo);
$door = new pvv\side\Door($pdo);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_SERVER["HTTP_AUTHORIZATION"])) {
list($type, $data) = explode(" ", $_SERVER["HTTP_AUTHORIZATION"], 2);
if (strcasecmp($type, "Bearer") == 0) {
if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
[$type, $data] = explode(' ', $_SERVER['HTTP_AUTHORIZATION'], 2);
if (strcasecmp($type, 'Bearer') == 0) {
if (hash_equals($data, $DOOR_SECRET)) {
handleSetState();
} else {
echo '{"status": "error", "message": "Invalid authentication key"}';
die();
exit;
}
} else {
echo '{"status": "error", "message": "Invalid authentication method"}';
die();
exit;
}
} else {
echo '{"status": "error", "message": "Missing authentication"}';
die();
exit;
}
} elseif ($_SERVER['REQUEST_METHOD'] === 'GET') {
if (isset($_GET["period"])) {
$period = (string)htmlspecialchars($_GET["period"]);
if (isset($_GET['period'])) {
$period = (string) htmlspecialchars($_GET['period']);
if ($period == "day") {
if ($period == 'day') {
$startTime = time() - (60 * 60 * 24);
} else if ($period == "week") {
} elseif ($period == 'week') {
$startTime = time() - (60 * 60 * 24 * 7);
} else {
echo '{"status": "error", "message": "Invalid period"}';
die();
exit;
}
$lines = $door->getEntriesAfter($startTime);
if (isset($_GET["edgeonly"]) && (bool)htmlspecialchars($_GET["edgeonly"])) {
if (isset($_GET['edgeonly']) && (bool) htmlspecialchars($_GET['edgeonly'])) {
// Ignore repeats
$lines = getChanges($lines);
}
echo json_encode([
'status' => "OK",
'entries' => $lines
'status' => 'OK',
'entries' => $lines,
]);
} else {
// Only last entry
$line = (object) $door->getCurrent();
echo json_encode([
'status' => "OK",
'status' => 'OK',
'time' => $line->time,
'open' => $line->open
'open' => $line->open,
]);
}
}
function handleSetState() {
function handleSetState(): void {
global $door;
$jsonobj = file_get_contents('php://input');
@ -67,14 +69,14 @@ function handleSetState() {
if ((!isset($event->time)) || (!is_numeric($event->time))) {
echo '{"status": "error", "message": "Invalid timestamp"}';
die();
exit;
}
if ((!isset($event->isDoorOpen)) || (!is_bool($event->isDoorOpen))) {
echo '{"status": "error", "message": "Invalid door state"}';
die();
exit;
}
$door->createEvent((int)($event->time), $event->isDoorOpen ? 1 : 0);
$door->createEvent((int) $event->time, $event->isDoorOpen ? 1 : 0);
echo '{"status": "OK"}';
}
@ -83,9 +85,9 @@ function getChanges($items) {
$res = [];
foreach ($items as $item) {
if ($item["open"] !== $prevState) {
array_push($res, $item);
$prevState = $item["open"];
if ($item['open'] !== $prevState) {
$res[] = $item;
$prevState = $item['open'];
}
}

@ -1,6 +1,7 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use \pvv\side\Agenda;
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use pvv\side\Agenda;
?>
<!DOCTYPE html>
<html lang="no">
@ -20,33 +21,33 @@ use \pvv\side\Agenda;
<main>
<?php
$activity = new \pvv\side\social\DriftkveldActivity;
$nextEvent = $activity->getNextEventFrom(new DateTimeImmutable);
$activity = new pvv\side\social\DriftkveldActivity();
$nextEvent = $activity->getNextEventFrom(new DateTimeImmutable());
?>
<article>
<h2><em><?= $nextEvent->getRelativeDate()?></em> Driftkveld
<h2><em><?php echo $nextEvent->getRelativeDate(); ?></em> Driftkveld
<?php if ($nextEvent->getImageURL()) { ?>
<img src="<?= $nextEvent->getImageURL() ?>">
<img src="<?php echo $nextEvent->getImageURL(); ?>">
<?php } ?>
</h2>
<ul class="subtext">
<li>Tid:
<strong>
<?= Agenda::getFormattedDate($nextEvent->getStart());?>
<?php echo Agenda::getFormattedDate($nextEvent->getStart()); ?>
</strong>
<li>Sted:
<strong>
<?= $nextEvent->getLocation();?>
<?php echo $nextEvent->getLocation(); ?>
</strong>
<li>Arrangør:
<strong>
<?= $nextEvent->getOrganiser();?>
<?php echo $nextEvent->getOrganiser(); ?>
</strong>
</ul>
<?php
$Parsedown = new \Parsedown();
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $nextEvent->getDescription()));
?>
</article>
@ -54,6 +55,6 @@ $nextEvent = $activity->getNextEventFrom(new DateTimeImmutable);
</main>
<nav>
<?= navbar(1, 'aktiviteter'); ?>
<?= loginbar($sp, $pdo); ?>
<?php echo navbar(1, 'aktiviteter'); ?>
<?php echo loginbar($sp, $pdo); ?>
</nav>

@ -1,13 +1,13 @@
<?php
error_reporting(0);
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$userManager = new pvv\admin\UserManager($pdo);
$as = new \SimpleSAML\Auth\Simple('default-sp');
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$loginname = $attrs['uid'][0];
@ -15,39 +15,40 @@ $loginname = $attrs['uid'][0];
if (!$loginname) {
header('Content-Type: text/plain', true, 403);
echo "Du må være logget inn for å se bildegalleriet.\r\n";
exit();
exit;
}
# Sourced from config.php through include.php
// Sourced from config.php through include.php
$galleryDir = $GALLERY_DIR;
$serverPath = $GALLERY_SERVER_PATH;
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp'];
$unamefile = $galleryDir . "/usernames.txt";
$unamefile = $galleryDir . '/usernames.txt';
$unamepairs = file($unamefile);
function getDirContents($dir, &$results = array()) {
function getDirContents($dir, &$results = []) {
$files = scandir($dir);
foreach ($files as $key => $value) {
$path = realpath($dir . DIRECTORY_SEPARATOR . $value);
$path = realpath($dir . \DIRECTORY_SEPARATOR . $value);
if (!is_dir($path)) {
// Remove the full path on disk, keep username and relative path to image.
$pos = strpos($path, $GLOBALS["galleryDir"]);
$pos = strpos($path, $GLOBALS['galleryDir']);
if ($pos !== false) {
$cleanPath = substr_replace($path, "", $pos, strlen($GLOBALS["galleryDir"]));
$cleanPath = substr_replace($path, '', $pos, strlen($GLOBALS['galleryDir']));
}
// Check if the file is an image
$ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
if (in_array($ext, $GLOBALS["allowedExtensions"])) {
$ext = strtolower(pathinfo($path, \PATHINFO_EXTENSION));
if (in_array($ext, $GLOBALS['allowedExtensions'], true)) {
$results[] = $cleanPath;
}
} else if ($value != "." && $value != ".." && $value != ".thumbnails") {
} elseif ($value != '.' && $value != '..' && $value != '.thumbnails') {
// recursively scan directories
getDirContents($path, $results);
}
}
return $results;
}
$images = getDirContents($galleryDir);
@ -61,7 +62,7 @@ function cmpModifyTime($a, $b) {
return ($mtime_a > $mtime_b) ? -1 : 1;
}
usort($images, "cmpModifyTime");
usort($images, 'cmpModifyTime');
$imageTemplate = '
<div class="card">
@ -77,7 +78,7 @@ $imageTemplate = '
<p class="card-footer-item">%time</p>
</div>
</div>
'
';
?>
@ -101,12 +102,12 @@ $imageTemplate = '
<main class="gallery-container">
<?php
foreach ($images as $key => $value) {
$modTime = date("d.m.Y H:i", filemtime($galleryDir . $value));
$imguser = explode("/", $value)[1];
$displaypath = implode("/", array_slice(explode("/", $value), 2));
$realname = "Ukjent";
$modTime = date('d.m.Y H:i', filemtime($galleryDir . $value));
$imguser = explode('/', $value)[1];
$displaypath = implode('/', array_slice(explode('/', $value), 2));
$realname = 'Ukjent';
foreach ($unamepairs as $unamepair) {
$unamepair = explode(":", $unamepair);
$unamepair = explode(':', $unamepair);
if ($unamepair[0] == $imguser) {
$realname = $unamepair[1];
break;
@ -114,12 +115,12 @@ $imageTemplate = '
}
$vars = [
"%user" => htmlspecialchars($imguser),
"%time" => $modTime,
"%name" => htmlspecialchars($displaypath),
"%path" => $serverPath . $value,
"%thumbnail" => $serverPath . "/.thumbnails" . $value . ".png",
"%realname" => htmlspecialchars($realname)
'%user' => htmlspecialchars($imguser),
'%time' => $modTime,
'%name' => htmlspecialchars($displaypath),
'%path' => $serverPath . $value,
'%thumbnail' => $serverPath . '/.thumbnails' . $value . '.png',
'%realname' => htmlspecialchars($realname),
];
echo strtr($imageTemplate, $vars);
}

@ -1,34 +1,36 @@
<?php
declare(strict_types=1);
require __DIR__ . '/../../config.php';
$searchDir = $SLIDESHOW_DIR;
$serverPath = $SLIDESHOW_SERVER_PATH;
$splashImg = "/PNG/PVV-logo-big-bluebg.png";
$splashImg = '/PNG/PVV-logo-big-bluebg.png';
// Note: This does not support nested directories
$filenames = sCaNdIr($searchDir);
$filenames = scandir($searchDir);
// Remove the expected non-images
foreach ($filenames as $k => $value) {
if(in_array($value, [".", ".."])) {
if (in_array($value, ['.', '..'], true)) {
unset($filenames[$k]);
}
}
function getFullPath($fname) { return ($GLOBALS["serverPath"] . "/" . $fname ); }
function getFullPath($fname) {
return $GLOBALS['serverPath'] . '/' . $fname;
}
// Sort filenames alphabetically and prepend the path prefix to each item.
asort($filenames);
$slideshowimagefilenames = aRrAy_MaP("getFullPath", $filenames);
$slideshowimagefilenames = aRrAy_MaP('getFullPath', $filenames);
// Prepend the cover photo
ArRaY_uNsHiFt($slideshowimagefilenames, $splashImg);
eChO('<img class="slideshowimg slideshowactive" id="slideshowImage1" src="' . $slideshowimagefilenames[0] . '">');
ecHo('<img class="slideshowimg" id="slideshowImage2" src="' . $slideshowimagefilenames[1] . '">');
eChO '<img class="slideshowimg slideshowactive" id="slideshowImage1" src="' . $slideshowimagefilenames[0] . '">';
ecHo '<img class="slideshowimg" id="slideshowImage2" src="' . $slideshowimagefilenames[1] . '">';
// Store list of file names in a globel JS variable
EchO("<script> const slideshowFnames =" . jSoN_eNcOdE($slideshowimagefilenames) . "; </script>");
?>
EchO '<script> const slideshowFnames =' . jSoN_eNcOdE($slideshowimagefilenames) . '; </script>';

@ -1,5 +1,8 @@
<?php namespace pvv\side;
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
<?php
namespace pvv\side;
require_once \dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$translation = ['I dag', 'I morgen', 'Denne uka', 'Neste uke', 'Denne måneden', 'Neste måned'];
?>
@ -18,8 +21,8 @@ $translation = ['I dag', 'I morgen', 'Denne uka', 'Neste uke', 'Denne måneden',
<body>
<nav>
<?= navbar(1, 'hendelser'); ?>
<?= loginbar($sp, $pdo); ?>
<?php echo navbar(1, 'hendelser'); ?>
<?php echo loginbar($sp, $pdo); ?>
</nav>
<main>
<h1 style="pointer-events:none; text-align: left;">Hendelser</h1>
@ -30,20 +33,22 @@ $translation = ['I dag', 'I morgen', 'Denne uka', 'Neste uke', 'Denne måneden',
$description_paragraphs = 2; // description length
foreach ($agenda->getNextDays() as $period => $events) {
if ($events) { ?>
<h2 style="text-align: left;"><?= $translation[$period] ?></h2>
<h2 style="text-align: left;"><?php echo $translation[$period]; ?></h2>
<ul class="events">
<?php foreach ($events as $event) {?>
<li style="border-color: <?= $event->getColor() ?>">
<li style="border-color: <?php echo $event->getColor(); ?>">
<h4><strong>
<?php if ($event->getURL()) { ?>
<a href="<?= $event->getURL() ?>"><?= $event->getName() ?></a>
<a href="<?php echo $event->getURL(); ?>"><?php echo $event->getName(); ?></a>
<?php } else { ?>
<?= $event->getName() ?>
<?php echo $event->getName(); ?>
<?php } ?>
</strong></h4>
<?php $description = $event->getDescription(); ?>
<?php if ($description_paragraphs) array_splice($description, $description_paragraphs); ?>
<?php if ($description_paragraphs) {
array_splice($description, $description_paragraphs);
} ?>
<?php
$Parsedown = new \Parsedown();
@ -51,9 +56,9 @@ $translation = ['I dag', 'I morgen', 'Denne uka', 'Neste uke', 'Denne måneden',
?>
<ul class="subtext">
<li>Tid: <strong><?= Agenda::getFormattedDate($event->getStart()) ?></strong></li>
<li>Sted: <strong><?= $event->getLocation() ?></strong></li>
<li>Arrangør: <strong><?= $event->getOrganiser() ?></strong></li>
<li>Tid: <strong><?php echo Agenda::getFormattedDate($event->getStart()); ?></strong></li>
<li>Sted: <strong><?php echo $event->getLocation(); ?></strong></li>
<li>Arrangør: <strong><?php echo $event->getOrganiser(); ?></strong></li>
</ul>
</li>
<?php } ?>

@ -1,20 +1,20 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use \pvv\side\Agenda;
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use pvv\side\Agenda;
$eventID = 0;
if (isset($_GET['id'])) {
$eventID = $_GET['id'];
} else {
echo 'No event ID provided';
exit();
exit;
}
$dbActivity = new \pvv\side\DBActivity($pdo);
$dbActivity = new pvv\side\DBActivity($pdo);
$event = $dbActivity->getEventByID($eventID);
if (!$event) {
echo 'Failed to retrieve event info';
exit();
exit;
}
?>
<!DOCTYPE html>
@ -34,21 +34,21 @@ if(!$event){
<main>
<article>
<h2>
<?php if (\pvv\side\Agenda::isToday($event->getStart())) { ?><strong><?php } ?>
<em><?= $event->getRelativeDate() ?></em>
<?php if (\pvv\side\Agenda::isToday($event->getStart())) { ?></strong><?php } ?>
<?php if (Agenda::isToday($event->getStart())) { ?><strong><?php } ?>
<em><?php echo $event->getRelativeDate(); ?></em>
<?php if (Agenda::isToday($event->getStart())) { ?></strong><?php } ?>
<?= $event->getName() ?>
<?php echo $event->getName(); ?>
</h2>
<ul class="subtext">
<li>Tid: <strong><?= Agenda::getFormattedDate($event->getStart()) ?></strong></li>
<li>Sted: <strong><?= $event->getLocation() ?></strong></li>
<li>Arrangør: <strong><?= $event->getOrganiser() ?></strong></li>
<li>Tid: <strong><?php echo Agenda::getFormattedDate($event->getStart()); ?></strong></li>
<li>Sted: <strong><?php echo $event->getLocation(); ?></strong></li>
<li>Arrangør: <strong><?php echo $event->getOrganiser(); ?></strong></li>
</ul>
<?php $description = $event->getDescription(); ?>
<?php
$Parsedown = new \Parsedown();
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $description));
?>
</article>

@ -1,22 +1,25 @@
<?php
require_once dirname(__DIR__) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$translation = ['I dag', 'I morgen', 'Denne uka', 'Neste uke', 'Denne måneden', 'Neste måned'];
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$motdfetcher = new \pvv\side\MOTD($pdo);
$motdfetcher = new pvv\side\MOTD($pdo);
$motd = $motdfetcher->getMOTD();
$door = new \pvv\side\Door($pdo);
$doorEntry = (object)($door->getCurrent());
$door = new pvv\side\Door($pdo);
$doorEntry = (object) $door->getCurrent();
if ($doorEntry->time < (time() - 60 * 30)) {
$doorStateText = "Ingen data fra dørsensor";
$doorStateText = 'Ingen data fra dørsensor';
} else {
if ($doorEntry->open) { $doorStateText = "Døren er <b>åpen</b>";
} else { $doorStateText = "Døren er <b>ikke åpen</b>"; }
if ($doorEntry->open) {
$doorStateText = 'Døren er <b>åpen</b>';
} else {
$doorStateText = 'Døren er <b>ikke åpen</b>';
}
$doorTime = date("H:i", $doorEntry->time);
}
$doorTime = date('H:i', $doorEntry->time);
?>
<!DOCTYPE html>
<html lang="no">
@ -41,7 +44,7 @@ $doorTime = date("H:i", $doorEntry->time);
<header class="landing">
<div id="imageSlideshow">
<?php include("galleri/slideshow.php"); ?>
<?php include 'galleri/slideshow.php'; ?>
<script src="js/slideshow.js"></script>
</div>
<div class="info">
@ -52,9 +55,9 @@ $doorTime = date("H:i", $doorEntry->time);
<a class="btn" href="om/"><li>Om PVV</li></a>
<a class="btn focus" href="paamelding/"><li>Bli medlem!</li></a>
<a class="btn" href="https://use.mazemap.com/#config=ntnu&v=1&zlevel=2&center=10.406281,63.417093&zoom=19.5&campuses=ntnu&campusid=1&sharepoitype=poi&sharepoi=38159&utm_medium=longurl">Veibeskrivelse</li></a>
<div id="doorIndicator" class="<?php echo($doorEntry->open ? "doorIndicator_OPEN" : "doorIndicator_CLOSED"); ?>" onclick="location.href='/door/graph.html'">
<p class="doorStateText"><?php echo($doorStateText) ?></p>
<p class="doorStateTime">(Oppdatert <?php echo($doorTime) ?>)</p>
<div id="doorIndicator" class="<?php echo $doorEntry->open ? 'doorIndicator_OPEN' : 'doorIndicator_CLOSED'; ?>" onclick="location.href='/door/graph.html'">
<p class="doorStateText"><?php echo $doorStateText; ?></p>
<p class="doorStateTime">(Oppdatert <?php echo $doorTime; ?>)</p>
</div>
</ul>
</div>
@ -66,22 +69,25 @@ $doorTime = date("H:i", $doorEntry->time);
<div class="calendar-events">
<?php $counter1 = 0; ?>
<?php $counter2 = 0; ?>
<?php foreach($agenda->getNextDays() as $period => $events) if ($events && $counter1 < 3 && $counter2 < 10) { $counter1++ ?>
<p class="no-chin"><?= $translation[$period] ?></p>
<?php foreach ($agenda->getNextDays() as $period => $events) {
if ($events && $counter1 < 3 && $counter2 < 10) {
$counter1++; ?>
<p class="no-chin"><?php echo $translation[$period]; ?></p>
<hr>
<ul>
<?php foreach($events as $event) { $counter2++ ?>
<?php foreach ($events as $event) {
$counter2++; ?>
<li>
<?php if ($event->getURL()) { ?>
<a href="<?= htmlspecialchars($event->getURL()) ?>"><?= $event->getName(); ?></a>
<a href="<?php echo htmlspecialchars($event->getURL()); ?>"><?php echo $event->getName(); ?></a>
<?php } else { ?>
<strong><?= $event->getName(); ?></strong>
<strong><?php echo $event->getName(); ?></strong>
<?php } ?>
<span class="datetime">
<?php if ($period !== \pvv\side\Agenda::TODAY) {
echo $event->getStart()->format('H:i') . " " ;
if (\pvv\side\Agenda::isThisWeek($event->getStart()) || $event->getStart()->sub(new DateInterval('P3D'))->getTimestamp() < time()) {
<?php if ($period !== pvv\side\Agenda::TODAY) {
echo $event->getStart()->format('H:i') . ' ';
if (pvv\side\Agenda::isThisWeek($event->getStart()) || $event->getStart()->sub(new DateInterval('P3D'))->getTimestamp() < time()) {
echo $event->getStart()->format('D');
} else {
echo $event->getStart()->format('j. F');
@ -94,25 +100,28 @@ $doorTime = date("H:i", $doorEntry->time);
</li>
<?php } ?>
</ul>
<?php } ?>
<?php
}
}
?>
</div>
<p><a class="btn" href="hendelser/">Flere aktiviteter</a></p>
</div>
<div class="gridl">
<?php
$title = $motd["title"];
$title = $motd['title'];
echo "<h1>";
if($title == ""){
echo "Dagens melding";
echo '<h1>';
if ($title == '') {
echo 'Dagens melding';
} else {
echo $title;
}
echo "</h1>";
echo '</h1>';
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $motd["content"]));
echo $Parsedown->text(implode("\n", $motd['content']));
?>
</div>
</main>

@ -1,16 +1,18 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$year = (isset($_GET['year']))
? $_GET['year']
: date("Y");
: date('Y');
$month = (isset($_GET['month']))
? $_GET['month']
: date("m");
$days_before_the_first = (new DateTime($year."-".$month."-01"))->format("w") - 1;
if ($days_before_the_first==-1) {$days_before_the_first = 6;}
$day_of_month = ($month == date("m"))
? date("j")
: date('m');
$days_before_the_first = (new DateTime($year . '-' . $month . '-01'))->format('w') - 1;
if ($days_before_the_first == -1) {
$days_before_the_first = 6;
}
$day_of_month = ($month == date('m'))
? date('j')
: -1;
$days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year));
@ -36,18 +38,25 @@ $days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year));
</nav>
<main>
<h2 style="text-align:center;">PVV Kalender for <?=$months_translations[$month-1]?> <?=$year?></h2>
<h2 style="text-align:center;">PVV Kalender for <?php echo $months_translations[$month - 1]; ?> <?php echo $year; ?></h2>
<div class="pagination_bar"><?php
<div class="pagination_bar">
<?php
$pmonth = $month - 1;
$nmonth = $month + 1;
$pyear = $year;
$nyear = $year;
if ($pmonth==0) {$pmonth=12; $pyear--;}
if ($nmonth==13) {$nmonth=1; $nyear++;}
if ($pmonth == 0) {
$pmonth = 12;
--$pyear;
}
if ($nmonth == 13) {
$nmonth = 1;
++$nyear;
}
?>
<a class="btn noselect" href="../kalender?year=<?=$pyear?>&amp;month=<?=$pmonth?>">Forrige måned</a>
<a class="btn noselect" href="../kalender?year=<?=$nyear?>&amp;month=<?=$nmonth?>">Neste måned</a>
<a class="btn noselect" href="../kalender?year=<?php echo $pyear; ?>&amp;month=<?php echo $pmonth; ?>">Forrige måned</a>
<a class="btn noselect" href="../kalender?year=<?php echo $nyear; ?>&amp;month=<?php echo $nmonth; ?>">Neste måned</a>
</div>
<figure class="calendar">
@ -61,30 +70,30 @@ $days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year));
<li class="header noselect">søndag
<?php if ($days_before_the_first != 0) { ?>
<li class="outOfMonth" style="grid-column: 1/<?=$days_before_the_first+1?>;">
<li class="outOfMonth" style="grid-column: 1/<?php echo $days_before_the_first + 1; ?>;">
<?php } ?>
<?php for ($day=1; $day <= $days_in_month; $day++) { ?>
<?php for ($day = 1; $day <= $days_in_month; ++$day) { ?>
<?php $events = $agenda->getEventsBetween(
new DateTimeImmutable("$year-$month-$day 00:00:00"),
new DateTimeImmutable("$year-$month-$day 23:59:59")); ?>
new DateTimeImmutable("{$year}-{$month}-{$day} 00:00:00"),
new DateTimeImmutable("{$year}-{$month}-{$day} 23:59:59")
); ?>
<?php if ($day == $day_of_month) { ?>
<li class="active">
<?php } else { ?>
<li>
<?php } ?>
<?php if (sizeof($events)!=0) { ?>
<a href="../aktiviteter/?<?="year=$year&amp;month=$month&amp;day=$day"?>"><div>
<span class="noselect day"><?= $day ?>.</span>
<?php if (count($events) != 0) { ?>
<a href="../aktiviteter/?<?php echo "year={$year}&amp;month={$month}&amp;day={$day}"; ?>"><div>
<span class="noselect day"><?php echo $day; ?>.</span>
<?php foreach ($events as $event) { ?>
<section style="background: <?=$event->getColor()?>"><?=$event->getName()?></section>
<section style="background: <?php echo $event->getColor(); ?>"><?php echo $event->getName(); ?></section>
<?php } ?>
</div></a>
<?php } else { ?>
<span class="noselect day"><?= $day ?>.</span>
<span class="noselect day"><?php echo $day; ?>.</span>
<?php } ?>
<?php } ?>
</ul>
</figure>
</main>

@ -1,5 +1,5 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
?>
<!DOCTYPE html>
<html lang="no">

@ -1,6 +1,7 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use \pvv\side\Agenda;
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
use pvv\side\Agenda;
?>
<!DOCTYPE html>
<html lang="no">
@ -34,28 +35,28 @@ use \pvv\side\Agenda;
<main>
<div id="outDatedBanner"><p><br>Denne siden er trolig utdatert! Hvis du er interessert, ta kontakt i discord-kanalen. <br> This page is probably outdated! If you're interested, check in with someone in our discord-channel. </p></div>
<?php
$activity = new \pvv\side\social\NerdepitsaActivity;
$nextEvent = $activity->getNextEventFrom(new DateTimeImmutable);
$activity = new pvv\side\social\NerdepitsaActivity();
$nextEvent = $activity->getNextEventFrom(new DateTimeImmutable());
?>
<article>
<h2><em><?= $nextEvent->getRelativeDate()?></em> Nerdepitsa
<h2><em><?php echo $nextEvent->getRelativeDate(); ?></em> Nerdepitsa
<?php if ($nextEvent->getImageURL()) { ?>
<img src="<?= $nextEvent->getImageURL() ?>">
<img src="<?php echo $nextEvent->getImageURL(); ?>">
<?php } ?>
</h2>
<ul class="subtext">
<li>Tid:
<strong>
<?= Agenda::getFormattedDate($nextEvent->getStart());?>
<?php echo Agenda::getFormattedDate($nextEvent->getStart()); ?>
</strong>
<li>Sted:
<strong>
<?= $nextEvent->getLocation();?>
<?php echo $nextEvent->getLocation(); ?>
</strong>
<li>Arrangør:
<strong>
<?= $nextEvent->getOrganiser();?>
<?php echo $nextEvent->getOrganiser(); ?>
</strong>
</ul>
@ -68,6 +69,6 @@ $nextEvent = $activity->getNextEventFrom(new DateTimeImmutable);
</main>
<nav>
<?= navbar(1, 'aktiviteter'); ?>
<?= loginbar($sp, $pdo); ?>
<?php echo navbar(1, 'aktiviteter'); ?>
<?php echo loginbar($sp, $pdo); ?>
</nav>

@ -1,5 +1,5 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
?>
<!DOCTYPE html>
<html lang="no">
@ -89,6 +89,6 @@ p {hyphens: auto;}
</main>
<nav>
<?= navbar(1); ?>
<?= loginbar($sp, $pdo); ?>
<?php echo navbar(1); ?>
<?php echo loginbar($sp, $pdo); ?>
</nav>

@ -1,5 +1,5 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
session_start();
@ -59,7 +59,7 @@ $attrs = $as->getAttributes();
<?php if ($attrs) { // logged in with pvv account?>
<p>
Du er logget in som <i><?= htmlspecialchars($attrs['uid'][0]) ?></i>,
Du er logget in som <i><?php echo htmlspecialchars($attrs['uid'][0]); ?></i>,
og trenger klart ikke sende melding om å ny PVV bruker.
</p>
<?php } ?>

@ -1,18 +1,18 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../inc/navbar.php';
require __DIR__ . '/../../src/_autoload.php';
require __DIR__ . '/../../config.php';
require_once __DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new \SimpleSAML\Auth\Simple('default-sp');
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$projectManager = new \pvv\side\ProjectManager($pdo);
$projectManager = new pvv\side\ProjectManager($pdo);
$new = 0;
if (isset($_GET['new'])) {
@ -24,26 +24,26 @@ if(isset($_GET['id'])){
$projectID = $_GET['id'];
} elseif ($new == 0) {
echo "\nID not set";
exit();
exit;
}
$project = new \pvv\side\Project(
$project = new pvv\side\Project(
0,
'Nytt Prosjekt',
'',
$attrs["cn"][0],
$attrs["uid"][0],
$attrs["mail"][0],
$attrs['cn'][0],
$attrs['uid'][0],
$attrs['mail'][0],
1
);
if ($new == 0) {
$project = $projectManager->getByID($projectID);
$owner = $projectManager->getProjectOwner($projectID);
if($owner['uname'] != $attrs["uid"][0]){
if ($owner['uname'] != $attrs['uid'][0]) {
header('HTTP/1.0 403 Forbidden');
echo "wrong user";
exit();
echo 'wrong user';
exit;
}
}
?>
@ -74,19 +74,19 @@ if($new == 0){
<form action="update.php", method="post">
<p class="subtitle no-chin">Prosjektnavn</p>
<p class="subnote">Gi prosjektet ditt et passende navn</p>
<input class="wide" type="text" name="title" value="<?= $project->getName() ?>" class="boxinput"><br>
<input class="wide" type="text" name="title" value="<?php echo $project->getName(); ?>" class="boxinput"><br>
<p class="subtitle no-chin">Beskrivelse (<i style="opacity:0.5;">markdown</i>)</p>
<p class="subnote no-chin">Hva går prosjektet ditt ut ?</p>
<p class="subnote">De første to linjene blir vist prosjektkortet, prøv å gjøre de til et fint sammendrag eller intro!</p>
<textarea class="tall" name="desc" style="width:100%" rows="8" class="boxinput"><?= implode("\n", $project->getDescription()); ?></textarea>
<textarea class="tall" name="desc" style="width:100%" rows="8" class="boxinput"><?php echo implode("\n", $project->getDescription()); ?></textarea>
<?= '<input type="hidden" name="id" value="' . $project->getID() . '" />' ?>
<?php echo '<input type="hidden" name="id" value="' . $project->getID() . '" />'; ?>
<input type="hidden" name="active" value="1"/>
<div style="margin-top: 0.2em;">
<hr class="ruler">
<input type="submit" class="btn" value="<?= ($new ? 'Opprett prosjekt' : 'Lagre endringer') ?>"></input>
<input type="submit" class="btn" value="<?php echo $new ? 'Opprett prosjekt' : 'Lagre endringer'; ?>"></input>
<?php if (!$new) {?><input type="submit" class="btn" name="delete" value="Slett"></input><?php } ?>
</div>
</form>

@ -1,8 +1,8 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$translation = ['i dag', 'i morgen', 'denne uka', 'neste uke', 'denne måneden', 'neste måned'];
$projectManager = new \pvv\side\ProjectManager($pdo);
$projectManager = new pvv\side\ProjectManager($pdo);
$projects = $projectManager->getAll();
?>
<!DOCTYPE html>
@ -87,21 +87,21 @@ $projects = $projectManager->getAll();
$randProjects = array_rand($projects, min(6, count($projects)));
if (!is_array($randProjects)) {
$randProjects = [$randProjects];
};
}
foreach ($randProjects as $i) {
$project = $projects[$i];
$owner = $projectManager->getProjectOwner($project->getID());
?>
<a class="nostyle" href="info.php?id=<?= $project->getID() ?>"><div class="project-card">
<a class="nostyle" href="info.php?id=<?php echo $project->getID(); ?>"><div class="project-card">
<div class="card-content">
<h4 class="project-title"><?= $project->getName(); ?></h4>
<h4 class="project-title"><?php echo $project->getName(); ?></h4>
<?php
$Parsedown = new \Parsedown();
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", array_slice($project->getDescription(), 0, 2)));
?>
</div>
<p class="project-organizer">Organisert av <?= $owner['name']; ?></p>
<p class="project-organizer">Organisert av <?php echo $owner['name']; ?></p>
</div></a>
<?php } ?>
</div>

@ -1,23 +1,23 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$projectID = 0;
if (isset($_GET['id'])) {
$projectID = $_GET['id'];
} else {
echo 'No project ID provided';
exit();
exit;
}
require_once(__DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$attrs = $as->getAttributes();
$projectManager = new \pvv\side\ProjectManager($pdo);
$projectManager = new pvv\side\ProjectManager($pdo);
$project = $projectManager->getByID($projectID);
if (!$project) {
echo ":^)";
exit();
echo ':^)';
exit;
}
$members = $projectManager->getProjectMembers($projectID);
@ -28,17 +28,16 @@ foreach($normal_members as $i => $data){
}
}
$is_owner = False;
$is_member = False;
$is_owner = false;
$is_member = false;
if ($attrs) {
$uname = $attrs['uid'][0];
foreach ($members as $member) {
if ($member['uname'] == $uname) {
if ($member['owner'] == 1) {
$is_owner = True;
}
else if ($member['owner']==0){
$is_member = True;
$is_owner = true;
} elseif ($member['owner'] == 0) {
$is_member = true;
}
}
}
@ -66,9 +65,9 @@ if ($attrs){
<main class="contentsplit">
<div class="gridr">
<h2><?= $project->getName(); ?></h2>
<h2><?php echo $project->getName(); ?></h2>
<?php
$Parsedown = new \Parsedown();
$Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $project->getDescription()));
?>
</div>
@ -82,27 +81,27 @@ if ($attrs){
<?php foreach ($members as $i => $data) {
if ($data['lead']) {
?>
<p><?= $data['name']; ?></p>
<p class="memberrole"><?= $data['role'] ?></p>
<p class="memberuname"><?= $data['uname']; ?></p>
<p class="memberemail"><?= $data['mail']; ?></p>
<p><?php echo $data['name']; ?></p>
<p class="memberrole"><?php echo $data['role']; ?></p>
<p class="memberuname"><?php echo $data['uname']; ?></p>
<p class="memberemail"><?php echo $data['mail']; ?></p>
<?php }
} ?>
</div>
</div>
<?php
if(sizeof($normal_members) > 0){
if (count($normal_members) > 0) {
?>
<div class="projectmembers">
<h2>Medlemmer</h2>
<?php foreach ($normal_members as $i => $data) {
?>
<div class="projectmember" style="border-color: #6a0;">
<p><?= $data['name']; ?></p>
<p class="memberrole"><?= $data['role'] ? $data['role'] : 'Deltaker' ?></p>
<p class="memberuname"><?= $data['uname']; ?></p>
<p class="memberemail"><?= $data['mail']; ?></p>
<p><?php echo $data['name']; ?></p>
<p class="memberrole"><?php echo $data['role'] ?: 'Deltaker'; ?></p>
<p class="memberuname"><?php echo $data['uname']; ?></p>
<p class="memberemail"><?php echo $data['mail']; ?></p>
</div>
<?php } ?>
</div>
@ -116,8 +115,8 @@ if ($attrs){
<input type="hidden" name="title" value="derp"/>
<input type="hidden" name="desc" value="derp"/>
<input type="hidden" name="active" value="derp"/>
<input type="hidden" name="id" value="<?= $projectID ?>"/>
<input type="submit" class="btn" name="join_or_leave" value="<?= ($is_member ? 'Forlat' : 'Bli med!') ?>"></input>
<input type="hidden" name="id" value="<?php echo $projectID; ?>"/>
<input type="submit" class="btn" name="join_or_leave" value="<?php echo $is_member ? 'Forlat' : 'Bli med!'; ?>"></input>
</p></form>
<?php
}

@ -1,18 +1,18 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../inc/navbar.php';
require __DIR__ . '/../../src/_autoload.php';
require __DIR__ . '/../../config.php';
require_once(__DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$projectManager = new \pvv\side\ProjectManager($pdo);
$projectManager = new pvv\side\ProjectManager($pdo);
$projects = $projectManager->getByOwner($attrs['uid'][0]);
$page = 1;
@ -28,9 +28,7 @@ if(isset($_GET['filter'])){
// filter
$projects = array_values(array_filter(
$projects,
function($project) use ($filter){
return (preg_match('/.*'.$filter.'.*/i', $project->getName()) or preg_match('/.*'.$filter.'.*/i', implode(" ", $project->getDescription())));
}
static fn($project) => (preg_match('/.*' . $filter . '.*/i', $project->getName()) || preg_match('/.*' . $filter . '.*/i', implode(' ', $project->getDescription())))
));
?>
<!DOCTYPE html>
@ -50,8 +48,8 @@ $projects = array_values(array_filter(
<body>
<nav>
<?= navbar(1, 'prosjekt'); ?>
<?= loginbar(); ?>
<?php echo navbar(1, 'prosjekt'); ?>
<?php echo loginbar(); ?>
</nav>
<main class="gridsplit">
@ -63,7 +61,7 @@ $projects = array_values(array_filter(
$counter = 0;
$pageLimit = 8;
for($i = ($pageLimit * ($page - 1)); $i < count($projects); $i++){
for ($i = ($pageLimit * ($page - 1)); $i < count($projects); ++$i) {
if ($counter == $pageLimit) {
break;
}
@ -80,16 +78,16 @@ $projects = array_values(array_filter(
<li>
<div class="event">
<div class="event-info">
<a href="edit.php?id=<?= $project->getID() ?>">
<h3 class="no-chin"><?= $project->getName()?></h3>
<a href="edit.php?id=<?php echo $project->getID(); ?>">
<h3 class="no-chin"><?php echo $project->getName(); ?></h3>
</a>
<p style="text-decoration: none;"><?= implode("<br>", array_slice($project->getDescription(), 0, 4)); ?></p>
<p style="text-decoration: none;"><?php echo implode('<br>', array_slice($project->getDescription(), 0, 4)); ?></p>
</div>
</div>
</li>
<?php
$counter++;
++$counter;
}
?>
</ul>
@ -99,7 +97,7 @@ $projects = array_values(array_filter(
echo '<a class="btn float-left" href="?page=' . ($page - 1) . '&filter=' . urlencode($filter) . '">Forrige side</a>';
}
if(($counter == $pageLimit) and (($pageLimit * $page) < count($projects))){
if (($counter == $pageLimit) && (($pageLimit * $page) < count($projects))) {
echo '<a class="btn float-right" href="?page=' . ($page + 1) . '&filter=' . urlencode($filter) . '">Neste side</a>';
}
?>
@ -111,7 +109,7 @@ $projects = array_values(array_filter(
<h2>Filter</h2>
<form action="mine.php" method="get">
<p class="no-chin">Navn</p>
<?= '<input type="text" name="filter" class="boxinput" value="' . $filter . '">' ?><br>
<?php echo '<input type="text" name="filter" class="boxinput" value="' . $filter . '">'; ?><br>
<div style="margin-top: 2em;">
<input type="submit" class="btn" value="Filtrer"></input>

@ -1,18 +1,18 @@
<?php
date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO');
setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../src/_autoload.php';
require __DIR__ . '/../../config.php';
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(!isset($_POST['title']) or !isset($_POST['desc']) or !isset($_POST['active'])){
if (!isset($_POST['title']) || !isset($_POST['desc']) || !isset($_POST['active'])) {
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit();
exit;
}
require_once(__DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
require_once __DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
@ -28,7 +28,7 @@ $name = $attrs['cn'][0];
$uname = $attrs['uid'][0];
$mail = $attrs['mail'][0];
$statement;
if ($id == 0) {
$query = 'INSERT INTO projects (name, description, active) VALUES (:title, :desc, 1)';
$statement = $pdo->prepare($query);
@ -47,31 +47,29 @@ if($id == 0){
$statement->bindParam(':owneremail', $mail, PDO::PARAM_STR);
$statement->execute();
}
else {
$projectManager = new \pvv\side\ProjectManager($pdo);
} else {
$projectManager = new pvv\side\ProjectManager($pdo);
$owner = $projectManager->getProjectOwner($id);
$members = $projectManager->getProjectMembers($id);
// if ($do_join_or_leave and $owner['uname'] != $uname) {
if ($do_join_or_leave) {
$is_member = False;
$is_member = false;
foreach ($members as $member) {
if ($member['uname'] == $uname and $member['owner']==0){
$is_member = True;
if ($member['uname'] == $uname && $member['owner'] == 0) {
$is_member = true;
break;
}
}
if ($is_member) {// leave
$query = "DELETE FROM projectmembers WHERE projectid=:id AND uname=:uname and lead=0 and owner=0;";
$query = 'DELETE FROM projectmembers WHERE projectid=:id AND uname=:uname and lead=0 and owner=0;';
$statement = $pdo->prepare($query);
$statement->bindParam(':id', $id, PDO::PARAM_STR);
$statement->bindParam(':uname', $uname, PDO::PARAM_STR);
$statement->execute();
print("leave");
}
else{//join
echo 'leave';
} else {// join
$query = "INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (:id, :name, :uname, :mail, 'Medlem', 0, 0)";
$statement = $pdo->prepare($query);
$statement->bindParam(':id', $id, PDO::PARAM_STR);
@ -80,16 +78,16 @@ else {
$statement->bindParam(':mail', $mail, PDO::PARAM_STR);
$statement->execute();
print("join");
echo 'join';
}
header('Location: ./info.php?id=' . $id);
exit();
exit;
}
if ($uname != $owner['uname']) {
header('Content-Type: text/plain', true, 403);
echo "Illegal action, you're not the project owner for project with ID " . $id . "\r\n";
exit();
exit;
}
if ($do_delete) {

@ -1,15 +1,15 @@
<?php
require_once dirname(__DIR__) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
require_once dirname(__DIR__) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$door = new \pvv\side\Door($pdo);
$doorEntry = (object)($door->getCurrent());
$door = new pvv\side\Door($pdo);
$doorEntry = (object) $door->getCurrent();
?>
{
@ -35,9 +35,9 @@ $doorEntry = (object)($door->getCurrent());
},
"issue_report_channels": ["email"],
"state": {
"open": <?php echo($doorEntry->open ? "true" : "false"); ?>,
"lastchange": <?php echo($doorEntry->time ? $doorEntry->time : 0); ?>,
"message": "<?php echo($doorEntry->open ? "open for public, members are present" : "closed"); ?>"
"open": <?php echo $doorEntry->open ? 'true' : 'false'; ?>,
"lastchange": <?php echo $doorEntry->time ? $doorEntry->time : 0; ?>,
"message": "<?php echo $doorEntry->open ? 'open for public, members are present' : 'closed'; ?>"
},
"feeds": {
"wiki": {

@ -1,5 +1,8 @@
<?php namespace pvv\side;
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
<?php
namespace pvv\side;
require_once \dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
?>
<!DOCTYPE html>
<html lang="no">
@ -16,8 +19,8 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<body>
<nav>
<?= navbar(1, 'tjenester'); ?>
<?= loginbar($sp, $pdo); ?>
<?php echo navbar(1, 'tjenester'); ?>
<?php echo loginbar($sp, $pdo); ?>
</nav>
<main>