The formattening, part 2

This commit is contained in:
2025-03-12 00:38:57 +01:00
parent b6697e5750
commit da8afe735c
35 changed files with 1066 additions and 1033 deletions

View File

@@ -1,19 +1,19 @@
<?php <?php
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->hasGroup($uname, 'aktiviteter')){ if (!$userManager->hasGroup($uname, 'aktiviteter')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit(); exit;
} }
$eventID = $_GET['id']; $eventID = $_GET['id'];

View File

@@ -1,61 +1,60 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../inc/navbar.php'; require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
$name = $attrs['cn'][0]; $name = $attrs['cn'][0];
if(!$userManager->hasGroup($uname, 'aktiviteter')){ if (!$userManager->hasGroup($uname, 'aktiviteter')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; 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; $new = 0;
if(isset($_GET['new'])){ if (isset($_GET['new'])) {
$new = $_GET['new']; $new = $_GET['new'];
} }
$eventID = 0; $eventID = 0;
if(isset($_GET['id'])){ if (isset($_GET['id'])) {
$eventID = $_GET['id']; $eventID = $_GET['id'];
}else if($new == 0){ } elseif ($new == 0) {
echo "\nID not set"; echo "\nID not set";
exit(); exit;
} }
$today = new DateTimeImmutable; $today = new DateTimeImmutable();
$today = $today->setTime(18, 15); $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')); $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){ if ($new == 0) {
$event = $customActivity->getEventByID($eventID); $event = $customActivity->getEventByID($eventID);
} } else {
else { $event = new pvv\side\SimpleEvent(
$event = new \pvv\side\SimpleEvent( 0,
0, '',
'', $today,
$today, $inTwoHours,
$inTwoHours, '',
'', '',
'', ''
'' );
);
} }
@@ -86,49 +85,49 @@ else {
<h2>Aktivietsadministrasjon</h2> <h2>Aktivietsadministrasjon</h2>
<hr class="ruler"> <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"> <form action="update.php", method="post" class="gridsplit fullwidth_inputs">
<div class="gridl"> <div class="gridl">
<p class="subtitle">Tittel</p> <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="gridsplit5050">
<div class="gridl"> <div class="gridl">
<p class="subtitle">Arrangør</p> <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>
<div class="gridr noborder"> <div class="gridr noborder">
<p class="subtitle">Sted</p> <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>
</div> </div>
<p class="subtitle">Beskrivelse (<i>markdown</i>)</p> <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> </div>
<div class="gridr" style="line-height: 1.3em;"> <div class="gridr" style="line-height: 1.3em;">
<h4>Starttid</h4><br> <h4>Starttid</h4><br>
<i>Måned:</i><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> <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> <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> <br>
<h4>Varighet</h4><br> <h4>Varighet</h4><br>
<?php $diff = $event->getStart()->diff($event->getStop()); ?> <?php $diff = $event->getStart()->diff($event->getStop()); ?>
<i>Timer:</i><br> <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> <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> </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;"> <div class="allgrids" style="margin-top: 2em;">
<hr class="ruler"> <hr class="ruler">
@@ -136,7 +135,7 @@ else {
</div> </div>
</form> </form>
<p> <p>
</main> </main>

View File

@@ -1,49 +1,47 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../inc/navbar.php'; require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->hasGroup($uname, 'aktiviteter')){ if (!$userManager->hasGroup($uname, 'aktiviteter')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; 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(); $events = $customActivity->getAllEvents();
$page = 1; $page = 1;
if(isset($_GET['page'])){ if (isset($_GET['page'])) {
$page = $_GET['page']; $page = $_GET['page'];
} }
$filterTitle = ''; $filterTitle = '';
if(isset($_GET['title'])){ if (isset($_GET['title'])) {
$filterTitle = $_GET['title']; $filterTitle = $_GET['title'];
} }
$filterOrganiser = ''; $filterOrganiser = '';
if(isset($_GET['organiser'])){ if (isset($_GET['organiser'])) {
$filterOrganiser = $_GET['organiser']; $filterOrganiser = $_GET['organiser'];
} }
// filter // filter
$events = array_values(array_filter( $events = array_values(array_filter(
$events, $events,
function($event) use ($filterTitle, $filterOrganiser){ static fn($event) => (preg_match('/.*' . $filterTitle . '.*/i', $event->getName()) && preg_match('/.*' . $filterOrganiser . '.*/i', $event->getOrganiser()))
return (preg_match('/.*'.$filterTitle.'.*/i', $event->getName()) and preg_match('/.*'.$filterOrganiser.'.*/i', $event->getOrganiser()));
}
)); ));
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -62,7 +60,7 @@ $events = array_values(array_filter(
<header>Aktivitets&shy;administrasjons&shy;verk&shy;stedet</header> <header>Aktivitets&shy;administrasjons&shy;verk&shy;stedet</header>
<body> <body>
<nav> <nav>
<?php echo navbar(2, 'admin'); ?> <?php echo navbar(2, 'admin'); ?>
<?php echo loginbar(null, $pdo); ?> <?php echo loginbar(null, $pdo); ?>
@@ -79,53 +77,53 @@ $events = array_values(array_filter(
<ul class="event-list"> <ul class="event-list">
<?php <?php
$counter = 0; $counter = 0;
$pageLimit = 10; $pageLimit = 10;
for($i = ($pageLimit * ($page - 1)); $i < count($events) ;$i++){ for ($i = ($pageLimit * ($page - 1)); $i < count($events); ++$i) {
if($counter == $pageLimit){ if ($counter == $pageLimit) {
break; break;
} }
$event = $events[$i]; $event = $events[$i];
$eventID = $event->getID(); $eventID = $event->getID();
?> ?>
<li> <li>
<div class="event admin"> <div class="event admin">
<div class="event-info"> <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"> <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> </p>
<?php <?php
$Parsedown = new \Parsedown(); $Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $event->getDescription())); echo $Parsedown->text(implode("\n", $event->getDescription()));
?> ?>
</div> </div>
<div class="event-actions"> <div class="event-actions">
<a class="btn" href="edit.php?id=<?= $eventID ?>">Rediger</a><br> <a class="btn" href="edit.php?id=<?php echo $eventID; ?>">Rediger</a><br>
<a class="btn" href="delete.php?id=<?= $eventID ?>" onclick="return confirm('Knallsikker? (ID: <?= $eventID ?>)');">Slett</a> <a class="btn" href="delete.php?id=<?php echo $eventID; ?>" onclick="return confirm('Knallsikker? (ID: <?php echo $eventID; ?>)');">Slett</a>
</div> </div>
</div> </div>
</li> </li>
<?php <?php
$counter++; ++$counter;
} }
?> ?>
</ul> </ul>
<?php <?php
if($page != 1){ if ($page != 1) {
echo '<a class="btn float-left" href="?page=' . ($page - 1) . '&title=' . urlencode($filterTitle) . '&organiser=' . urlencode($filterOrganiser) . '">Forrige side</a>'; 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>'; echo '<a class="btn float-right" href="?page=' . ($page + 1) . '&title=' . urlencode($filterTitle) . '&organiser=' . urlencode($filterOrganiser) . '">Neste side</a>';
} }
?> ?>
</div> </div>
<div class="gridr"> <div class="gridr">
@@ -134,9 +132,9 @@ $events = array_values(array_filter(
<h2>Filter</h2> <h2>Filter</h2>
<form action="." method="get"> <form action="." method="get">
<p class="no-chin">Navn</p> <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> <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;"> <div style="margin-top: 2em;">
<input type="submit" class="btn" value="Filtrer"></input> <input type="submit" class="btn" value="Filtrer"></input>

View File

@@ -1,45 +1,45 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->hasGroup($uname, 'aktiviteter')){ if (!$userManager->hasGroup($uname, 'aktiviteter')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit(); exit;
} }
if((!isset($_POST['title'])) if ((!isset($_POST['title']))
or (!isset($_POST['desc'])) || (!isset($_POST['desc']))
or (!isset($_POST['organiser'])) || (!isset($_POST['organiser']))
or (!isset($_POST['location'])) || (!isset($_POST['location']))
or (!isset($_POST['start_mon'])) || (!isset($_POST['start_mon']))
or (!isset($_POST['start_day'])) || (!isset($_POST['start_day']))
or (!isset($_POST['start_time'])) || (!isset($_POST['start_time']))
or (!isset($_POST['lasts_hours'])) || (!isset($_POST['lasts_hours']))
or (!isset($_POST['lasts_minutes']))) { || (!isset($_POST['lasts_minutes']))) {
header('Location: ' . $_SERVER['HTTP_REFERER']); header('Location: ' . $_SERVER['HTTP_REFERER']);
exit(); exit;
} }
$id = 0; $id = 0;
if(isset($_POST['id'])){ if (isset($_POST['id'])) {
$id = $_POST['id']; $id = $_POST['id'];
} }
$title = $_POST['title']; $title = $_POST['title'];
$desc = $_POST['desc']; $desc = $_POST['desc'];
//$start = $_POST['start']; // $start = $_POST['start'];
//$stop = $_POST['end']; // $stop = $_POST['end'];
$organiser = $_POST['organiser']; $organiser = $_POST['organiser'];
$location = $_POST['location']; $location = $_POST['location'];
@@ -50,12 +50,12 @@ $date_part_lasts_hours = $_POST['lasts_hours'];
$date_part_lasts_minutes = $_POST['lasts_minutes']; $date_part_lasts_minutes = $_POST['lasts_minutes'];
while (strlen($date_part_start_day) < 2) { 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); $start = ($date_part_start_mon . '-' . $date_part_start_day . ' ' . $date_part_start_time);
if (sizeof(explode(":", $date_part_start_time))==2) { if (count(explode(':', $date_part_start_time)) == 2) {
$start .= ":00"; $start .= ':00';
} }
$start_date = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $start); $start_date = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $start);
@@ -64,32 +64,32 @@ $start = $start_date->format('Y-m-d H:i:s');
$stop = $stop_date->format('Y-m-d H:i:s'); $stop = $stop_date->format('Y-m-d H:i:s');
if ($start_date >= $stop_date) { if ($start_date >= $stop_date) {
echo 'Invalid dates. End date must come after the start 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);
$statement->bindParam(':title', $title, PDO::PARAM_STR); if ($id == 0) {
$statement->bindParam(':desc', $desc, PDO::PARAM_STR); $query = 'INSERT INTO events (name, start, stop, organiser, location, description) VALUES (:title, :start, :stop, :organiser, :loc, :desc)';
$statement->bindParam(':start', $start, PDO::PARAM_STR); $statement = $pdo->prepare($query);
$statement->bindParam(':stop', $stop, PDO::PARAM_STR);
$statement->bindParam(':organiser', $organiser, PDO::PARAM_STR);
$statement->bindParam(':loc', $location, PDO::PARAM_STR);
}else{
$query = 'UPDATE events SET name=:title, start=:start, stop=:stop, organiser=:organiser, location=:loc, description=:desc WHERE id=:id';
$statement = $pdo->prepare($query);
$statement->bindParam(':title', $title, PDO::PARAM_STR); $statement->bindParam(':title', $title, PDO::PARAM_STR);
$statement->bindParam(':desc', $desc, PDO::PARAM_STR); $statement->bindParam(':desc', $desc, PDO::PARAM_STR);
$statement->bindParam(':start', $start, PDO::PARAM_STR); $statement->bindParam(':start', $start, PDO::PARAM_STR);
$statement->bindParam(':stop', $stop, PDO::PARAM_STR); $statement->bindParam(':stop', $stop, PDO::PARAM_STR);
$statement->bindParam(':organiser', $organiser, PDO::PARAM_STR); $statement->bindParam(':organiser', $organiser, PDO::PARAM_STR);
$statement->bindParam(':loc', $location, PDO::PARAM_STR); $statement->bindParam(':loc', $location, PDO::PARAM_STR);
$statement->bindParam(':id', $id, PDO::PARAM_INT); } else {
$query = 'UPDATE events SET name=:title, start=:start, stop=:stop, organiser=:organiser, location=:loc, description=:desc WHERE id=:id';
$statement = $pdo->prepare($query);
$statement->bindParam(':title', $title, PDO::PARAM_STR);
$statement->bindParam(':desc', $desc, PDO::PARAM_STR);
$statement->bindParam(':start', $start, PDO::PARAM_STR);
$statement->bindParam(':stop', $stop, PDO::PARAM_STR);
$statement->bindParam(':organiser', $organiser, PDO::PARAM_STR);
$statement->bindParam(':loc', $location, PDO::PARAM_STR);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
} }
$statement->execute(); $statement->execute();

View File

@@ -1,28 +1,28 @@
<?php <?php
ini_set('display_errors', '1'); ini_set('display_errors', '1');
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
error_reporting(E_ALL); error_reporting(\E_ALL);
require __DIR__ . '/../../../inc/navbar.php'; require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php'; require __DIR__ . '/../../../config.php';
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php'); require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new \SimpleSAML\Auth\Simple('default-sp'); $as = new SimpleSAML\Auth\Simple('default-sp');
$attrs = $as->getAttributes(); $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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->isAdmin($uname)){ if (!$userManager->isAdmin($uname)) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit(); exit;
} }
$users = $userManager->getAllUserData(); $users = $userManager->getAllUserData();
@@ -59,38 +59,38 @@ $users = $userManager->getAllUserData();
</tr> </tr>
<?php <?php
$users_to_update = array(); $users_to_update = [];
foreach($users as $i => $data){ foreach ($users as $i => $data) {
$uname = $data['name']; $uname = $data['name'];
$groupFlag = $userManager->getUsergroups($uname); $groupFlag = $userManager->getUsergroups($uname);
array_push($users_to_update, $uname); $users_to_update[] = $uname;
?> ?>
<tr> <tr>
<td><?= $uname ?></td> <td><?php echo $uname; ?></td>
<?php <?php
foreach($userManager->usergroups as $name => $group){ foreach ($userManager->usergroups as $name => $group) {
echo '<td><input type="checkbox" ' . (($groupFlag & $group) ? 'checked' : '') . ' name="' . $uname . '_' . $name . '" class="usergroupcheckbox">' . $name . '</td>'; echo '<td><input type="checkbox" ' . (($groupFlag & $group) ? 'checked' : '') . ' name="' . $uname . '_' . $name . '" class="usergroupcheckbox">' . $name . '</td>';
} }
?> ?>
</tr> </tr>
<?php <?php
} }
foreach($users_to_update as $uname) { foreach ($users_to_update as $uname) {
echo '<input type="hidden" name="user_to_update" value="' . $uname . '" />'; echo '<input type="hidden" name="user_to_update" value="' . $uname . '" />';
} }
?> ?>
<tr class="newuserrow"> <tr class="newuserrow">
<td class="newuserelement"><input type="text" name="newuser" class="newuserinput"></td> <td class="newuserelement"><input type="text" name="newuser" class="newuserinput"></td>
<?php <?php
foreach($userManager->usergroups as $name => $group){ foreach ($userManager->usergroups as $name => $group) {
echo '<td><input type="checkbox" name="newuser_' . $name . '" class="usergroupcheckbox">' . $name . '</td>'; echo '<td><input type="checkbox" name="newuser_' . $name . '" class="usergroupcheckbox">' . $name . '</td>';
} }
?> ?>
</tr> </tr>
</table> </table>
<input type="submit" class="btn" value="Lagre"> <input type="submit" class="btn" value="Lagre">

View File

@@ -1,72 +1,73 @@
<?php <?php
ini_set('display_errors', '1'); ini_set('display_errors', '1');
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
error_reporting(E_ALL); error_reporting(\E_ALL);
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->isAdmin($uname)){ if (!$userManager->isAdmin($uname)) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit(); exit;
} }
$newUser;
if(isset($_POST['newuser'])){ if (isset($_POST['newuser'])) {
$newUser = $_POST['newuser']; $newUser = $_POST['newuser'];
unset($_POST['newuser']); unset($_POST['newuser']);
} }
//$updatingUsers = explode('_', $_POST['users']); // $updatingUsers = explode('_', $_POST['users']);
$updatingUsers = array(); $updatingUsers = [];
foreach ($_POST as $key => $value) { if ($key === "user_to_update") { foreach ($_POST as $key => $value) {
array_push($updatingUsers, $value); if ($key === 'user_to_update') {
} $updatingUsers[] = $value;
}
} }
unset($_POST['user_to_update']); unset($_POST['user_to_update']);
// 2d array of usernames and their corresponding group flags // 2d array of usernames and their corresponding group flags
$userFlags = []; $userFlags = [];
if($newUser){ if ($newUser) {
$userFlags[$newUser] = 0; $userFlags[$newUser] = 0;
} }
foreach($_POST as $namegroup => $info){ foreach ($_POST as $namegroup => $info) {
$data = explode('_', $namegroup); $data = explode('_', $namegroup);
$group = array_pop($data); $group = array_pop($data);
$uname = implode("_", $data); $uname = implode('_', $data);
if($uname == 'newuser'){ if ($uname == 'newuser') {
if(!$newUser){ if (!$newUser) {
continue; continue;
} }
$uname = $newUser; $uname = $newUser;
} }
if(!isset($userFlags[$uname])){ if (!isset($userFlags[$uname])) {
$userFlags[$uname] = 0; $userFlags[$uname] = 0;
} }
$userFlags[$uname] = ($userFlags[$uname] | $userManager->usergroups[$group]); $userFlags[$uname] = ($userFlags[$uname] | $userManager->usergroups[$group]);
} }
foreach($updatingUsers as $uname) { foreach ($updatingUsers as $uname) {
if(!array_key_exists($uname, $userFlags)){ if (!array_key_exists($uname, $userFlags)) {
$userFlags[$uname] = 0; $userFlags[$uname] = 0;
} }
} }
foreach($userFlags as $uname => $flag){ foreach ($userFlags as $uname => $flag) {
$userManager->setGroups($uname, $flag); $userManager->setGroups($uname, $flag);
} }
header('Location: .'); header('Location: .');

