Initialer Commit: Kundenverwaltung (PHP/Smarty)
Bestehende Codebasis als Ausgangsstand aufgenommen. - .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen; Verzeichnisstruktur ueber .gitkeep erhalten - .gitattributes: Zeilenenden normalisiert (LF im Repo), Binaerformate markiert - db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der Anwendung aus der externen Konfiguration statt hartkodiert aus der Datei; Passwort wird ueber eine temporaere Optionsdatei statt per Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet, Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,422 @@
|
||||
<?php
|
||||
|
||||
if($_GET["id"] && $_GET["del"] == 1)
|
||||
{
|
||||
if($_GET["id"] == "multi"){
|
||||
for( $i=1; $i<=$_POST["pagesize"]; $i++){
|
||||
mysqli_query($dbconn,"DELETE FROM termin WHERE id='".$_POST["del".$i]."'") or $err=error("Konnte Haupttermin nicht löschen<br />".mysqli_error($dbconn));
|
||||
mysqli_query($dbconn,"DELETE FROM termin WHERE main_id='".$_POST["del".$i]."'" or $err=error("Konnte Nebentermine nicht löschen<br />".mysqli_error($dbconn)));
|
||||
}
|
||||
if(!$err)
|
||||
doneNreturn("Erfolgreich gelöscht");
|
||||
}
|
||||
else{
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM termin WHERE id='".mysqli_escape_string($dbconn,$_GET["id"])."'");
|
||||
$res = mysqli_fetch_assoc($qry);
|
||||
if(!$res)
|
||||
$err = error("Dieser Termin existiert nicht!");
|
||||
|
||||
mysqli_query($dbconn,"DELETE FROM termin WHERE id='".$res["id"]."'") or $err=error("Konnte Haupttermin nicht löschen<br />".mysqli_error($dbconn));
|
||||
mysqli_query($dbconn,"DELETE FROM termin WHERE main_id='".$res["id"]."'" or $err=error("Konnte Nebentermine nicht löschen<br />".mysqli_error($dbconn)));
|
||||
|
||||
if(!$err)
|
||||
doneNreturn("Erfolgreich gelöscht");
|
||||
}
|
||||
}
|
||||
elseif($_GET["id"] && $_GET["done"])
|
||||
{
|
||||
if($_GET["id"] == "multi"){
|
||||
for( $i=1; $i<=$_POST["pagesize"]; $i++){
|
||||
mysqli_query($dbconn,"UPDATE termin SET done = 1 WHERE id='".$_POST["erl".$i]."'") or $err+=error("Konnte Haupttermin nicht als erledigt markieren<br />".mysqli_error($dbconn));
|
||||
mysqli_query($dbconn,"UPDATE termin SET done = 1 WHERE main_id='".$_POST["erl".$i]."'") or $err+=error("Konnte Nebentermine nicht als erledigt markieren<br />".mysqli_error($dbconn));
|
||||
}
|
||||
if(!$err)
|
||||
doneNreturn("Erfolgreich geändert!");
|
||||
}
|
||||
else{
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM termin WHERE id='".mysqli_escape_string($dbconn,$_GET["id"])."'");
|
||||
$res = mysqli_fetch_assoc($qry);
|
||||
if(!$res)
|
||||
$err = error("Dieser Termin existiert nicht!");
|
||||
|
||||
if($_GET["done"] == "yes")
|
||||
{
|
||||
mysqli_query($dbconn,"UPDATE termin SET done = 1 WHERE id='".$res["id"]."'") or $err=error("Konnte Haupttermin nicht als erledigt markieren<br />".mysqli_error($dbconn));
|
||||
mysqli_query($dbconn,"UPDATE termin SET done = 1 WHERE main_id='".$res["id"]."'") or $err=error("Konnte Nebentermine nicht als erledigt markieren<br />".mysqli_error($dbconn));
|
||||
}
|
||||
elseif($_GET["done"] == "no")
|
||||
{
|
||||
mysqli_query($dbconn,"UPDATE termin SET done = 0 WHERE id='".$res["id"]."'") or $err=error("Konnte Haupttermin nicht als nicht erledigt markieren<br />".mysqli_error($dbconn));
|
||||
mysqli_query($dbconn,"UPDATE termin SET done = 0 WHERE main_id='".$res["id"]."'") or $err=error("Konnte Nebentermine nicht als nicht erledigt markieren<br />".mysqli_error($dbconn));
|
||||
}
|
||||
if(!$err)
|
||||
doneNreturn("Erfolgreich geändert!");
|
||||
}
|
||||
}
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT plz, ortsteil, ort, str, hnr, vname, partner_id, nname, vname2, nname2, firma, adresse.id, land, anrede_id, titel_id, anrede2_id, titel2_id
|
||||
FROM adresse
|
||||
LEFT JOIN strasse ON str_id = strasse.id
|
||||
LEFT JOIN ort ON ort_id = ort.id
|
||||
LEFT JOIN land ON land_id = land.id
|
||||
WHERE adresse.id='".mysql_escape_string($_GET["adressid"])."'
|
||||
ORDER BY typ_id ASC") or $err = error("Fehler beim abrufen der Daten ".mysqli_error($dbconn));
|
||||
$kdnres=mysqli_fetch_assoc($qry);
|
||||
if($_GET["user"])
|
||||
$smarty->assign("user",$_GET["user"]);
|
||||
|
||||
if(!$kdnres["partner_id"])
|
||||
{
|
||||
$_GET["adressid"] = 0;
|
||||
}
|
||||
if($_GET["formsent"] == 1)
|
||||
{
|
||||
$head = mysql_escape_string(trim($_POST["head"]));
|
||||
$user = mysql_escape_string(trim($_POST["user"]));
|
||||
$user2 = mysql_escape_string(trim($_POST["user2"]));
|
||||
$user3 = mysql_escape_string(trim($_POST["user3"]));
|
||||
$user4 = mysql_escape_string(trim($_POST["user4"]));
|
||||
$text = mysql_escape_string(trim($_POST["text"]));
|
||||
$typ = mysql_escape_string(trim($_POST["typ"]));
|
||||
$done = mysql_escape_string(trim($_POST["done"]));
|
||||
$folge = mysql_escape_string(trim($_POST["folge"]));
|
||||
$folgetyp = mysql_escape_string(trim($_POST["folgetyp"]));
|
||||
$folgedays = mysql_escape_string(trim($_POST["folgedays"]));
|
||||
$datetime_start = dispdate_to_mysql_date(mysql_escape_string(trim($_POST["datetime_start"])),0);
|
||||
$datetime_end = dispdate_to_mysql_date(mysql_escape_string(trim($_POST["datetime_end"])),1);
|
||||
$_POST["termtime"] = $datetime_start;
|
||||
$_POST["termend"] = $datetime_end;
|
||||
$dauer = $_POST["termdauer"] = mysql_dauer($datetime_start,$datetime_end);
|
||||
$days = 1;
|
||||
$split_dauer = explode(":",$dauer);
|
||||
if($split_dauer[0]>12 || $typ == 0)
|
||||
{
|
||||
$days = ceil($dauer/24);
|
||||
$dauer = "24:00:00";
|
||||
$_POST["termtime"] = $datetime_start = substr($datetime_start,0,11)."00:00:00";
|
||||
$_POST["termend"] = $datetime_end = substr($datetime_start,0,11)."23:59:00";
|
||||
}
|
||||
$datetime_start_tmp =$datetime_start;
|
||||
|
||||
if($days > 1 && $_GET["id"])
|
||||
{
|
||||
mysqli_query($dbconn,"DELETE FROM termin WHERE id='".mysqli_escape_string($dbconn,$_GET["id"])."'");
|
||||
mysqli_query($dbconn,"DELETE FROM termin WHERE main_id='".mysqli_escape_string($dbconn,$_GET["id"])."'");
|
||||
|
||||
$_GET["id"] = "";
|
||||
}
|
||||
else
|
||||
mysqli_query($dbconn,"DELETE FROM termin WHERE main_id='".mysqli_escape_string($dbconn,$_GET["id"])."' AND id != '".mysqli_escape_string($dbconn,$_GET["id"])."'");
|
||||
if($done == 0){
|
||||
for($i=0;$i<$days;$i++)
|
||||
{
|
||||
$datetime_start_tmp = date("Y-m-d H:i:s",strtotime("+".$i." day",strtotime($datetime_start)));
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM
|
||||
( SELECT id,user, user2, user3, user4, termtime,
|
||||
DATE_ADD(termtime,INTERVAL CONCAT(HOUR(termdauer),' ',MINUTE(termdauer)) HOUR_MINUTE)as termend
|
||||
FROM termin WHERE termtime != '0000-00-00 00:00:00' AND done = 0)
|
||||
as subselect
|
||||
WHERE
|
||||
(user='$user' OR user2='$user' OR user3='$user' OR user4='$user') AND
|
||||
(
|
||||
('$datetime_start_tmp' >= termtime AND '$datetime_start_tmp' < termend) OR
|
||||
('$datetime_end' > termtime AND '$datetime_end' <= termend) OR
|
||||
('$datetime_start_tmp' <= termtime AND '$datetime_end' >= termend)
|
||||
)") or $err=error("Fehler beim überprüfen von Überlappungen<br />".mysqli_error($dbconn));
|
||||
$res=mysqli_fetch_assoc($qry);
|
||||
if(!$res && $user2)
|
||||
{
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM
|
||||
( SELECT id,user, user2, user3, user4, termtime,
|
||||
DATE_ADD(termtime,INTERVAL CONCAT(HOUR(termdauer),' ',MINUTE(termdauer)) HOUR_MINUTE)as termend
|
||||
FROM termin WHERE termtime != '0000-00-00 00:00:00' AND done = 0)
|
||||
as subselect
|
||||
WHERE
|
||||
(user='$user2' OR user2='$user2' OR user3='$user2' OR user4='$user2') AND
|
||||
(
|
||||
('$datetime_start_tmp' >= termtime AND '$datetime_start_tmp' < termend) OR
|
||||
('$datetime_end' > termtime AND '$datetime_end' <= termend) OR
|
||||
('$datetime_start_tmp' <= termtime AND '$datetime_end' >= termend)
|
||||
)") or $err=error("Fehler beim überprüfen von Überlappungen<br />".mysqli_error($dbconn));
|
||||
$res=mysqli_fetch_assoc($qry);
|
||||
}
|
||||
if(!$res && $user3)
|
||||
{
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM
|
||||
( SELECT id,user, user2, user3, user4, termtime,
|
||||
DATE_ADD(termtime,INTERVAL CONCAT(HOUR(termdauer),' ',MINUTE(termdauer)) HOUR_MINUTE)as termend
|
||||
FROM termin WHERE termtime != '0000-00-00 00:00:00' AND done = 0)
|
||||
as subselect
|
||||
WHERE
|
||||
(user='$user3' OR user2='$user3' OR user3='$user3' OR user4='$user3') AND
|
||||
(
|
||||
('$datetime_start_tmp' >= termtime AND '$datetime_start_tmp' < termend) OR
|
||||
('$datetime_end' > termtime AND '$datetime_end' <= termend) OR
|
||||
('$datetime_start_tmp' <= termtime AND '$datetime_end' >= termend)
|
||||
)") or $err=error("Fehler beim überprüfen von Überlappungen<br />".mysqli_error($dbconn));
|
||||
$res=mysqli_fetch_assoc($qry);
|
||||
}
|
||||
if(!$res && $user4)
|
||||
{
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM
|
||||
( SELECT id,user, user2, user3, user4, termtime,
|
||||
DATE_ADD(termtime,INTERVAL CONCAT(HOUR(termdauer),' ',MINUTE(termdauer)) HOUR_MINUTE)as termend
|
||||
FROM termin WHERE termtime != '0000-00-00 00:00:00' AND done = 0)
|
||||
as subselect
|
||||
WHERE
|
||||
(user='$user4' OR user2='$user4' OR user3='$user4' OR user4='$user4') AND
|
||||
(
|
||||
('$datetime_start_tmp' >= termtime AND '$datetime_start_tmp' < termend) OR
|
||||
('$datetime_end' > termtime AND '$datetime_end' <= termend) OR
|
||||
('$datetime_start_tmp' <= termtime AND '$datetime_end' >= termend)
|
||||
)") or $err=error("Fehler beim überprüfen von Überlappungen<br />".mysqli_error($dbconn));
|
||||
$res=mysqli_fetch_assoc($qry);
|
||||
}
|
||||
if($res && $res["id"] != $_GET["id"])
|
||||
{
|
||||
$err=error("Dieser Mitarbeiter hat zu der Zeit bereits einen Termin, er kann nicht an zwei Orten gleichzeitig sein.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$err)
|
||||
{
|
||||
|
||||
for($i=0;$i<$days;$i++)
|
||||
{
|
||||
$datetime_start_tmp = date("Y-m-d H:i:s",strtotime("+".$i." day",strtotime($datetime_start)));
|
||||
if(strstr($datetime_start_tmp,"1970")){
|
||||
echo "NICHTTERMINIERT!!";
|
||||
$datetime_start_tmp = "0000-00-00 00:00:00";
|
||||
}
|
||||
if($_GET["id"])
|
||||
{
|
||||
$qry=mysqli_query($dbconn,"SELECT * FROM termin WHERE id = '".mysqli_escape_string($dbconn,($_GET["id"]))."'");
|
||||
if ($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
if($done && $folge && !$res["followed_by"] && !$i)
|
||||
{
|
||||
mysqli_query($dbconn,"INSERT INTO termin SET head='$head',
|
||||
text='',
|
||||
adresse_id='".mysqli_escape_string($dbconn,$_GET["adressid"])."',
|
||||
typ='$folgetyp',
|
||||
changetime=NOW(),
|
||||
datetime=NOW(),
|
||||
done='0',
|
||||
termtime='',
|
||||
termdauer='',
|
||||
user='$user',
|
||||
user2='$user2',
|
||||
user3='$user3',
|
||||
user4='$user4',
|
||||
changeuser='".$_SESSION["user"]."',
|
||||
act_date=DATE_ADD(CURDATE(),INTERVAL $folgedays DAY)") or $err=error("Fehler beim anlegen des Folgetermins<br />".mysqli_error($dbconn));
|
||||
$res["followed_by"] = mysqli_insert_id($dbconn);
|
||||
mysqli_query($dbconn,"UPDATE termin SET main_id = '".$res["followed_by"]."' WHERE id='".$res["followed_by"]."'");
|
||||
}
|
||||
if(!$i)
|
||||
{
|
||||
mysqli_query($dbconn,"UPDATE termin SET head='$head',
|
||||
text='$text',
|
||||
adresse_id='".mysqli_escape_string($dbconn,$_GET["adressid"])."',
|
||||
typ='$typ',
|
||||
changetime=NOW(),
|
||||
done='$done',
|
||||
termtime='$datetime_start_tmp',
|
||||
termdauer='$dauer',
|
||||
changeuser='".$_SESSION["user"]."',
|
||||
user='$user',
|
||||
user2='$user2',
|
||||
user3='$user3',
|
||||
user4='$user4',
|
||||
followed_by='".$res["followed_by"]."'
|
||||
WHERE id='".mysqli_escape_string($dbconn,$_GET["id"])."'") or $err=error("Fehler beim ändern des Termins<br />".mysqli_error($dbconn));
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
$err=error("dieser Termin existiert nicht!");
|
||||
}
|
||||
else
|
||||
{
|
||||
if($done && $folge && !$err && !$i)
|
||||
{
|
||||
mysqli_query($dbconn,"INSERT INTO termin SET head='$head',
|
||||
text='',
|
||||
adresse_id='".mysqli_escape_string($dbconn,$_GET["adressid"])."',
|
||||
typ='$folgetyp',
|
||||
changetime=NOW(),
|
||||
datetime=NOW(),
|
||||
done='0',
|
||||
termtime='',
|
||||
termdauer='',
|
||||
changeuser='".$_SESSION["user"]."',
|
||||
user='$user',
|
||||
user2='$user2',
|
||||
user3='$user3',
|
||||
user4='$user4',
|
||||
act_date=DATE_ADD(CURDATE(),INTERVAL $folgedays DAY)") or $err=error("Fehler beim anlegen des Folgetermins<br />".mysqli_error($dbconn));
|
||||
$res["followed_by"] = mysqli_insert_id($dbconn);
|
||||
mysqli_query($dbconn,"UPDATE termin SET main_id = '".$res["followed_by"]."' WHERE id='".$res["followed_by"]."'");
|
||||
}
|
||||
if(!$err)
|
||||
{
|
||||
if(!$i)
|
||||
{
|
||||
mysqli_query($dbconn,"INSERT INTO termin SET head='$head',
|
||||
text='$text',
|
||||
adresse_id='".mysqli_escape_string($dbconn,$_GET["adressid"])."',
|
||||
typ='$typ',
|
||||
changetime=NOW(),
|
||||
datetime=NOW(),
|
||||
done='$done',
|
||||
termtime='$datetime_start_tmp',
|
||||
termdauer='$dauer',
|
||||
changeuser='".$_SESSION["user"]."',
|
||||
user='$user',
|
||||
user2='$user2',
|
||||
user3='$user3',
|
||||
user4='$user4',
|
||||
followed_by='".$res["followed_by"]."'") or $err=error("Fehler beim anlegen des Termins<br />".mysqli_error($dbconn));
|
||||
$main_id = mysqli_insert_id($dbconn);
|
||||
mysqli_query($dbconn,"UPDATE termin SET main_id = '$main_id' WHERE id='$main_id'");
|
||||
}
|
||||
else
|
||||
{
|
||||
mysqli_query($dbconn,"INSERT INTO termin SET head='$head',
|
||||
text='$text',
|
||||
adresse_id='".mysqli_escape_string($dbconn,$_GET["adressid"])."',
|
||||
typ='$typ',
|
||||
changetime=NOW(),
|
||||
datetime=NOW(),
|
||||
done='$done',
|
||||
termtime='$datetime_start_tmp',
|
||||
termdauer='$dauer',
|
||||
changeuser='".$_SESSION["user"]."',
|
||||
user='$user',
|
||||
user2='$user2',
|
||||
user3='$user3',
|
||||
user4='$user4',
|
||||
main_id='$main_id',
|
||||
followed_by='".$res["followed_by"]."'") or $err=error("Fehler beim anlegen des Termins<br />".mysqli_error($dbconn));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!$err)
|
||||
{
|
||||
doneNreturn("Erfolgreich eingetragen");
|
||||
}
|
||||
}
|
||||
if($err){
|
||||
$smarty->assign("termin",$_POST);
|
||||
}
|
||||
//elseif(!$head)
|
||||
// $err=error("Bitte geben Sie eine Terminbeschreibung an!");
|
||||
}
|
||||
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT id, typ
|
||||
FROM termtyp WHERE id > 0") or $err = error("Fehler beim abrufen der Termintypen<br />".mysqli_error($dbconn));
|
||||
while($res = mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$typids[] =$res["id"];
|
||||
$typs[] = $res["typ"];
|
||||
}
|
||||
$smarty->assign("typs",$typs);
|
||||
$smarty->assign("typids",$typids);
|
||||
|
||||
$typids=array();
|
||||
$typs=array();
|
||||
$qry = mysqli_query($dbconn,"SELECT id, vname, nname
|
||||
FROM user WHERE blocked = 0 AND id > 0") or $err = error("Fehler beim abrufen der Benutzer<br />".mysqli_error($dbconn));
|
||||
while($res = mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$typids[] =$res["id"];
|
||||
$typs[] = $res["vname"]." ".$res["nname"];
|
||||
}
|
||||
$smarty->assign("users",$typs);
|
||||
$smarty->assign("userids",$typids);
|
||||
$typs[]="Keiner";
|
||||
$typids[]=0;
|
||||
$smarty->assign("optusers",$typs);
|
||||
$smarty->assign("optuserids",$typids);
|
||||
|
||||
$smarty->assign("days",array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40));
|
||||
$smarty->assign("kunde",$kdnres);
|
||||
if($_GET["id"])
|
||||
{
|
||||
$qry=mysqli_query($dbconn,"SELECT MIN(termtime) AS termtime,
|
||||
SEC_TO_TIME(SUM(TIME_TO_SEC(termdauer))) AS termdauer,
|
||||
head,
|
||||
followed_by,
|
||||
MIN(id) AS id,
|
||||
main_id,
|
||||
typ,adresse_id,
|
||||
done,
|
||||
user,
|
||||
user2,
|
||||
user3,
|
||||
user4,
|
||||
changeuser,
|
||||
act_date,
|
||||
text
|
||||
FROM termin WHERE main_id = '".mysqli_escape_string($dbconn,$_GET["id"])."' GROUP BY main_id");
|
||||
if ($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
|
||||
if($res["followed_by"] > 0)
|
||||
{
|
||||
$qry2=mysqli_query($dbconn, "SELECT DATE_FORMAT(act_date,'%Y-%m-%d'), typ_id FROM termin WHERE id = '".$res["followed_by"]."'");
|
||||
$res2=mysqli_fetch_assoc($qry2);
|
||||
$days = (strtotime($res2["act_date"]) - strtotime(date("Y-m-d"))) / (60 * 60 * 24);
|
||||
$res["folgetyp"]= $res2["typ_id"];
|
||||
if($days > 0)
|
||||
$res["folgedays"] = $days;
|
||||
}
|
||||
$res["termend"] = dauer_to_date($res["termtime"], $res["termdauer"]);
|
||||
if(strstr($res["termend"],"00:00:00")){
|
||||
$res["termend"] = date("Y-m-d H:i:s",strtotime("-1 minutes",strtotime($res["termend"])));
|
||||
}
|
||||
$smarty->assign("termin",$res);
|
||||
if($_GET["adressid"])
|
||||
$smarty->assign("heading","Termin ändern");
|
||||
else
|
||||
$smarty->assign("heading","Urlaub / Krankheit ändern");
|
||||
}
|
||||
else
|
||||
{
|
||||
$err=error("Dieser Termin existiert nicht!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$smarty->assign("termin",$_POST);
|
||||
|
||||
if($_GET["adressid"]){
|
||||
$smarty->assign("heading","Neuer Termin");
|
||||
}
|
||||
else{
|
||||
$smarty->assign("heading","Neuer Urlaub / Krankheitstag");
|
||||
$typids=array();
|
||||
$typs=array();
|
||||
$qry = mysqli_query($dbconn,"SELECT id, typ
|
||||
FROM termtyp WHERE typ = 'Urlaub' OR typ = 'Krankheit'") or $err = error("Fehler beim abrufen der Termintypen<br />".mysqli_error($dbconn));
|
||||
while($res = mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$typids[] =$res["id"];
|
||||
$typs[] = $res["typ"];
|
||||
}
|
||||
$smarty->assign("vac_types_id",$typids);
|
||||
$smarty->assign("vac_types_name",$typs);
|
||||
|
||||
}
|
||||
}
|
||||
$smarty->display("heading.tpl");
|
||||
$smarty->display("addtermin.tpl");
|
||||
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user