403 lines
15 KiB
PHP
403 lines
15 KiB
PHP
<?php
|
|
if(!isset($_SESSION)) { session_start(); }
|
|
include_once '../classes/TestProjektSmarty.class_subdir.php';
|
|
require_once("../config.inc.php");
|
|
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
|
$smarty = new SmartyAdmin();
|
|
require_once("../language/german.inc.php");
|
|
require_once("../func_get_parameter.php");
|
|
require_once("../config/func_cryption.php");
|
|
|
|
if (isset($_GET['action'])) {
|
|
$action = $_GET['action'];
|
|
} else {
|
|
$action = '';
|
|
}
|
|
|
|
|
|
#########Konfiguration#######################################
|
|
$verz = "upload_csv/"; // relatives Uploadverzeichnis (relativ zum 'Standort' dieser Datei, wohin die Dateien kopiert werden sollen
|
|
$trennzeichen_excel = "\t"; // Das Trennzeichen das Excel für CVS-Dateien nimmt ist je nach Excelversion unterschiedlich:
|
|
// Entweder $trennzeichen_excel = ";"; --> Semikolon
|
|
// oder $trennzeichen_excel = ","; --> Komma
|
|
#############################################################
|
|
|
|
|
|
|
|
|
|
$_SESSION["ck_verz"] = $verz;
|
|
|
|
|
|
if ($action == '') {
|
|
|
|
$german = $db->query("SET lc_time_names = 'de_DE';");
|
|
|
|
$query1 = "SELECT a.tm_id, date_format(tm_datum, '%a, %d.%m.%Y - %H:%i Uhr')tm_datum_form, tm_standort
|
|
FROM bpm_termine a, bpm_term_kand b
|
|
WHERE a.tm_id=b.tm_id
|
|
AND a.tm_datum > ADDDATE(now(), -7)
|
|
GROUP BY a.tm_id, tm_datum_form, tm_standort
|
|
ORDER BY tm_datum ASC";
|
|
|
|
$result1 = $db->query($query1) or die("Cannot execute query1");
|
|
|
|
|
|
while ($row1 = $result1->fetch_array()) {
|
|
|
|
if ($row1['tm_standort'] == 'L') {
|
|
$standort = 'Ludwigsburg';
|
|
}
|
|
if ($row1['tm_standort'] == 'K') {
|
|
$standort = 'Kehl';
|
|
}
|
|
|
|
$row1['tm_standort'] = $standort;
|
|
$table_data1[] = $row1;
|
|
}
|
|
$smarty->assign('table_data1', $table_data1);
|
|
}
|
|
|
|
if ($action == 'upload') {
|
|
# Den Testtermin wählt man, damit jede Hochschule seine eigenen Daten importieren kann. Wenn eine Hochschule am selben TAg einen Test hat vermeidet man dass ein halbfertiger Test importiert wird
|
|
if (isset($_POST["testtermin"])) {
|
|
$testtermin = $_POST["testtermin"];
|
|
} else {
|
|
$testtermin = $_SESSION["testtermin"];
|
|
}
|
|
|
|
$_SESSION["testtermin"] = $testtermin;
|
|
|
|
|
|
# Uploadverzeichnis aufräumen. Temporäre Dateien, die älter als 2 Wochen sind, werden gelöscht
|
|
$dir = $_SERVER["DOCUMENT_ROOT"].dirname($_SERVER['PHP_SELF'])."/$verz";
|
|
$folder = dir($dir);
|
|
while ($dateiname = $folder->read()) {
|
|
if (filetype($dir.$dateiname) != "dir") {
|
|
if (strtotime("-2 weeks") >
|
|
@filemtime($dir.$dateiname)) {
|
|
if (@unlink($dir.$dateiname) != false){
|
|
# echo $dateiname.' wurde gelöscht<br>';
|
|
}else{
|
|
# echo $dateiname.' konnte nichtgelöscht werden<br>';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
# Fehler beim Upload anzeigen
|
|
if (isset($_GET['error'])) {
|
|
|
|
$errorno = $_GET['error'];
|
|
$smarty->assign('index_error', 1);
|
|
|
|
if ($errorno == 1) {
|
|
$smarty->assign('index_error_text', "Es dürfen nur CSV Dateien hochgeladen werden.");
|
|
}
|
|
if ($errorno == 2) {
|
|
# Tabelle bpm_parameter
|
|
$size_mb = trim(get_parameter(12));
|
|
$smarty->assign('index_error_text', "Die Datei ist zu groß. Die Dateigröße darf max. $size_mb MB betragen.");
|
|
}
|
|
if ($errorno == 3) {
|
|
$smarty->assign('index_error_text', "Vorgang wurde abgebrochen. Die Datei wurde vom Server gelöscht");
|
|
}
|
|
if ($errorno == 4) {
|
|
$smarty->assign('index_error_text', "Vorgang wurde abgebrochen. Die Datei wurde nicht vom Server gelöscht");
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($action == 'csvimp') {
|
|
|
|
$testtermin = $_SESSION["testtermin"];
|
|
|
|
// http://www.tutorials.de/tutorials65420.html
|
|
#echo '<pre>', print_r($_POST, true), '</pre>';
|
|
|
|
$tempname = $_FILES['file']['tmp_name'];
|
|
$name = $_FILES['file']['name'];
|
|
|
|
$type = $_FILES['file']['type'];
|
|
$size = $_FILES['file']['size'];
|
|
$einheit = "Byte"; // Für die Efolgsmeldung.
|
|
|
|
$limitedext = array(
|
|
".csv"
|
|
); //Erlaubte Dateieindung beim Upload
|
|
|
|
$extlimit = "yes"; //Do you want to limit the extensions of files uploaded
|
|
$ext = strrchr($name, '.');
|
|
|
|
if (($extlimit == "yes") && (!in_array($ext, $limitedext))) {
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?action=upload&error=1\">";
|
|
exit;
|
|
}
|
|
|
|
|
|
# Tabelle bpm_parameter
|
|
$size_mb = trim(get_parameter(12));
|
|
$size_bt = $size_mb * 1024 * 1024;
|
|
|
|
if ($size > $size_bt) {
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?action=upload&error=2\">";
|
|
exit;
|
|
}
|
|
|
|
|
|
$name = str_replace(array(
|
|
"ä",
|
|
"ö",
|
|
"ü",
|
|
"ß",
|
|
"Ä",
|
|
"Ö",
|
|
"Ü",
|
|
" "
|
|
), array(
|
|
"ae",
|
|
"oe",
|
|
"ue",
|
|
"ss",
|
|
"Ae",
|
|
"Oe",
|
|
"Ue",
|
|
"_"
|
|
), $name);
|
|
$heute = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")); // heutiges Datum & Zeit: http://de2.php.net/manual/de/function.date.php
|
|
$heuteformat = date("H-i-s_Y-m-d", $heute); // Formatierung, wie es vor dem Dateinamen erscheinen soll
|
|
$datum_db = date("Y-m-d H:i:s", $heute); // Formatierung, wie es vor dem Dateinamen erscheinen soll
|
|
$neu = $heuteformat . "_" . $name;
|
|
$_SESSION["ck_neu"] = $neu;
|
|
move_uploaded_file("$tempname", "$verz$neu"); // Unterverzeichnisse wie folgt: copy("$tempname", "pdf/$neu");
|
|
|
|
$handle = fopen("$verz$neu", "r"); // Datei zum Lesen öffnen
|
|
|
|
# Bestehnswert 65 Punkte
|
|
$bestehenswert = trim(get_parameter(11));
|
|
|
|
# Hier vor der Schleife erste Zeile holen und ignorieren. Enthält Überschrift
|
|
fgetcsv($handle, 0, $trennzeichen_excel);
|
|
|
|
while (($data = fgetcsv($handle, 0, $trennzeichen_excel)) !== FALSE) { // Daten werden aus der Datei in ein Array $data gelesen
|
|
#2020-02-23T17:44:56
|
|
$tag = substr($data[11], 8, 2);
|
|
$monat = substr($data[11], 5, 2);
|
|
$jahr = substr($data[11], 0, 4);
|
|
$std = substr($data[11], 11, 2);
|
|
$min = substr($data[11], 14, 2);
|
|
$sek = substr($data[11], 17, 2);
|
|
$datum = "$tag.$monat.$jahr - $std:$min:$sek";
|
|
$datum_db = "$jahr-$monat-$tag";
|
|
$tan = $data[7];
|
|
|
|
$result_ct = $db->query("SELECT concat(vorname,' ', nachname) name, date_format(tm_datum, '%Y-%m-%d') tm_datum
|
|
FROM bpm_kandidat a, bpm_term_kand b, bpm_termine c, bpm_tanpool d
|
|
WHERE a.ka_id = b.ka_id
|
|
AND b.tm_id = c.tm_id
|
|
AND b.tp_id = d.tp_id
|
|
AND d.tan = '$tan'
|
|
AND c.tm_id = $testtermin");
|
|
$row_ct = $result_ct->fetch_array();
|
|
|
|
if ($row_ct['name'] != '' AND $row_ct['tm_datum'] == $datum_db) {
|
|
|
|
$satzerg_raw = $data[13];
|
|
#$analogie_raw = $data[14];
|
|
$gemeinsamkeiten_raw = $data[15];
|
|
$rechenaufgaben_raw = $data[16];
|
|
$zahlenreihen_raw = $data[17];
|
|
$rechenzeichen_raw = $data[18];
|
|
$matrizen_raw = $data[21];
|
|
$merkf_raw = $data[26];
|
|
|
|
$row1['tan'] = $tan;
|
|
$row1['name'] = $row_ct['name'];
|
|
$row1['datum'] = $datum;
|
|
$row1['satzerg_raw'] = $satzerg_raw;
|
|
#$row1['analogie_raw'] = $analogie_raw;
|
|
$row1['gemeinsamkeiten_raw'] = $gemeinsamkeiten_raw;
|
|
$row1['rechenaufgaben_raw'] = $rechenaufgaben_raw;
|
|
$row1['zahlenreihen_raw'] = $zahlenreihen_raw;
|
|
$row1['rechenzeichen_raw'] = $rechenzeichen_raw;
|
|
$row1['matrizen_raw'] = $matrizen_raw;
|
|
$row1['merkf_raw'] = $merkf_raw;
|
|
|
|
# In die Berechnung fliest verb/num Intelligenz nicht mit ein. Das sind interne Berechnungen und keine Testaufgaben
|
|
$summe = $satzerg_raw + $gemeinsamkeiten_raw + $rechenaufgaben_raw + $zahlenreihen_raw + $rechenzeichen_raw + $matrizen_raw + $merkf_raw;
|
|
|
|
$row1['summe'] = $summe;
|
|
if ($summe >= $bestehenswert) {
|
|
$bestanden = 1;
|
|
} else {
|
|
$bestanden = 0;
|
|
}
|
|
$row1['bestanden'] = $bestanden;
|
|
$table_data1[] = $row1;
|
|
}
|
|
|
|
}
|
|
|
|
$smarty->assign('table_data1', $table_data1);
|
|
fclose($handle);
|
|
|
|
}
|
|
|
|
if ($action == 'csvimp2') {
|
|
$neu = $_SESSION["ck_neu"]; //CSV-Dateinamen um Datei löschen zu können
|
|
$verz = $_SESSION["ck_verz"]; //Uploadverzeichnis aus Cookie holen
|
|
$testtermin = $_SESSION["testtermin"];
|
|
|
|
|
|
if ($_POST['import'] == "0") // DS sollen nicht importiert werden
|
|
{
|
|
$dateiname = "$verz$neu";
|
|
if (@unlink($dateiname)) // Funktion löscht Dateien und gibt true / false zurück
|
|
{
|
|
# Abbruch, datei gelöscht
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?action=upload&error=3\">";
|
|
exit;
|
|
} else {
|
|
# Abbruch, datei nicht gelöscht
|
|
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?action=upload&error=4\">";
|
|
exit;
|
|
} // End if
|
|
|
|
} elseif ($_POST['import'] == "1") // DS sollen importiert werden
|
|
{
|
|
$handle = fopen("$verz$neu", "r"); // Datei zum Lesen öffnen
|
|
|
|
# Bestehnswert 65 Punkte
|
|
$bestehenswert = trim(get_parameter(11));
|
|
|
|
# Hier vor der Schleife erste Zeile holen und ignorieren. Enthält Überschrift
|
|
fgetcsv($handle, 0, $trennzeichen_excel);
|
|
|
|
while (($data = fgetcsv($handle, 0, $trennzeichen_excel)) !== FALSE) { // Daten werden aus der Datei in ein Array $data gelesen
|
|
|
|
#2020-02-23T17:44:56
|
|
$tag = substr($data[11], 8, 2);
|
|
$monat = substr($data[11], 5, 2);
|
|
$jahr = substr($data[11], 0, 4);
|
|
$std = substr($data[11], 11, 2);
|
|
$min = substr($data[11], 14, 2);
|
|
$sek = substr($data[11], 17, 2);
|
|
$datum = "$tag.$monat.$jahr - $std:$min:$sek";
|
|
$datum_db = "$jahr-$monat-$tag";
|
|
$tan = $data[7];
|
|
|
|
$result_ct = $db->query("SELECT a.ka_id, concat(vorname,' ', nachname) name, date_format(tm_datum, '%Y-%m-%d') tm_datum
|
|
FROM bpm_kandidat a, bpm_term_kand b, bpm_termine c, bpm_tanpool d
|
|
WHERE a.ka_id = b.ka_id
|
|
AND b.tm_id = c.tm_id
|
|
AND b.tp_id = d.tp_id
|
|
AND d.tan = '$tan'
|
|
AND c.tm_id = $testtermin");
|
|
$row_ct = $result_ct->fetch_array();
|
|
|
|
if ($row_ct['name'] != '' AND $row_ct['tm_datum'] == $datum_db) {
|
|
|
|
$satzerg_raw = $data[13];
|
|
#$analogie_raw = $data[14];
|
|
$gemeinsamkeiten_raw = $data[15];
|
|
$rechenaufgaben_raw = $data[16];
|
|
$zahlenreihen_raw = $data[17];
|
|
$rechenzeichen_raw = $data[18];
|
|
$matrizen_raw = $data[21];
|
|
$merkf_raw = $data[26];
|
|
$summe = $satzerg_raw + $gemeinsamkeiten_raw + $rechenaufgaben_raw + $zahlenreihen_raw + $rechenzeichen_raw + $matrizen_raw + $merkf_raw;
|
|
if ($summe >= $bestehenswert) {
|
|
$bestanden = 1;
|
|
} else {
|
|
$bestanden = 0;
|
|
# Tan Inaktiv setzen
|
|
$result_1 = $db->query("UPDATE bpm_tanpool
|
|
SET aktiv='I'
|
|
WHERE tan = '$tan'");
|
|
}
|
|
$result_ct1 = $db->query("SELECT count(*) Anz
|
|
FROM bpm_ergebnisse
|
|
WHERE ka_id = $row_ct[ka_id]
|
|
AND tan = '$tan'");
|
|
$row_ct1 = $result_ct1->fetch_array();
|
|
if ($row_ct1['Anz'] == 0) {
|
|
# keine Ergebnisse vorhanden, insert
|
|
|
|
$sql1 = $db->query("insert into bpm_ergebnisse (ka_id
|
|
, tan
|
|
, satzerg
|
|
, gemeinsamkeiten
|
|
, rechenaufgaben
|
|
, zahlenreihen
|
|
, rechenzeichen
|
|
, matrizen
|
|
, merkf
|
|
, summe
|
|
, bestanden)
|
|
VALUES ('$row_ct[ka_id]'
|
|
, '$tan'
|
|
, '$satzerg_raw'
|
|
, '$gemeinsamkeiten_raw'
|
|
, '$rechenaufgaben_raw'
|
|
, '$zahlenreihen_raw'
|
|
, '$rechenzeichen_raw'
|
|
, '$matrizen_raw'
|
|
, '$merkf_raw'
|
|
, '$summe'
|
|
, '$bestanden')");
|
|
if (!$sql1) {
|
|
$hinweis['hinweis'] = "TAN: " . $tan . " Fehler: Ergebnis nicht gespeichert<br>";
|
|
$smarty->assign('index_error', 1);
|
|
}
|
|
} else {
|
|
# Ergebnisse gibt es schon, kein insert
|
|
$hinweis['hinweis'] = "TAN: " . $tan . " Ergebnisse schon gespeichert<br>";
|
|
$smarty->assign('index_error', 1);
|
|
}
|
|
|
|
} else {
|
|
# Testdatum stimmt nicht, kein Student gefunden
|
|
$hinweis['hinweis'] = "TAN: " . $tan . " in der CSV gehört nicht zu diesem Datum (Kein Fehler)<br>";
|
|
$smarty->assign('index_error', 1);
|
|
}
|
|
$table_data2[] = $hinweis;
|
|
}
|
|
$smarty->assign('table_data2', $table_data2);
|
|
|
|
|
|
fclose($handle);
|
|
|
|
} else { // Es wurde kein Radiobutton gewählt! Technisch aber ausgeschlossen
|
|
|
|
echo "sie müssen eine Auswahl treffen";
|
|
|
|
}
|
|
|
|
function deleteFiles($verz)
|
|
{
|
|
$handle = opendir($verz);
|
|
while ($file = readdir($handle)) {
|
|
if ($file != "." && $file != "..") {
|
|
|
|
$datei = $verz . $file;
|
|
|
|
if (@unlink($datei)) {
|
|
$error = TRUE;
|
|
} else {
|
|
$error = FALSE;
|
|
}
|
|
}
|
|
}
|
|
closedir($handle);
|
|
return $error;
|
|
}
|
|
|
|
deleteFiles($verz); // Dateien werden im Uploadverzeichnis gelöscht, falls noch welche darin wären
|
|
|
|
} // ende Action
|
|
|
|
$smarty->assign('action', "$action");
|
|
$smarty->display("$template/admin/$templatename");
|
|
|
|
?>
|