View File

@@ -1,11 +1,11 @@
<?php <?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); $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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
@@ -14,10 +14,10 @@ $isAdmin = $userManager->isAdmin($uname);
$projectGroup = $userManager->hasGroup($uname, 'prosjekt'); $projectGroup = $userManager->hasGroup($uname, 'prosjekt');
$activityGroup = $userManager->hasGroup($uname, 'aktiviteter'); $activityGroup = $userManager->hasGroup($uname, 'aktiviteter');
if(!($isAdmin | $projectGroup | $activityGroup)){ if (!($isAdmin | $projectGroup | $activityGroup)) {
header('Content-Type: text/plain', true, 403); header('Content-Type: text/plain', true, 403);
echo "Her har du ikke lov't'å'værra!!!\r\n"; echo "Her har du ikke lov't'å'værra!!!\r\n";
exit(); exit;
} }
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -45,22 +45,22 @@ if(!($isAdmin | $projectGroup | $activityGroup)){
<h2>Administrasjon</h2> <h2>Administrasjon</h2>
<ul class="tools"> <ul class="tools">
<?php <?php
if($isAdmin | $activityGroup){ if ($isAdmin | $activityGroup) {
echo '<li><a class="btn" href="aktiviteter/?page=1">Aktiviteter/Hendelser</a></li>'; echo '<li><a class="btn" href="aktiviteter/?page=1">Aktiviteter/Hendelser</a></li>';
} }
if($isAdmin | $projectGroup){ if ($isAdmin | $projectGroup) {
echo '<li><a class="btn" href="prosjekter/">Prosjekter</a></li>'; echo '<li><a class="btn" href="prosjekter/">Prosjekter</a></li>';
} }
if($isAdmin) { if ($isAdmin) {
echo '<li><a class="btn" href="motd/">Dagens melding</a></li>'; echo '<li><a class="btn" href="motd/">Dagens melding</a></li>';
} }
if($isAdmin){ if ($isAdmin) {
echo '<li><a class="btn" href="brukere/">Brukerrettigheter</a></li>'; echo '<li><a class="btn" href="brukere/">Brukerrettigheter</a></li>';
} }
?> ?>
<ul> <ul>
</main> </main>
</body> </body>

View File

@@ -1,31 +1,31 @@
<?php <?php
ini_set('display_errors', '1'); ini_set('display_errors', '1');
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'no_NO'); setlocale(\LC_ALL, 'no_NO');
error_reporting(E_ALL); error_reporting(\E_ALL);
require __DIR__ . '/../../../inc/navbar.php'; require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.php'; require __DIR__ . '/../../../config.php';
require_once(__DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php'); require_once __DIR__ . '/../../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new \SimpleSAML\Auth\Simple('default-sp'); $as = new SimpleSAML\Auth\Simple('default-sp');
$attrs = $as->getAttributes(); $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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->isAdmin($uname)){ if (!$userManager->isAdmin($uname)) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; 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(); $motd = $motdfetcher->getMOTD();
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -56,15 +56,15 @@ $motd = $motdfetcher->getMOTD();
<form action="update.php", method="post"> <form action="update.php", method="post">
<p class="subtitle no-chin">Tittel</p> <p class="subtitle no-chin">Tittel</p>
<p class="subnote">Ikke nødvendig</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> <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;"> <div style="margin-top: 2em;">
<hr class="ruler"> <hr class="ruler">
<?= '<input type="submit" class="btn" value="Lagre endringer"></a>'; ?> <?php echo '<input type="submit" class="btn" value="Lagre endringer"></a>'; ?>
</div> </div>
</form> </form>
</main> </main>

View File

@@ -1,32 +1,32 @@
<?php <?php
ini_set('display_errors', '1'); ini_set('display_errors', '1');
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'no_NO'); setlocale(\LC_ALL, 'no_NO');
error_reporting(E_ALL); error_reporting(\E_ALL);
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!isset($_POST['title']) or !isset($_POST['content'])){ if (!isset($_POST['title']) || !isset($_POST['content'])) {
header('Location: ' . $_SERVER['HTTP_REFERER']); header('Location: ' . $_SERVER['HTTP_REFERER']);
exit(); exit;
} }
if(!$userManager->isAdmin($uname)){ if (!$userManager->isAdmin($uname)) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; 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']); $motdfetcher->setMOTD($_POST['title'], $_POST['content']);
header('Location: .'); header('Location: .');

View File

@@ -1,19 +1,19 @@
<?php <?php
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->hasGroup($uname, 'prosjekt')){ if (!$userManager->hasGroup($uname, 'prosjekt')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; echo 'Her har du ikke lov\'t\'å\'værra!!!';
exit(); exit;
} }
$projectID = $_GET['id']; $projectID = $_GET['id'];

