Commit 797760a2 authored by S.Holzhauer's avatar S.Holzhauer

Merge remote-tracking branch 'origin/kwokspartyhouse' into raspideply

Conflicts: WebContent/watchdad/modules/Leefpatroon/check_input.php
parents f68b3636 7e829805
......@@ -14,6 +14,9 @@ leefpatroon.php is de pagina waar de user het leefpatroon kan instellen van de o
Deze instellingen worden opgeslagen in de database.
Het leefpatroon wordt dan opgenomen door het systeem.
d.m.v motion triggers op de camera kan er worden gekeken als het leefpatroon wordt nageleefd, anders zullen de afwijkingen ervan worden vermeldt.
leefpatroon_base.php wordt hier aangeroepen.
Drie .js bestanden worden hier aangeroepen leefpatroon_retrieve,insert en submit.js
-->
<!DOCTYPE html>
......
<?php
/*
* Check_input.php checks the post variables from the form at leefpatroon_base.php.
* this file will be runned from leefpatroon_submit.js.
*/
//session_start() so the $_SESSION variables can be used
session_start();
require_once ('../backend/dbconnection.php');
......@@ -63,87 +67,117 @@ if (checkSet($inputFieldsCount, $inputFields) != FALSE) {
// check the POST variable activiteit is correct and not empty
if (empty($_POST['activiteit']) == FALSE && sanityCheck($_POST['activiteit'], 'string', 80) != FALSE) {
$activity = $_POST['activiteit'];
mysqli_close($conn);
} else {
$errors++;
echo '<p ' . $redTextError . '>Ongeldige invoer bij Activiteit</p>';
// Default message if the form is POSTed without a single value
echo '<p ' . $redTextError . '>Vul alstublieft alle velden in</p>';
}
}
// checks if the post variable getActivityID is false
else {
// check the POST variable begintijd is correct and not empty
if (empty($_POST['begintijd']) == FALSE && isRealTime($_POST['begintijd']) != FALSE) {
// checks if all inputFields variables are not empty
if (checkSet($inputFieldsCount, $inputFields) != FALSE) {
// check the POST variable activiteit is correct and not empty
if (empty($_POST['activiteit']) == FALSE && sanityCheck($_POST['activiteit'], 'string', 80) != FALSE) {
$activity = $_POST['activiteit'];
} else {
$errors++;
echo '<p ' . $redTextError . '>Ongeldige invoer bij Activiteit</p>';
}
$startTime = $_POST['begintijd'];
} else {
$errors++;
echo '<p ' . $redTextError . '>Ongeldige invoer bij Begintijd</p>';
}
// check the POST variable eindtijd is correct and not empty
if (empty($_POST['eindtijd']) == FALSE && isRealTime($_POST['eindtijd']) != FALSE) {
// check the POST variable begintijd is correct and not empty
if (empty($_POST['begintijd']) == FALSE && isRealTime($_POST['begintijd']) != FALSE) {
$endTime = $_POST['eindtijd'];
} else {
$errors++;
echo '<p ' . $redTextError . '>Ongeldige invoer bij Eindtijd</p>';
}
// check if begintijd and eindtijd are both not empty and have the same values
if ($_POST['begintijd'] == $_POST['eindtijd'] && $_POST['begintijd'] != "" && $_POST['eindtijd'] != "") {
$errors++;
echo '<p ' . $redTextError . '>Begintijd en Eindtijd mogen niet overeenkomen</p>';
}
$startTime = $_POST['begintijd'];
} else {
$errors++;
echo '<p ' . $redTextError . '>Ongeldige invoer bij Begintijd</p>';
}
// check the POST variable eindtijd is correct and not empty
if (empty($_POST['eindtijd']) == FALSE && isRealTime($_POST['eindtijd']) != FALSE) {
// check if beweging_opties is selected
if ($_POST['beweging_opties'] == 0 || $_POST['beweging_opties'] == 1) {
$movement = $_POST['beweging_opties'];
} else {
$errors++;
echo '<p ' . $redTextError . '>Ongeldige selectie bij Beweging Waarnemen</p>';
}
$endTime = $_POST['eindtijd'];
} else {
$errors++;
echo '<p ' . $redTextError . '>Ongeldige invoer bij Eindtijd</p>';
}
// check if begintijd and eindtijd are both not empty and have the same values
if ($_POST['begintijd'] == $_POST['eindtijd'] && $_POST['begintijd'] != "" && $_POST['eindtijd'] != "") {
$errors++;
echo '<p ' . $redTextError . '>Begintijd en Eindtijd mogen niet overeenkomen</p>';
}
// check the POST variable Comment is correct
if (sanityCheck($_POST['opmerking'], 'string', 80) != FALSE) {
// check if beweging_opties is selected
if ($_POST['beweging_opties'] == 0 || $_POST['beweging_opties'] == 1) {
$movement = $_POST['beweging_opties'];
} else {
$errors++;
echo '<p ' . $redTextError . '>Ongeldige selectie bij Beweging Waarnemen</p>';
}
$comment = $_POST['opmerking'];
} else {
$comment = '';
echo '<p ' . $redTextError . '>Uw opmerking bevat ' . strlen($_POST['opmerking']) .' karakters</p>';
echo '<p ' . $redTextError . '>Het maximaal aantal karakters is 80.</p>';
}
// check the POST variable Comment is correct
if (strlen($_POST['opmerking']) < 80) {
// check if it has 1 or more errors, if so run exit()
if ($errors >= 1) {
exit();
}
$comment = $_POST['opmerking'];
} else {
$comment = '';
echo '<p ' . $redTextError . '>Uw opmerking bevat ' . strlen($_POST['opmerking']) . ' karakters</p>';
echo '<p ' . $redTextError . '>Het maximaal aantal karakters is 80.</p>';
}
if (mysqli_connect_errno()) {
echo "<p ' . $dbTextError . '>Failed to connect to MySQL: " . mysqli_connect_error() . ".</p>";
echo $systemError;
exit();
}
$selectQuery = "SELECT StartTime, EndTime, Activity, Day FROM Leefpatroon WHERE OuderID = '$OuderID'";
$result = $conn->query($selectQuery);
while ($row = $result->fetch_assoc()) {
// if StartTime is the same as another activity's one on the same day
if ($startTime == $row["StartTime"] && $day == $row["Day"]) {
$errors++;
echo '<p ' . $redTextError . '>Er is al een activiteit geregistreerd op dezelfde Begintijd voor (' . $row["Activity"] . ').</p>';
// if StartTime is during another activity on the same day
} else if ($row["StartTime"] < $startTime && $row["EndTime"] > $startTime && $day == $row["Day"]) {
$errors++;
echo '<p ' . $redTextError . '>Een andere activiteit is al geregistreerd om gemonitord te worden tijdens uw opgegeven Begintijd (' . $row["Activity"] . ').</p>';
}
}
// Sql query to insert and check each variable with mysqli_real_escape_string()
$sql = sprintf("INSERT INTO Leefpatroon (StartTime, EndTime, Activity, Movement, Day, Comment, OuderID)
// check if it has 1 or more errors, if so run exit()
if ($errors >= 1) {
$errors = 0;
exit();
}
if (mysqli_connect_errno()) {
echo "<p ' . $dbTextError . '>Failed to connect to MySQL: " . mysqli_connect_error() . ".</p>";
echo $systemError;
exit();
}
// Sql query to insert and check each variable with mysqli_real_escape_string()
$sql = sprintf("INSERT INTO Leefpatroon (StartTime, EndTime, Activity, Movement, Day, Comment, OuderID)
VALUES( '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
mysqli_real_escape_string($conn, $startTime),
mysqli_real_escape_string($conn, $endTime),
mysqli_real_escape_string($conn, $activity),
mysqli_real_escape_string($conn, $movement),
mysqli_real_escape_string($conn, $day),
mysqli_real_escape_string($conn, $comment),
mysqli_real_escape_string($conn, $OuderID));
// run the query
if (!mysqli_query($conn, $sql)) {
echo '<p ' . $dbTextError . '>Error: ' . mysqli_error($conn) . '</p>';
echo $systemError;
exit();
mysqli_real_escape_string($conn, $startTime),
mysqli_real_escape_string($conn, $endTime),
mysqli_real_escape_string($conn, $activity),
mysqli_real_escape_string($conn, $movement),
mysqli_real_escape_string($conn, $day),
mysqli_real_escape_string($conn, $comment),
mysqli_real_escape_string($conn, $OuderID));
// run the query
if (!mysqli_query($conn, $sql)) {
echo '<p ' . $dbTextError . '>Error: ' . mysqli_error($conn) . '</p>';
echo $systemError;
exit();
} else {
echo '<p ' . $greenTextSuccess . '>Uw gegevens zijn opgeslagen, klik <a href="activiteiten.php">hier</a> om naar activiteiten te gaan.</p>';
echo '<p ' . $greenTextSuccess . '>Klik op de reset knop om de pagina te resetten.</p>';
}
mysqli_close($conn);
} else {
echo '<p ' . $greenTextSuccess . '>Uw gegevens zijn opgeslagen, klik <a href="activiteiten.php">hier</a> om naar activiteiten te gaan.</p>';
echo '<p ' . $greenTextSuccess . '>Klik op de reset knop om de pagina te resetten.</p>';
// Default message if the form is POSTed without a single value
echo '<p ' . $redTextError . '>Vul alstublieft alle velden in</p>';
}
mysqli_close($conn);
} else {
// Default message if the form is POSTed without a single value
echo '<p ' . $redTextError . '>Vul alstublieft alle velden in</p>';
}
?>
\ No newline at end of file
<!--
leefpatroon_base.php wordt aangeroepen in leefpatroon.php.
Input formulier van leefpatroon.
Leefpatroon_popup.php wordt hier ook onderaan de panel-body aangeroepen.
-->
<div class="panel panel-default">
<div class="panel-heading">
......@@ -9,9 +14,10 @@
<!-- COLUMN 1-->
<form role="form" action="modules/Leefpatroon/check_input.php" method="post" class="ajax">
<div class="col-lg-6">
<input type="hidden" id="getActivityID" name="getActivityID" value="">
<div class="form-group">
<label>Activiteit</label>
<input class="form-control" placeholder="Voer activiteit in" name="activiteit" id="activiteit">
<input class="form-control" placeholder="Voer een activiteit in" name="activiteit" id="activiteit">
<p class="help-block">&nbsp</p>
</div>
......@@ -34,7 +40,7 @@
</div>
</div>
<button type="submit" class="btn btn-default">Opslaan</button>
<button type="submit" class="btn btn-default" id="opslaan">Opslaan</button>
<button type="reset" class="btn btn-default">Reset</button>
</div>
......@@ -44,13 +50,13 @@
<label>Dag</label>
<!-- Day choices is a drop down which the user chooses from -->
<select class="form-control" name="day" id="day">
<option value="0">Sunday</option>
<option value="1">Monday</option>
<option value="2">Tuesday</option>
<option value="3">Wednesday</option>
<option value="4">Thursday</option>
<option value="5">Friday</option>
<option value="6">Saturday</option>
<option value="0">Zondag</option>
<option value="1">Maandag</option>
<option value="2">Dinsdag</option>
<option value="3">Woensdag</option>
<option value="4">Donderdag</option>
<option value="5">Vrijdag</option>
<option value="6">Zaterdag</option>
</select>
<p class="help-block">Selecteer de dag waarop deze activiteit plaats vind</p>
</div>
......
/* Leefpatroon_insert.js wordt standaard aangeroepen in leefpatroon.php
* Leefpatroon haalt het geselecteerde ID op en wanneer er op het gebruik knopje gedrukt wordt,
* dan vult het de leefpatroon_base.php formulier in met deze data die uit use_leefpatroon.php komt
*/
var passVal;
// zoek naar de select element waneer het veranderd
// zoekt naar de select element wanneer het veranderd
$('select').on('change', function () {
var selectedVal = $(this).val();
passVal = selectedVal;
//console.log(selectedVal);
});
// wanneer er op de button Gebruik geklikt wordt
$('#gebruik').click(function () {
$.ajax({
url: "modules/Leefpatroon/use_leefpatroon.php?q=" + passVal,
type: "get",
type: "post",
dataType: "json",
data: {},
success: function (data) {
// vult de inputvelden in van het formulier
$('#getActivityID').val(data.ActivityID);
$('#activiteit').val(data.Activity);
$('#begintijd').val(data.StartTime);
$('#eindtijd').val(data.EndTime);
......@@ -28,8 +32,10 @@ $('#gebruik').click(function () {
// hide de error messages
$('#melding').hide();
// Wijzigen tekst ipv opslaan tekst & effect
$('#opslaan').hide().html("Wijzigen").fadeIn(200);
}
});
return false;
});
<?php ?>
<!--
leefpatroon_popup.php wordt aangeroepen in leefpatroon_base.php.
Deze popup wordt getoond als er op de blauwe button geklikt wordt. (Leefpatroon Geschiedenis)
select klasse heeft een javascript functie showActivity die een int verstuurd naar leefpatroon_retrieve.js
retrieve_options_leefpatroon.php wordt in de activities select klasse aangeroepen.
-->
<!-- LEEFPATROON SUGGESTIES -->
<div class="panel-footer">
<!-- Button trigger modal -->
......@@ -26,6 +31,8 @@
<div class="modal-footer">
<button type="submit" class="btn btn-primary" id="gebruik">Gebruik</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Sluit</button>
<p class="help-block">Let op! Wanneer u een activiteit gebruikt, wijzigt u de gegevens nadat u op wijzigen drukt</p>
</div>
</div>
<!-- /.modal-content -->
......
/* leefpatroon_retrieve.js wordt aangeroepen in leefpatroon.php
* showActivity wordt gebruikt in de onChange select waarde in leefpatroon_popup.php
*/
function showActivity(str) {
//howActivity gaat eerst kijken of de str parameter leeg is, zo ja dan maakt het txtMsg leeg.
if (str == "") {
document.getElementById("txtMsg").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
xmlhttp = new XMLHttpRequest(); // request without page refresh
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // request without page refresh
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// laat de standaard tekst zien van txtMsg op leefpatroon_popup.php
document.getElementById("txtMsg").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","modules/Leefpatroon/retrieve_leefpatroon.php?q="+str,true);
// opent de retrieve_leefpatroon.php en stuurt een GET mee met q= en de str waarde
xmlhttp.open("GET","modules/Leefpatroon/retrieve_leefpatroon.php?q="+str,true); // true, wanneer onreadystatechange klaar is
xmlhttp.send();
}
}
\ No newline at end of file
/* leefpatroon_submit.js wordt aangeroepen in leefpatroon.php
* deze bestand zorgt voor het doorsturen van de data uit het leefpatroon_base.php
* formulier naar check_input.php en ook dus om meldingen te weergeven
* zonder de pagina te herladen
*/
var count = 0;
$('form.ajax').on('submit', function () {
......@@ -15,13 +20,15 @@ $('form.ajax').on('submit', function () {
});
// find the value of radio
that.find('[value]').each(function (index, value) {
var that = $(this),
radio = that.attr('name'),
value = $('input:radio:checked').val();
data[radio] = value;
});
var radiobtnName = $('input:radio:checked').attr('name');
var radiobtn = $('input:radio:checked').val();
data[radiobtnName] = radiobtn;
// find the value of the hidden field
var activityName = $('#getActivityID').attr('name');
var activityid = $('#getActivityID').val();
data[activityName] = activityid;
$.ajax({
url: url,
type: type,
......@@ -39,6 +46,8 @@ $('form.ajax').on('submit', function () {
if (!$('#melding').is(":visible")) {
$('#melding').delay(250).fadeIn(700);
}
// Opslaan button tekst & effect
$('#opslaan').hide().html("Opslaan").fadeIn(900);
// insert data to the specific id
$('#melding_msg').html(data);
......@@ -49,4 +58,4 @@ $('form.ajax').on('submit', function () {
$('form.ajax').on('reset', function () {
location.reload();
});
});
\ No newline at end of file
<?php
/*retrieve_leefpatroon.php wordt aangeroepen door de leefpatroon_retrieve.js
* Dit zorgt ervoor dat op de leefpatroon_popup.php een tabel met voor de specifieke
* ActivityID getoond wordt.
*/
// herkent session van OuderID niet dus session nog een keer gestart
session_start();
$q = intval($_GET['q']);
require_once ('../functions.php');
require_once ('../backend/dbconnection.php');
......@@ -25,19 +31,19 @@ while ($row = $retval->fetch_assoc()) {
echo '<table class="table table-striped table-bordered table-hover" id="retrieved_table">';
echo "<tbody>";
echo "<tr>
<th>Activity</th>
<th>StartTime</th>
<th>EndTime</th>
<th>Movement</th>
<th>Day</th>
<th>Comment</th>
<th>Activiteit</th>
<th>Begintijd</th>
<th>Eindtijd</th>
<th>Beweging Waarnemen</th>
<th>Dag</th>
<th>Opmerkingen</th>
</tr>";
echo "<tr>";
echo "<td>" . $row['Activity'] . "</td>";
echo "<td>" . $row['StartTime'] . "</td>";
echo "<td>" . $row['EndTime'] . "</td>";
echo "<td>" . $row['Movement'] . "</td>";
echo "<td>" . $row['Day'] . "</td>";
echo "<td>" . intToString($row['Movement']) . "</td>";
echo "<td>" . dateToString($row['Day']) . "</td>";
echo "<td>" . $row['Comment'] . "</td>";
echo "</tr>";
echo "</tbody>";
......
<?php
/* retrieve_options_leefpatroon.php wordt aangeroepen door de leefpatroon_popup.php
* Er wordt een drop-down selector aangemaakt die gesorteerd wordt op de laatst ingevulde activiteit
*/
require_once ('modules/backend/dbconnection.php');
global $conn;
......@@ -23,35 +26,6 @@ if (!$retval) {
die('Could not get data: ' . mysqli_error($conn));
}
// datum int converteren naar string datum
function dateToString($day) {
switch ($day) {
case 0:
$day = "Zondag";
return $day;
case 1:
$day = "Maandag";
return $day;
case 2:
$day = "Dinsdag";
return $day;
case 3:
$day = "Woensdag";
return $day;
case 4:
$day = "Donderdag";
return $day;
case 5:
$day = "Vrijdag";
return $day;
case 6:
$day = "Zaterdag";
return $day;
default:
return "Geen datum opgegeven";
}
}
while ($row = $retval->fetch_assoc()) {
echo '<option value="' . $row['ActivityID'] . '">' . $row['Activity'] . ' - ' . dateToString($row['Day']) . '</option>';
}
......
<?php
/* use_leefpatroon.php wordt aangeroepen in de leefpatroon_insert.js
* Deze bestand selecteert uit de database die specifieke ActivityID op basis
* van de data uit leefpatroon_insert.js
*/
// herkent session van OuderID niet dus session nog een keer gestart
session_start();
$q = intval($_GET['q']);
......@@ -22,7 +27,7 @@ if (mysqli_connect_errno()) {
$OuderID = $_SESSION['OuderID'];
$sql = "SELECT StartTime, EndTime, Activity, Movement, Day, Comment FROM Leefpatroon WHERE OuderID = '$OuderID' AND ActivityID = '".$q."'";
$sql = "SELECT ActivityID, StartTime, EndTime, Activity, Movement, Day, Comment FROM Leefpatroon WHERE OuderID = '$OuderID' AND ActivityID = '".$q."'";
$retval = mysqli_query($conn, $sql);
if (!$retval) {
......
......@@ -6,6 +6,7 @@ function do_html_title($page_title) {
return $title;
}
// checks if the given input applies
function sanityCheck($string, $type, $length) {
// assign the type
......@@ -26,25 +27,61 @@ function sanityCheck($string, $type, $length) {
}
}
function isRealDate($date) {
if (strtotime($date) === false) {
return false;
} else {
list($year, $month, $day) = explode('-', $date);
if (checkdate($month, $day, $year) === false) {
return false;
}
}
return true;
}
// check if string matches the 24H clock
function isRealTime($time) {
// accepts [0-1]|[0-9]|2[0-3]:[0-5]|[0-9]:[0-5]|[0-9] (00:00:00 - 23:59:59)
if (preg_match('/^(0?\d|1\d|2[0-3]):[0-5]\d:[0-5]\d$/', $time)) {
return true;
} else {
return false;
}
}
// Convert int to string date
function dateToString($day) {
switch ($day) {
case 0:
$day = "Zondag";
return $day;
case 1:
$day = "Maandag";
return $day;
case 2:
$day = "Dinsdag";
return $day;
case 3:
$day = "Woensdag";
return $day;
case 4:
$day = "Donderdag";
return $day;
case 5:
$day = "Vrijdag";
return $day;
case 6:
$day = "Zaterdag";
return $day;
default:
return "Geen datum opgegeven";
}
}
// convert 0 to false or 1 to true
function intToString($int) {
switch ($int) {
case 0: {
$int = "Nee";
return $int;
}
case 1: {
$int = "Ja";
return $int;
}
default:{
echo "Er is iets fouts geggaan met het converteren van een Int naar een String";
return;
}
}
}
?>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment