diff --git a/www/pages/content/kalender.tpl b/www/pages/content/kalender.tpl
index f3b04aa1..3bdc53c5 100644
--- a/www/pages/content/kalender.tpl
+++ b/www/pages/content/kalender.tpl
@@ -90,15 +90,15 @@
|
- {|Termin mit|}: |
+ {|Termin mit Adresse|}: |
[LINKADRESSE] |
- {|Ansprechpartner|}: |
+ {|Ansprechpartner bei Adresse|}: |
[LINKANSPRECHPARTNER] |
- {|Verantwortlicher|}: |
+ {|Verantwortlicher intern|}: |
|
diff --git a/www/pages/kalender.php b/www/pages/kalender.php
index 91670e1d..4cfb6cfb 100644
--- a/www/pages/kalender.php
+++ b/www/pages/kalender.php
@@ -1,1396 +1,1449 @@
-';
- $menu .= '
';
- $menu .= '';
- $menu .= '';
- $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
- $menu .= ' ';
- $menu .= '';
- $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">";
- $menu .= '';
- $menu .= " | ";
- $menu .= "
";
- $menu .= "";
-
- $where = " kg.id > 0 ";
-
- $sql = "SELECT SQL_CALC_FOUND_ROWS kg.id, kg.bezeichnung, CONCAT(' '), if(kg.ausblenden,'ja','nein'), kg.id FROM kalender_gruppen kg";
-
- $count = "SELECT count(kg.id) FROM kalender_gruppen kg WHERE $where";
- break;
-
- case 'kalender_gruppen_mitglieder':
-
- //$doctype = str_replace('belegeinauslagern_bewegungen_','',$name);
-// $id = $app->Secure->GetPost('editid');
- $lid = $app->YUI->TableSearchFilter($name, 1, 'filterlid');
-// $lid = $app->YUI->TableSearchFilter($name, 1, 'filterlid');
- $allowed['kalender'] = array('gruppenlist');
- $heading = array('','Mitarbeiter-Nr.','Name','');
- $width = array('1%','10%','49%','1%');
- $findcols = array('a.id','a.mitarbeiternummer','a.name','a.id');
- $searchsql = array('a.id','a.mitarbeiternummer','a.name');
- $defaultorder = 2;
- $defaultorderdesc = 0;
- $disabled = "";
- //if(!$lid)$disabled = "disabled ";
- $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,CONCAT('') as auswahl,a.mitarbeiternummer,a.name,a.id FROM adresse a
- INNER JOIN (SELECT adresse FROM adresse_rolle WHERE subjekt='Mitarbeiter' AND (ifnull(bis,'0000-00-00') = '0000-00-00' OR bis >= CURDATE()) GROUP BY adresse) ar on ar.adresse=a.id
- LEFT JOIN kalender_gruppen_mitglieder kgm ON kgm.adresse = a.id AND kgm.kalendergruppe = '$lid'
- ";
-
- $where = " a.mitarbeiternummer!='' AND a.geloescht!=1";
-
- $maxrows = 50;
- $disablebuttons = true;
- break;
-
- }
-
- $erg = [];
-
- foreach($erlaubtevars as $k => $v)
- {
- if(isset($$v)) {
- $erg[$v] = $$v;
- }
- }
- return $erg;
- }
-
- /**
- * Kalender constructor.
- *
- * @param Application $app
- * @param bool $intern
- */
- public function __construct($app,$intern = false) {
- $this->app=$app;
- if($intern) {
- return;
- }
-
- $this->app->ActionHandlerInit($this);
-
- $this->app->ActionHandler("list","KalenderList");
- $this->app->ActionHandler("data","KalenderData");
- $this->app->ActionHandler("ics","KalenderICS");
- $this->app->ActionHandler("eventdata","KalenderEventData");
- $this->app->ActionHandler("update","KalenderUpdate");
- $this->app->ActionHandler("delete","KalenderDelete");
- $this->app->ActionHandler("taskstatus","KalenderTaskStatus");
- $this->app->ActionHandler("gruppenlist", "KalenderGruppenList");
- $this->app->ActionHandler("gruppenedit", "KalenderGruppenEdit");
- $this->app->ActionHandler("gruppensave", "KalenderGruppenSave");
- $this->app->ActionHandler("gruppendelete", "KalenderGruppenDelete");
- $this->app->ActionHandler("einladung", "KalenderEinladung");
- $this->app->ActionHandler("gruppenzuordnung", "KalenderGruppenZuordnung");
-
- $this->publicColor = "#3fa848";
- $this->taskColor = "#ae161e";
- $this->urlaubColor = ($this->app->erp->GetKonfiguration("mitarbeiterzeiterfassung_calendarcolor")?$this->app->erp->GetKonfiguration("mitarbeiterzeiterfassung_calendarcolor"):"#00ccff");
-
- $this->app->ActionHandlerListen($app);
- }
-
-
- function KalenderGruppenZuordnung(){
- $adresse = $this->app->Secure->GetPOST('lid');
- $kalendergruppe = $this->app->Secure->GetPOST('kalendergruppe');
- $benutzergruppe = '';
- //$benutzergruppe = $this->app->Secure->GetPOST('benutzergruppe');
- $wert = $this->app->Secure->GetPOST('wert');
-
-
- if($wert == '0'){
- $delete = $this->app->DB->Delete("DELETE FROM kalender_gruppen_mitglieder WHERE adresse = '$adresse' AND benutzergruppe = '$benutzergruppe' AND kalendergruppe = '$kalendergruppe'");
- }elseif($wert == '1'){
- $insert = $this->app->DB->Insert("INSERT INTO kalender_gruppen_mitglieder(adresse,kalendergruppe,benutzergruppe) VALUES('$adresse','$kalendergruppe','$benutzergruppe')");
- }
- $this->app->ExitXentral();
- }
-
- /**
- * @param string $parsetarget
- */
- public function showKalenderList($parsetarget)
- {
- $select = '';
- $this->app->erp->Headlines('Kalender');
- $this->app->Tpl->Set('TABTEXT',"Kalender");
-
- $submit = $this->app->Secure->GetPOST("submitForm");
- $mode = $this->app->Secure->GetPOST("mode");
- $eventid = $this->app->Secure->GetPOST("eventid");
-
- $hookEvent = 0;
- $hookAction = '';
-
- $titel = $this->app->Secure->GetPOST("titel");
- $datum = $this->app->Secure->GetPOST("datum");
- $datum_bis = $this->app->Secure->GetPOST("datum_bis");
- $allday = $this->app->Secure->GetPOST("allday");
- $public = $this->app->Secure->GetPOST("public");
- $erinnerung = $this->app->Secure->GetPOST("erinnerung");
- $von = $this->app->Secure->GetPOST("von");
- $bis = $this->app->Secure->GetPOST("bis");
- $beschreibung = $this->app->Secure->GetPOST("beschreibung");
- $ort = $this->app->Secure->GetPOST("ort");
- $adresse = $this->app->Secure->GetPOST("adresse");
- $ansprechpartner = $this->app->Secure->GetPOST("ansprechpartner");
- $adresseintern = $this->app->Secure->GetPOST("adresseintern");
- $projekt = $this->app->Secure->GetPOST("projekt");
-
- $personen = $this->app->Secure->GetPOST("personen");
- $color = $this->app->Secure->GetPOST("color");
- $gruppenkalender = $this->app->Secure->GetPOST("gruppenkalender");
-
- $ajax = $this->app->Secure->GetGET("ajax");
- $action = $this->app->Secure->GetGET("action");
- $module = $this->app->Secure->GetGET("module");
- $noRedirect = $this->app->Secure->GetPOST("noRedirect");
-
- if($module==="welcome"&& ($action==="start" || $action === "list" || $action == ""))
- {
- $this->app->Tpl->Set("STARTSMALLKALENDER","");
- $this->app->Tpl->Set("AUTOSCROLLTO",0);
- } else {
- $this->app->Tpl->Set("AUTOSCROLLTO",1);
- }
-
- $user = $this->app->User->GetID();
- $eigene_kalendergruppen = $this->app->DB->SelectArr(
- "SELECT kg.* FROM kalender_gruppen kg LEFT JOIN kalender_gruppen_mitglieder kgm ON kg.id = kgm.kalendergruppe
- LEFT JOIN user u ON u.adresse = kgm.adresse WHERE ausblenden != 1 AND u.id = '$user' ORDER BY bezeichnung"
- );
-
- if($submit!="") {
- $von_datum = $this->app->String->Convert("$datum $von", "%1.%2.%3 %4:%5", "%3-%2-%1 %4:%5");
- $bis_datum = $this->app->String->Convert("$datum_bis $bis", "%1.%2.%3 %4:%5", "%3-%2-%1 %4:%5");
-
- if($allday=='1') {
- $von_datum = $this->app->String->Convert("$datum 00:00", "%1.%2.%3 %4:%5", "%3-%2-%1 %4:%5");
- $bis_datum = $this->app->String->Convert("$datum_bis 00:00", "%1.%2.%3 %4:%5", "%3-%2-%1 %4:%5");
- //$bis_datum = $datum_bis;
- }
-
- if($bis_datum < $von_datum){ $bis_datum = $von_datum; }
-
- $adresse = trim($adresse);
- $rest = explode(" ",$adresse);
- $rest = $rest[0];
- $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE id='$rest' AND geloescht=0 LIMIT 1");
-
- $ansprechpartner = trim($ansprechpartner);
- $ansprechpartner = explode(" ", $ansprechpartner);
- $ansprechpartner = $ansprechpartner[0];
- $ansprechpartnerId = $this->app->DB->Select("SELECT id FROM ansprechpartner WHERE id = '$ansprechpartner' LIMIT 1");
-
- $adresseintern = trim($adresseintern);
- $rest = explode(" ",$adresseintern);
- $rest = $rest[0];
- $adresseintern = $this->app->DB->Select("SELECT id FROM adresse WHERE id='$rest' AND geloescht=0 LIMIT 1");
-
- $projekt = trim($projekt);
- $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' AND abkuerzung!='' LIMIT 1");
-
- if($mode==="new") {
-
- if($allday){
- $tmpbis = "DATE_ADD('$bis_datum', INTERVAL 1439 MINUTE)";
- } else {
- $tmpbis = "'$bis_datum'";
- }
-
- // wenn gruppen kalender farbe von erster gruppe verwenden
- $this->app->DB->Insert(
- "INSERT INTO kalender_event (
- ort, bezeichnung, beschreibung, von, bis, allDay, color, public, adresse, ansprechpartner_id,
- adresseintern, angelegtvon, erinnerung, projekt)
- VALUES ('$ort', '$titel', '$beschreibung', '$von_datum', $tmpbis, '$allday', '$color', '$public', '$adresse',
- '$ansprechpartnerId', '$adresseintern', '".$this->app->User->GetAdresse()."', '$erinnerung', '$projekt')"
- );
- $event = $this->app->DB->GetInsertID();
- $calendarActionType = 'added';
- //$this->app->erp->RunHook('kalender_event_hook', 2, $event, $calendarActionType);
- $hookEvent = $event;
- $hookAction = $calendarActionType;
- }
-
- if($mode==="edit" && is_numeric($eventid)) {
- $this->app->DB->Update(
- "UPDATE kalender_event SET
- ort = '$ort', bezeichnung = '$titel', beschreibung = '$beschreibung', von = '$von_datum',
- bis='$bis_datum', allDay = '$allday', color = '$color', public = '$public', adresse = '$adresse',
- ansprechpartner_id = '$ansprechpartnerId', adresseintern = '$adresseintern', erinnerung = '$erinnerung', projekt = '$projekt'
- WHERE id = '$eventid' LIMIT 1"
- );
-
- $calendarActionType = 'modified';
- //$this->app->erp->RunHook('kalender_event_hook', 2, $eventid, $calendarActionType);
- $hookEvent = $eventid;
- $hookAction = $calendarActionType;
- // Personenzuordnung entfernen (alle)
- $this->app->DB->Delete("DELETE FROM kalender_user WHERE event = '$eventid' AND userid > 0");
- // Gruppenzuordnung entfernen (nur Gruppen in denen der User ist)
- $eigene_kalendergruppen_ids = array_column($eigene_kalendergruppen, 'id');
- $this->app->DB->Delete("DELETE FROM kalender_user WHERE event = '$eventid' AND gruppe > 0 AND gruppe IN (".implode(',', $eigene_kalendergruppen_ids).")");
- $event = $eventid;
- }
-
- if($mode==="delete" && is_numeric($eventid)) {
- $calendarActionType = 'deleted';
- //$this->app->erp->RunHook('kalender_event_hook', 2, $eventid, $calendarActionType);
- $hookEvent = $eventid;
- $hookAction = $calendarActionType;
-
- $this->app->DB->Delete("DELETE FROM kalender_event WHERE id='$eventid' LIMIT 1");
- $this->app->DB->Delete("DELETE FROM kalender_user WHERE event='$eventid'");
- }
-
- if($mode==="copy" && is_numeric($eventid)) {
- $cData = $this->app->DB->SelectArr("SELECT * FROM kalender_event WHERE id = '$eventid' LIMIT 1");
- $this->app->DB->Insert(
- "INSERT INTO kalender_event (
- bezeichnung, beschreibung, von, bis,
- allDay, color, public, adresse, ansprechpartner_id,
- adresseintern, erinnerung, projekt)
- VALUES ('{$cData[0]['bezeichnung']}', '{$cData[0]['beschreibung']}', '{$cData[0]['von']}', '{$cData[0]['bis']}',
- '{$cData[0]['allDay']}', '{$cData[0]['color']}', '{$cData[0]['public']}', '{$cData[0]['adresse']}',
- '{$cData[0]['ansprechpartner_id']}', '{$cData[0]['adresseintern']}', '{$cData[0]['erinnerung']}', '{$cData[0]['projekt']}')"
- );
- $event = $this->app->DB->GetInsertID();
- $calendarActionType = 'added';
- //$this->app->erp->RunHook('kalender_event_hook', 2, $event, $calendarActionType);
- $hookEvent = $event;
- $hookAction = $calendarActionType;
- }
-
- if(!is_array($personen)) {
- if($personen!="") $personen = array($personen);
- else $personen = null;
- }
-
- // Ersteller eintragen, wenn keine Personen ausgewählt
- if(!$personen || empty($personen)){
- $personen[]=$this->app->User->GetID();
- }
-
- // Schreibe Personen
- if(is_numeric($event) && is_array($personen) && (!empty($personen)?count($personen):0) && $mode!=='delete') {
- $cpersonen = (!empty($personen)?count($personen):0);
- for($p=0;$p<$cpersonen;$p++) {
- $this->app->DB->Insert("INSERT INTO kalender_user (event, userid) VALUES ('$event', '{$personen[$p]}')");
- }
- }
-
- if ((int)$hookEvent > 0 && $hookAction !== '') {
- $this->app->erp->RunHook('kalender_event_hook', 2, $hookEvent, $hookAction);
- }
-
-
- // Schreibe Gruppenkalender
- if(is_numeric($event) && is_array($gruppenkalender) && (!empty($gruppenkalender)?count($gruppenkalender):0) && $mode!=='delete') {
- $cgruppenkalender = (!empty($gruppenkalender)?count($gruppenkalender):0);
- for($p=0;$p<$cgruppenkalender;$p++){
- // stelle farbe von kalender eintrag um wenn gruppe (also erste gruppe in auswahl)
- if($p==0){
- $color = $this->app->DB->Select("SELECT farbe FROM kalender_gruppen WHERE id='".$gruppenkalender[$p]."' LIMIT 1");
- if($color!=""){
- $this->app->DB->Update("UPDATE kalender_event SET color='$color' WHERE id='$event' LIMIT 1");
-
- $calendarActionType = 'modified';
- $this->app->erp->RunHook('kalender_event_hook', 2, $event, $calendarActionType);
- }
- }
- $this->app->DB->Insert("INSERT INTO kalender_user (event, gruppe) VALUES ('$event', '{$gruppenkalender[$p]}')");
- }
- }
-
- // Aktualisierten bzw. angelegten Event zurückliefern
- if (!empty($ajax) && in_array($mode, ['new', 'edit', 'copy'])) {
- $eventData = $this->app->DB->SelectArr(
- 'SELECT e.id, e.bezeichnung AS title, e.beschreibung, e.von AS `start`, e.bis AS `end`, e.allDay, e.color,
- e.public, e.erinnerung, e.ort, e.adresse, e.ansprechpartner_id, e.adresseintern, e.projekt
- FROM kalender_event AS e WHERE e.id = ' . (int)$event
- );
- header('Content-Type: application/json; charset=utf8');
- echo json_encode(current($eventData));
- $this->app->ExitXentral();
- }
-
- // Gelöschte Event-ID zurückliefern
- if (!empty($ajax) && $mode === 'delete') {
- header('Content-Type: application/json; charset=utf8');
- echo json_encode(['deletedEventId' => $eventid]);
- $this->app->ExitXentral();
- }
-
- $id = $this->app->Secure->GetGET('id');
- $module = $this->app->Secure->GetGET('module');
- $action = 'list';
- if($module != '' && $noRedirect != '1') {
- $this->app->Location->execute('index.php?module='.$module.'&action='.$action.($id?'&id='.$id:''));
- }
- }
-
- // Personen Auswahl
- // achtung hier keine select options machen
- $users = $this->app->DB->SelectArr("SELECT u.id, a.name as description FROM user u LEFT JOIN adresse a ON a.id=u.adresse WHERE u.activ='1' AND u.kalender_ausblenden!=1 ORDER BY u.username");
- $cusers = !empty($users)?count($users):0;
- $user_out = '';
- for($i=0; $i<$cusers;$i++){
- $user_out .= "";
- }
- $this->app->Tpl->Set('PERSONEN', $user_out);
-
-
- // Gruppenkalender Auswahl
- // achtung hier keine select options machen
- $user = $this->app->User->GetID();
- $gruppenkalender = $eigene_kalendergruppen;
- $cgruppenkalender = !empty($gruppenkalender)?count($gruppenkalender):0;
- for($i=0; $i<$cgruppenkalender;$i++){
- $this->app->Tpl->Add("GRUPPENKALENDER","");
- }
-
-
- $this->app->Tpl->Set('LINKADRESSE'," 0) window.location.href='index.php?module=adresse&action=brief&id=' + felder[0];\" style=\"font-weight:normal;text-decoration:underline; position:absolute;margin-top:5px;margin-left:5px;\">");
- if($this->app->erp->RechteVorhanden("adresse","ansprechpartner")){
- $this->app->Tpl->Set('LINKANSPRECHPARTNER', " 0) window.location.href='index.php?module=adresse&action=ansprechpartner&id=' + felder[0];\" style=\"font-weight:normal;text-decoration:underline;position:absolute;margin-top:5px;margin-left:5px;\">");
- }
-
- $cgruppenkalender = !empty($gruppenkalender)?count($gruppenkalender):0;
- for($gk=0;$gk<$cgruppenkalender;$gk++)
- {
- if($this->app->User->GetParameter('kalender_gruppe_'.$gruppenkalender[$gk]['id'])=="1") $checked="checked"; else $checked="";
- $this->app->Tpl->Add("GRUPPENKALENDERAUSWAHL",'
-
- ');
- $this->app->YUI->AutoSaveUserParameter('kalender_gruppe_'.$gruppenkalender[$gk]['id'],'kalender_gruppe_'.$gruppenkalender[$gk]['id'],"$('#calendar').fullCalendar('refetchEvents');");
- }
-
-
-
- $this->app->YUI->AutoSaveUserParameter("aufgaben","adresse_kalender_aufgaben","$('#calendar').fullCalendar('refetchEvents');");
-
- if($this->app->User->GetParameter("adresse_kalender_aufgaben")=="1")
- {
- $this->app->Tpl->Set("AUFGABENCHECKED","checked");
- }
-
-
- $this->app->YUI->AutoSaveUserParameter("termine","adresse_kalender_termine","$('#calendar').fullCalendar('refetchEvents');");
-
- if($this->app->User->GetParameter("adresse_kalender_termine")=="1")
- {
- $this->app->Tpl->Set("TERMINECHECKED","checked");
- }
-
-
- $this->app->YUI->AutoSaveUserParameter("projekte","adresse_kalender_projekte","$('#calendar').fullCalendar('refetchEvents');");
-
- if($this->app->User->GetParameter("adresse_kalender_projekte")=="1")
- {
- $this->app->Tpl->Set("PROJEKTECHECKED","checked");
- }
-
-
- $this->app->YUI->AutoSaveUserParameter("urlaub","adresse_kalender_urlaub","$('#calendar').fullCalendar('refetchEvents');");
-
- if($this->app->User->GetParameter("adresse_kalender_urlaub")=="1")
- {
- $this->app->Tpl->Set("URLAUBCHECKED","checked");
- }
-
-
- if($this->app->erp->ModulVorhanden("serviceauftrag")){
- $this->app->YUI->AutoSaveUserParameter("serviceauftrag","adresse_kalender_serviceauftrag","$('#calendar').fullCalendar('refetchEvents');");
- if($this->app->User->GetParameter("adresse_kalender_serviceauftrag")=="1")
- {
- $this->app->Tpl->Set("SERVICEAUFTRAGCHECKED","checked");
- }
- $this->app->Tpl->Set("SERVICEAUFTRAGKALENDER",'
- ');
- }
-
- if($noRedirect == '1') {
- $return['eventid'] = $event;
- echo json_encode($return);
- $this->app->ExitXentral();
- }
- $defaultCalendarColor = $this->app->User->GetParameter("welcome_defaultcolor_fuer_kalender");
- if($defaultCalendarColor=="")
- {
- $defaultCalendarColor = $this->app->DB->Select("SELECT defaultcolor FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1");
- }
- if($defaultCalendarColor=="")
- {
- $defaultCalendarColor = '#0B8092';
- }
-
- $this->app->Tpl->Set("DEFAULTKALENDERCOLOR",$defaultCalendarColor);
- $this->app->YUI->ColorPicker("color");
- $this->app->YUI->DatePicker("datum");
- $this->app->YUI->DatePicker("datum_bis");
- $this->app->YUI->TimePicker("von");
- $this->app->YUI->TimePicker("bis");
- $this->app->YUI->AutoComplete("adresse", "adresse", 0,"","","","","TerminForm");
- $this->app->YUI->AutoComplete("adresseintern", "adresse", 0,"","","","","TerminForm");
- $this->app->YUI->AutoComplete("projekt", "projektname", 1,"","","","","TerminForm");
- $this->app->YUI->CkEditor("einladungtext", "internal", array("height" => "250"));
-
- $this->app->YUI->AutoCompleteAdd("einladungcc", "emailname");
- $this->app->Tpl->Parse($parsetarget, "kalender.tpl");
- }
-
- public function KalenderList()
- {
- $this->trySynchronizeGoogleChanges();
-
- $this->app->Tpl->Set('CALENDAR_DAYNAMES','["{|Sonntag|}", "{|Montag|}", "{|Dienstag|}", "{|Mittwoch|}",
- "{|Donnerstag|}", "{|Freitag|}", "{|Samstag|}"]');
- $this->app->Tpl->Set('CALENDAR_MONTHNAMES','["{|Januar|}", "{|Februar|}", "{|März|}", "{|April|}", "{|Mai|}",
- "{|Juni|}", "{|Juli|}", "{|August|}", "{|September|}", "{|Oktober|}", "{|November|}", "{|Dezember|}"]');
- $this->app->Tpl->Set('CALENDAR_TODAY','{|Heute|}');
- $this->app->Tpl->Set('CALENDAR_MONTH','{|Monat|}');
- $this->app->Tpl->Set('CALENDAR_WEEK','{|Woche|}');
- $this->app->Tpl->Set('CALENDAR_DAY','{|Tag|}');
- $this->showKalenderList('TAB1');
- $this->app->YUI->DatePicker("datum");
- $this->app->YUI->DatePicker("datum_bis");
-
- $this->app->YUI->CkEditor("e_notizen","belege",array("width"=>"625"));
- $this->app->YUI->CkEditor("e_beschreibung","belege",array("width"=>"420"));
- $this->app->YUI->DatePicker("e_datum");
- $this->app->YUI->TimePicker("e_zeit");
- $this->app->Tpl->Parse('TAB1','aufgaben_popup.tpl');
-
- // $this->app->Tpl->Parse(TAB1,"kalender.tpl");
- $this->app->Tpl->Set('TABTEXT',"");
- $this->app->Tpl->Parse('PAGE',"tabview.tpl");
- $this->app->erp->StartseiteMenu();
- }
-
- public function KalenderICS()
- {
- $findlogin = $this->app->DB->Select("SELECT id FROM user WHERE username='".$this->app->DB->real_escape_string($_SERVER['PHP_AUTH_USER'])."' AND username!=''
- AND kalender_aktiv='1' AND kalender_passwort='".$this->app->DB->real_escape_string($_SERVER['PHP_AUTH_PW'])."' AND kalender_passwort!='' AND `activ`='1' LIMIT 1");
-
- $this->app->erp->Protokoll("Benutzer: ".$this->app->DB->real_escape_string($_SERVER['PHP_AUTH_USER']));
-
- //$findlogin='1000';
- //if ($_SERVER['PHP_AUTH_USER']=="sauterbe" && $_SERVER['PHP_AUTH_PW']=="ZakledhLs")
- if($findlogin > 0)
- {
- $event = new ICS("wawision");
-
- $data = $this->app->DB->SelectArr("SELECT DISTINCT ke.id, ort,beschreibung, bezeichnung AS title, DATE_FORMAT(von,'%Y-%m-%d %H:%i') AS start,
- DATE_FORMAT(bis,'%Y-%m-%d %H:%i') AS end, allDay, color, public,erinnerung
- FROM kalender_user AS ku
- LEFT JOIN kalender_event AS ke ON ke.id=ku.event
- WHERE (ku.userid='$findlogin' OR ke.public='1') AND ke.von!='0000-00-00 00:00:00' AND ke.bis!='0000-00-00 00:00:00' ORDER by von");
- $cdata = !empty($data)?count($data):0;
- for($i=0;$i<$cdata;$i++)
- {
- // $data[$i]['color'] = (($data[$i]['public']=='1')?$this->publicColor:$data[$i]['color']);
- $data[$i]['allDay'] = (($data[$i]['allDay']=='1')?true:false);
- $data[$i]['public'] = (($data[$i]['public']=='1')?true:false);
- $data[$i]['erinnerung'] = (($data[$i]['erinnerung']=='1')?true:false);
- $data[$i]['title'] = $this->app->erp->ReadyForPDF($data[$i]['title']);
- $data[$i]['ort'] = $this->app->erp->ReadyForPDF($data[$i]['ort']);
- $data[$i]['beschreibung'] = str_ireplace("\x0D", "", $data[$i]['beschreibung']);
- $data[$i]['beschreibung'] = str_replace("\n", "\\n",$data[$i]['beschreibung']);
- $data[$i]['beschreibung'] = str_replace("\r\n", "\\n",$data[$i]['beschreibung']);
- $data[$i]['beschreibung'] = $this->app->erp->ReadyForPDF($data[$i]['beschreibung']);
-
-
- $event->AddEvent($data[$i]['id'],$data[$i]['start'],$data[$i]['end'],$data[$i]['title'],$data[$i]['beschreibung'],$data[$i]['ort']);
- }
- //$event->AddEvent(1,"2014-05-18 11:00","2014-05-18 21:00","Test 444 Event","This is an event made by Benedikt","Augsburg");
- //$event->AddEvent(2,"2014-05-18 09:00","2014-05-18 09:30","Test 3 Event","This is an event made by Benedikt","Augsburg");
- $event->show();
- $this->app->ExitXentral();
- }
-
- header('WWW-Authenticate: Basic realm="WaWision Kalender"');
- header('HTTP/1.0 401 Unauthorized');
- $this->app->ExitXentral();
- }
-
- function KalenderTaskStatus()
- {
- $user = $this->app->User->GetID();
- $data = $this->app->DB->SelectArr("SELECT kalender_aufgaben , a.id FROM adresse AS a
- LEFT JOIN user as u ON u.adresse=a.id
- WHERE u.id='$user' LIMIT 1");
- $new_status = '';
- if($data[0]['kalender_aufgaben']=='1'){
- $new_status = '0';
- }
- else{
- $new_status = '1';
- }
- $this->app->DB->Update("UPDATE adresse SET kalender_aufgaben='$new_status' WHERE id='{$data[0]['id']}' LIMIT 1");
- $this->app->ExitXentral();
- }
-
-
-
-
- function KalenderData()
- {
- $user = $this->app->User->GetID();
- $useradresse = $this->app->User->GetAdresse();
- $start = date("Y-m-d H:i:s", $this->app->Secure->GetGET('start'));
- $end = date("Y-m-d H:i:s", $this->app->Secure->GetGET('end'));
-
- $start_datum = date("Y-m-d", $this->app->Secure->GetGET('start'));
- $end_datum = date("Y-m-d", $this->app->Secure->GetGET('end'));
-
- $gruppenkalender = $this->app->DB->SelectArr("SELECT * FROM kalender_gruppen");
- $hideserviceauftrag = false;
- $subwhere = "";
- $cgruppenkalender = !empty($gruppenkalender)?count($gruppenkalender):0;
- for($i=0;$i<$cgruppenkalender;$i++)
- {
- if($this->app->User->GetParameter("kalender_gruppe_".$gruppenkalender[$i]['id'])=="1") {
- if($subwhere!="") $subwhere .= " OR ";
- $subwhere .= " (ku.gruppe='".$gruppenkalender[$i]['id']."' AND kg.id IN(SELECT kgm.kalendergruppe FROM kalender_gruppen_mitglieder kgm LEFT JOIN user u ON u.adresse = kgm.adresse WHERE u.id='$user')) ";
- }
- }
- if($subwhere=="") {
- $subwhere = " AND (ku.userid='$user' OR ke.public=1 OR (ku.gruppe > 0 AND kg.id IN (SELECT kgm.kalendergruppe FROM kalender_gruppen_mitglieder kgm LEFT JOIN user u ON u.adresse = kgm.adresse WHERE u.id='$user')))";
- } else {
- //$hideserviceauftrag = true; 2018-10-05 BS entfernt
- $subwhere = " AND (".$subwhere.") ";
- }
-
-
- $nurmeine = $this->app->User->GetParameter("adresse_kalender_termine");
-
- if($nurmeine > 0)
- {
- $data = $this->app->DB->SelectArr("SELECT DISTINCT ke.id, 'kalender_event' AS typ, ort, beschreibung, ke.bezeichnung AS title, von AS start, bis AS end, allDay, color, public,erinnerung,adresse,ansprechpartner_id,adresseintern,projekt
- FROM kalender_event AS ke
- LEFT JOIN kalender_user AS ku ON ke.id=ku.event
- LEFT JOIN kalender_gruppen AS kg ON kg.id = ku.gruppe
- WHERE (ku.userid='$user' OR (ku.gruppe > 0 AND kg.id IN (SELECT kgm.kalendergruppe FROM kalender_gruppen_mitglieder kgm LEFT JOIN user u ON u.adresse = kgm.adresse WHERE u.id='$user'))) AND (ke.von < '$end' AND (ke.bis >= '$start' OR ke.bis='0000-00-00 00:00:00') ) GROUP by ke.id ORDER by start");
- } else {
-
- $data = $this->app->DB->SelectArr("SELECT DISTINCT ke.id, 'kalender_event' AS typ, ort, beschreibung, ke.bezeichnung AS title, von AS start, bis AS end, allDay, color, public,erinnerung,adresse,ansprechpartner_id,adresseintern,projekt,kg.farbe
- FROM kalender_event AS ke
- LEFT JOIN kalender_user ku ON ke.id=ku.event
- LEFT JOIN kalender_gruppen kg ON kg.id=ku.gruppe
- WHERE (ke.von < '$end' AND (ke.bis >= '$start' OR (ke.bis='0000-00-00 00:00:00' AND ke.von!='0000-00-00 00:00:00') AND NOT (ke.von < '$start' AND ke.bis='0000-00-00 00:00:00')) ) $subwhere GROUP by ke.id ORDER by start");
- }
- $cdata = !empty($data)?count($data):0;
- for($i=0;$i<$cdata;$i++)
- {
- $data[$i]['allDay'] = (($data[$i]['allDay']=='1')?true:false);
- $data[$i]['public'] = (($data[$i]['public']=='1')?true:false);
- $data[$i]['erinnerung'] = (($data[$i]['erinnerung']=='1')?true:false);
- $data[$i]['title'] = $this->app->erp->ReadyForPDF($data[$i]['title']);
- $data[$i]['ort'] = $this->app->erp->ReadyForPDF($data[$i]['ort']);
- $data[$i]['adresse'] = $this->app->erp->ReadyForPDF($data[$i]['adresse']);
- $data[$i]['ansprechpartner'] = $this->app->erp->ReadyForPDF($data[$i]['ansprechpartner_id']);
- $data[$i]['adresseintern'] = $this->app->erp->ReadyForPDF($data[$i]['adresseintern']);
- $data[$i]['projekt'] = $this->app->erp->ReadyForPDF($data[$i]['adresseintern']);
- $data[$i]['beschreibung'] = $this->app->erp->ReadyForPDF($data[$i]['projekt']);
- if($data[$i]['farbe']!="")
- $data[$i]['color'] = $data[$i]['farbe'];
- }
-
- $aufgaben_visible = $this->app->DB->Select("SELECT kalender_aufgaben FROM adresse AS a
- LEFT JOIN user as u ON u.adresse=a.id
- WHERE u.id='$user' LIMIT 1");
-
- // Mindesthaltbarkeitsdatum einblenden
- if($this->app->erp->RechteVorhanden("mhdwarning","list"))
- {
- $sql = "SELECT a.id as id,a.name_de, a.nummer, SUM(lm.menge) as menge, lm.mhddatum
- FROM lager_mindesthaltbarkeitsdatum lm
- LEFT JOIN artikel a ON a.id=lm.artikel LEFT JOIN lager_platz l ON l.id=lm.lager_platz WHERE DATE_FORMAT(lm.datum,'%Y-%m') <= DATE_FORMAT('$end_datum','%Y-%m') OR DATE_FORMAT(lm.datum,'%Y-%m') >= DATE_FORMAT('$start_datum','%Y-%m') GROUP By lm.mhddatum, a.id";
-
- $tmpartikel = $this->app->DB->SelectArr($sql);
- $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
- for($ij=0;$ij<$ctmpartikel;$ij++)
- {
- $data[] = array('id' => -3,
- 'title'=>round($tmpartikel[$ij]['menge'],0)." x ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name_de']),
- 'start'=> $tmpartikel[$ij]['mhddatum'],
- 'end'=> $tmpartikel[$ij]['mhddatum'],
- 'allDay'=>true,
- 'color'=>'#FA5858',
- 'public'=>'1',
- 'task'=>$tmpartikel[$ij]['id']);
- }
- }
-
-
- //Geburtstage einblenden
-
-
- $tmp = explode('-',$start);
- $startyear = $tmp[0];
-
- $tmp = explode('-',$end);
- $endyear = $tmp[0];
-
- $types = array('adresse','ansprechpartner');
-
- foreach($types as $key)
- {
-
- if($key=="adresse") $p_key = "a.id";
- else if($key=="ansprechpartner") $p_key = "a.adresse";
-
- if($endyear>$startyear)
- {
-
- //0111 1230 // neues jahr
- $sql = "SELECT $p_key as id,a.name,DATE_FORMAT(a.geburtstag,'%m-%d') as datum,
- YEAR('$end') - YEAR(a.geburtstag) - IF(DAYOFYEAR('$end') < DAYOFYEAR(CONCAT(YEAR('$end'),DATE_FORMAT(a.geburtstag, '-%m-%d'))),1,0) as alterjahre
- FROM ".$key." a WHERE DATE_FORMAT(a.geburtstag,'%m%d') <= date_format('$end','%m%d') AND a.geloescht!='1' AND a.geburtstag!='0000-00-00' AND a.geburtstagkalender=1";
-
- $tmpartikel = $this->app->DB->SelectArr($sql);
- $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
- for($ij=0;$ij<$ctmpartikel;$ij++)
- {
- $data[] = array('id' => -4,
- //'title'=>"Geburtstag: ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name'])." (".$tmpartikel[$ij]['alterjahre'].")",
- 'title'=>"Geburtstag: ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name']),
- 'start'=> $endyear."-".$tmpartikel[$ij]['datum'],
- 'end'=> $endyear."-".$tmpartikel[$ij]['datum'],
- 'allDay'=>true,
- 'color'=>'#FA5858',
- 'public'=>'1',
- 'task'=>$tmpartikel[$ij]['id']);
- }
-
-
- //0111 1230 // altes jahr
- $sql = "SELECT $p_key as id,a.name,DATE_FORMAT(a.geburtstag,'%m-%d') as datum,
- YEAR('$end') - YEAR(a.geburtstag) - IF(DAYOFYEAR('$end') < DAYOFYEAR(CONCAT(YEAR('$end'),DATE_FORMAT(a.geburtstag, '-%m-%d'))),1,0) as alterjahre
- FROM ".$key." a WHERE DATE_FORMAT(a.geburtstag,'%m%d') <= 1231 AND a.geloescht!='1' AND a.geburtstag!='0000-00-00' AND a.geburtstagkalender=1";
-
- $tmpartikel = $this->app->DB->SelectArr($sql);
- $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
- for($ij=0;$ij<$ctmpartikel;$ij++)
- {
- $data[] = array('id' => -4,
- 'title'=>"Geburtstag: ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name'])." (".$tmpartikel[$ij]['alterjahre'].")",
- 'start'=> $startyear."-".$tmpartikel[$ij]['datum'],
- 'end'=> $startyear."-".$tmpartikel[$ij]['datum'],
- 'allDay'=>true,
- 'color'=>'#FA5858',
- 'public'=>'1',
- 'task'=>$tmpartikel[$ij]['id']);
- }
-
-
- } else {
- $sql = "SELECT $p_key as id,a.name,DATE_FORMAT(a.geburtstag,'%m-%d') as datum,
- YEAR('$end') - YEAR(a.geburtstag) - IF(DAYOFYEAR('$end') < DAYOFYEAR(CONCAT(YEAR('$end'),DATE_FORMAT(a.geburtstag, '-%m-%d'))),1,0) as alterjahre
- FROM ".$key." a WHERE DATE_FORMAT(a.geburtstag,'%m%d') <= date_format('$end','%m%d') AND DATE_FORMAT(a.geburtstag,'%m%d') >= date_format('$start','%m%d') AND a.geloescht!='1' AND a.geburtstag!='0000-00-00' AND a.geburtstagkalender=1";
-
- $tmpartikel = $this->app->DB->SelectArr($sql);
- $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
- for($ij=0;$ij<$ctmpartikel;$ij++)
- {
- $data[] = array('id' => -4,
- 'title'=>"Geburtstag: ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name'])." (".$tmpartikel[$ij]['alterjahre'].")",
- 'start'=> $startyear."-".$tmpartikel[$ij]['datum'],
- 'end'=> $startyear."-".$tmpartikel[$ij]['datum'],
- 'allDay'=>true,
- 'color'=>'#FA5858',
- 'public'=>'1',
- 'task'=>$tmpartikel[$ij]['id']);
- }
- }
- }
-
-
-
-
- //arbeitsfreie tage einblenden
- $sql = "SELECT a.id as id,a.bezeichnung, a.datum,a.typ FROM arbeitsfreietage a WHERE a.datum <='$end_datum' AND a.datum >='$start_datum'";
-
- $tmpartikel = $this->app->DB->SelectArr($sql);
- $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
- for($ij=0;$ij<$ctmpartikel;$ij++)
- {
- $data[] = array('id' => -7,
- 'title'=>ucfirst($tmpartikel[$ij]['typ']).": ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['bezeichnung']),
- 'start'=> $tmpartikel[$ij]['datum'],
- 'end'=> $tmpartikel[$ij]['datum'],
- 'allDay'=>true,
- 'color'=>'#FA5858',
- 'public'=>'1',
- 'task'=>$tmpartikel[$ij]['id']);
- }
-
- // Serviceauftrag
- $serviceauftrag_visible = $this->app->User->GetParameter("adresse_kalender_serviceauftrag");
- if($this->app->erp->ModulVorhanden("serviceauftrag")){
- if(!$hideserviceauftrag && $serviceauftrag_visible){
- $tmpserviceauftragsql = "SELECT sa.id, sa.datum, sa.abschluss_bis, a.name,sa.bearbeiter FROM serviceauftrag sa LEFT JOIN adresse a ON sa.adresse = a.id WHERE sa.datum >= '$start_datum' AND (sa.abschluss_bis = '0000-00-00' OR sa.abschluss_bis < '$end_datum')";
- if($nurmeine > 0){
- $tmpserviceauftragsql .= " AND sa.bearbeiter = '$useradresse'";
- }
- $tmpserviceauftrag = $this->app->DB->SelectArr($tmpserviceauftragsql);
- $ctmpserviceauftrag = !empty($tmpserviceauftrag)?count($tmpserviceauftrag):0;
- for($ij=0;$ij<$ctmpserviceauftrag;$ij++)
- {
-
- $defaultCalendarColor = $this->app->DB->Select("SELECT defaultcolor FROM user WHERE adresse='".$tmpserviceauftrag[$ij]['bearbeiter']."' AND defaultcolor!='' LIMIT 1");
- if($defaultCalendarColor=="") $defaultCalendarColor = "#DD00DD";
-
- $data[] = array('id' => -6,
- 'title'=> "Serviceauftrag: ".$tmpserviceauftrag[$ij]['name'],
- 'start'=> $tmpserviceauftrag[$ij]['datum'],
- 'end'=> $tmpserviceauftrag[$ij]['abschluss_bis'],
- 'allDay'=>true,
- 'color'=>$defaultCalendarColor,
- 'public'=>'1',
- 'task'=>$tmpserviceauftrag[$ij]['id']);
- }
- }
- }
-
-
-
- $aufgaben_visible = $this->app->User->GetParameter("adresse_kalender_aufgaben");
- // Aufgabene einblenden
- if($aufgaben_visible=='1') {
- // Aufgaben hinzufügen
- $tasks = $this->app->DB->SelectArr("SELECT DISTINCT a.id, a.aufgabe, a.abgabe_bis, a.ganztags, ma.name as mitarbeiter, ku.name as kunde FROM aufgabe AS a
- LEFT JOIN user AS u ON u.adresse=a.adresse
- LEFT JOIN adresse AS ku ON ku.id=a.kunde
- LEFT JOIN adresse AS ma ON ma.id=a.adresse
- WHERE (u.id='$user' OR oeffentlich='1') AND a.status='offen' AND a.abgabe_bis>='$start'
- AND a.abgabe_bis<='$end'");
- $ctasks = !empty($tasks)?count($tasks):0;
- for($i=0;$i<$ctasks;$i++)
- {
- $allday = (($tasks[$i]['ganztags']=='1') ? true : false);
- $data[] = array('id' => -2,
- 'title'=>$tasks[$i]['mitarbeiter'].": ".$this->app->erp->ReadyForPDF($tasks[$i]['aufgabe']).($tasks[$i]['kunde']!=""?" (".$tasks[$i]['kunde'].")":""),
- 'start'=> $tasks[$i]['abgabe_bis'],
- 'end'=> $tasks[$i]['abgabe_bis'],
- 'allDay'=>$allday,
- 'color'=>$this->taskColor,
- 'public'=>'',
- 'task'=>$tasks[$i]['id']);
- }
-
- }
-
- $urlaub_visible = $this->app->User->GetParameter("adresse_kalender_urlaub");
- // Aufgabene einblenden
- if($urlaub_visible=='1') {
- // Aufgaben hinzufügen
- $tasks = $this->app->DB->SelectArr("SELECT DISTINCT ms.id, a2.name, ms.datum,ms.kuerzel FROM mitarbeiterzeiterfassung_sollstunden ms
- LEFT JOIN user AS u ON u.adresse=ms.adresse
- LEFT JOIN adresse a2 ON a2.id=ms.adresse
- WHERE ms.datum>='$start'
- AND ms.datum<='$end' AND (ms.kuerzel='U' OR ms.kuerzel='K' OR ms.kuerzel='N')");
- $ctasks = !empty($tasks)?count($tasks):0;
- for($i=0;$i<$ctasks;$i++)
- {
- switch($tasks[$i]['kuerzel'])
- {
- case "U": $kuerzel="Abwesend"; break;
- case "N": $kuerzel="Abwesend"; break;
- case "K": $kuerzel="Abwesend"; break;
- }
- $data[] = array('id' => -7,
- 'title'=>$kuerzel.": ".$this->app->erp->ReadyForPDF($tasks[$i]['name']),
- 'start'=> $tasks[$i]['datum'],
- 'end'=> $tasks[$i]['datum'],
- 'allDay'=>1,
- 'color'=>$this->urlaubColor,
- 'public'=>'1',
- 'task'=>$tasks[$i]['id']);
- }
-
- }
-
-
- $projekte_visible = $this->app->User->GetParameter("adresse_kalender_projekte");
- // Aufgabene einblenden
- if($projekte_visible=='1') {
- // Aufgaben hinzufügen
-
- $nureigene = $this->app->User->GetParameter("adresse_kalender_termine");
- if($nureigene=="1")
- {
- $tasks = $this->app->DB->SelectArr("SELECT DISTINCT a.id, a.aufgabe, a.startdatum,a.farbe,a.projekt FROM arbeitspaket AS a
- LEFT JOIN user AS u ON u.adresse=a.adresse
- WHERE (u.id='$user') AND a.startdatum>='$start'
- AND a.startdatum <='$end'");
- } else {
- $tasks = $this->app->DB->SelectArr("SELECT DISTINCT a.id, a.aufgabe, a.startdatum,a.farbe,a.projekt FROM arbeitspaket AS a
- LEFT JOIN user AS u ON u.adresse=a.adresse
- LEFT JOIN projekt p ON a.projekt=p.id
- WHERE a.startdatum>='$start' AND p.oeffentlich=1
- AND a.startdatum <='$end'");
- }
- $ctasks = !empty($tasks)?count($tasks):0;
- for($i=0;$i<$ctasks;$i++)
- {
- $data[] = array('id' => -5,
- 'title'=>"Teilprojekt Start: ".$this->app->erp->ReadyForPDF($tasks[$i]['aufgabe']),
- 'start'=> $tasks[$i]['startdatum'],
- 'end'=> $tasks[$i]['startdatum'],
- 'allDay'=>true,
- 'color'=>$tasks[$i]['farbe'],
- 'public'=>'',
- 'task'=>$tasks[$i]['projekt']);
- }
- $tasks = $this->app->DB->SelectArr("SELECT DISTINCT a.id, a.aufgabe, a.abgabedatum,a.farbe,a.projekt FROM arbeitspaket AS a
- LEFT JOIN user AS u ON u.adresse=a.adresse
- WHERE (u.id='$user') AND a.abgabedatum>='$start'
- AND a.abgabedatum <='$end'");
- $ctasks = !empty($tasks)?count($tasks):0;
- for($i=0;$i<$ctasks;$i++)
- {
- $data[] = array('id' => -5,
- 'title'=>"Teilprojekt Abgabe: ".$this->app->erp->ReadyForPDF($tasks[$i]['aufgabe']),
- 'start'=> $tasks[$i]['abgabedatum'],
- 'end'=> $tasks[$i]['abgabedatum'],
- 'allDay'=>true,
- 'color'=>$tasks[$i]['farbe'],
- 'public'=>'',
- 'task'=>$tasks[$i]['projekt']);
- }
-
-
- }
- header('Content-type: application/json');
- echo json_encode($data);
- $this->app->ExitXentral();
- }
-
- function KalenderUpdate()
- {
- $id = $this->app->Secure->GetGET("id");
- $task = $this->app->Secure->GetGET("task");
-
- if(is_numeric($id) && $id > 0) {
- $start = $this->app->Secure->GetGET("start");
- $end = $this->app->Secure->GetGET("end");
-
- $allday = $this->app->Secure->GetGET("allDay");
- if($allday=="true")
- {
- //$this->app->DB->Update("UPDATE kalender_event SET von='$start', bis=DATE_ADD('$end', INTERVAL 1439 MINUTE) WHERE id='$id' LIMIT 1");
- $this->app->DB->Update("UPDATE kalender_event SET von='$start', bis='$end' WHERE id='$id' LIMIT 1");
-
- $calendarActionType = 'modified';
- $this->app->erp->RunHook('kalender_event_hook', 2, $id, $calendarActionType);
- }
- else
- {
- $this->app->DB->Update("UPDATE kalender_event SET von='$start', bis='$end' WHERE id='$id' LIMIT 1");
-
- $calendarActionType = 'modified';
- $this->app->erp->RunHook('kalender_event_hook', 2, $id, $calendarActionType);
- }
- }
-
- if(is_numeric($task) && $task > 0) {
- $start = $this->app->Secure->GetGET("start");
- // jjjj-mm-tt ss-mm-ss -> jjjj-mm-tt ss:mm:ss
-
- $allday_db = (($allday=='true') ? '1' : '0');
- $converted = $this->app->String->Convert($start, "%1-%2-%3 %4-%5-%6", "%1-%2-%3 %4:%5:%6");
- $this->app->DB->Update("UPDATE aufgabe SET abgabe_bis='$converted', ganztags='$allday_db' WHERE id='$task' LIMIT 1");
- }
-
- $this->app->ExitXentral();
- }
-
- function KalenderEventData()
- {
- $event = $this->app->Secure->GetGET("id");
- $cmd = $this->app->Secure->GetGET("cmd");
- header('Content-type: application/json');
- switch($cmd) {
- case "getEinladung":
- $data = $this->app->DB->SelectRow("SELECT k.adresse, k.adresseintern, IFNULL(a.sprache,''),k.projekt,k.bezeichnung,k.beschreibung,k.ort,
- DATE_FORMAT(k.von,'%d.%m.%Y %H:%i') as von, DATE_FORMAT(k.bis,'%d.%m.%Y %H:%i') as bis
- FROM kalender_event k LEFT JOIN adresse a ON a.id=k.adresse WHERE k.id='" . $event . "' LIMIT 1");
- $sprache = $data['sprache'];
- $projekt = 0;//$data['projekt'];
-
-
- $to = $this->app->DB->Select("SELECT email FROM adresse WHERE id='" . $data['adresse'] . "' AND geloescht!=1 LIMIT 1");
- $to_name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='" . $data['adresse'] . "' AND geloescht!=1 LIMIT 1");
-
- $vorlage = $this->app->erp->Geschaeftsbriefvorlage($sprache, "EinladungKalender", $projekt);
-
- foreach ($data as $key => $value) {
- $vorlage['betreff'] = str_replace('{' . strtoupper($key) . '}', $value, $vorlage['betreff']);
- $vorlage['text'] = str_replace('{' . strtoupper($key) . '}', $value, $vorlage['text']);
- }
-
- // jetzt holen wir alle Email-Adressen
- $emailadresse[$data['adresse']] = $data['adresse'];
- $emailadresse[$data['adresseintern']] = $data['adresseintern'];
- $dataPersonen = $this->app->DB->SelectArr("SELECT a.id as userid FROM kalender_user ku LEFT JOIN user u ON u.id=ku.userid LEFT JOIN adresse a ON a.id=u.adresse WHERE ku.event='" . $event . "'");
- if (is_array($dataPersonen)) {
- foreach ($dataPersonen as $person) {
- if ($person['userid'] > 0)
- $emailadressenlist[$person['userid']] = $person['userid'];
- }
- }
- $emailadressen = $this->app->DB->SelectArr("SELECT id, name, email FROM adresse WHERE email != '' AND id IN (" . implode(",", $emailadressenlist) . ") AND geloescht!='1'");
- $ret = array();
- if ($to != "") {
- if ($to_name != "")
- $ret['einladungcc'] = $to_name . " <" . $to . ">,";
- else
- $ret['einladungcc'] = $to;
- }
-
- foreach ($emailadressen as $email) {
- if ($email['name'] != "")
- $ret['einladungcc'] .= $email['name'] . " <" . $email['email'] . ">,";
- else
- $ret['einladungcc'] .= $email['email'] . ",";
- }
- $ret['einladungcc'] = rtrim($ret['einladungcc'], ",");
-
-
- $ret['betreff'] = $vorlage['betreff'];
- $ret['text'] = $vorlage['text'];
- $ret['status'] = 1;
- $ret['statusText'] = "";
- echo json_encode($ret);
- $this->app->ExitXentral();
- break;
-
- case "sendEinladung" :
- $betreff = $this->app->Secure->GetPOST("betreff");
- $text = $this->app->Secure->GetPOST("text");
- $emailcc= $this->app->Secure->GetPOST("emailcc");
- $id = $this->app->Secure->GetPOST("id");
- if($emailcc=="")
- {
- $ret['status'] = 0;
- $ret['statusText'] = "Bitte mindestens einen Empfänger angeben!";
- }
- else if($this->KalenderMail($id,$betreff,$text,$emailcc))
- {
- $ret['status'] = 1;
- $ret['statusText'] = "Einladung wurde per Mail versendet.";
- } else {
- $ret['status'] = 0;
- $ret['statusText'] = "Es gab einen Fehler beim Versenden der Einladung per Mail!";
- }
- echo json_encode($ret);
- $this->app->ExitXentral();
- break;
-
- default:
-
- if (is_numeric($event) && $event > 0) {
- $data = $this->app->DB->SelectArr("SELECT id, ort, bezeichnung AS titel, beschreibung, von, bis, allDay, color, public,erinnerung,adresse,ansprechpartner_id,adresseintern,projekt FROM kalender_event WHERE id='$event' LIMIT 1");
- $personen = $this->app->DB->SelectArr("SELECT DISTINCT ku.userid, a.name FROM kalender_user AS ku
- LEFT JOIN user AS u ON u.id=ku.userid
- LEFT JOIN adresse a ON a.id=u.adresse
- WHERE ku.event='$event' ORDER BY u.username ");
-
- $gruppenkalender = $this->app->DB->SelectArr("SELECT DISTINCT ku.gruppe as kalendergruppe FROM kalender_user AS ku
- LEFT JOIN kalender_gruppen kg ON kg.id=ku.gruppe
- WHERE ku.event='$event' AND ku.gruppe > 0 ORDER BY kg.bezeichnung ");
- }
-
- $data[0]['adressid'] = $data[0]['adresse'];
- $data[0]['adresse'] = $this->app->DB->Select("SELECT if(a.lieferantennummer,CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,' Liefr: ',a.lieferantennummer,')'),CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,')')) FROM adresse a WHERE a.id='" . $data[0]['adresse'] . "' AND a.geloescht=0 LIMIT 1");
- $data[0]['ansprechpartner'] = $this->app->DB->Select("SELECT CONCAT(an.id, ' ', an.name, ' (', a.name, IF(a.lieferantennummer, CONCAT(', Kdr: ',a.kundennummer,' Liefr: ',a.lieferantennummer,')'),CONCAT(', Kdr: ',a.kundennummer,')')) ) FROM ansprechpartner an LEFT JOIN adresse a ON an.adresse = a.id WHERE an.id = '".$data[0]['ansprechpartner_id']."' AND a.geloescht = 0 LIMIT 1");
- $data[0]['adresseintern'] = $this->app->DB->Select("SELECT if(a.lieferantennummer,CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,' Liefr: ',a.lieferantennummer,')'),CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,')')) FROM adresse a WHERE a.id='" . $data[0]['adresseintern'] . "' AND a.geloescht=0 LIMIT 1");
- $data[0]['projekt'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='" . $data[0]['projekt'] . "' AND id > 0 LIMIT 1");
-
- $data[0]['allDay'] = (($data[0]['allDay'] == '1') ? true : false);
- $data[0]['public'] = (($data[0]['public'] == '1') ? true : false);
- $data[0]['erinnerung'] = (($data[0]['erinnerung'] == '1') ? true : false);
- $data[0]['titel'] = $this->app->erp->ReadyForPDF($data[0]['titel']);
- $data[0]['ort'] = $this->app->erp->ReadyForPDF($data[0]['ort']);
- $data[0]['adresse'] = $this->app->erp->ReadyForPDF($data[0]['adresse']);
- $data[0]['adresseintern'] = $this->app->erp->ReadyForPDF($data[0]['adresseintern']);
- $data[0]['beschreibung'] = $this->app->erp->ReadyForPDF($data[0]['beschreibung']);
-
- // $data[0]['color'] = (($data[0]['public']=='1')?$this->publicColor:$data[0]['color']);
- $data[0]['personen'] = $personen;
-
-
- $data[0]['gruppenkalender'] = $gruppenkalender;
-
- $googleEventLink = '';
- $canEditGoogleEvent = false;
- try {
- if ($this->isGoogleSynchronizationActive()) {
- /** @var GoogleSyncGateway $gateway */
- $gateway = $this->app->Container->get('GoogleSyncGateway');
- $sync = $gateway->tryGetSyncEntryByEvent((int)$event);
- if ($sync !== null) {
- /** @var GoogleCalendarSynchronizer $synchronizer */
- $synchronizer = $this->app->Container->get('GoogleCalendarSynchronizer');
- $address = (int)$this->app->User->GetAdresse();
- $googleEventLink = $sync->getHtmlLink();
- $canEditGoogleEvent = $synchronizer->canAddressEditEvent($address, (int)$event);
- }
- }
- } catch (Throwable $e) {
- // @todo: error handling
- }
-
- $data[0]['googleEventLink'] = $googleEventLink;
- $data[0]['googleEventEdit'] = $canEditGoogleEvent;
-
- $data = $data[0];
-
-
- echo json_encode($data);
- $this->app->ExitXentral();
- }
- }
-
- function Install(){
- $this->app->erp->CheckTable("kalender_gruppen");
- $this->app->erp->CheckColumn("id", "int(11)", "kalender_gruppen", "NOT NULL AUTO_INCREMENT");
- $this->app->erp->CheckColumn("bezeichnung", "varchar(255)", "kalender_gruppen", "NOT NULL");
- $this->app->erp->CheckColumn("farbe", "varchar(255)", "kalender_gruppen", "NOT NULL");
- $this->app->erp->CheckColumn("ausblenden","tinyint(1)", "kalender_gruppen", "NOT NULL DEFAULT 0");
-
- $this->app->erp->CheckTable("kalender_gruppen_mitglieder");
- $this->app->erp->CheckColumn("id", "int(11)", "kalender_gruppen_mitglieder", "NOT NULL AUTO_INCREMENT");
- $this->app->erp->CheckColumn("kalendergruppe", "int(11)", "kalender_gruppen_mitglieder", "NOT NULL");
- $this->app->erp->CheckColumn("benutzergruppe", "int(11)", "kalender_gruppen_mitglieder", "NOT NULL");
- $this->app->erp->CheckColumn("adresse", "int(11)", "kalender_gruppen_mitglieder", "NOT NULL");
- $this->app->erp->CheckIndex('kalender_gruppen_mitglieder','kalendergruppe');
- $this->app->erp->CheckIndex('kalender_gruppen_mitglieder','adresse');
- }
-
- function KalenderGruppenList(){
- $this->app->erp->Headlines('Kalender Gruppen');
-
- $this->app->erp->MenuEintrag("index.php?module=kalender&action=gruppenlist","Übersicht");
-
- $speichern = $this->app->Secure->GetPOST("speichern");
- if($speichern != ""){
- $noredirect = $this->app->Secure->GetPOST("noRedirect");
- $bezeichnung = $this->app->Secure->GetPOST("bezeichnung");
- $farbe = $this->app->Secure->GetPOST("farbe");
- $ausblenden = $this->app->Secure->GetPOST("ausblenden");
-
- $error = "";
-
- if(trim($bezeichnung) == ""){
- $error .= "Bitte Bezeichnung ausfüllen";
- }
-
- if($error != ""){
- $this->app->Tpl->Set("MESSAGE", "");
- }else{
- $this->app->DB->Insert("INSERT INTO kalender_gruppen (bezeichnung, farbe, ausblenden) VALUES (\"$bezeichnung\", \"$farbe\", \"$ausblenden\")");
- }
- }
-
- $this->app->YUI->ColorPicker('farbe');
- $this->app->YUI->ColorPicker('editfarbe');
- $this->app->YUI->TableSearch('TAB1','kalender_gruppenlist', "show","","",basename(__FILE__), __CLASS__);
- $lid = $this->app->User->GetAdresse();
-
-
- $this->app->YUI->TableSearch('GRUPPEN','kalender_gruppen_mitglieder', "show","","",basename(__FILE__), __CLASS__);
- $this->app->Tpl->Add('GRUPPEN','');
-
-
- $this->app->Tpl->Parse("PAGE","kalender_gruppenlist.tpl");
- }
-
- function KalenderGruppenEdit(){
- if($this->app->Secure->GetGET('cmd')==='get'){
- $id = (int)$this->app->Secure->GetPOST('editid');
- $data = $this->app->DB->SelectRow("SELECT id, bezeichnung, farbe, ausblenden FROM kalender_gruppen WHERE id = \"$id\" LIMIT 1");
- echo json_encode($data);
- $this->app->ExitXentral();
- }
-
-
- $this->app->Tpl->Parse('PAGE', "kalender_gruppenlist.tpl");
- }
-
- function KalenderGruppenSave(){
- $editid = (int)$this->app->Secure->GetPOST('editid');
- $editbezeichnung = $this->app->Secure->GetPOST('editbezeichnung');
- $editfarbe = $this->app->Secure->GetPOST('editfarbe');
- $editausblenden = $this->app->Secure->GetPOST('editausblenden');
-
- $error = "";
- if(trim($editbezeichnung) == ""){
- $error .= "Bitte Bezeichnung ausfüllen\n";
- }
-
- if($error == ""){
- if($editid){
- $this->app->DB->Update("UPDATE kalender_gruppen SET bezeichnung = \"$editbezeichnung\", farbe = \"$editfarbe\", ausblenden = \"$editausblenden\" WHERE id = \"$editid\"");
- echo json_encode(array('status'=>1));
- $this->app->ExitXentral();
- }
- $this->app->DB->Insert("INSERT INTO kalender_gruppen (bezeichnung, farbe, ausblenden) VALUES ('$editbezeichnung', '$editfarbe', '$editausblenden')");
- echo json_encode(array('status'=>2,'id'=>$this->app->DB->GetInsertID(),'farbe' => $editfarbe, 'bezeichnung' => $editbezeichnung, 'ausblenden' => $editausblenden));
- $this->app->ExitXentral();
- }
- echo json_encode(array('status'=>0,'statusText'=>$error));
- $this->app->ExitXentral();
- }
-
- function KalenderGruppenDelete(){
- $id = (int) $this->app->Secure->GetPOST('editid');
- if($id > 0){
- $this->app->DB->Delete("DELETE FROM kalender_gruppen WHERE id = \"$id\"");
- $this->app->DB->Delete("DELETE FROM kalender_gruppen_mitglieder WHERE kalendergruppe = \"$id\"");
- }
- echo json_encode(array('status'=>1));
- $this->app->ExitXentral();
- }
-
- public function KalenderMail($event,$betreff='',$text='',$emailcc='')
- {
- $datum = '';
- $arraufgabe = $this->app->DB->SelectArr("SELECT *,DATE_FORMAT(von,'%d.%m.%Y') as datum,
- DATE_FORMAT(bis,'%d.%m.%Y') as datumbis,
- DATE_FORMAT(von,'%Y%m%d') as icaldatumvon,
- DATE_FORMAT(bis,'%Y%m%d') as icaldatumbis, DATE_FORMAT(von,'%H%i00') as icaluhrzeitvon, DATE_FORMAT(bis,'%H%i00') as icaluhrzeitbis,
- DATE_FORMAT(von,'%H:%i') as zeit,
- DATE_FORMAT(bis,'%H:%i') as zeitbis
- FROM kalender_event WHERE id='$event' LIMIT 1");
-
- $adresse = $arraufgabe[0]["adresse"];
- $adresseintern = $arraufgabe[0]["adresseintern"];
-
- //$this->LogFile("sende an adresse ".$adresse);
-
- $to = $this->app->DB->Select("SELECT email FROM adresse WHERE id='$adresse' AND geloescht!=1 LIMIT 1");
- $to_name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='$adresse' AND geloescht!=1 LIMIT 1");
-
- if($adresseintern >0)
- {
- $initiator_to = $this->app->DB->Select("SELECT email FROM adresse WHERE id='$adresseintern' AND geloescht!=1 LIMIT 1");
- $initiator_to_name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='$adresseintern' AND geloescht!=1 LIMIT 1");
- } else {
- $initiator_to = $this->app->User->GetEmail();
- $initiator_to_name = $this->app->User->GetName();
- }
-
- //$this->LogFile("Sende Aufgabe $aufgabe an Email ".$to." und Initiator ".$initiator_to);
-
- if($betreff=="")
- $betreff = "Einladung für Termin ".$arraufgabe[0]["bezeichnung"];
-
- if($text=="")
- {
- if($arraufgabe[0]["datumbis"]!="00.00.0000" && $arraufgabe[0]["datum"]!=$arraufgabe[0]["datumbis"])
- {
- $text = "Datum: ".$arraufgabe[0]["datum"]." bis ".$arraufgabe[0]["datumbis"];//Hallo hier die mail";
- }
- else {
- if($arraufgabe[0]["zeit"]!="00:00" && $arraufgabe[0]["zeitbis"]!="00:00")
- $text = "Datum: ".$arraufgabe[0]["datum"]." von ".$arraufgabe[0]["zeit"]." bis ".$arraufgabe[0]["zeitbis"];//Hallo hier die mail";
- else if($arraufgabe[0]["zeit"]!="00:00")
- $text = "Datum: ".$arraufgabe[0]["datum"]." um ".$arraufgabe[0]["zeit"];
- else
- $text = "Datum: ".$arraufgabe[0]["datum"];
- }
- } else {
- $text .= "\r\n";
- }
- $text .= "\r\n";
-
- $beschreibung = $arraufgabe[0]["bezeichnung"];
-
- $venue = $arraufgabe[0]["ort"];
- $start = $arraufgabe[0]["icaldatumvon"];
- $start_time = $arraufgabe[0]["icaluhrzeitvon"];
- $end = $arraufgabe[0]["icaldatumbis"];
- $end_time = $arraufgabe[0]["icaluhrzeitbis"];
-
- $status = 'TENTATIVE';
- $sequence = 0;
-
- $event_id = $event;
-
- $ical = "BEGIN:VCALENDAR\r\n";
- $ical .= "VERSION:2.0\r\n";
- $ical .= "PRODID:-//WaWision//Termin//DE\r\n";
- $ical .= "METHOD:REQUEST\r\n";
- $ical .= "BEGIN:VEVENT\r\n";
- //$ical .= "ORGANIZER;SENT-BY=\"MAILTO:$initiator_to\":MAILTO:onbehalfoforganizer@kaserver.com\r\n";
- $ical .= "ORGANIZER;SENT-BY=\"MAILTO:$initiator_to\"\r\n";
- $ical .= "ATTENDEE;CN=$to;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TRUE:mailto:$initiator_to\r\n";
- $ical .= "UID:".strtoupper(md5($event_id))."-wawision\r\n";
- $ical .= "SEQUENCE:".$sequence."\r\n";
- $ical .= "STATUS:".$status."\r\n";
- $ical .= "DTSTAMPTZID=Europe/Berlin:".date('Ymd').'T'.date('His')."\r\n";
- $ical .= "DTSTART:".$start."T".$start_time."\r\n";
- $ical .= "DTEND:".$end."T".$end_time."\r\n";
- $ical .= "LOCATION:".$venue."\r\n";
- $ical .= "SUMMARY:".$beschreibung."\r\n";
-// $ical .= "DESCRIPTION:".$beschreibung."\r\n";
- $ical .= "BEGIN:VALARM\r\n";
- $ical .= "TRIGGER:-PT15M\r\n";
- $ical .= "ACTION:DISPLAY\r\n";
- $ical .= "DESCRIPTION:Reminder\r\n";
- $ical .= "END:VALARM\r\n";
- $ical .= "END:VEVENT\r\n";
- $ical .= "END:VCALENDAR\r\n";
-
- $datei = $this->app->erp->GetTMP().'Einladung_'.$beschreibung.'_'.$datum.".ics";
- file_put_contents($datei,$ical);
- if($start!='00000000'){
- $dateien = array($datei);
- }
- else{
- $dateien = '';
- }
-
- $bcc = array();
-
- if($emailcc!='')
- {
- //$to="";
- //$to_name="";
-
- $parts = explode(',',$emailcc);
- $cparts = (!empty($parts)?count($parts):0);
- for($i=0;$i<$cparts;$i++)
- {
- $from = strstr($parts[$i], '<', true); // Ab PHP 5.3.0
- $email = strstr($parts[$i], '<'); // Ab PHP 5.3.0
- if($from !="" )
- {
- $email = str_replace(['<','>'],'',$email);
- } else {
- $email = $parts[$i];
- }
-
- if($i==0)
- {
- if($to==""){
- $to = $email;
- $to_name = $from;
- }
- } else {
- if($email!=$to)
- {
- if($from=="") $bcc[]=$email;
- else $bcc[]=$email;//$from." <".$email.">";
- }
- }
- }
- }
-
- $result = $this->app->erp->MailSend($this->app->erp->GetFirmaMail(),$this->app->erp->GetFirmaAbsender(),$to,$to_name,$betreff,$text,$dateien,"",false,$bcc);
-
- unlink($datei);
- return $result;
- }
-
- /**
- * @return void
- */
- protected function trySynchronizeGoogleChanges()
- {
- if (!$this->isGoogleSynchronizationActive()) {
- return;
- }
- /** @var GoogleCalendarSynchronizer $sync */
- $sync = $this->app->Container->get('GoogleCalendarSynchronizer');
- $userId = (int)$this->app->User->GetID();
- try {
- /** @var GoogleCalendarClientFactory $clientFactory */
- $clientFactory = $this->app->Container->get('GoogleCalendarClientFactory');
- $client = $clientFactory->createClient($userId);
- $sync->importChangedEvents($client);
- } catch (Throwable $e) {
- return;
- }
- }
-
- /**
- * @return bool
- */
- protected function isGoogleSynchronizationActive()
- {
- if (!$this->app->Container->has('GoogleCredentialsService')) {
- return false;
- }
- /** @var GoogleCredentialsService $credentialService */
- $credentialService = $this->app->Container->get('GoogleCredentialsService');
-
- return $this->app->Container->has('GoogleCalendarSynchronizer') && $credentialService->existCredentials();
- }
-}
+';
+ $menu .= '';
+ $menu .= '';
+ $menu .= '';
+ $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
+ $menu .= ' ';
+ $menu .= '';
+ $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">";
+ $menu .= '';
+ $menu .= " | ";
+ $menu .= "
";
+ $menu .= "";
+
+ $where = " kg.id > 0 ";
+
+ $sql = "SELECT SQL_CALC_FOUND_ROWS kg.id, kg.bezeichnung, CONCAT(' '), if(kg.ausblenden,'ja','nein'), kg.id FROM kalender_gruppen kg";
+
+ $count = "SELECT count(kg.id) FROM kalender_gruppen kg WHERE $where";
+ break;
+
+ case 'kalender_gruppen_mitglieder':
+
+ //$doctype = str_replace('belegeinauslagern_bewegungen_','',$name);
+// $id = $app->Secure->GetPost('editid');
+ $lid = $app->YUI->TableSearchFilter($name, 1, 'filterlid');
+// $lid = $app->YUI->TableSearchFilter($name, 1, 'filterlid');
+ $allowed['kalender'] = array('gruppenlist');
+ $heading = array('','Mitarbeiter-Nr.','Name','');
+ $width = array('1%','10%','49%','1%');
+ $findcols = array('a.id','a.mitarbeiternummer','a.name','a.id');
+ $searchsql = array('a.id','a.mitarbeiternummer','a.name');
+ $defaultorder = 2;
+ $defaultorderdesc = 0;
+ $disabled = "";
+ //if(!$lid)$disabled = "disabled ";
+ $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,CONCAT('') as auswahl,a.mitarbeiternummer,a.name,a.id FROM adresse a
+ INNER JOIN (SELECT adresse FROM adresse_rolle WHERE subjekt='Mitarbeiter' AND (ifnull(bis,'0000-00-00') = '0000-00-00' OR bis >= CURDATE()) GROUP BY adresse) ar on ar.adresse=a.id
+ LEFT JOIN kalender_gruppen_mitglieder kgm ON kgm.adresse = a.id AND kgm.kalendergruppe = '$lid'
+ ";
+
+ $where = " a.mitarbeiternummer!='' AND a.geloescht!=1";
+
+ $maxrows = 50;
+ $disablebuttons = true;
+ break;
+
+ }
+
+ $erg = [];
+
+ foreach($erlaubtevars as $k => $v)
+ {
+ if(isset($$v)) {
+ $erg[$v] = $$v;
+ }
+ }
+ return $erg;
+ }
+
+ /**
+ * Kalender constructor.
+ *
+ * @param Application $app
+ * @param bool $intern
+ */
+ public function __construct($app,$intern = false) {
+ $this->app=$app;
+ if($intern) {
+ return;
+ }
+
+ $this->app->ActionHandlerInit($this);
+
+ $this->app->ActionHandler("list","KalenderList");
+ $this->app->ActionHandler("data","KalenderData");
+ $this->app->ActionHandler("ics","KalenderICS");
+ $this->app->ActionHandler("eventdata","KalenderEventData");
+ $this->app->ActionHandler("update","KalenderUpdate");
+ $this->app->ActionHandler("delete","KalenderDelete");
+ $this->app->ActionHandler("taskstatus","KalenderTaskStatus");
+ $this->app->ActionHandler("gruppenlist", "KalenderGruppenList");
+ $this->app->ActionHandler("gruppenedit", "KalenderGruppenEdit");
+ $this->app->ActionHandler("gruppensave", "KalenderGruppenSave");
+ $this->app->ActionHandler("gruppendelete", "KalenderGruppenDelete");
+ $this->app->ActionHandler("einladung", "KalenderEinladung");
+ $this->app->ActionHandler("gruppenzuordnung", "KalenderGruppenZuordnung");
+
+ $this->publicColor = "#3fa848";
+ $this->taskColor = "#ae161e";
+ $this->urlaubColor = ($this->app->erp->GetKonfiguration("mitarbeiterzeiterfassung_calendarcolor")?$this->app->erp->GetKonfiguration("mitarbeiterzeiterfassung_calendarcolor"):"#00ccff");
+
+ $this->app->ActionHandlerListen($app);
+ }
+
+
+ function KalenderGruppenZuordnung(){
+ $adresse = $this->app->Secure->GetPOST('lid');
+ $kalendergruppe = $this->app->Secure->GetPOST('kalendergruppe');
+ $benutzergruppe = '';
+ //$benutzergruppe = $this->app->Secure->GetPOST('benutzergruppe');
+ $wert = $this->app->Secure->GetPOST('wert');
+
+
+ if($wert == '0'){
+ $delete = $this->app->DB->Delete("DELETE FROM kalender_gruppen_mitglieder WHERE adresse = '$adresse' AND benutzergruppe = '$benutzergruppe' AND kalendergruppe = '$kalendergruppe'");
+ }elseif($wert == '1'){
+ $insert = $this->app->DB->Insert("INSERT INTO kalender_gruppen_mitglieder(adresse,kalendergruppe,benutzergruppe) VALUES('$adresse','$kalendergruppe','$benutzergruppe')");
+ }
+ $this->app->ExitXentral();
+ }
+
+ /**
+ * @param string $parsetarget
+ */
+ public function showKalenderList($parsetarget)
+ {
+ $select = '';
+ $this->app->erp->Headlines('Kalender');
+ $this->app->Tpl->Set('TABTEXT',"Kalender");
+
+ $submit = $this->app->Secure->GetPOST("submitForm");
+ $mode = $this->app->Secure->GetPOST("mode");
+ $eventid = $this->app->Secure->GetPOST("eventid");
+
+ $hookEvent = 0;
+ $hookAction = '';
+
+ $titel = $this->app->Secure->GetPOST("titel");
+ $datum = $this->app->Secure->GetPOST("datum");
+ $datum_bis = $this->app->Secure->GetPOST("datum_bis");
+ $allday = $this->app->Secure->GetPOST("allday");
+ $public = $this->app->Secure->GetPOST("public");
+ $erinnerung = $this->app->Secure->GetPOST("erinnerung");
+ $von = $this->app->Secure->GetPOST("von");
+ $bis = $this->app->Secure->GetPOST("bis");
+ $beschreibung = $this->app->Secure->GetPOST("beschreibung");
+ $ort = $this->app->Secure->GetPOST("ort");
+ $adresse = $this->app->Secure->GetPOST("adresse");
+ $ansprechpartner = $this->app->Secure->GetPOST("ansprechpartner");
+ $adresseintern = $this->app->Secure->GetPOST("adresseintern");
+
+ $projekt = $this->app->Secure->GetPOST("projekt");
+
+ $personen = $this->app->Secure->GetPOST("personen");
+ $color = $this->app->Secure->GetPOST("color");
+ $gruppenkalender = $this->app->Secure->GetPOST("gruppenkalender");
+
+ $ajax = $this->app->Secure->GetGET("ajax");
+ $action = $this->app->Secure->GetGET("action");
+ $module = $this->app->Secure->GetGET("module");
+ $noRedirect = $this->app->Secure->GetPOST("noRedirect");
+
+ if($module==="welcome"&& ($action==="start" || $action === "list" || $action == ""))
+ {
+ $this->app->Tpl->Set("STARTSMALLKALENDER","");
+ $this->app->Tpl->Set("AUTOSCROLLTO",0);
+ } else {
+ $this->app->Tpl->Set("AUTOSCROLLTO",1);
+ }
+
+ $user = $this->app->User->GetID();
+ $eigene_kalendergruppen = $this->app->DB->SelectArr(
+ "SELECT kg.* FROM kalender_gruppen kg LEFT JOIN kalender_gruppen_mitglieder kgm ON kg.id = kgm.kalendergruppe
+ LEFT JOIN user u ON u.adresse = kgm.adresse WHERE ausblenden != 1 AND u.id = '$user' ORDER BY bezeichnung"
+ );
+
+ if($submit!="") {
+ $von_datum = $this->app->String->Convert("$datum $von", "%1.%2.%3 %4:%5", "%3-%2-%1 %4:%5");
+ $bis_datum = $this->app->String->Convert("$datum_bis $bis", "%1.%2.%3 %4:%5", "%3-%2-%1 %4:%5");
+
+ if($allday=='1') {
+ $von_datum = $this->app->String->Convert("$datum 00:00", "%1.%2.%3 %4:%5", "%3-%2-%1 %4:%5");
+ $bis_datum = $this->app->String->Convert("$datum_bis 00:00", "%1.%2.%3 %4:%5", "%3-%2-%1 %4:%5");
+ //$bis_datum = $datum_bis;
+ }
+
+ if($bis_datum < $von_datum){ $bis_datum = $von_datum; }
+
+ $adresse = trim($adresse);
+ $rest = explode(" ",$adresse);
+ $rest = $rest[0];
+ $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE id='$rest' AND geloescht=0 LIMIT 1");
+
+ $ansprechpartner = trim($ansprechpartner);
+ $ansprechpartner = explode(" ", $ansprechpartner);
+ $ansprechpartner = $ansprechpartner[0];
+ $ansprechpartnerId = $this->app->DB->Select("SELECT id FROM ansprechpartner WHERE id = '$ansprechpartner' LIMIT 1");
+
+ $adresseintern = trim($adresseintern);
+ $rest = explode(" ",$adresseintern);
+ $rest = $rest[0];
+ $adresseintern = $this->app->DB->Select("SELECT id FROM adresse WHERE id='$rest' AND geloescht=0 LIMIT 1");
+
+
+ $projekt = trim($projekt);
+ $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' AND abkuerzung!='' LIMIT 1");
+
+ if($mode==="new") {
+
+ if($allday){
+ $tmpbis = "DATE_ADD('$bis_datum', INTERVAL 1439 MINUTE)";
+ } else {
+ $tmpbis = "'$bis_datum'";
+ }
+
+ // wenn gruppen kalender farbe von erster gruppe verwenden
+ $this->app->DB->Insert(
+ "INSERT INTO kalender_event (
+ ort, bezeichnung, beschreibung, von, bis, allDay, color, public, adresse, ansprechpartner_id,
+ adresseintern, angelegtvon, erinnerung, projekt)
+ VALUES ('$ort', '$titel', '$beschreibung', '$von_datum', $tmpbis, '$allday', '$color', '$public', '$adresse',
+ '$ansprechpartnerId', '$adresseintern', '".$this->app->User->GetAdresse()."', '$erinnerung', '$projekt')"
+ );
+ $event = $this->app->DB->GetInsertID();
+ $calendarActionType = 'added';
+ //$this->app->erp->RunHook('kalender_event_hook', 2, $event, $calendarActionType);
+ $hookEvent = $event;
+ $hookAction = $calendarActionType;
+ }
+
+ if($mode==="edit" && is_numeric($eventid)) {
+ $this->app->DB->Update(
+ "UPDATE kalender_event SET
+ ort = '$ort', bezeichnung = '$titel', beschreibung = '$beschreibung', von = '$von_datum',
+ bis='$bis_datum', allDay = '$allday', color = '$color', public = '$public', adresse = '$adresse',
+ ansprechpartner_id = '$ansprechpartnerId', adresseintern = '$adresseintern', erinnerung = '$erinnerung', projekt = '$projekt'
+ WHERE id = '$eventid' LIMIT 1"
+ );
+
+ $calendarActionType = 'modified';
+ //$this->app->erp->RunHook('kalender_event_hook', 2, $eventid, $calendarActionType);
+ $hookEvent = $eventid;
+ $hookAction = $calendarActionType;
+ // Personenzuordnung entfernen (alle)
+ $this->app->DB->Delete("DELETE FROM kalender_user WHERE event = '$eventid' AND userid > 0");
+ // Gruppenzuordnung entfernen (nur Gruppen in denen der User ist)
+
+ if (!empty($eigene_kalendergruppen)) {
+ $eigene_kalendergruppen_ids = array_column($eigene_kalendergruppen, 'id');
+ $this->app->DB->Delete("DELETE FROM kalender_user WHERE event = '$eventid' AND gruppe > 0 AND gruppe IN (".implode(',', $eigene_kalendergruppen_ids).")");
+ }
+ $event = $eventid;
+ }
+
+ if($mode==="delete" && is_numeric($eventid)) {
+ $calendarActionType = 'deleted';
+ //$this->app->erp->RunHook('kalender_event_hook', 2, $eventid, $calendarActionType);
+ $hookEvent = $eventid;
+ $hookAction = $calendarActionType;
+
+ $this->app->DB->Delete("DELETE FROM kalender_event WHERE id='$eventid' LIMIT 1");
+ $this->app->DB->Delete("DELETE FROM kalender_user WHERE event='$eventid'");
+ }
+
+ if($mode==="copy" && is_numeric($eventid)) {
+ $cData = $this->app->DB->SelectArr("SELECT * FROM kalender_event WHERE id = '$eventid' LIMIT 1");
+ $this->app->DB->Insert(
+ "INSERT INTO kalender_event (
+ bezeichnung, beschreibung, von, bis,
+ allDay, color, public, adresse, ansprechpartner_id,
+ adresseintern, erinnerung, projekt)
+ VALUES ('{$cData[0]['bezeichnung']}', '{$cData[0]['beschreibung']}', '{$cData[0]['von']}', '{$cData[0]['bis']}',
+ '{$cData[0]['allDay']}', '{$cData[0]['color']}', '{$cData[0]['public']}', '{$cData[0]['adresse']}',
+ '{$cData[0]['ansprechpartner_id']}', '{$cData[0]['adresseintern']}', '{$cData[0]['erinnerung']}', '{$cData[0]['projekt']}')"
+ );
+ $event = $this->app->DB->GetInsertID();
+ $calendarActionType = 'added';
+ //$this->app->erp->RunHook('kalender_event_hook', 2, $event, $calendarActionType);
+ $hookEvent = $event;
+ $hookAction = $calendarActionType;
+ }
+
+ if(!is_array($personen)) {
+ if($personen!="") $personen = array($personen);
+ else $personen = null;
+ }
+
+ // Ersteller eintragen, wenn keine Personen ausgewählt
+ if(!$personen || empty($personen)){
+ $personen[]=$this->app->User->GetID();
+ }
+
+ // Schreibe Personen
+ if(is_numeric($event) && is_array($personen) && (!empty($personen)?count($personen):0) && $mode!=='delete') {
+ $cpersonen = (!empty($personen)?count($personen):0);
+ for($p=0;$p<$cpersonen;$p++) {
+ $this->app->DB->Insert("INSERT INTO kalender_user (event, userid) VALUES ('$event', '{$personen[$p]}')");
+ }
+ }
+
+ if ((int)$hookEvent > 0 && $hookAction !== '') {
+ $this->app->erp->RunHook('kalender_event_hook', 2, $hookEvent, $hookAction);
+ }
+
+
+ // Schreibe Gruppenkalender
+ if(is_numeric($event) && is_array($gruppenkalender) && (!empty($gruppenkalender)?count($gruppenkalender):0) && $mode!=='delete') {
+ $cgruppenkalender = (!empty($gruppenkalender)?count($gruppenkalender):0);
+ for($p=0;$p<$cgruppenkalender;$p++){
+ // stelle farbe von kalender eintrag um wenn gruppe (also erste gruppe in auswahl)
+ if($p==0){
+ $color = $this->app->DB->Select("SELECT farbe FROM kalender_gruppen WHERE id='".$gruppenkalender[$p]."' LIMIT 1");
+ if($color!=""){
+ $this->app->DB->Update("UPDATE kalender_event SET color='$color' WHERE id='$event' LIMIT 1");
+
+ $calendarActionType = 'modified';
+ $this->app->erp->RunHook('kalender_event_hook', 2, $event, $calendarActionType);
+ }
+ }
+ $this->app->DB->Insert("INSERT INTO kalender_user (event, gruppe) VALUES ('$event', '{$gruppenkalender[$p]}')");
+ }
+ }
+
+ // Aktualisierten bzw. angelegten Event zurückliefern
+ if (!empty($ajax) && in_array($mode, ['new', 'edit', 'copy'])) {
+ $eventData = $this->app->DB->SelectArr(
+ 'SELECT e.id, e.bezeichnung AS title, e.beschreibung, e.von AS `start`, e.bis AS `end`, e.allDay, e.color,
+ e.public, e.erinnerung, e.ort, e.adresse, e.ansprechpartner_id, e.adresseintern, e.projekt
+ FROM kalender_event AS e WHERE e.id = ' . (int)$event
+ );
+ header('Content-Type: application/json; charset=utf8');
+ echo json_encode(current($eventData));
+ $this->app->ExitXentral();
+ }
+
+ // Gelöschte Event-ID zurückliefern
+ if (!empty($ajax) && $mode === 'delete') {
+ header('Content-Type: application/json; charset=utf8');
+ echo json_encode(['deletedEventId' => $eventid]);
+ $this->app->ExitXentral();
+ }
+
+ $id = $this->app->Secure->GetGET('id');
+ $module = $this->app->Secure->GetGET('module');
+ $action = 'list';
+ if($module != '' && $noRedirect != '1') {
+ $this->app->Location->execute('index.php?module='.$module.'&action='.$action.($id?'&id='.$id:''));
+ }
+ }
+
+ // Personen Auswahl
+ // achtung hier keine select options machen
+ $users = $this->app->DB->SelectArr("SELECT u.id, a.name as description FROM user u LEFT JOIN adresse a ON a.id=u.adresse WHERE u.activ='1' AND u.kalender_ausblenden!=1 ORDER BY u.username");
+ $cusers = !empty($users)?count($users):0;
+ $user_out = '';
+ for($i=0; $i<$cusers;$i++){
+ $user_out .= "";
+ }
+ $this->app->Tpl->Set('PERSONEN', $user_out);
+
+
+ // Gruppenkalender Auswahl
+ // achtung hier keine select options machen
+ $user = $this->app->User->GetID();
+ $gruppenkalender = $eigene_kalendergruppen;
+ $cgruppenkalender = !empty($gruppenkalender)?count($gruppenkalender):0;
+ for($i=0; $i<$cgruppenkalender;$i++){
+ $this->app->Tpl->Add("GRUPPENKALENDER","");
+ }
+
+ $this->app->Tpl->Set('LINKADRESSE'," 0) window.location.href='index.php?module=adresse&action=brief&id=' + felder[0];\" style=\"font-weight:normal;text-decoration:underline; position:absolute;margin-top:5px;margin-left:5px;\">");
+ if($this->app->erp->RechteVorhanden("adresse","ansprechpartner")){
+ $this->app->Tpl->Set('LINKANSPRECHPARTNER', " 0) window.location.href='index.php?module=adresse&action=ansprechpartner&id=' + felder[0];\" style=\"font-weight:normal;text-decoration:underline;position:absolute;margin-top:5px;margin-left:5px;\">");
+ }
+
+ $cgruppenkalender = !empty($gruppenkalender)?count($gruppenkalender):0;
+ for($gk=0;$gk<$cgruppenkalender;$gk++)
+ {
+ if($this->app->User->GetParameter('kalender_gruppe_'.$gruppenkalender[$gk]['id'])=="1") $checked="checked"; else $checked="";
+ $this->app->Tpl->Add("GRUPPENKALENDERAUSWAHL",'
+
+ ');
+ $this->app->YUI->AutoSaveUserParameter('kalender_gruppe_'.$gruppenkalender[$gk]['id'],'kalender_gruppe_'.$gruppenkalender[$gk]['id'],"$('#calendar').fullCalendar('refetchEvents');");
+ }
+
+ $this->app->YUI->AutoSaveUserParameter("aufgaben","adresse_kalender_aufgaben","$('#calendar').fullCalendar('refetchEvents');");
+
+ if($this->app->User->GetParameter("adresse_kalender_aufgaben")=="1")
+ {
+ $this->app->Tpl->Set("AUFGABENCHECKED","checked");
+ }
+
+ $this->app->YUI->AutoSaveUserParameter("termine","adresse_kalender_termine","$('#calendar').fullCalendar('refetchEvents');");
+
+ if($this->app->User->GetParameter("adresse_kalender_termine")=="1")
+ {
+ $this->app->Tpl->Set("TERMINECHECKED","checked");
+ }
+
+ $this->app->YUI->AutoSaveUserParameter("projekte","adresse_kalender_projekte","$('#calendar').fullCalendar('refetchEvents');");
+
+ if($this->app->User->GetParameter("adresse_kalender_projekte")=="1")
+ {
+ $this->app->Tpl->Set("PROJEKTECHECKED","checked");
+ }
+
+ $this->app->YUI->AutoSaveUserParameter("urlaub","adresse_kalender_urlaub","$('#calendar').fullCalendar('refetchEvents');");
+
+ if($this->app->User->GetParameter("adresse_kalender_urlaub")=="1")
+ {
+ $this->app->Tpl->Set("URLAUBCHECKED","checked");
+ }
+
+ if($this->app->erp->ModulVorhanden("serviceauftrag")){
+ $this->app->YUI->AutoSaveUserParameter("serviceauftrag","adresse_kalender_serviceauftrag","$('#calendar').fullCalendar('refetchEvents');");
+ if($this->app->User->GetParameter("adresse_kalender_serviceauftrag")=="1")
+ {
+ $this->app->Tpl->Set("SERVICEAUFTRAGCHECKED","checked");
+ }
+ $this->app->Tpl->Set("SERVICEAUFTRAGKALENDER",'
+ ');
+ }
+
+ if($noRedirect == '1') {
+ $return['eventid'] = $event;
+ echo json_encode($return);
+ $this->app->ExitXentral();
+ }
+ $defaultCalendarColor = $this->app->User->GetParameter("welcome_defaultcolor_fuer_kalender");
+ if($defaultCalendarColor=="")
+ {
+ $defaultCalendarColor = $this->app->DB->Select("SELECT defaultcolor FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1");
+ }
+ if($defaultCalendarColor=="")
+ {
+ $defaultCalendarColor = '#0B8092';
+ }
+
+ $this->app->Tpl->Set("DEFAULTKALENDERCOLOR",$defaultCalendarColor);
+ $this->app->YUI->ColorPicker("color");
+ $this->app->YUI->DatePicker("datum");
+ $this->app->YUI->DatePicker("datum_bis");
+ $this->app->YUI->TimePicker("von");
+ $this->app->YUI->TimePicker("bis");
+ $this->app->YUI->AutoComplete("adresse", "adresse", 0,"","","","","TerminForm");
+
+ $this->app->YUI->AutoComplete('adresseintern','mitarbeiterid');
+
+// $this->app->YUI->AutoComplete("adresseintern", "adresse", 0,"","","","","TerminForm");
+ $this->app->YUI->AutoComplete("projekt", "projektname", 1,"","","","","TerminForm");
+ $this->app->YUI->CkEditor("einladungtext", "internal", array("height" => "250"));
+
+ $this->app->YUI->AutoCompleteAdd("einladungcc", "emailname");
+ $this->app->Tpl->Parse($parsetarget, "kalender.tpl");
+ }
+
+ public function KalenderList()
+ {
+ $this->trySynchronizeGoogleChanges();
+
+ $this->app->Tpl->Set('CALENDAR_DAYNAMES','["{|Sonntag|}", "{|Montag|}", "{|Dienstag|}", "{|Mittwoch|}",
+ "{|Donnerstag|}", "{|Freitag|}", "{|Samstag|}"]');
+ $this->app->Tpl->Set('CALENDAR_MONTHNAMES','["{|Januar|}", "{|Februar|}", "{|März|}", "{|April|}", "{|Mai|}",
+ "{|Juni|}", "{|Juli|}", "{|August|}", "{|September|}", "{|Oktober|}", "{|November|}", "{|Dezember|}"]');
+ $this->app->Tpl->Set('CALENDAR_TODAY','{|Heute|}');
+ $this->app->Tpl->Set('CALENDAR_MONTH','{|Monat|}');
+ $this->app->Tpl->Set('CALENDAR_WEEK','{|Woche|}');
+ $this->app->Tpl->Set('CALENDAR_DAY','{|Tag|}');
+ $this->showKalenderList('TAB1');
+ $this->app->YUI->DatePicker("datum");
+ $this->app->YUI->DatePicker("datum_bis");
+
+ $this->app->YUI->CkEditor("e_notizen","belege",array("width"=>"625"));
+ $this->app->YUI->CkEditor("e_beschreibung","belege",array("width"=>"420"));
+ $this->app->YUI->DatePicker("e_datum");
+ $this->app->YUI->TimePicker("e_zeit");
+ $this->app->Tpl->Parse('TAB1','aufgaben_popup.tpl');
+
+ // $this->app->Tpl->Parse(TAB1,"kalender.tpl");
+ $this->app->Tpl->Set('TABTEXT',"");
+ $this->app->Tpl->Parse('PAGE',"tabview.tpl");
+ $this->app->erp->StartseiteMenu();
+ }
+
+ public function KalenderICS()
+ {
+ $findlogin = $this->app->DB->Select("SELECT id FROM user WHERE username='".$this->app->DB->real_escape_string($_SERVER['PHP_AUTH_USER'])."' AND username!=''
+ AND kalender_aktiv='1' AND kalender_passwort='".$this->app->DB->real_escape_string($_SERVER['PHP_AUTH_PW'])."' AND kalender_passwort!='' AND `activ`='1' LIMIT 1");
+
+ $this->app->erp->Protokoll("Benutzer: ".$this->app->DB->real_escape_string($_SERVER['PHP_AUTH_USER']));
+
+ //$findlogin='1000';
+ //if ($_SERVER['PHP_AUTH_USER']=="sauterbe" && $_SERVER['PHP_AUTH_PW']=="ZakledhLs")
+ if($findlogin > 0)
+ {
+ $event = new ICS("wawision");
+
+ $data = $this->app->DB->SelectArr("SELECT DISTINCT ke.id, ort,beschreibung, bezeichnung AS title, DATE_FORMAT(von,'%Y-%m-%d %H:%i') AS start,
+ DATE_FORMAT(bis,'%Y-%m-%d %H:%i') AS end, allDay, color, public,erinnerung
+ FROM kalender_user AS ku
+ LEFT JOIN kalender_event AS ke ON ke.id=ku.event
+ WHERE (ku.userid='$findlogin' OR ke.public='1') AND ke.von!='0000-00-00 00:00:00' AND ke.bis!='0000-00-00 00:00:00' ORDER by von");
+ $cdata = !empty($data)?count($data):0;
+ for($i=0;$i<$cdata;$i++)
+ {
+ // $data[$i]['color'] = (($data[$i]['public']=='1')?$this->publicColor:$data[$i]['color']);
+ $data[$i]['allDay'] = (($data[$i]['allDay']=='1')?true:false);
+ $data[$i]['public'] = (($data[$i]['public']=='1')?true:false);
+ $data[$i]['erinnerung'] = (($data[$i]['erinnerung']=='1')?true:false);
+ $data[$i]['title'] = $this->app->erp->ReadyForPDF($data[$i]['title']);
+ $data[$i]['ort'] = $this->app->erp->ReadyForPDF($data[$i]['ort']);
+ $data[$i]['beschreibung'] = str_ireplace("\x0D", "", $data[$i]['beschreibung']);
+ $data[$i]['beschreibung'] = str_replace("\n", "\\n",$data[$i]['beschreibung']);
+ $data[$i]['beschreibung'] = str_replace("\r\n", "\\n",$data[$i]['beschreibung']);
+ $data[$i]['beschreibung'] = $this->app->erp->ReadyForPDF($data[$i]['beschreibung']);
+
+
+ $event->AddEvent($data[$i]['id'],$data[$i]['start'],$data[$i]['end'],$data[$i]['title'],$data[$i]['beschreibung'],$data[$i]['ort']);
+ }
+ //$event->AddEvent(1,"2014-05-18 11:00","2014-05-18 21:00","Test 444 Event","This is an event made by Benedikt","Augsburg");
+ //$event->AddEvent(2,"2014-05-18 09:00","2014-05-18 09:30","Test 3 Event","This is an event made by Benedikt","Augsburg");
+ $event->show();
+ $this->app->ExitXentral();
+ }
+
+ header('WWW-Authenticate: Basic realm="WaWision Kalender"');
+ header('HTTP/1.0 401 Unauthorized');
+ $this->app->ExitXentral();
+ }
+
+ function KalenderTaskStatus()
+ {
+ $user = $this->app->User->GetID();
+ $data = $this->app->DB->SelectArr("SELECT kalender_aufgaben , a.id FROM adresse AS a
+ LEFT JOIN user as u ON u.adresse=a.id
+ WHERE u.id='$user' LIMIT 1");
+ $new_status = '';
+ if($data[0]['kalender_aufgaben']=='1'){
+ $new_status = '0';
+ }
+ else{
+ $new_status = '1';
+ }
+ $this->app->DB->Update("UPDATE adresse SET kalender_aufgaben='$new_status' WHERE id='{$data[0]['id']}' LIMIT 1");
+ $this->app->ExitXentral();
+ }
+
+
+
+
+ function KalenderData()
+ {
+ $user = $this->app->User->GetID();
+ $useradresse = $this->app->User->GetAdresse();
+ $start = date("Y-m-d H:i:s", $this->app->Secure->GetGET('start'));
+ $end = date("Y-m-d H:i:s", $this->app->Secure->GetGET('end'));
+
+ $start_datum = date("Y-m-d", $this->app->Secure->GetGET('start'));
+ $end_datum = date("Y-m-d", $this->app->Secure->GetGET('end'));
+
+ $gruppenkalender = $this->app->DB->SelectArr("SELECT * FROM kalender_gruppen");
+ $hideserviceauftrag = false;
+ $subwhere = "";
+ $cgruppenkalender = !empty($gruppenkalender)?count($gruppenkalender):0;
+ for($i=0;$i<$cgruppenkalender;$i++)
+ {
+ if($this->app->User->GetParameter("kalender_gruppe_".$gruppenkalender[$i]['id'])=="1") {
+ if($subwhere!="") $subwhere .= " OR ";
+ $subwhere .= " (ku.gruppe='".$gruppenkalender[$i]['id']."' AND kg.id IN(SELECT kgm.kalendergruppe FROM kalender_gruppen_mitglieder kgm LEFT JOIN user u ON u.adresse = kgm.adresse WHERE u.id='$user')) ";
+ }
+ }
+ if($subwhere=="") {
+ $subwhere = " AND (ku.userid='$user' OR ke.public=1 OR (ku.gruppe > 0 AND kg.id IN (SELECT kgm.kalendergruppe FROM kalender_gruppen_mitglieder kgm LEFT JOIN user u ON u.adresse = kgm.adresse WHERE u.id='$user')))";
+ } else {
+ //$hideserviceauftrag = true; 2018-10-05 BS entfernt
+ $subwhere = " AND (".$subwhere.") ";
+ }
+
+
+ $nurmeine = $this->app->User->GetParameter("adresse_kalender_termine");
+
+ if($nurmeine > 0)
+ {
+ $data = $this->app->DB->SelectArr("SELECT DISTINCT ke.id, 'kalender_event' AS typ, ort, beschreibung, ke.bezeichnung AS title, von AS start, bis AS end, allDay, color, public,erinnerung,adresse,ansprechpartner_id,adresseintern,projekt
+ FROM kalender_event AS ke
+ LEFT JOIN kalender_user AS ku ON ke.id=ku.event
+ LEFT JOIN kalender_gruppen AS kg ON kg.id = ku.gruppe
+ WHERE (ku.userid='$user' OR (ku.gruppe > 0 AND kg.id IN (SELECT kgm.kalendergruppe FROM kalender_gruppen_mitglieder kgm LEFT JOIN user u ON u.adresse = kgm.adresse WHERE u.id='$user'))) AND (ke.von < '$end' AND (ke.bis >= '$start' OR ke.bis='0000-00-00 00:00:00') ) GROUP by ke.id ORDER by start");
+ } else {
+
+ $data = $this->app->DB->SelectArr("SELECT DISTINCT ke.id, 'kalender_event' AS typ, ort, beschreibung, ke.bezeichnung AS title, von AS start, bis AS end, allDay, color, public,erinnerung,adresse,ansprechpartner_id,adresseintern,projekt,kg.farbe
+ FROM kalender_event AS ke
+ LEFT JOIN kalender_user ku ON ke.id=ku.event
+ LEFT JOIN kalender_gruppen kg ON kg.id=ku.gruppe
+ WHERE (ke.von < '$end' AND (ke.bis >= '$start' OR (ke.bis='0000-00-00 00:00:00' AND ke.von!='0000-00-00 00:00:00') AND NOT (ke.von < '$start' AND ke.bis='0000-00-00 00:00:00')) ) $subwhere GROUP by ke.id ORDER by start");
+ }
+ $cdata = !empty($data)?count($data):0;
+ for($i=0;$i<$cdata;$i++)
+ {
+ $data[$i]['allDay'] = (($data[$i]['allDay']=='1')?true:false);
+ $data[$i]['public'] = (($data[$i]['public']=='1')?true:false);
+ $data[$i]['erinnerung'] = (($data[$i]['erinnerung']=='1')?true:false);
+ $data[$i]['title'] = $this->app->erp->ReadyForPDF($data[$i]['title']);
+ $data[$i]['ort'] = $this->app->erp->ReadyForPDF($data[$i]['ort']);
+ $data[$i]['adresse'] = $this->app->erp->ReadyForPDF($data[$i]['adresse']);
+ $data[$i]['ansprechpartner'] = $this->app->erp->ReadyForPDF($data[$i]['ansprechpartner_id']);
+ $data[$i]['adresseintern'] = $this->app->erp->ReadyForPDF($data[$i]['adresseintern']);
+ $data[$i]['projekt'] = $this->app->erp->ReadyForPDF($data[$i]['adresseintern']);
+ $data[$i]['beschreibung'] = $this->app->erp->ReadyForPDF($data[$i]['projekt']);
+ if($data[$i]['farbe']!="")
+ $data[$i]['color'] = $data[$i]['farbe'];
+ }
+
+ $aufgaben_visible = $this->app->DB->Select("SELECT kalender_aufgaben FROM adresse AS a
+ LEFT JOIN user as u ON u.adresse=a.id
+ WHERE u.id='$user' LIMIT 1");
+
+ // Mindesthaltbarkeitsdatum einblenden
+ if($this->app->erp->RechteVorhanden("mhdwarning","list"))
+ {
+ $sql = "SELECT a.id as id,a.name_de, a.nummer, SUM(lm.menge) as menge, lm.mhddatum
+ FROM lager_mindesthaltbarkeitsdatum lm
+ LEFT JOIN artikel a ON a.id=lm.artikel LEFT JOIN lager_platz l ON l.id=lm.lager_platz WHERE DATE_FORMAT(lm.datum,'%Y-%m') <= DATE_FORMAT('$end_datum','%Y-%m') OR DATE_FORMAT(lm.datum,'%Y-%m') >= DATE_FORMAT('$start_datum','%Y-%m') GROUP By lm.mhddatum, a.id";
+
+ $tmpartikel = $this->app->DB->SelectArr($sql);
+ $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
+ for($ij=0;$ij<$ctmpartikel;$ij++)
+ {
+ $data[] = array('id' => -3,
+ 'title'=>round($tmpartikel[$ij]['menge'],0)." x ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name_de']),
+ 'start'=> $tmpartikel[$ij]['mhddatum'],
+ 'end'=> $tmpartikel[$ij]['mhddatum'],
+ 'allDay'=>true,
+ 'color'=>'#FA5858',
+ 'public'=>'1',
+ 'task'=>$tmpartikel[$ij]['id']);
+ }
+ }
+
+
+ //Geburtstage einblenden
+
+
+ $tmp = explode('-',$start);
+ $startyear = $tmp[0];
+
+ $tmp = explode('-',$end);
+ $endyear = $tmp[0];
+
+ $types = array('adresse','ansprechpartner');
+
+ foreach($types as $key)
+ {
+
+ if($key=="adresse") $p_key = "a.id";
+ else if($key=="ansprechpartner") $p_key = "a.adresse";
+
+ if($endyear>$startyear)
+ {
+
+ //0111 1230 // neues jahr
+ $sql = "SELECT $p_key as id,a.name,DATE_FORMAT(a.geburtstag,'%m-%d') as datum,
+ YEAR('$end') - YEAR(a.geburtstag) - IF(DAYOFYEAR('$end') < DAYOFYEAR(CONCAT(YEAR('$end'),DATE_FORMAT(a.geburtstag, '-%m-%d'))),1,0) as alterjahre
+ FROM ".$key." a WHERE DATE_FORMAT(a.geburtstag,'%m%d') <= date_format('$end','%m%d') AND a.geloescht!='1' AND a.geburtstag!='0000-00-00' AND a.geburtstagkalender=1";
+
+ $tmpartikel = $this->app->DB->SelectArr($sql);
+ $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
+ for($ij=0;$ij<$ctmpartikel;$ij++)
+ {
+ $data[] = array('id' => -4,
+ //'title'=>"Geburtstag: ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name'])." (".$tmpartikel[$ij]['alterjahre'].")",
+ 'title'=>"Geburtstag: ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name']),
+ 'start'=> $endyear."-".$tmpartikel[$ij]['datum'],
+ 'end'=> $endyear."-".$tmpartikel[$ij]['datum'],
+ 'allDay'=>true,
+ 'color'=>'#FA5858',
+ 'public'=>'1',
+ 'task'=>$tmpartikel[$ij]['id']);
+ }
+
+
+ //0111 1230 // altes jahr
+ $sql = "SELECT $p_key as id,a.name,DATE_FORMAT(a.geburtstag,'%m-%d') as datum,
+ YEAR('$end') - YEAR(a.geburtstag) - IF(DAYOFYEAR('$end') < DAYOFYEAR(CONCAT(YEAR('$end'),DATE_FORMAT(a.geburtstag, '-%m-%d'))),1,0) as alterjahre
+ FROM ".$key." a WHERE DATE_FORMAT(a.geburtstag,'%m%d') <= 1231 AND a.geloescht!='1' AND a.geburtstag!='0000-00-00' AND a.geburtstagkalender=1";
+
+ $tmpartikel = $this->app->DB->SelectArr($sql);
+ $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
+ for($ij=0;$ij<$ctmpartikel;$ij++)
+ {
+ $data[] = array('id' => -4,
+ 'title'=>"Geburtstag: ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name'])." (".$tmpartikel[$ij]['alterjahre'].")",
+ 'start'=> $startyear."-".$tmpartikel[$ij]['datum'],
+ 'end'=> $startyear."-".$tmpartikel[$ij]['datum'],
+ 'allDay'=>true,
+ 'color'=>'#FA5858',
+ 'public'=>'1',
+ 'task'=>$tmpartikel[$ij]['id']);
+ }
+
+
+ } else {
+ $sql = "SELECT $p_key as id,a.name,DATE_FORMAT(a.geburtstag,'%m-%d') as datum,
+ YEAR('$end') - YEAR(a.geburtstag) - IF(DAYOFYEAR('$end') < DAYOFYEAR(CONCAT(YEAR('$end'),DATE_FORMAT(a.geburtstag, '-%m-%d'))),1,0) as alterjahre
+ FROM ".$key." a WHERE DATE_FORMAT(a.geburtstag,'%m%d') <= date_format('$end','%m%d') AND DATE_FORMAT(a.geburtstag,'%m%d') >= date_format('$start','%m%d') AND a.geloescht!='1' AND a.geburtstag!='0000-00-00' AND a.geburtstagkalender=1";
+
+ $tmpartikel = $this->app->DB->SelectArr($sql);
+ $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
+ for($ij=0;$ij<$ctmpartikel;$ij++)
+ {
+ $data[] = array('id' => -4,
+ 'title'=>"Geburtstag: ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['name'])." (".$tmpartikel[$ij]['alterjahre'].")",
+ 'start'=> $startyear."-".$tmpartikel[$ij]['datum'],
+ 'end'=> $startyear."-".$tmpartikel[$ij]['datum'],
+ 'allDay'=>true,
+ 'color'=>'#FA5858',
+ 'public'=>'1',
+ 'task'=>$tmpartikel[$ij]['id']);
+ }
+ }
+ }
+
+
+
+
+ //arbeitsfreie tage einblenden
+ $sql = "SELECT a.id as id,a.bezeichnung, a.datum,a.typ FROM arbeitsfreietage a WHERE a.datum <='$end_datum' AND a.datum >='$start_datum'";
+
+ $tmpartikel = $this->app->DB->SelectArr($sql);
+ $ctmpartikel = !empty($tmpartikel)?count($tmpartikel):0;
+ for($ij=0;$ij<$ctmpartikel;$ij++)
+ {
+ $data[] = array('id' => -7,
+ 'title'=>ucfirst($tmpartikel[$ij]['typ']).": ".$this->app->erp->ReadyForPDF($tmpartikel[$ij]['bezeichnung']),
+ 'start'=> $tmpartikel[$ij]['datum'],
+ 'end'=> $tmpartikel[$ij]['datum'],
+ 'allDay'=>true,
+ 'color'=>'#FA5858',
+ 'public'=>'1',
+ 'task'=>$tmpartikel[$ij]['id']);
+ }
+
+ // Serviceauftrag
+ $serviceauftrag_visible = $this->app->User->GetParameter("adresse_kalender_serviceauftrag");
+ if($this->app->erp->ModulVorhanden("serviceauftrag")){
+ if(!$hideserviceauftrag && $serviceauftrag_visible){
+ $tmpserviceauftragsql = "SELECT sa.id, sa.datum, sa.abschluss_bis, a.name,sa.bearbeiter FROM serviceauftrag sa LEFT JOIN adresse a ON sa.adresse = a.id WHERE sa.datum >= '$start_datum' AND (sa.abschluss_bis = '0000-00-00' OR sa.abschluss_bis < '$end_datum')";
+ if($nurmeine > 0){
+ $tmpserviceauftragsql .= " AND sa.bearbeiter = '$useradresse'";
+ }
+ $tmpserviceauftrag = $this->app->DB->SelectArr($tmpserviceauftragsql);
+ $ctmpserviceauftrag = !empty($tmpserviceauftrag)?count($tmpserviceauftrag):0;
+ for($ij=0;$ij<$ctmpserviceauftrag;$ij++)
+ {
+
+ $defaultCalendarColor = $this->app->DB->Select("SELECT defaultcolor FROM user WHERE adresse='".$tmpserviceauftrag[$ij]['bearbeiter']."' AND defaultcolor!='' LIMIT 1");
+ if($defaultCalendarColor=="") $defaultCalendarColor = "#DD00DD";
+
+ $data[] = array('id' => -6,
+ 'title'=> "Serviceauftrag: ".$tmpserviceauftrag[$ij]['name'],
+ 'start'=> $tmpserviceauftrag[$ij]['datum'],
+ 'end'=> $tmpserviceauftrag[$ij]['abschluss_bis'],
+ 'allDay'=>true,
+ 'color'=>$defaultCalendarColor,
+ 'public'=>'1',
+ 'task'=>$tmpserviceauftrag[$ij]['id']);
+ }
+ }
+ }
+
+
+
+ $aufgaben_visible = $this->app->User->GetParameter("adresse_kalender_aufgaben");
+ // Aufgabene einblenden
+ if($aufgaben_visible=='1') {
+ // Aufgaben hinzufügen
+ $tasks = $this->app->DB->SelectArr("SELECT DISTINCT a.id, a.aufgabe, a.abgabe_bis, a.ganztags, ma.name as mitarbeiter, ku.name as kunde FROM aufgabe AS a
+ LEFT JOIN user AS u ON u.adresse=a.adresse
+ LEFT JOIN adresse AS ku ON ku.id=a.kunde
+ LEFT JOIN adresse AS ma ON ma.id=a.adresse
+ WHERE (u.id='$user' OR oeffentlich='1') AND a.status='offen' AND a.abgabe_bis>='$start'
+ AND a.abgabe_bis<='$end'");
+ $ctasks = !empty($tasks)?count($tasks):0;
+ for($i=0;$i<$ctasks;$i++)
+ {
+ $allday = (($tasks[$i]['ganztags']=='1') ? true : false);
+ $data[] = array('id' => -2,
+ 'title'=>$tasks[$i]['mitarbeiter'].": ".$this->app->erp->ReadyForPDF($tasks[$i]['aufgabe']).($tasks[$i]['kunde']!=""?" (".$tasks[$i]['kunde'].")":""),
+ 'start'=> $tasks[$i]['abgabe_bis'],
+ 'end'=> $tasks[$i]['abgabe_bis'],
+ 'allDay'=>$allday,
+ 'color'=>$this->taskColor,
+ 'public'=>'',
+ 'task'=>$tasks[$i]['id']);
+ }
+
+ }
+
+ $urlaub_visible = $this->app->User->GetParameter("adresse_kalender_urlaub");
+ // Aufgabene einblenden
+ if($urlaub_visible=='1') {
+ // Aufgaben hinzufügen
+ $tasks = $this->app->DB->SelectArr("SELECT DISTINCT ms.id, a2.name, ms.datum,ms.kuerzel FROM mitarbeiterzeiterfassung_sollstunden ms
+ LEFT JOIN user AS u ON u.adresse=ms.adresse
+ LEFT JOIN adresse a2 ON a2.id=ms.adresse
+ WHERE ms.datum>='$start'
+ AND ms.datum<='$end' AND (ms.kuerzel='U' OR ms.kuerzel='K' OR ms.kuerzel='N')");
+ $ctasks = !empty($tasks)?count($tasks):0;
+ for($i=0;$i<$ctasks;$i++)
+ {
+ switch($tasks[$i]['kuerzel'])
+ {
+ case "U": $kuerzel="Abwesend"; break;
+ case "N": $kuerzel="Abwesend"; break;
+ case "K": $kuerzel="Abwesend"; break;
+ }
+ $data[] = array('id' => -7,
+ 'title'=>$kuerzel.": ".$this->app->erp->ReadyForPDF($tasks[$i]['name']),
+ 'start'=> $tasks[$i]['datum'],
+ 'end'=> $tasks[$i]['datum'],
+ 'allDay'=>1,
+ 'color'=>$this->urlaubColor,
+ 'public'=>'1',
+ 'task'=>$tasks[$i]['id']);
+ }
+
+ }
+
+
+ $projekte_visible = $this->app->User->GetParameter("adresse_kalender_projekte");
+ // Aufgabene einblenden
+ if($projekte_visible=='1') {
+ // Aufgaben hinzufügen
+
+ $nureigene = $this->app->User->GetParameter("adresse_kalender_termine");
+ if($nureigene=="1")
+ {
+ $tasks = $this->app->DB->SelectArr("SELECT DISTINCT a.id, a.aufgabe, a.startdatum,a.farbe,a.projekt FROM arbeitspaket AS a
+ LEFT JOIN user AS u ON u.adresse=a.adresse
+ WHERE (u.id='$user') AND a.startdatum>='$start'
+ AND a.startdatum <='$end'");
+ } else {
+ $tasks = $this->app->DB->SelectArr("SELECT DISTINCT a.id, a.aufgabe, a.startdatum,a.farbe,a.projekt FROM arbeitspaket AS a
+ LEFT JOIN user AS u ON u.adresse=a.adresse
+ LEFT JOIN projekt p ON a.projekt=p.id
+ WHERE a.startdatum>='$start' AND p.oeffentlich=1
+ AND a.startdatum <='$end'");
+ }
+ $ctasks = !empty($tasks)?count($tasks):0;
+ for($i=0;$i<$ctasks;$i++)
+ {
+ $data[] = array('id' => -5,
+ 'title'=>"Teilprojekt Start: ".$this->app->erp->ReadyForPDF($tasks[$i]['aufgabe']),
+ 'start'=> $tasks[$i]['startdatum'],
+ 'end'=> $tasks[$i]['startdatum'],
+ 'allDay'=>true,
+ 'color'=>$tasks[$i]['farbe'],
+ 'public'=>'',
+ 'task'=>$tasks[$i]['projekt']);
+ }
+ $tasks = $this->app->DB->SelectArr("SELECT DISTINCT a.id, a.aufgabe, a.abgabedatum,a.farbe,a.projekt FROM arbeitspaket AS a
+ LEFT JOIN user AS u ON u.adresse=a.adresse
+ WHERE (u.id='$user') AND a.abgabedatum>='$start'
+ AND a.abgabedatum <='$end'");
+ $ctasks = !empty($tasks)?count($tasks):0;
+ for($i=0;$i<$ctasks;$i++)
+ {
+ $data[] = array('id' => -5,
+ 'title'=>"Teilprojekt Abgabe: ".$this->app->erp->ReadyForPDF($tasks[$i]['aufgabe']),
+ 'start'=> $tasks[$i]['abgabedatum'],
+ 'end'=> $tasks[$i]['abgabedatum'],
+ 'allDay'=>true,
+ 'color'=>$tasks[$i]['farbe'],
+ 'public'=>'',
+ 'task'=>$tasks[$i]['projekt']);
+ }
+
+
+ }
+ header('Content-type: application/json');
+ echo json_encode($data);
+ $this->app->ExitXentral();
+ }
+
+ function KalenderUpdate()
+ {
+ $id = $this->app->Secure->GetGET("id");
+ $task = $this->app->Secure->GetGET("task");
+
+ if(is_numeric($id) && $id > 0) {
+ $start = $this->app->Secure->GetGET("start");
+ $end = $this->app->Secure->GetGET("end");
+
+ $allday = $this->app->Secure->GetGET("allDay");
+ if($allday=="true")
+ {
+ //$this->app->DB->Update("UPDATE kalender_event SET von='$start', bis=DATE_ADD('$end', INTERVAL 1439 MINUTE) WHERE id='$id' LIMIT 1");
+ $this->app->DB->Update("UPDATE kalender_event SET von='$start', bis='$end' WHERE id='$id' LIMIT 1");
+
+ $calendarActionType = 'modified';
+ $this->app->erp->RunHook('kalender_event_hook', 2, $id, $calendarActionType);
+ }
+ else
+ {
+ $this->app->DB->Update("UPDATE kalender_event SET von='$start', bis='$end' WHERE id='$id' LIMIT 1");
+
+ $calendarActionType = 'modified';
+ $this->app->erp->RunHook('kalender_event_hook', 2, $id, $calendarActionType);
+ }
+ }
+
+ if(is_numeric($task) && $task > 0) {
+ $start = $this->app->Secure->GetGET("start");
+ // jjjj-mm-tt ss-mm-ss -> jjjj-mm-tt ss:mm:ss
+
+ $allday_db = (($allday=='true') ? '1' : '0');
+ $converted = $this->app->String->Convert($start, "%1-%2-%3 %4-%5-%6", "%1-%2-%3 %4:%5:%6");
+ $this->app->DB->Update("UPDATE aufgabe SET abgabe_bis='$converted', ganztags='$allday_db' WHERE id='$task' LIMIT 1");
+ }
+
+ $this->app->ExitXentral();
+ }
+
+ function KalenderEventData()
+ {
+ $event = $this->app->Secure->GetGET("id");
+ $cmd = $this->app->Secure->GetGET("cmd");
+ header('Content-type: application/json');
+ switch($cmd) {
+ case "getEinladung": // Ajax to prepare the pop up for invitation mask
+
+ /*
+ *
+ * Organizer:
+ * If there is an adresseintern, use this, otherwise use the user's address
+ *
+ * Recipients:
+ * if there is an address and a person, use the person
+ * if there is an address and no person, use the address
+ * add the addresses of the selected users
+ * each address only once
+ *
+ */
+
+ $ret = array();
+
+ $data = $this->app->DB->SelectRow("SELECT k.adresse, k.ansprechpartner_id, k.adresseintern, IFNULL(a.sprache,''),k.projekt,k.bezeichnung,k.beschreibung,k.ort,
+ DATE_FORMAT(k.von,'%d.%m.%Y %H:%i') as von, DATE_FORMAT(k.bis,'%d.%m.%Y %H:%i') as bis
+ FROM kalender_event k LEFT JOIN adresse a ON a.id=k.adresse WHERE k.id='" . $event . "' LIMIT 1");
+ $sprache = $data['sprache'];
+ $projekt = 0; //$data['projekt'];
+
+ $adresseintern = $data['adresseintern'];
+
+ if (empty($adresseintern)) {
+ $organizer_to = $this->app->User->GetEmail();
+ $organizer_to_name = $this->app->User->GetName();
+ }
+ else {
+ $organizer_to = $this->app->DB->Select("SELECT email FROM adresse WHERE id='$adresseintern' AND geloescht!=1 LIMIT 1");
+ $organizer_to_name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='$adresseintern' AND geloescht!=1 LIMIT 1");
+ }
+
+ // Add Organizer
+ $ret['einladungcc'] = $ret['einladungcc'].$organizer_to_name." <".$organizer_to.">";
+
+ $address = $data['adresse'];
+ $recipient_to = "";
+ $recipient_to_name = "";
+ if (!empty($address))
+ {
+ // Check for ansprechpartner person
+ $ansprechpartner_id = $data['ansprechpartner_id'];
+ if (!empty($ansprechpartner_id)) {
+ $recipient_result = $this->app->DB->SelectArr("SELECT name, email FROM ansprechpartner WHERE id='$ansprechpartner_id' AND geloescht!=1 LIMIT 1");
+ if (!empty($recipient_result)) {
+ $recipient_to = $recipient_result[0]['email'];
+ $recipient_to_name = $recipient_result[0]['name'];
+ }
+ } else
+ {
+ $recipient_to = $this->app->DB->Select("SELECT email FROM adresse WHERE id='" . $data['adresse'] . "' AND geloescht!=1 LIMIT 1");
+ $recipient_to_name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='" . $data['adresse'] . "' AND geloescht!=1 LIMIT 1");
+ }
+ }
+
+ $vorlage = $this->app->erp->Geschaeftsbriefvorlage($sprache, "EinladungKalender", $projekt);
+
+ foreach ($data as $key => $value) {
+ $vorlage['betreff'] = str_replace('{' . strtoupper($key) . '}', $value, $vorlage['betreff']);
+ $vorlage['text'] = str_replace('{' . strtoupper($key) . '}', $value, $vorlage['text']);
+ }
+
+ // Add primary recipient
+ if ($recipient_to != "") {
+ if ($recipient_to_name == "") {
+ $recipient_to_name = $recipient_to;
+ }
+ $ret['einladungcc'] = $ret['einladungcc'].", ".$recipient_to_name." <".$recipient_to.">";
+ }
+
+ // jetzt holen wir alle Email-Adressen
+ $emailadresse[$data['adresse']] = $data['adresse'];
+ $emailadresse[$data['adresseintern']] = $data['adresseintern'];
+ $dataPersonen = $this->app->DB->SelectArr("SELECT a.id as userid FROM kalender_user ku LEFT JOIN user u ON u.id=ku.userid LEFT JOIN adresse a ON a.id=u.adresse WHERE ku.event='" . $event . "'");
+ if (is_array($dataPersonen)) {
+ foreach ($dataPersonen as $person) {
+ if ($person['userid'] > 0)
+ $emailadressenlist[$person['userid']] = $person['userid'];
+ }
+ }
+
+ $emailadressen = $this->app->DB->SelectArr("SELECT id, name, email FROM adresse WHERE email != '' AND id IN (" . implode(",", $emailadressenlist) . ") AND geloescht!='1' AND email != '$recipient_to' AND email != '$organizer_to'");
+
+ foreach ($emailadressen as $email) {
+ if ($email['name'] != "")
+ $ret['einladungcc'] .= ", ".$email['name'] . " <" . $email['email'] . ">";
+ else
+ $ret['einladungcc'] .= ", ".$email['email'] . ",";
+ }
+
+ $ret['betreff'] = $vorlage['betreff'];
+ $ret['text'] = $vorlage['text'];
+ $ret['status'] = 1;
+ $ret['statusText'] = "";
+ echo json_encode($ret);
+ $this->app->ExitXentral();
+ break;
+
+ case "sendEinladung" : // AJAX to send the invitation mails
+ $betreff = $this->app->Secure->GetPOST("betreff");
+ $text = $this->app->Secure->GetPOST("text");
+ $emailcc= $this->app->Secure->GetPOST("emailcc");
+ $id = $this->app->Secure->GetPOST("id");
+ if($emailcc=="")
+ {
+ $ret['status'] = 0;
+ $ret['statusText'] = "Bitte mindestens einen Empfänger angeben!";
+ }
+ else if($this->KalenderMail($id,$betreff,$text,$emailcc))
+ {
+ $ret['status'] = 1;
+ $ret['statusText'] = "Einladung wurde per Mail versendet.";
+ } else {
+ $ret['status'] = 0;
+ $ret['statusText'] = "Es gab einen Fehler beim Versenden der Einladung per Mail!";
+ }
+ echo json_encode($ret);
+ $this->app->ExitXentral();
+ break;
+
+ default: // AJAX to fill the pop up with the event data
+
+ if (is_numeric($event) && $event > 0) {
+ $data = $this->app->DB->SelectArr("SELECT id, ort, bezeichnung AS titel, beschreibung, von, bis, allDay, color, public,erinnerung,adresse,ansprechpartner_id,adresseintern,projekt FROM kalender_event WHERE id='$event' LIMIT 1");
+ $personen = $this->app->DB->SelectArr("SELECT DISTINCT ku.userid, a.name FROM kalender_user AS ku
+ LEFT JOIN user AS u ON u.id=ku.userid
+ LEFT JOIN adresse a ON a.id=u.adresse
+ WHERE ku.event='$event' ORDER BY u.username ");
+
+ $gruppenkalender = $this->app->DB->SelectArr("SELECT DISTINCT ku.gruppe as kalendergruppe FROM kalender_user AS ku
+ LEFT JOIN kalender_gruppen kg ON kg.id=ku.gruppe
+ WHERE ku.event='$event' AND ku.gruppe > 0 ORDER BY kg.bezeichnung ");
+ }
+
+ $data[0]['adressid'] = $data[0]['adresse'];
+ $data[0]['adresse'] = $this->app->DB->Select("SELECT if(a.lieferantennummer,CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,' Liefr: ',a.lieferantennummer,')'),CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,')')) FROM adresse a WHERE a.id='" . $data[0]['adresse'] . "' AND a.geloescht=0 LIMIT 1");
+ $data[0]['ansprechpartner'] = $this->app->DB->Select("SELECT CONCAT(an.id, ' ', an.name, ' (', a.name, IF(a.lieferantennummer, CONCAT(', Kdr: ',a.kundennummer,' Liefr: ',a.lieferantennummer,')'),CONCAT(', Kdr: ',a.kundennummer,')')) ) FROM ansprechpartner an LEFT JOIN adresse a ON an.adresse = a.id WHERE an.id = '".$data[0]['ansprechpartner_id']."' AND a.geloescht = 0 LIMIT 1");
+
+ // Force user if empty
+ if ($data[0]['adresseintern'] == 0) {
+ $data[0]['adresseintern'] = $this->app->User->GetID();
+ }
+
+ $data[0]['adresseintern'] = $this->app->DB->Select("SELECT CONCAT(a.id,' ',a.name) FROM adresse a WHERE a.id='" . $data[0]['adresseintern'] . "' AND a.geloescht=0 LIMIT 1");
+
+ $data[0]['projekt'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='" . $data[0]['projekt'] . "' AND id > 0 LIMIT 1");
+
+ $data[0]['allDay'] = (($data[0]['allDay'] == '1') ? true : false);
+ $data[0]['public'] = (($data[0]['public'] == '1') ? true : false);
+ $data[0]['erinnerung'] = (($data[0]['erinnerung'] == '1') ? true : false);
+ $data[0]['titel'] = $this->app->erp->ReadyForPDF($data[0]['titel']);
+ $data[0]['ort'] = $this->app->erp->ReadyForPDF($data[0]['ort']);
+ $data[0]['adresse'] = $this->app->erp->ReadyForPDF($data[0]['adresse']);
+ $data[0]['adresseintern'] = $this->app->erp->ReadyForPDF($data[0]['adresseintern']);
+ $data[0]['beschreibung'] = $this->app->erp->ReadyForPDF($data[0]['beschreibung']);
+
+ // $data[0]['color'] = (($data[0]['public']=='1')?$this->publicColor:$data[0]['color']);
+ $data[0]['personen'] = $personen;
+
+
+ $data[0]['gruppenkalender'] = $gruppenkalender;
+
+ $googleEventLink = '';
+ $canEditGoogleEvent = false;
+ try {
+ if ($this->isGoogleSynchronizationActive()) {
+ /** @var GoogleSyncGateway $gateway */
+ $gateway = $this->app->Container->get('GoogleSyncGateway');
+ $sync = $gateway->tryGetSyncEntryByEvent((int)$event);
+ if ($sync !== null) {
+ /** @var GoogleCalendarSynchronizer $synchronizer */
+ $synchronizer = $this->app->Container->get('GoogleCalendarSynchronizer');
+ $address = (int)$this->app->User->GetAdresse();
+ $googleEventLink = $sync->getHtmlLink();
+ $canEditGoogleEvent = $synchronizer->canAddressEditEvent($address, (int)$event);
+ }
+ }
+ } catch (Throwable $e) {
+ // @todo: error handling
+ }
+
+ $data[0]['googleEventLink'] = $googleEventLink;
+ $data[0]['googleEventEdit'] = $canEditGoogleEvent;
+
+ $data = $data[0];
+
+ echo json_encode($data);
+ $this->app->ExitXentral();
+ }
+ }
+
+ function Install(){
+ $this->app->erp->CheckTable("kalender_gruppen");
+ $this->app->erp->CheckColumn("id", "int(11)", "kalender_gruppen", "NOT NULL AUTO_INCREMENT");
+ $this->app->erp->CheckColumn("bezeichnung", "varchar(255)", "kalender_gruppen", "NOT NULL");
+ $this->app->erp->CheckColumn("farbe", "varchar(255)", "kalender_gruppen", "NOT NULL");
+ $this->app->erp->CheckColumn("ausblenden","tinyint(1)", "kalender_gruppen", "NOT NULL DEFAULT 0");
+
+ $this->app->erp->CheckTable("kalender_gruppen_mitglieder");
+ $this->app->erp->CheckColumn("id", "int(11)", "kalender_gruppen_mitglieder", "NOT NULL AUTO_INCREMENT");
+ $this->app->erp->CheckColumn("kalendergruppe", "int(11)", "kalender_gruppen_mitglieder", "NOT NULL");
+ $this->app->erp->CheckColumn("benutzergruppe", "int(11)", "kalender_gruppen_mitglieder", "NOT NULL");
+ $this->app->erp->CheckColumn("adresse", "int(11)", "kalender_gruppen_mitglieder", "NOT NULL");
+ $this->app->erp->CheckIndex('kalender_gruppen_mitglieder','kalendergruppe');
+ $this->app->erp->CheckIndex('kalender_gruppen_mitglieder','adresse');
+ }
+
+ function KalenderGruppenList(){
+ $this->app->erp->Headlines('Kalender Gruppen');
+
+ $this->app->erp->MenuEintrag("index.php?module=kalender&action=gruppenlist","Übersicht");
+
+ $speichern = $this->app->Secure->GetPOST("speichern");
+ if($speichern != ""){
+ $noredirect = $this->app->Secure->GetPOST("noRedirect");
+ $bezeichnung = $this->app->Secure->GetPOST("bezeichnung");
+ $farbe = $this->app->Secure->GetPOST("farbe");
+ $ausblenden = $this->app->Secure->GetPOST("ausblenden");
+
+ $error = "";
+
+ if(trim($bezeichnung) == ""){
+ $error .= "Bitte Bezeichnung ausfüllen";
+ }
+
+ if($error != ""){
+ $this->app->Tpl->Set("MESSAGE", "");
+ }else{
+ $this->app->DB->Insert("INSERT INTO kalender_gruppen (bezeichnung, farbe, ausblenden) VALUES (\"$bezeichnung\", \"$farbe\", \"$ausblenden\")");
+ }
+ }
+
+ $this->app->YUI->ColorPicker('farbe');
+ $this->app->YUI->ColorPicker('editfarbe');
+ $this->app->YUI->TableSearch('TAB1','kalender_gruppenlist', "show","","",basename(__FILE__), __CLASS__);
+ $lid = $this->app->User->GetAdresse();
+
+
+ $this->app->YUI->TableSearch('GRUPPEN','kalender_gruppen_mitglieder', "show","","",basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Add('GRUPPEN','');
+
+
+ $this->app->Tpl->Parse("PAGE","kalender_gruppenlist.tpl");
+ }
+
+ function KalenderGruppenEdit(){
+ if($this->app->Secure->GetGET('cmd')==='get'){
+ $id = (int)$this->app->Secure->GetPOST('editid');
+ $data = $this->app->DB->SelectRow("SELECT id, bezeichnung, farbe, ausblenden FROM kalender_gruppen WHERE id = \"$id\" LIMIT 1");
+ echo json_encode($data);
+ $this->app->ExitXentral();
+ }
+
+
+ $this->app->Tpl->Parse('PAGE', "kalender_gruppenlist.tpl");
+ }
+
+ function KalenderGruppenSave(){
+ $editid = (int)$this->app->Secure->GetPOST('editid');
+ $editbezeichnung = $this->app->Secure->GetPOST('editbezeichnung');
+ $editfarbe = $this->app->Secure->GetPOST('editfarbe');
+ $editausblenden = $this->app->Secure->GetPOST('editausblenden');
+
+ $error = "";
+ if(trim($editbezeichnung) == ""){
+ $error .= "Bitte Bezeichnung ausfüllen\n";
+ }
+
+ if($error == ""){
+ if($editid){
+ $this->app->DB->Update("UPDATE kalender_gruppen SET bezeichnung = \"$editbezeichnung\", farbe = \"$editfarbe\", ausblenden = \"$editausblenden\" WHERE id = \"$editid\"");
+ echo json_encode(array('status'=>1));
+ $this->app->ExitXentral();
+ }
+ $this->app->DB->Insert("INSERT INTO kalender_gruppen (bezeichnung, farbe, ausblenden) VALUES ('$editbezeichnung', '$editfarbe', '$editausblenden')");
+ echo json_encode(array('status'=>2,'id'=>$this->app->DB->GetInsertID(),'farbe' => $editfarbe, 'bezeichnung' => $editbezeichnung, 'ausblenden' => $editausblenden));
+ $this->app->ExitXentral();
+ }
+ echo json_encode(array('status'=>0,'statusText'=>$error));
+ $this->app->ExitXentral();
+ }
+
+ function KalenderGruppenDelete(){
+ $id = (int) $this->app->Secure->GetPOST('editid');
+ if($id > 0){
+ $this->app->DB->Delete("DELETE FROM kalender_gruppen WHERE id = \"$id\"");
+ $this->app->DB->Delete("DELETE FROM kalender_gruppen_mitglieder WHERE kalendergruppe = \"$id\"");
+ }
+ echo json_encode(array('status'=>1));
+ $this->app->ExitXentral();
+ }
+
+ /*
+ * Pick participants and create invitation mail
+ * Use new sendmail with multiple recipients
+ */
+ public function KalenderMail($event,$betreff='',$text='',$emailcc='')
+ {
+ $datum = '';
+ $arraufgabe = $this->app->DB->SelectArr("SELECT *,DATE_FORMAT(von,'%d.%m.%Y') as datum,
+ DATE_FORMAT(bis,'%d.%m.%Y') as datumbis,
+ DATE_FORMAT(von,'%Y%m%d') as icaldatumvon,
+ DATE_FORMAT(bis,'%Y%m%d') as icaldatumbis, DATE_FORMAT(von,'%H%i00') as icaluhrzeitvon, DATE_FORMAT(bis,'%H%i00') as icaluhrzeitbis,
+ DATE_FORMAT(von,'%H:%i') as zeit,
+ DATE_FORMAT(bis,'%H:%i') as zeitbis
+ FROM kalender_event WHERE id='$event' LIMIT 1");
+
+ $adresse = $arraufgabe[0]["adresse"];
+ $adresseintern = $arraufgabe[0]["adresseintern"];
+
+ $to = $this->app->DB->Select("SELECT email FROM adresse WHERE id='$adresse' AND geloescht!=1 LIMIT 1");
+ $to_name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='$adresse' AND geloescht!=1 LIMIT 1");
+
+ if($adresseintern > 0)
+ {
+ $initiator_to = $this->app->DB->Select("SELECT email FROM adresse WHERE id='$adresseintern' AND geloescht!=1 LIMIT 1");
+ $initiator_to_name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='$adresseintern' AND geloescht!=1 LIMIT 1");
+ } else {
+ $initiator_to = $this->app->User->GetEmail();
+ $initiator_to_name = $this->app->User->GetName();
+ }
+
+ //$this->LogFile("Sende Aufgabe $aufgabe an Email ".$to." und Initiator ".$initiator_to);
+
+ if($betreff=="")
+ $betreff = "Einladung für Termin ".$arraufgabe[0]["bezeichnung"];
+
+ if($text=="")
+ {
+ if($arraufgabe[0]["datumbis"]!="00.00.0000" && $arraufgabe[0]["datum"]!=$arraufgabe[0]["datumbis"])
+ {
+ $text = "Datum: ".$arraufgabe[0]["datum"]." bis ".$arraufgabe[0]["datumbis"];//Hallo hier die mail";
+ }
+ else {
+ if($arraufgabe[0]["zeit"]!="00:00" && $arraufgabe[0]["zeitbis"]!="00:00")
+ $text = "Datum: ".$arraufgabe[0]["datum"]." von ".$arraufgabe[0]["zeit"]." bis ".$arraufgabe[0]["zeitbis"];//Hallo hier die mail";
+ else if($arraufgabe[0]["zeit"]!="00:00")
+ $text = "Datum: ".$arraufgabe[0]["datum"]." um ".$arraufgabe[0]["zeit"];
+ else
+ $text = "Datum: ".$arraufgabe[0]["datum"];
+ }
+ } else {
+ $text .= "\r\n";
+ }
+ $text .= "\r\n";
+
+ $beschreibung = $arraufgabe[0]["bezeichnung"];
+
+ $venue = $arraufgabe[0]["ort"];
+ $start = $arraufgabe[0]["icaldatumvon"];
+ $start_time = $arraufgabe[0]["icaluhrzeitvon"];
+ $end = $arraufgabe[0]["icaldatumbis"];
+ $end_time = $arraufgabe[0]["icaluhrzeitbis"];
+
+ $status = 'TENTATIVE';
+ $sequence = 0;
+
+ $event_id = $event;
+
+ $ical = "BEGIN:VCALENDAR\r\n";
+ $ical .= "VERSION:2.0\r\n";
+ $ical .= "PRODID:-//Xenomporio//Termin//DE\r\n";
+ $ical .= "METHOD:REQUEST\r\n";
+ $ical .= "BEGIN:VEVENT\r\n";
+ $ical .= "ORGANIZER;CN=$initiator_to_name:MAILTO:$initiator_to\"\r\n";
+ $ical .= "ATTENDEE;CN=$to_name:MAILTO:$to;RSVP=TRUE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION\r\n";
+ $ical .= "UID:".strtoupper(md5($event_id))."-xenomporio\r\n";
+ $ical .= "SEQUENCE:".$sequence."\r\n";
+ $ical .= "STATUS:".$status."\r\n";
+ $ical .= "DTSTAMPTZID=Europe/Berlin:".date('Ymd').'T'.date('His')."\r\n";
+ $ical .= "DTSTART:".$start."T".$start_time."\r\n";
+ $ical .= "DTEND:".$end."T".$end_time."\r\n";
+ $ical .= "LOCATION:".$venue."\r\n";
+ $ical .= "SUMMARY:".$beschreibung."\r\n";
+ $ical .= "BEGIN:VALARM\r\n";
+ $ical .= "TRIGGER:-PT15M\r\n";
+ $ical .= "ACTION:DISPLAY\r\n";
+ $ical .= "DESCRIPTION:Reminder\r\n";
+ $ical .= "END:VALARM\r\n";
+ $ical .= "END:VEVENT\r\n";
+ $ical .= "END:VCALENDAR\r\n";
+
+ $datei = $this->app->erp->GetTMP().'Einladung_'.$beschreibung.'_'.$datum.".ics";
+ file_put_contents($datei,$ical);
+ if($start!='00000000'){
+ $dateien = array($datei);
+ }
+ else{
+ $dateien = '';
+ }
+
+ $bcc = array();
+
+ if($emailcc!='')
+ {
+ //$to="";
+ //$to_name="";
+
+ $parts = explode(',',$emailcc);
+ $cparts = (!empty($parts)?count($parts):0);
+ for($i=0;$i<$cparts;$i++)
+ {
+ $from = strstr($parts[$i], '<', true); // Ab PHP 5.3.0
+ $email = strstr($parts[$i], '<'); // Ab PHP 5.3.0
+ if($from !="" )
+ {
+ $email = str_replace(['<','>'],'',$email);
+ } else {
+ $email = $parts[$i];
+ }
+
+ if($i==0)
+ {
+ if($to==""){
+ $to = $email;
+ $to_name = $from;
+ }
+ } else {
+ if($email!=$to)
+ {
+ if($from=="") $bcc[]=$email;
+ else $bcc[]=$email;//$from." <".$email.">";
+ }
+ }
+ }
+ }
+
+ $result = $this->app->erp->MailSend($this->app->erp->GetFirmaMail(),$this->app->erp->GetFirmaAbsender(),$to,$to_name,$betreff,$text,$dateien,"",false,$bcc);
+
+ unlink($datei);
+ return $result;
+ }
+
+ /**
+ * @return void
+ */
+ protected function trySynchronizeGoogleChanges()
+ {
+ if (!$this->isGoogleSynchronizationActive()) {
+ return;
+ }
+ /** @var GoogleCalendarSynchronizer $sync */
+ $sync = $this->app->Container->get('GoogleCalendarSynchronizer');
+ $userId = (int)$this->app->User->GetID();
+ try {
+ /** @var GoogleCalendarClientFactory $clientFactory */
+ $clientFactory = $this->app->Container->get('GoogleCalendarClientFactory');
+ $client = $clientFactory->createClient($userId);
+ $sync->importChangedEvents($client);
+ } catch (Throwable $e) {
+ return;
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ protected function isGoogleSynchronizationActive()
+ {
+ if (!$this->app->Container->has('GoogleCredentialsService')) {
+ return false;
+ }
+ /** @var GoogleCredentialsService $credentialService */
+ $credentialService = $this->app->Container->get('GoogleCredentialsService');
+
+ return $this->app->Container->has('GoogleCalendarSynchronizer') && $credentialService->existCredentials();
+ }
+}
diff --git a/www/themes/new/css/calendar.css b/www/themes/new/css/calendar.css
index 32621d87..a103a8b3 100644
--- a/www/themes/new/css/calendar.css
+++ b/www/themes/new/css/calendar.css
@@ -198,7 +198,7 @@ input.auswahl,
#TerminForm #projekt {
background-image: url('../images/suche-icon.png');
background-repeat: no-repeat;
- background-position: 95% 50%;
+/* background-position: 95% 50%;*/
}