View File

@@ -1,64 +1,64 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../inc/navbar.php'; require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->hasGroup($uname, 'prosjekt')){ if (!$userManager->hasGroup($uname, 'prosjekt')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; 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(); $projects = $projectManager->getAll();
$new = 0; $new = 0;
if(isset($_GET['new'])){ if (isset($_GET['new'])) {
$new = $_GET['new']; $new = $_GET['new'];
} }
$projectID = 0; $projectID = 0;
if(isset($_GET['id'])){ if (isset($_GET['id'])) {
$projectID = $_GET['id']; $projectID = $_GET['id'];
}else if($new == 0){ } elseif ($new == 0) {
echo "\nID not set"; echo "\nID not set";
exit(); exit;
} }
$project = new \pvv\side\Project( $project = new pvv\side\Project(
0, 0,
'Kult Prosjekt', 'Kult Prosjekt',
'', '',
'kåre knoll', 'kåre knoll',
'pvvadmin', 'pvvadmin',
'drift@pvv.ntnu.no', 'drift@pvv.ntnu.no',
0 0
); );
if($new == 0){ if ($new == 0) {
$project = $projectManager->getByID($projectID); $project = $projectManager->getByID($projectID);
} }
$members = $projectManager->getProjectMembers($projectID); $members = $projectManager->getProjectMembers($projectID);
$owner = [ $owner = [
'name' => '', 'name' => '',
'uname' => '', 'uname' => '',
'mail' => '', 'mail' => '',
]; ];
foreach($members as $i => $data){ foreach ($members as $i => $data) {
if($data['owner']){ if ($data['owner']) {
$owner = $data; $owner = $data;
} }
} }
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -85,34 +85,34 @@ foreach($members as $i => $data){
<h2>Prosjektadministrasjon</h2> <h2>Prosjektadministrasjon</h2>
<hr class="ruler"> <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"> <form action="update.php", method="post" class="gridsplit5050">
<div class="gridl"> <div class="gridl">
<p class="subtitle">Tittel</p> <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> <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>
<div class="gridr noborder"> <div class="gridr noborder">
<p class="subtitle">Prosjektleder (Brukernavn)</p> <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> <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> <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> <p class="subtitle">Aktiv</p>
<?= '<input type="checkbox" '. ($project->getActive() ? 'checked' : '') . ' name="active"/>' ?> <?php echo '<input type="checkbox" ' . ($project->getActive() ? 'checked' : '') . ' name="active"/>'; ?>
</div> </div>
<?= '<input type="hidden" name="id" value="' . $project->getID() . '" />' ?> <?php echo '<input type="hidden" name="id" value="' . $project->getID() . '" />'; ?>
<?php if(!$new){ ?> <?php if (!$new) { ?>
<div style="grid-column: span 2;"> <div style="grid-column: span 2;">
<hr class="ruler"> <hr class="ruler">
</div> </div>
@@ -121,11 +121,11 @@ foreach($members as $i => $data){
<table class="userlist" style="grid-column: span 2;"> <table class="userlist" style="grid-column: span 2;">
<tr><th>Brukernavn</th><th>Navn</th><th>Rolle</th></tr> <tr><th>Brukernavn</th><th>Navn</th><th>Rolle</th></tr>
<?php foreach($members as $i => $data) { ?> <?php foreach ($members as $i => $data) { ?>
<tr> <tr>
<td><?= $data['uname']; ?></td> <td><?php echo $data['uname']; ?></td>
<td><?= $data['name']; ?></td> <td><?php echo $data['name']; ?></td>
<td><?= $data['role']; ?></td> <td><?php echo $data['role']; ?></td>
</tr> </tr>
<?php } ?> <?php } ?>
@@ -136,7 +136,7 @@ foreach($members as $i => $data){
</tr> </tr>
</table> </table>
<?php } ?> <?php } ?>
<div class="allgrids" style="margin-top: 2em;"> <div class="allgrids" style="margin-top: 2em;">
<hr class="ruler"> <hr class="ruler">

View File

@@ -1,51 +1,49 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../inc/navbar.php'; require __DIR__ . '/../../../inc/navbar.php';
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->hasGroup($uname, 'prosjekt')){ if (!$userManager->hasGroup($uname, 'prosjekt')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; 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(); $projects = $projectManager->getAll();
$page = 1; $page = 1;
if(isset($_GET['page'])){ if (isset($_GET['page'])) {
$page = $_GET['page']; $page = $_GET['page'];
} }
$filterTitle = ''; $filterTitle = '';
if(isset($_POST['title'])){ if (isset($_POST['title'])) {
$filterTitle = $_POST['title']; $filterTitle = $_POST['title'];
} }
/* Temporarily out of service :< /* Temporarily out of service :<
$filterOrganiser = ''; $filterOrganiser = '';
if(isset($_POST['organiser'])){ if(isset($_POST['organiser'])){
$filterOrganiser = $_POST['organiser']; $filterOrganiser = $_POST['organiser'];
} }
*/ */
// filter // filter
$projects = array_values(array_filter( $projects = array_values(array_filter(
$projects, $projects,
function($project) use ($filterTitle){ static fn($project) => preg_match('/.*' . $filterTitle . '.*/i', $project->getName())
return (preg_match('/.*'.$filterTitle.'.*/i', $project->getName()));
}
)); ));
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -79,52 +77,52 @@ $projects = array_values(array_filter(
<ul class="event-list"> <ul class="event-list">
<?php <?php
$counter = 0; $counter = 0;
$pageLimit = 4; $pageLimit = 4;
for($i = ($pageLimit * ($page - 1)); $i < count($projects); $i++){ for ($i = ($pageLimit * ($page - 1)); $i < count($projects); ++$i) {
if($counter == $pageLimit){ if ($counter == $pageLimit) {
break; break;
} }
$project = $projects[$i]; $project = $projects[$i];
$projectID = $project->getID(); $projectID = $project->getID();
$owner = $projectManager->getProjectOwner($projectID); $owner = $projectManager->getProjectOwner($projectID);
?> ?>
<li> <li>
<div class="event admin"> <div class="event admin">
<div class="event-info"> <div class="event-info">
<h3 class="no-chin"><?= $project->getName() . " (ID: " . $projectID . ")"; ?></h3> <h3 class="no-chin"><?php echo $project->getName() . ' (ID: ' . $projectID . ')'; ?></h3>
<p class="subnote"><?= 'Organisert av: ' . $owner['name']; ?></p> <p class="subnote"><?php echo 'Organisert av: ' . $owner['name']; ?></p>
<?php <?php
$Parsedown = new \Parsedown(); $Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $project->getDescription())); echo $Parsedown->text(implode("\n", $project->getDescription()));
?> ?>
</div> </div>
<div class="event-actions"> <div class="event-actions">
<?= '<a href="edit.php?id=' . $projectID . '">🖊</a>'; ?> <?php echo '<a href="edit.php?id=' . $projectID . '">🖊</a>'; ?>
<?= '<a href="delete.php?id=' . $projectID . '" onclick="return confirm(\'Knallsikker? (ID: ' . $projectID . ')\');">🗑</a>'; ?> <?php echo '<a href="delete.php?id=' . $projectID . '" onclick="return confirm(\'Knallsikker? (ID: ' . $projectID . ')\');">🗑</a>'; ?>
</div> </div>
</div> </div>
</li> </li>
<?php <?php
$counter++; ++$counter;
} }
?> ?>
</ul> </ul>
<?php <?php
if($page != 1){ if ($page != 1) {
echo '<a class="btn float-left" href="?page=' . ($page - 1) . '">Forrige side</a>'; 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>'; echo '<a class="btn float-right" href="?page=' . ($page + 1) . '">Neste side</a>';
} }
?> ?>
</div> </div>
<div class="gridr"> <div class="gridr">
@@ -133,9 +131,9 @@ $projects = array_values(array_filter(
<h2>Filter</h2> <h2>Filter</h2>
<form action="." method="post"> <form action="." method="post">
<p class="no-chin">Prosjektnavn</p> <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> <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;"> <div style="margin-top: 2em;">
<input type="submit" class="btn" value="Filtrer"></input> <input type="submit" class="btn" value="Filtrer"></input>

View File

@@ -1,31 +1,31 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../../src/_autoload.php'; require __DIR__ . '/../../../src/_autoload.php';
require __DIR__ . '/../../../config.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); $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'); 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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
if(!$userManager->hasGroup($uname, 'prosjekt')){ if (!$userManager->hasGroup($uname, 'prosjekt')) {
echo 'Her har du ikke lov\'t\'å\'værra!!!'; 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']); header('Location: ' . $_SERVER['HTTP_REFERER']);
exit(); exit;
} }
$id = 0; $id = 0;
if(isset($_POST['id'])){ if (isset($_POST['id'])) {
$id = $_POST['id']; $id = $_POST['id'];
} }
$title = $_POST['title']; $title = $_POST['title'];
@@ -33,45 +33,45 @@ $desc = $_POST['desc'];
$name = $_POST['organisername']; $name = $_POST['organisername'];
$uname = $_POST['organiser']; $uname = $_POST['organiser'];
$mail = $_POST['organiseremail']; $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);
$statement->bindParam(':title', $title, PDO::PARAM_STR); if ($id == 0) {
$statement->bindParam(':desc', $desc, PDO::PARAM_STR); $query = 'INSERT INTO projects (name, description, active) VALUES (:title, :desc, :active)';
$statement->bindParam(':active', $active, PDO::PARAM_INT); $statement = $pdo->prepare($query);
$statement->execute(); $statement->bindParam(':title', $title, PDO::PARAM_STR);
$statement->bindParam(':desc', $desc, PDO::PARAM_STR);
$statement->bindParam(':active', $active, PDO::PARAM_INT);
$ownerQuery = 'INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (last_insert_rowid(), :owner, :owneruname, :owneremail, \'Prosjektleder\', 1, 1)'; $statement->execute();
$statement = $pdo->prepare($ownerQuery);
$statement->bindParam(':owner', $name, PDO::PARAM_STR);
$statement->bindParam(':owneruname', $uname, PDO::PARAM_STR);
$statement->bindParam(':owneremail', $mail, PDO::PARAM_STR);
$statement->execute(); $ownerQuery = 'INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (last_insert_rowid(), :owner, :owneruname, :owneremail, \'Prosjektleder\', 1, 1)';
}else{ $statement = $pdo->prepare($ownerQuery);
$query = 'UPDATE projects SET name=:title, description=:desc, active=:active WHERE id=:id'; $statement->bindParam(':owner', $name, PDO::PARAM_STR);
$statement = $pdo->prepare($query); $statement->bindParam(':owneruname', $uname, PDO::PARAM_STR);
$statement->bindParam(':owneremail', $mail, PDO::PARAM_STR);
$statement->bindParam(':title', $title, PDO::PARAM_STR); $statement->execute();
$statement->bindParam(':desc', $desc, PDO::PARAM_STR); } else {
$statement->bindParam(':active', $active, PDO::PARAM_INT); $query = 'UPDATE projects SET name=:title, description=:desc, active=:active WHERE id=:id';
$statement->bindParam(':id', $id, PDO::PARAM_INT); $statement = $pdo->prepare($query);
$statement->execute(); $statement->bindParam(':title', $title, PDO::PARAM_STR);
$statement->bindParam(':desc', $desc, PDO::PARAM_STR);
$statement->bindParam(':active', $active, PDO::PARAM_INT);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$query = 'UPDATE projectmembers SET name=:name, uname=:uname, mail=:mail'; $statement->execute();
$statement = $pdo->prepare($query);
$statement->bindParam(':name', $name, PDO::PARAM_STR); $query = 'UPDATE projectmembers SET name=:name, uname=:uname, mail=:mail';
$statement->bindParam(':uname', $uname, PDO::PARAM_STR); $statement = $pdo->prepare($query);
$statement->bindParam(':mail', $mail, PDO::PARAM_STR);
$statement->execute(); $statement->bindParam(':name', $name, PDO::PARAM_STR);
$statement->bindParam(':uname', $uname, PDO::PARAM_STR);
$statement->bindParam(':mail', $mail, PDO::PARAM_STR);
$statement->execute();
} }
header('Location: .'); header('Location: .');

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,67 +1,68 @@
<?php <?php
error_reporting(0); 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); $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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$loginname = $attrs['uid'][0]; $loginname = $attrs['uid'][0];
if(!$loginname) { if (!$loginname) {
header('Content-Type: text/plain', true, 403); header('Content-Type: text/plain', true, 403);
echo "Du må være logget inn for å se bildegalleriet.\r\n"; 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; $galleryDir = $GALLERY_DIR;
$serverPath = $GALLERY_SERVER_PATH; $serverPath = $GALLERY_SERVER_PATH;
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp']; $allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp'];
$unamefile = $galleryDir . "/usernames.txt"; $unamefile = $galleryDir . '/usernames.txt';
$unamepairs = file($unamefile); $unamepairs = file($unamefile);
function getDirContents($dir, &$results = array()) { function getDirContents($dir, &$results = []) {
$files = scandir($dir); $files = scandir($dir);
foreach ($files as $key => $value) { foreach ($files as $key => $value) {
$path = realpath($dir . DIRECTORY_SEPARATOR . $value); $path = realpath($dir . \DIRECTORY_SEPARATOR . $value);
if (!is_dir($path)) { if (!is_dir($path)) {
//Remove the full path on disk, keep username and relative path to image. // 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) { 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 // Check if the file is an image
$ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); $ext = strtolower(pathinfo($path, \PATHINFO_EXTENSION));
if (in_array($ext, $GLOBALS["allowedExtensions"])) { if (in_array($ext, $GLOBALS['allowedExtensions'], true)) {
$results[] = $cleanPath; $results[] = $cleanPath;
} }
} else if ($value != "." && $value != ".." && $value != ".thumbnails") { } elseif ($value != '.' && $value != '..' && $value != '.thumbnails') {
//recursively scan directories // recursively scan directories
getDirContents($path, $results); getDirContents($path, $results);
}
} }
return $results; }
return $results;
} }
$images = getDirContents($galleryDir); $images = getDirContents($galleryDir);
function cmpModifyTime($a, $b) { function cmpModifyTime($a, $b) {
global $galleryDir; global $galleryDir;
$mtime_a = filemtime($galleryDir . $a); $mtime_a = filemtime($galleryDir . $a);
$mtime_b = filemtime($galleryDir . $b); $mtime_b = filemtime($galleryDir . $b);
return ($mtime_a > $mtime_b) ? -1 : 1; return ($mtime_a > $mtime_b) ? -1 : 1;
} }
usort($images, "cmpModifyTime"); usort($images, 'cmpModifyTime');
$imageTemplate = ' $imageTemplate = '
<div class="card"> <div class="card">
@@ -77,7 +78,7 @@ $imageTemplate = '
<p class="card-footer-item">%time</p> <p class="card-footer-item">%time</p>
</div> </div>
</div> </div>
' ';
?> ?>
@@ -101,34 +102,34 @@ $imageTemplate = '
<main class="gallery-container"> <main class="gallery-container">
<?php <?php
foreach ($images as $key => $value) { foreach ($images as $key => $value) {
$modTime = date("d.m.Y H:i", filemtime($galleryDir . $value)); $modTime = date('d.m.Y H:i', filemtime($galleryDir . $value));
$imguser = explode("/", $value)[1]; $imguser = explode('/', $value)[1];
$displaypath = implode("/", array_slice(explode("/", $value), 2)); $displaypath = implode('/', array_slice(explode('/', $value), 2));
$realname = "Ukjent"; $realname = 'Ukjent';
foreach ($unamepairs as $unamepair) { foreach ($unamepairs as $unamepair) {
$unamepair = explode(":", $unamepair); $unamepair = explode(':', $unamepair);
if ($unamepair[0] == $imguser) { if ($unamepair[0] == $imguser) {
$realname = $unamepair[1]; $realname = $unamepair[1];
break; break;
}
} }
}
$vars = [ $vars = [
"%user" => htmlspecialchars($imguser), '%user' => htmlspecialchars($imguser),
"%time" => $modTime, '%time' => $modTime,
"%name" => htmlspecialchars($displaypath), '%name' => htmlspecialchars($displaypath),
"%path" => $serverPath . $value, '%path' => $serverPath . $value,
"%thumbnail" => $serverPath . "/.thumbnails" . $value . ".png", '%thumbnail' => $serverPath . '/.thumbnails' . $value . '.png',
"%realname" => htmlspecialchars($realname) '%realname' => htmlspecialchars($realname),
]; ];
echo strtr($imageTemplate, $vars); echo strtr($imageTemplate, $vars);
} }
if (count($images) == 0) { if (count($images) == 0) {
echo "<h3 class='no-images'>Det er dessverre ingen bilder å vise.</h3>"; echo "<h3 class='no-images'>Det er dessverre ingen bilder å vise.</h3>";
} }
?> ?>
</main> </main>
<div id="modal" class="modal"> <div id="modal" class="modal">
<span id="modal-close" class="modal-close">&#10006;</span> <span id="modal-close" class="modal-close">&#10006;</span>

View File

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

View File

@@ -1,5 +1,8 @@
<?php namespace pvv\side; <?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.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']; $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> <body>
<nav> <nav>
<?= navbar(1, 'hendelser'); ?> <?php echo navbar(1, 'hendelser'); ?>
<?= loginbar($sp, $pdo); ?> <?php echo loginbar($sp, $pdo); ?>
</nav> </nav>
<main> <main>
<h1 style="pointer-events:none; text-align: left;">Hendelser</h1> <h1 style="pointer-events:none; text-align: left;">Hendelser</h1>
@@ -27,43 +30,45 @@ $translation = ['I dag', 'I morgen', 'Denne uka', 'Neste uke', 'Denne måneden',
<a style="padding-left: 2em; padding-right: 2em;" class="btn" style="" href="../kalender/">Kalender</a> <a style="padding-left: 2em; padding-right: 2em;" class="btn" style="" href="../kalender/">Kalender</a>
</center> </center>
<?php <?php
$description_paragraphs = 2; //description length $description_paragraphs = 2; // description length
foreach($agenda->getNextDays() as $period => $events) { foreach ($agenda->getNextDays() as $period => $events) {
if ($events) { ?> if ($events) { ?>
<h2 style="text-align: left;"><?= $translation[$period] ?></h2> <h2 style="text-align: left;"><?php echo $translation[$period]; ?></h2>
<ul class="events"> <ul class="events">
<?php foreach($events as $event) {?> <?php foreach ($events as $event) {?>
<li style="border-color: <?= $event->getColor() ?>"> <li style="border-color: <?php echo $event->getColor(); ?>">
<h4><strong> <h4><strong>
<?php if ($event->getURL()) { ?> <?php if ($event->getURL()) { ?>
<a href="<?= $event->getURL() ?>"><?= $event->getName() ?></a> <a href="<?php echo $event->getURL(); ?>"><?php echo $event->getName(); ?></a>
<?php } else { ?> <?php } else { ?>
<?= $event->getName() ?> <?php echo $event->getName(); ?>
<?php } ?> <?php } ?>
</strong></h4> </strong></h4>
<?php $description = $event->getDescription(); ?> <?php $description = $event->getDescription(); ?>
<?php if ($description_paragraphs) array_splice($description, $description_paragraphs); ?> <?php if ($description_paragraphs) {
array_splice($description, $description_paragraphs);
} ?>
<?php <?php
$Parsedown = new \Parsedown(); $Parsedown = new \Parsedown();
echo $Parsedown->text(implode("\n", $description)); echo $Parsedown->text(implode("\n", $description));
?> ?>
<ul class="subtext"> <ul class="subtext">
<li>Tid: <strong><?= Agenda::getFormattedDate($event->getStart()) ?></strong></li> <li>Tid: <strong><?php echo Agenda::getFormattedDate($event->getStart()); ?></strong></li>
<li>Sted: <strong><?= $event->getLocation() ?></strong></li> <li>Sted: <strong><?php echo $event->getLocation(); ?></strong></li>
<li>Arrangør: <strong><?= $event->getOrganiser() ?></strong></li> <li>Arrangør: <strong><?php echo $event->getOrganiser(); ?></strong></li>
</ul> </ul>
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
<?php } ?> <?php } ?>
<?php } ?> <?php } ?>
<div style="text-align: center; margin-bottom: 2em;"> <div style="text-align: center; margin-bottom: 2em;">
<a style="padding-left: 2em; padding-right: 2em;" class="btn" style="" href="../kalender/">Kalender</a> <a style="padding-left: 2em; padding-right: 2em;" class="btn" style="" href="../kalender/">Kalender</a>
</div> </div>
</main> </main>
</body> </body>

View File

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

View File

@@ -1,22 +1,25 @@
<?php <?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']; $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); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$motdfetcher = new \pvv\side\MOTD($pdo); $motdfetcher = new pvv\side\MOTD($pdo);
$motd = $motdfetcher->getMOTD(); $motd = $motdfetcher->getMOTD();
$door = new \pvv\side\Door($pdo); $door = new pvv\side\Door($pdo);
$doorEntry = (object)($door->getCurrent()); $doorEntry = (object) $door->getCurrent();
if ($doorEntry->time < (time() - 60*30)) { if ($doorEntry->time < (time() - 60 * 30)) {
$doorStateText = "Ingen data fra dørsensor"; $doorStateText = 'Ingen data fra dørsensor';
} else { } else {
if ($doorEntry->open) { $doorStateText = "Døren er <b>åpen</b>"; if ($doorEntry->open) {
} else { $doorStateText = "Døren er <b>ikke åpen</b>"; } $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> <!DOCTYPE html>
<html lang="no"> <html lang="no">
@@ -41,7 +44,7 @@ $doorTime = date("H:i", $doorEntry->time);
<header class="landing"> <header class="landing">
<div id="imageSlideshow"> <div id="imageSlideshow">
<?php include("galleri/slideshow.php"); ?> <?php include 'galleri/slideshow.php'; ?>
<script src="js/slideshow.js"></script> <script src="js/slideshow.js"></script>
</div> </div>
<div class="info"> <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" href="om/"><li>Om PVV</li></a>
<a class="btn focus" href="paamelding/"><li>Bli medlem!</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> <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'"> <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="doorStateText"><?php echo $doorStateText; ?></p>
<p class="doorStateTime">(Oppdatert <?php echo($doorTime) ?>)</p> <p class="doorStateTime">(Oppdatert <?php echo $doorTime; ?>)</p>
</div> </div>
</ul> </ul>
</div> </div>
@@ -66,54 +69,60 @@ $doorTime = date("H:i", $doorEntry->time);
<div class="calendar-events"> <div class="calendar-events">
<?php $counter1 = 0; ?> <?php $counter1 = 0; ?>
<?php $counter2 = 0; ?> <?php $counter2 = 0; ?>
<?php foreach($agenda->getNextDays() as $period => $events) if ($events && $counter1 < 3 && $counter2 < 10) { $counter1++ ?> <?php foreach ($agenda->getNextDays() as $period => $events) {
<p class="no-chin"><?= $translation[$period] ?></p> if ($events && $counter1 < 3 && $counter2 < 10) {
$counter1++; ?>
<p class="no-chin"><?php echo $translation[$period]; ?></p>
<hr> <hr>
<ul> <ul>
<?php foreach($events as $event) { $counter2++ ?> <?php foreach ($events as $event) {
$counter2++; ?>
<li> <li>
<?php if ($event->getURL()) { ?> <?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 { ?> <?php } else { ?>
<strong><?= $event->getName(); ?></strong> <strong><?php echo $event->getName(); ?></strong>
<?php } ?> <?php } ?>
<span class="datetime"> <span class="datetime">
<?php if ($period !== \pvv\side\Agenda::TODAY) { <?php if ($period !== pvv\side\Agenda::TODAY) {
echo $event->getStart()->format('H:i') . " " ; echo $event->getStart()->format('H:i') . ' ';
if (\pvv\side\Agenda::isThisWeek($event->getStart()) || $event->getStart()->sub(new DateInterval('P3D'))->getTimestamp() < time()) { if (pvv\side\Agenda::isThisWeek($event->getStart()) || $event->getStart()->sub(new DateInterval('P3D'))->getTimestamp() < time()) {
echo $event->getStart()->format('D'); echo $event->getStart()->format('D');
} else { } else {
echo $event->getStart()->format('j. F'); echo $event->getStart()->format('j. F');
} }
} else { } else {
echo $event->getStart()->format('H:i'); echo $event->getStart()->format('H:i');
} }
?> ?>
</span> </span>
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
<?php } ?> <?php
}
}
?>
</div> </div>
<p><a class="btn" href="hendelser/">Flere aktiviteter</a></p> <p><a class="btn" href="hendelser/">Flere aktiviteter</a></p>
</div> </div>
<div class="gridl"> <div class="gridl">
<?php <?php
$title = $motd["title"]; $title = $motd['title'];
echo "<h1>"; echo '<h1>';
if($title == ""){ if ($title == '') {
echo "Dagens melding"; echo 'Dagens melding';
}else{ } else {
echo $title; echo $title;
} }
echo "</h1>"; echo '</h1>';
$Parsedown = new Parsedown(); $Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $motd["content"])); echo $Parsedown->text(implode("\n", $motd['content']));
?> ?>
</div> </div>
</main> </main>
</body> </body>

View File

@@ -1,17 +1,19 @@
<?php <?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'])) $year = (isset($_GET['year']))
? $_GET['year'] ? $_GET['year']
: date("Y"); : date('Y');
$month = (isset($_GET['month'])) $month = (isset($_GET['month']))
? $_GET['month'] ? $_GET['month']
: date("m"); : date('m');
$days_before_the_first = (new DateTime($year."-".$month."-01"))->format("w") - 1; $days_before_the_first = (new DateTime($year . '-' . $month . '-01'))->format('w') - 1;
if ($days_before_the_first==-1) {$days_before_the_first = 6;} if ($days_before_the_first == -1) {
$day_of_month = ($month == date("m")) $days_before_the_first = 6;
? date("j") }
: -1; $day_of_month = ($month == date('m'))
? date('j')
: -1;
$days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year)); $days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year));
?><!DOCTYPE html> ?><!DOCTYPE html>
@@ -36,20 +38,27 @@ $days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year));
</nav> </nav>
<main> <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">
$pmonth = $month-1; <?php
$nmonth = $month+1; $pmonth = $month - 1;
$pyear=$year; $nmonth = $month + 1;
$nyear=$year; $pyear = $year;
if ($pmonth==0) {$pmonth=12; $pyear--;} $nyear = $year;
if ($nmonth==13) {$nmonth=1; $nyear++;} if ($pmonth == 0) {
?> $pmonth = 12;
<a class="btn noselect" href="../kalender?year=<?=$pyear?>&amp;month=<?=$pmonth?>">Forrige måned</a> --$pyear;
<a class="btn noselect" href="../kalender?year=<?=$nyear?>&amp;month=<?=$nmonth?>">Neste måned</a> }
if ($nmonth == 13) {
$nmonth = 1;
++$nyear;
}
?>
<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> </div>
<figure class="calendar"> <figure class="calendar">
<ul> <ul>
<li class="header noselect">mandag <li class="header noselect">mandag
@@ -59,32 +68,32 @@ $days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year));
<li class="header noselect">fredag <li class="header noselect">fredag
<li class="header noselect">lørdag <li class="header noselect">lørdag
<li class="header noselect">søndag <li class="header noselect">søndag
<?php if ($days_before_the_first != 0) { ?> <?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 } ?>
<?php for ($day=1; $day <= $days_in_month; $day++) { ?> <?php for ($day = 1; $day <= $days_in_month; ++$day) { ?>
<?php $events = $agenda->getEventsBetween( <?php $events = $agenda->getEventsBetween(
new DateTimeImmutable("$year-$month-$day 00:00:00"), new DateTimeImmutable("{$year}-{$month}-{$day} 00:00:00"),
new DateTimeImmutable("$year-$month-$day 23:59:59")); ?> new DateTimeImmutable("{$year}-{$month}-{$day} 23:59:59")
<?php if ($day==$day_of_month) { ?> ); ?>
<?php if ($day == $day_of_month) { ?>
<li class="active"> <li class="active">
<?php } else { ?> <?php } else { ?>
<li> <li>
<?php } ?> <?php } ?>
<?php if (sizeof($events)!=0) { ?> <?php if (count($events) != 0) { ?>
<a href="../aktiviteter/?<?="year=$year&amp;month=$month&amp;day=$day"?>"><div> <a href="../aktiviteter/?<?php echo "year={$year}&amp;month={$month}&amp;day={$day}"; ?>"><div>
<span class="noselect day"><?= $day ?>.</span> <span class="noselect day"><?php echo $day; ?>.</span>
<?php foreach($events as $event) { ?> <?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 } ?> <?php } ?>
</div></a> </div></a>
<?php } else { ?> <?php } else { ?>
<span class="noselect day"><?= $day ?>.</span> <span class="noselect day"><?php echo $day; ?>.</span>
<?php } ?> <?php } ?>
<?php } ?> <?php } ?>
</ul> </ul>
</figure> </figure>
</main> </main>

View File

@@ -1,5 +1,5 @@
<?php <?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> <!DOCTYPE html>
<html lang="no"> <html lang="no">
@@ -44,7 +44,7 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<p>Vi har en <a href="http://list.pvv.org/mailman/listinfo/aktive">e-postliste for aktive medlemmer</a>. All offisiell informasjon blir sendt på denne listen, og alle arrengementer blir også annonsert her.</p> <p>Vi har en <a href="http://list.pvv.org/mailman/listinfo/aktive">e-postliste for aktive medlemmer</a>. All offisiell informasjon blir sendt på denne listen, og alle arrengementer blir også annonsert her.</p>
<p>Vi har et <a target="_blank" href="https://matrix.to/#/#pvv:pvv.ntnu.no">Matrix Space™</a> for chat, memes, og all annen kommunikasjon. Den er bridget med IRC-kanalen og Discord-serveren vår. Hvis du er medlem kan du bruke vår egen instans av <a href="https://chat.pvv.ntnu.no">Element web</a>.</p> <p>Vi har et <a target="_blank" href="https://matrix.to/#/#pvv:pvv.ntnu.no">Matrix Space™</a> for chat, memes, og all annen kommunikasjon. Den er bridget med IRC-kanalen og Discord-serveren vår. Hvis du er medlem kan du bruke vår egen instans av <a href="https://chat.pvv.ntnu.no">Element web</a>.</p>
<p>Vi har en IRC-kanal på <a href="http://webchat.ircnet.net/">IRCnet</a> kalt #pvv.</p> <p>Vi har en IRC-kanal på <a href="http://webchat.ircnet.net/">IRCnet</a> kalt #pvv.</p>
<p>Vi har en <a target="_blank" href="https://discord.gg/8VTBr6Q">Discord-server</a> for de som foretrekker Discord over Matrix. </p> <p>Vi har en <a target="_blank" href="https://discord.gg/8VTBr6Q">Discord-server</a> for de som foretrekker Discord over Matrix. </p>

View File

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

View File

@@ -1,5 +1,5 @@
<?php <?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> <!DOCTYPE html>
<html lang="no"> <html lang="no">
@@ -34,7 +34,7 @@ p {hyphens: auto;}
width: 100%; width: 100%;
padding-top: 56.25%; /* 16:9 Aspect Ratio (divide 9 by 16 = 0.5625) */ padding-top: 56.25%; /* 16:9 Aspect Ratio (divide 9 by 16 = 0.5625) */
} }
/* Then style the iframe to fit in the container div with full height and width */ /* Then style the iframe to fit in the container div with full height and width */
.responsive-iframe { .responsive-iframe {
position: absolute; position: absolute;
@@ -45,10 +45,10 @@ p {hyphens: auto;}
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
</style> </style>
<div class="iframe-container" style="max-width: 100em;"> <div class="iframe-container" style="max-width: 100em;">
<iframe class="responsive-iframe" src="https://www.youtube.com/embed/Uy6HAvMdeuA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen ></iframe> <iframe class="responsive-iframe" src="https://www.youtube.com/embed/Uy6HAvMdeuA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen ></iframe>
</div> </div>
</article> </article>
<article> <article>
@@ -89,6 +89,6 @@ p {hyphens: auto;}
</main> </main>
<nav> <nav>
<?= navbar(1); ?> <?php echo navbar(1); ?>
<?= loginbar($sp, $pdo); ?> <?php echo loginbar($sp, $pdo); ?>
</nav> </nav>

View File

@@ -1,5 +1,5 @@
<?php <?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(); session_start();
@@ -28,7 +28,7 @@ $attrs = $as->getAttributes();
<main> <main>
<h2>Å bli medlem på PVV</h2> <h2>Å bli medlem på PVV</h2>
<p> <p>
Første steg for å bli medlem i PVV er å betale Første steg for å bli medlem i PVV er å betale
<a href="https://wiki.pvv.ntnu.no/wiki/Medlemskontingent">medlemskontingent</a> på 50kr per år. <a href="https://wiki.pvv.ntnu.no/wiki/Medlemskontingent">medlemskontingent</a> på 50kr per år.
@@ -44,9 +44,9 @@ $attrs = $as->getAttributes();
<p> <p>
Mer informasjon om medlemskap finner du <a href="https://wiki.pvv.ntnu.no/wiki/Medlem">her</a>. Mer informasjon om medlemskap finner du <a href="https://wiki.pvv.ntnu.no/wiki/Medlem">her</a>.
</p> </p>
<h2>Registrer deg som bruker</h2> <h2>Registrer deg som bruker</h2>
<p> <p>
PVV har for øyeblikket et manuelt system for å legge til nye brukere. PVV har for øyeblikket et manuelt system for å legge til nye brukere.
Se lenkene over for mer informasjon. Se lenkene over for mer informasjon.
@@ -56,10 +56,10 @@ $attrs = $as->getAttributes();
lokalene våre slik at vi kan få satt ditt passord. lokalene våre slik at vi kan få satt ditt passord.
</p> </p>
<iframe id="mazeMapper" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://use.mazemap.com/embed.html#v=1&zlevel=2&center=10.406194,63.417143&zoom=18&campusid=1&sharepoitype=poi&sharepoi=38159&utm_medium=iframe" style="border: 1px solid grey" allow="geolocation"></iframe><br/> <iframe id="mazeMapper" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://use.mazemap.com/embed.html#v=1&zlevel=2&center=10.406194,63.417143&zoom=18&campusid=1&sharepoitype=poi&sharepoi=38159&utm_medium=iframe" style="border: 1px solid grey" allow="geolocation"></iframe><br/>
<?php if($attrs) { //logged in with pvv account?> <?php if ($attrs) { // logged in with pvv account?>
<p> <p>
Du er nå logget in som <i><?= htmlspecialchars($attrs['uid'][0]) ?></i>, Du er nå logget in som <i><?php echo htmlspecialchars($attrs['uid'][0]); ?></i>,
og trenger klart ikke sende melding om å få ny PVV bruker. og trenger klart ikke sende melding om å få ny PVV bruker.
</p> </p>
<?php } ?> <?php } ?>

View File

@@ -1,50 +1,50 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../inc/navbar.php'; require __DIR__ . '/../../inc/navbar.php';
require __DIR__ . '/../../src/_autoload.php'; require __DIR__ . '/../../src/_autoload.php';
require __DIR__ . '/../../config.php'; require __DIR__ . '/../../config.php';
require_once __DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.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(); $as->requireAuth();
$attrs = $as->getAttributes(); $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); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$projectManager = new \pvv\side\ProjectManager($pdo); $projectManager = new pvv\side\ProjectManager($pdo);
$new = 0; $new = 0;
if(isset($_GET['new'])){ if (isset($_GET['new'])) {
$new = $_GET['new']; $new = $_GET['new'];
} }
$projectID = 0; $projectID = 0;
if(isset($_GET['id'])){ if (isset($_GET['id'])) {
$projectID = $_GET['id']; $projectID = $_GET['id'];
}else if($new == 0){ } elseif ($new == 0) {
echo "\nID not set"; echo "\nID not set";
exit(); exit;
} }
$project = new \pvv\side\Project( $project = new pvv\side\Project(
0, 0,
'Nytt Prosjekt', 'Nytt Prosjekt',
'', '',
$attrs["cn"][0], $attrs['cn'][0],
$attrs["uid"][0], $attrs['uid'][0],
$attrs["mail"][0], $attrs['mail'][0],
1 1
); );
if($new == 0){ if ($new == 0) {
$project = $projectManager->getByID($projectID); $project = $projectManager->getByID($projectID);
$owner = $projectManager->getProjectOwner($projectID); $owner = $projectManager->getProjectOwner($projectID);
if($owner['uname'] != $attrs["uid"][0]){ if ($owner['uname'] != $attrs['uid'][0]) {
header('HTTP/1.0 403 Forbidden'); header('HTTP/1.0 403 Forbidden');
echo "wrong user"; echo 'wrong user';
exit(); exit;
} }
} }
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -74,20 +74,20 @@ if($new == 0){
<form action="update.php", method="post"> <form action="update.php", method="post">
<p class="subtitle no-chin">Prosjektnavn</p> <p class="subtitle no-chin">Prosjektnavn</p>
<p class="subnote">Gi prosjektet ditt et passende navn</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="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> <p class="subnote no-chin">Hva går prosjektet ditt ut på?</p>
<p class="subnote">De første to linjene blir vist på prosjektkortet, prøv å gjøre de til et fint sammendrag eller intro!</p> <p class="subnote">De første to linjene blir vist på 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"/> <input type="hidden" name="active" value="1"/>
<div style="margin-top: 0.2em;"> <div style="margin-top: 0.2em;">
<hr class="ruler"> <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 } ?> <?php if (!$new) {?><input type="submit" class="btn" name="delete" value="Slett"></input><?php } ?>
</div> </div>
</form> </form>
</main> </main>

View File

@@ -1,8 +1,8 @@
<?php <?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']; $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(); $projects = $projectManager->getAll();
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -43,7 +43,7 @@ $projects = $projectManager->getAll();
<p> <p>
Styret har ansvaret for den daglige driften av PVV, og har myndighet som gitt i PVVs lover. Styret har ansvaret for den daglige driften av PVV, og har myndighet som gitt i PVVs lover.
Lederen for PVV velges om høsten og sitter i et år. Resten av styret velges for et halvår om Lederen for PVV velges om høsten og sitter i et år. Resten av styret velges for et halvår om
gangen, selv om praksis er at bare mindre justeringer gjøres i vårsemesteret. gangen, selv om praksis er at bare mindre justeringer gjøres i vårsemesteret.
</p> </p>
<p class="project-organizer">Organisert av Styreleder</p> <p class="project-organizer">Organisert av Styreleder</p>
</div> </div>
@@ -52,7 +52,7 @@ $projects = $projectManager->getAll();
<div class="card-content"> <div class="card-content">
<h4 class="project-title">Drift</h4> <h4 class="project-title">Drift</h4>
<p> <p>
Drift har ansvaret for å drive maskinene på PVV. Drift har ansvaret for å drive maskinene på PVV.
Driftsgruppen har ingen strenge krav til aktivitet eller erfaring for å bli medlem, Driftsgruppen har ingen strenge krav til aktivitet eller erfaring for å bli medlem,
så selv om du er ny i virket går det fint an å bare observere og absorbere i begynnelsen. så selv om du er ny i virket går det fint an å bare observere og absorbere i begynnelsen.
Vi vil gjøre vårt beste for å gi god hjelp og service til våre brukere. Vi vil gjøre vårt beste for å gi god hjelp og service til våre brukere.
@@ -60,13 +60,13 @@ $projects = $projectManager->getAll();
<p class="project-organizer">Organisert av Driftskordinator</p> <p class="project-organizer">Organisert av Driftskordinator</p>
</div> </div>
</div></a> </div></a>
<?php /*Her kan vi legge til PR og TriKom hvis det er ønskelig*/ ?> <?php /* Her kan vi legge til PR og TriKom hvis det er ønskelig */ ?>
</div> </div>
<h2>Medlems-prosjekter</h2> <h2>Medlems-prosjekter</h2>
<?php <?php
if(count($projects) == 0){ if (count($projects) == 0) {
?> ?>
<p>PVV har for øyeblikket ingen aktive prosjekter. Tenker du at noe bør gjøres? Har du en kul ide for noe PVV kan samarbeide om? Sett opp et prosjekt!</p> <p>PVV har for øyeblikket ingen aktive prosjekter. Tenker du at noe bør gjøres? Har du en kul ide for noe PVV kan samarbeide om? Sett opp et prosjekt!</p>
<br> <br>
<center> <center>
@@ -75,8 +75,8 @@ $projects = $projectManager->getAll();
</center> </center>
<br> <br>
<?php <?php
}else{ } else {
?> ?>
<p> <p>
Lyst til å gjøre noe kult? Her er et utvalg av de prosjektene som PVVere har holder på med. Mangler det noe, eller brenner du for noe annet?<br> Lyst til å gjøre noe kult? Her er et utvalg av de prosjektene som PVVere har holder på med. Mangler det noe, eller brenner du for noe annet?<br>
Sett opp et eget prosjekt da vel! Sett opp et eget prosjekt da vel!
@@ -84,24 +84,24 @@ $projects = $projectManager->getAll();
<div class="projects-container"> <div class="projects-container">
<?php <?php
$randProjects = array_rand($projects, min(6, count($projects))); $randProjects = array_rand($projects, min(6, count($projects)));
if (!is_array($randProjects)) { if (!is_array($randProjects)) {
$randProjects = [$randProjects]; $randProjects = [$randProjects];
}; }
foreach($randProjects as $i) { foreach ($randProjects as $i) {
$project = $projects[$i]; $project = $projects[$i];
$owner = $projectManager->getProjectOwner($project->getID()); $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"> <div class="card-content">
<h4 class="project-title"><?= $project->getName(); ?></h4> <h4 class="project-title"><?php echo $project->getName(); ?></h4>
<?php <?php
$Parsedown = new \Parsedown(); $Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", array_slice($project->getDescription(), 0, 2))); echo $Parsedown->text(implode("\n", array_slice($project->getDescription(), 0, 2)));
?> ?>
</div> </div>
<p class="project-organizer">Organisert av <?= $owner['name']; ?></p> <p class="project-organizer">Organisert av <?php echo $owner['name']; ?></p>
</div></a> </div></a>
<?php } ?> <?php } ?>
</div> </div>
@@ -110,7 +110,7 @@ $projects = $projectManager->getAll();
<a class="btn" href="mine.php">Mine prosjekter</a> <a class="btn" href="mine.php">Mine prosjekter</a>
</center> </center>
<?php <?php
} }
?> ?>
</main> </main>
</body> </body>

View File

@@ -1,47 +1,46 @@
<?php <?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; $projectID = 0;
if(isset($_GET['id'])){ if (isset($_GET['id'])) {
$projectID = $_GET['id']; $projectID = $_GET['id'];
}else{ } else {
echo 'No project ID provided'; echo 'No project ID provided';
exit(); exit;
} }
require_once(__DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php'); require_once __DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.php';
$as = new \SimpleSAML\Auth\Simple('default-sp'); $as = new SimpleSAML\Auth\Simple('default-sp');
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
$projectManager = new \pvv\side\ProjectManager($pdo); $projectManager = new pvv\side\ProjectManager($pdo);
$project = $projectManager->getByID($projectID); $project = $projectManager->getByID($projectID);
if (!$project) { if (!$project) {
echo ":^)"; echo ':^)';
exit(); exit;
} }
$members = $projectManager->getProjectMembers($projectID); $members = $projectManager->getProjectMembers($projectID);
$normal_members = $members; $normal_members = $members;
foreach($normal_members as $i => $data){ foreach ($normal_members as $i => $data) {
if($data['lead']){ if ($data['lead']) {
unset($normal_members[$i]); unset($normal_members[$i]);
} }
} }
$is_owner = False; $is_owner = false;
$is_member = False; $is_member = false;
if ($attrs){ if ($attrs) {
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
foreach($members as $member){ foreach ($members as $member) {
if ($member['uname'] == $uname){ if ($member['uname'] == $uname) {
if ($member['owner']==1){ if ($member['owner'] == 1) {
$is_owner = True; $is_owner = true;
} } elseif ($member['owner'] == 0) {
else if ($member['owner']==0){ $is_member = true;
$is_member = True; }
} }
} }
}
} }
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -66,11 +65,11 @@ if ($attrs){
<main class="contentsplit"> <main class="contentsplit">
<div class="gridr"> <div class="gridr">
<h2><?= $project->getName(); ?></h2> <h2><?php echo $project->getName(); ?></h2>
<?php <?php
$Parsedown = new \Parsedown(); $Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $project->getDescription())); echo $Parsedown->text(implode("\n", $project->getDescription()));
?> ?>
</div> </div>
<div class="gridl"> <div class="gridl">
@@ -79,49 +78,49 @@ if ($attrs){
<div class="projectlead"> <div class="projectlead">
<h2>Prosjektledelsen</h2> <h2>Prosjektledelsen</h2>
<div class="projectmember"> <div class="projectmember">
<?php foreach($members as $i => $data){ <?php foreach ($members as $i => $data) {
if($data['lead']){ if ($data['lead']) {
?> ?>
<p><?= $data['name']; ?></p> <p><?php echo $data['name']; ?></p>
<p class="memberrole"><?= $data['role'] ?></p> <p class="memberrole"><?php echo $data['role']; ?></p>
<p class="memberuname"><?= $data['uname']; ?></p> <p class="memberuname"><?php echo $data['uname']; ?></p>
<p class="memberemail"><?= $data['mail']; ?></p> <p class="memberemail"><?php echo $data['mail']; ?></p>
<?php } <?php }
} ?> } ?>
</div> </div>
</div> </div>
<?php <?php
if(sizeof($normal_members) > 0){ if (count($normal_members) > 0) {
?> ?>
<div class="projectmembers"> <div class="projectmembers">
<h2>Medlemmer</h2> <h2>Medlemmer</h2>
<?php foreach($normal_members as $i => $data){ <?php foreach ($normal_members as $i => $data) {
?> ?>
<div class="projectmember" style="border-color: #6a0;"> <div class="projectmember" style="border-color: #6a0;">
<p><?= $data['name']; ?></p> <p><?php echo $data['name']; ?></p>
<p class="memberrole"><?= $data['role'] ? $data['role'] : 'Deltaker' ?></p> <p class="memberrole"><?php echo $data['role'] ?: 'Deltaker'; ?></p>
<p class="memberuname"><?= $data['uname']; ?></p> <p class="memberuname"><?php echo $data['uname']; ?></p>
<p class="memberemail"><?= $data['mail']; ?></p> <p class="memberemail"><?php echo $data['mail']; ?></p>
</div> </div>
<?php } ?> <?php } ?>
</div> </div>
<?php <?php
} }
if(!$is_owner){ if (!$is_owner) {
?> ?>
<form action="update.php", method="post"><p> <form action="update.php", method="post"><p>
<input type="hidden" name="title" value="derp"/> <input type="hidden" name="title" value="derp"/>
<input type="hidden" name="desc" value="derp"/> <input type="hidden" name="desc" value="derp"/>
<input type="hidden" name="active" value="derp"/> <input type="hidden" name="active" value="derp"/>
<input type="hidden" name="id" value="<?= $projectID ?>"/> <input type="hidden" name="id" value="<?php echo $projectID; ?>"/>
<input type="submit" class="btn" name="join_or_leave" value="<?= ($is_member ? 'Forlat' : 'Bli med!') ?>"></input> <input type="submit" class="btn" name="join_or_leave" value="<?php echo $is_member ? 'Forlat' : 'Bli med!'; ?>"></input>
</p></form> </p></form>
<?php <?php
} }
?> ?>
</div> </div>
</div> </div>
</main> </main>

View File

@@ -1,36 +1,34 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../inc/navbar.php'; require __DIR__ . '/../../inc/navbar.php';
require __DIR__ . '/../../src/_autoload.php'; require __DIR__ . '/../../src/_autoload.php';
require __DIR__ . '/../../config.php'; require __DIR__ . '/../../config.php';
require_once(__DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.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(); $as->requireAuth();
$attrs = $as->getAttributes(); $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); $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]); $projects = $projectManager->getByOwner($attrs['uid'][0]);
$page = 1; $page = 1;
if(isset($_GET['page'])){ if (isset($_GET['page'])) {
$page = $_GET['page']; $page = $_GET['page'];
} }
$filter = ''; $filter = '';
if(isset($_GET['filter'])){ if (isset($_GET['filter'])) {
$filter = $_GET['filter']; $filter = $_GET['filter'];
} }
// filter // filter
$projects = array_values(array_filter( $projects = array_values(array_filter(
$projects, $projects,
function($project) use ($filter){ static fn($project) => (preg_match('/.*' . $filter . '.*/i', $project->getName()) || preg_match('/.*' . $filter . '.*/i', implode(' ', $project->getDescription())))
return (preg_match('/.*'.$filter.'.*/i', $project->getName()) or preg_match('/.*'.$filter.'.*/i', implode(" ", $project->getDescription())));
}
)); ));
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -50,8 +48,8 @@ $projects = array_values(array_filter(
<body> <body>
<nav> <nav>
<?= navbar(1, 'prosjekt'); ?> <?php echo navbar(1, 'prosjekt'); ?>
<?= loginbar(); ?> <?php echo loginbar(); ?>
</nav> </nav>
<main class="gridsplit"> <main class="gridsplit">
@@ -60,49 +58,49 @@ $projects = array_values(array_filter(
<ul class="event-list"> <ul class="event-list">
<?php <?php
$counter = 0; $counter = 0;
$pageLimit = 8; $pageLimit = 8;
for($i = ($pageLimit * ($page - 1)); $i < count($projects); $i++){ for ($i = ($pageLimit * ($page - 1)); $i < count($projects); ++$i) {
if($counter == $pageLimit){ if ($counter == $pageLimit) {
break; break;
} }
$project = $projects[$i]; $project = $projects[$i];
$projectID = $project->getID(); $projectID = $project->getID();
$owner = $projectManager->getProjectOwner($projectID); $owner = $projectManager->getProjectOwner($projectID);
if($owner['uname'] != $attrs['uid'][0]){ if ($owner['uname'] != $attrs['uid'][0]) {
continue; continue;
} }
?> ?>
<li> <li>
<div class="event"> <div class="event">
<div class="event-info"> <div class="event-info">
<a href="edit.php?id=<?= $project->getID() ?>"> <a href="edit.php?id=<?php echo $project->getID(); ?>">
<h3 class="no-chin"><?= $project->getName()?></h3> <h3 class="no-chin"><?php echo $project->getName(); ?></h3>
</a> </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>
</div> </div>
</li> </li>
<?php <?php
$counter++; ++$counter;
} }
?> ?>
</ul> </ul>
<?php <?php
if($page != 1){ if ($page != 1) {
echo '<a class="btn float-left" href="?page=' . ($page - 1) . '&filter=' . urlencode($filter) . '">Forrige side</a>'; 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>'; echo '<a class="btn float-right" href="?page=' . ($page + 1) . '&filter=' . urlencode($filter) . '">Neste side</a>';
} }
?> ?>
</div> </div>
<div class="gridr"> <div class="gridr">
@@ -111,7 +109,7 @@ $projects = array_values(array_filter(
<h2>Filter</h2> <h2>Filter</h2>
<form action="mine.php" method="get"> <form action="mine.php" method="get">
<p class="no-chin">Navn</p> <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;"> <div style="margin-top: 2em;">
<input type="submit" class="btn" value="Filtrer"></input> <input type="submit" class="btn" value="Filtrer"></input>

View File

@@ -1,18 +1,18 @@
<?php <?php
date_default_timezone_set('Europe/Oslo'); date_default_timezone_set('Europe/Oslo');
setlocale(LC_ALL, 'nb_NO'); setlocale(\LC_ALL, 'nb_NO');
require __DIR__ . '/../../src/_autoload.php'; require __DIR__ . '/../../src/_autoload.php';
require __DIR__ . '/../../config.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); $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']); header('Location: ' . $_SERVER['HTTP_REFERER']);
exit(); exit;
} }
require_once(__DIR__ . '/../../vendor/simplesamlphp/simplesamlphp/lib/_autoload.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(); $as->requireAuth();
$attrs = $as->getAttributes(); $attrs = $as->getAttributes();
@@ -28,95 +28,93 @@ $name = $attrs['cn'][0];
$uname = $attrs['uid'][0]; $uname = $attrs['uid'][0];
$mail = $attrs['mail'][0]; $mail = $attrs['mail'][0];
$statement;
if($id == 0){
$query = 'INSERT INTO projects (name, description, active) VALUES (:title, :desc, 1)';
$statement = $pdo->prepare($query);
$statement->bindParam(':title', $title, PDO::PARAM_STR); if ($id == 0) {
$statement->bindParam(':desc', $desc, PDO::PARAM_STR); $query = 'INSERT INTO projects (name, description, active) VALUES (:title, :desc, 1)';
$statement = $pdo->prepare($query);
$statement->execute(); $statement->bindParam(':title', $title, PDO::PARAM_STR);
$new_id = $pdo->lastInsertId(); $statement->bindParam(':desc', $desc, PDO::PARAM_STR);
$ownerQuery = "INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (:id, :owner, :owneruname, :owneremail, 'Prosjektleder', 1, 1)"; $statement->execute();
$statement = $pdo->prepare($ownerQuery); $new_id = $pdo->lastInsertId();
$statement->bindParam(':id', $new_id, PDO::PARAM_STR);
$statement->bindParam(':owner', $name, PDO::PARAM_STR);
$statement->bindParam(':owneruname', $uname, PDO::PARAM_STR);
$statement->bindParam(':owneremail', $mail, PDO::PARAM_STR);
$statement->execute(); $ownerQuery = "INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (:id, :owner, :owneruname, :owneremail, 'Prosjektleder', 1, 1)";
} $statement = $pdo->prepare($ownerQuery);
else { $statement->bindParam(':id', $new_id, PDO::PARAM_STR);
$projectManager = new \pvv\side\ProjectManager($pdo); $statement->bindParam(':owner', $name, PDO::PARAM_STR);
$owner = $projectManager->getProjectOwner($id); $statement->bindParam(':owneruname', $uname, PDO::PARAM_STR);
$members = $projectManager->getProjectMembers($id); $statement->bindParam(':owneremail', $mail, PDO::PARAM_STR);
//if ($do_join_or_leave and $owner['uname'] != $uname) { $statement->execute();
if ($do_join_or_leave) { } else {
$is_member = False; $projectManager = new pvv\side\ProjectManager($pdo);
foreach($members as $member){ $owner = $projectManager->getProjectOwner($id);
if ($member['uname'] == $uname and $member['owner']==0){ $members = $projectManager->getProjectMembers($id);
$is_member = True;
break;
}
}
if ($is_member){//leave
$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(); // if ($do_join_or_leave and $owner['uname'] != $uname) {
print("leave"); if ($do_join_or_leave) {
} $is_member = false;
else{//join foreach ($members as $member) {
$query = "INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (:id, :name, :uname, :mail, 'Medlem', 0, 0)"; if ($member['uname'] == $uname && $member['owner'] == 0) {
$statement = $pdo->prepare($query); $is_member = true;
$statement->bindParam(':id', $id, PDO::PARAM_STR); break;
$statement->bindParam(':name', $name, PDO::PARAM_STR); }
$statement->bindParam(':uname', $uname, PDO::PARAM_STR); }
$statement->bindParam(':mail', $mail, PDO::PARAM_STR); if ($is_member) {// leave
$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(); $statement->execute();
print("join"); echo 'leave';
} } else {// join
header('Location: ./info.php?id=' . $id); $query = "INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (:id, :name, :uname, :mail, 'Medlem', 0, 0)";
exit(); $statement = $pdo->prepare($query);
} $statement->bindParam(':id', $id, PDO::PARAM_STR);
$statement->bindParam(':name', $name, PDO::PARAM_STR);
$statement->bindParam(':uname', $uname, PDO::PARAM_STR);
$statement->bindParam(':mail', $mail, PDO::PARAM_STR);
if($uname != $owner['uname']){ $statement->execute();
header('Content-Type: text/plain', true, 403); echo 'join';
echo "Illegal action, you're not the project owner for project with ID " . $id . "\r\n"; }
exit(); header('Location: ./info.php?id=' . $id);
} exit;
}
if ($do_delete) {
// this should be done as a transaction...
$pdo->beginTransaction();
$query = 'DELETE FROM projects WHERE id=:id';
$statement = $pdo->prepare($query);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();
$query = 'DELETE FROM projectmembers WHERE projectid=:id';
$statement = $pdo->prepare($query);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();
$pdo->commit();
}else{
$query = 'UPDATE projects SET name=:title, description=:desc WHERE id=:id';
$statement = $pdo->prepare($query);
$statement->bindParam(':title', $title, PDO::PARAM_STR); if ($uname != $owner['uname']) {
$statement->bindParam(':desc', $desc, PDO::PARAM_STR); header('Content-Type: text/plain', true, 403);
$statement->bindParam(':id', $id, PDO::PARAM_INT); echo "Illegal action, you're not the project owner for project with ID " . $id . "\r\n";
exit;
$statement->execute(); }
}
if ($do_delete) {
// this should be done as a transaction...
$pdo->beginTransaction();
$query = 'DELETE FROM projects WHERE id=:id';
$statement = $pdo->prepare($query);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();
$query = 'DELETE FROM projectmembers WHERE projectid=:id';
$statement = $pdo->prepare($query);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();
$pdo->commit();
} else {
$query = 'UPDATE projects SET name=:title, description=:desc WHERE id=:id';
$statement = $pdo->prepare($query);
$statement->bindParam(':title', $title, PDO::PARAM_STR);
$statement->bindParam(':desc', $desc, PDO::PARAM_STR);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();
}
} }
header('Location: ./mine.php'); header('Location: ./mine.php');

View File

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

View File

@@ -1,5 +1,8 @@
<?php namespace pvv\side; <?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
namespace pvv\side;
require_once \dirname(__DIR__, 2) . implode(\DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="no"> <html lang="no">
@@ -16,8 +19,8 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<body> <body>
<nav> <nav>
<?= navbar(1, 'tjenester'); ?> <?php echo navbar(1, 'tjenester'); ?>
<?= loginbar($sp, $pdo); ?> <?php echo loginbar($sp, $pdo); ?>
</nav> </nav>
<main> <main>
@@ -189,7 +192,7 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<img class="serviceImage" src="img/gallery.png" alt="RSS-Ikon"> <img class="serviceImage" src="img/gallery.png" alt="RSS-Ikon">
</div> </div>
<!-- Bokhylle /brzeczyszczykiewicz ? --> <!-- Bokhylle /brzeczyszczykiewicz ? -->
</div> </div>
</div> </div>