, * Andreas Österreicher */ require_once('../../config/cis.config.inc.php'); require_once('../../include/phrasen.class.php'); require_once('../../include/functions.inc.php'); require_once('../../include/coodle.class.php'); require_once('../../include/datum.class.php'); require_once('../../include/mail.class.php'); require_once('../../include/benutzer.class.php'); require_once('../../include/reservierung.class.php'); require_once('../../include/stunde.class.php'); require_once('../../include/stundenplan.class.php'); require_once('../../include/mitarbeiter.class.php'); header("Content-Type: text/html; charset=utf-8"); $sprache = getSprache(); $p=new phrasen($sprache); $datum_obj = new datum(); $message = ''; $mailMessage=''; $saveOk=null; $ersteller = false; $abgeschlossen = false; $coodle_id = (isset($_GET['coodle_id'])?$_GET['coodle_id']:''); $coodle = new coodle(); if(!$coodle->load($coodle_id)) die($coodle->errormsg); // Überprüfen ob Coodle Status laufend oder abgeschlossen hat if(!$coodle->checkStatus($coodle_id)) die($p->t('coodle/umfrageNichtGueltig')); // authentifizierung if(!isset($_GET['zugangscode'])) { $uid = get_uid(); if(!$coodle->checkBerechtigung($coodle_id, $uid)) die($p->t('coodle/keineBerechtigung')); // überprüfen ob ersteller gleich uid ist if($coodle->ersteller_uid == $uid) $ersteller = true; } else { if(!$coodle->checkBerechtigung($coodle_id, '', $_GET['zugangscode'])) die($p->t('coodle/keineBerechtigung')); } // checkboxen speichern if(isset ($_POST['save'])) { $coodle_help = new coodle(); $error = false; // Ressource ID von Zugangscode oder UID holen und Beiträge löschen if(isset($_GET['zugangscode'])) { // Einträge löschen $coodle_help->getRessourceFromUser($coodle_id, '', $_GET['zugangscode']); $coodle_ressource_termin= $coodle_help->deleteRessourceTermin($coodle_id, $coodle_help->coodle_ressource_id); } else { if($coodle_help->RessourceExists($coodle_id, $uid)) { $coodle_help->getRessourceFromUser($coodle_id, $uid); $coodle_ressource_termin= $coodle_help->deleteRessourceTermin($coodle_id, $coodle_help->coodle_ressource_id); } } // Einträge speichern foreach($_POST as $key=>$value) { if(mb_substr($key, 0, 5) =='check') { $termin = explode('_', $key); $ressource_id = $termin[1]; $termin_id = $termin[2]; $coodle_ressource_termin = new coodle(); $coodle_ressource_termin->coodle_ressource_id = $ressource_id; $coodle_ressource_termin->coodle_termin_id = $termin_id; $coodle_ressource_termin->new = true; if(!$coodle_ressource_termin->saveRessourceTermin()) $error = true; } } if($error) { $message.= "".$p->t('global/fehlerBeimSpeichernDerDaten')."
"; } else { // email an ersteller senden sendBenachrichtigung($coodle_id); $saveOk=true; } } // endgültige auswahl des termins speichern if(isset($_POST['auswahl_termin'])) { if($ersteller) { $auswahl = $_POST['auswahl_termin']; if($auswahl!='') { // setzte auswahl von termin_id auf true $coodle_help = new coodle(); $coodle_help->loadTermin($auswahl); $coodle_help->auswahl = true; // alle termine der coodle_id auf false setzen if(!$coodle_help->setTerminFalse($coodle_id)) exit('Fehler beim Update aufgetreten'); if(!$coodle_help->saveTermin(false)) $message.="".$p->t('global/fehlerBeimSpeichernDerDaten')."
"; else $saveOk=true; $coodle_status = new coodle(); $coodle_status->load($coodle_id); $coodle_status->coodle_status_kurzbz = 'abgeschlossen'; $coodle_status->new = false; $coodle_status->save(); sendEmail($coodle_id); if($coodle_help->datumgetRaumeFromId($coodle_id); //Ende Uhrzeit berechnen $date = new DateTime($coodle_help->datum.' '.$coodle_help->uhrzeit); $interval =new DateInterval('PT'.$coodle->dauer.'M'); $date->add($interval); $uhrzeit_ende = $date->format('H:i:s'); foreach($coodle_raum->result as $raum) { $stunde = new stunde(); $stunden = $stunde->getStunden($coodle_help->uhrzeit, $uhrzeit_ende); // Pruefen ob der Raum frei ist if(!RaumBelegt($raum->ort_kurzbz, $coodle_help->datum, $stunden)) { $reservierung_error=false; // Stunden reservieren foreach($stunden as $stunde) { $raum_reservierung = new reservierung(); $raum_reservierung->studiengang_kz = '0'; $raum_reservierung->uid = $uid; $raum_reservierung->ort_kurzbz = $raum->ort_kurzbz; $raum_reservierung->datum = $coodle_help->datum; $raum_reservierung->stunde = $stunde; $raum_reservierung->titel = mb_substr($coodle->titel,0,10); $raum_reservierung->beschreibung = mb_substr($coodle->titel, 0, 32); $raum_reservierung->insertamum = date('Y-m-d H:i:s'); $raum_reservierung->insertvon = $uid; //$message.= "Reserviere $raum->ort_kurzbz Stunde $stunde:"; if(!$raum_reservierung->save(true)) $reservierung_error=true; } $message.= $p->t('coodle/raumErfolgreichReserviert', array($raum->ort_kurzbz)).'
'; } else { $message.=''.$p->t('coodle/raumBelegt', array($raum->ort_kurzbz)).'
'; } } } else { $message.=''.$p->t('coodle/raumNichtReserviert', array($datum_obj->formatDatum(RES_TAGE_LEKTOR_BIS, 'd.m.Y'))).'
'; } } } else $message.= ''.$p-t('global/keineBerechtigung').''; } $coodle->load($coodle_id); if($coodle->coodle_status_kurzbz == 'abgeschlossen') $abgeschlossen = true; if(isset($_GET['resend'])) { if($ersteller && $abgeschlossen) sendEmail ($coodle_id); } ?> <?php echo $p->t('coodle/terminauswahl');?> '.$p->t('coodle/coodle').''; if(!isset($_GET['zugangscode'])) echo "<< ".$p->t('coodle/zurueckZurUebersicht').""; echo '

'; echo '
'; $coodle_help = new coodle(); $coodle_help->load($coodle_id); $alt = strtotime($coodle_help->insertamum) ; $differenz = time() - $alt; $differenz = $differenz / 86400; $benutzer = new benutzer(); $benutzer->load($coodle->ersteller_uid); $ersteller_name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); echo '

'.$coodle->titel.'

'; $erstellt = array($ersteller_name, round($differenz)); echo ''.$p->t('coodle/erstelltVon', $erstellt).'

'; // echo '
Erstellt von '.$coodle->ersteller_uid.' ( vor '.round($differenz).' Tagen)
'; echo $coodle->beschreibung; echo '


'; $coodle_ressourcen = new coodle(); $coodle_ressourcen->getRessourcen($coodle_id); // alle termine der coodle umfrage holen $coodle_termine = new coodle(); $coodle_termine->getTermine($coodle_id); $datum = new datum(); echo "
"; foreach($coodle_termine->result as $termin) { $class_auswahl='normal'; $time = strtotime($termin->uhrzeit); $coodle_auswahl = new coodle(); // Falls es schon eine Auswahl gibt - hervorheben if($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) $class_auswahl = 'auswahl'; echo ""; } if($ersteller) echo ''; echo ""; // ressourcen durchlaufen foreach($coodle_ressourcen->result as $ressource) { $name = ''; $class ='normal'; $benutzer = new benutzer(); // wenn uid gesetzt ist nimm uid if($ressource->uid != '') { $benutzer->load($ressource->uid); $name =($benutzer->titelpre!='')?$benutzer->titelpre.' ':''; $name.= $benutzer->vorname.' '; $name.=$benutzer->nachname.' '; $name.=$benutzer->titelpost; } // wenn uid nicht gesetzt ist nimm zugangscode if($ressource->zugangscode !='' && $ressource->uid =='') $name = $ressource->name; if($ressource->ort_kurzbz != '') continue; // eigene Reihe farbig hervorheben if(isset($_GET['zugangscode']) && $_GET['zugangscode'] == $ressource->zugangscode) $class ='owner'; if(!isset($_GET['zugangscode']) && $ressource->uid == $uid) $class = 'owner'; echo ""; // termine zu ressourcen anzeigen foreach($coodle_termine->result as $termin) { $checked =''; $disabled=''; if($coodle_termine->checkTermin($termin->coodle_termin_id, $ressource->coodle_ressource_id)) $checked = 'checked'; $coodle_help = new coodle(); if(isset($_GET['zugangscode'])) { $coodle_help->getRessourceFromUser($coodle_id, '', $_GET['zugangscode']); if($ressource->coodle_ressource_id != $coodle_help->coodle_ressource_id) $disabled = 'disabled'; }else { $coodle_help->getRessourceFromUser($coodle_id, $uid); if($ressource->coodle_ressource_id != $coodle_help->coodle_ressource_id) $disabled = 'disabled'; } if($abgeschlossen) $disabled='disabled'; echo ""; } if($ersteller) echo ''; echo ''; } $disabled = $abgeschlossen?'disabled':''; if($ersteller) { // buttons für auswahl des endgültigen termins echo ''; foreach($coodle_termine->result as $termin) { $checked=($termin->auswahl)?'checked':''; echo ''; } echo ''; echo ""; } echo "
".$datum->formatDatum($termin->datum, 'd.m.Y').'
'.date('H:i',$time)."
'.$p->t('coodle/keineAuswahl').'
".$name."
'.$p->t('coodle/auswahlEndtermin').'
 
"; if($ersteller && $abgeschlossen) echo ''; if($saveOk===true) echo ' '.$p->t('global/erfolgreichgespeichert').''; echo "
".$message.'
'.$mailMessage; if($abgeschlossen) echo '

'.$p->t('coodle/umfrageAbgeschlossen').''; ?>
load($coodle_id)) { die("Fehler beim senden aufgetreten"); } $email = ''; $mitarbeiter = new mitarbeiter(); $mitarbeiter->load($coodle_send->ersteller_uid); $person = new person(); $person->load($mitarbeiter->person_id); $name = ''; $name.= ($person->titelpre != '')?$person->titelpre.' ':''; $name.= $person->vorname.' '.$person->nachname; $name.= ($person->titelpost != '')?' '.$person->titelpost:''; if($person->geschlecht == 'w') $email.= 'Sehr geehrte Frau '.$name."!

"; else $email.="Sehr geehrter Herr ".$name."!

"; $email.="Ein Termin Ihrer Coodle-Umfrage wurde ausgewählt
Link zu Ihrer Coodle Übersicht

Mit freundlichen Grüßen

Fachhochschule Technikum Wien
Höchstädtplatz 6
1200 Wien"; $mail = new mail($coodle_send->ersteller_uid.'@'.DOMAIN, 'no-reply', 'Coodle Unmfrage', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'); $mail->setHTMLContent($email); if(!$mail->send()) die("Fehler beim senden des Mails aufgetreten"); } /** * Funktion sendet den ausgewählten Termin an alle Ressourcen aus der übergebenen Coodleumfrage * @global phrasen $p * @param type $coodle_id * @param type $auswahl */ function sendEmail($coodle_id) { global $mailMessage; global $p; $coodle_help = new coodle(); $termin_id = $coodle_help->getTerminAuswahl($coodle_id); $coodle_help->loadTermin($termin_id); $coodle_ressource = new coodle(); $coodle_ressource->getRessourcen($coodle_id); $coodle= new coodle(); $coodle->load($coodle_id); $ort=''; $teilnehmer=''; foreach($coodle_ressource->result as $row) { if($row->ort_kurzbz!='') { if($ort!='') $ort.=', '; $ort.="$row->ort_kurzbz"; } else { if($row->uid!='') { $benutzer = new benutzer(); $benutzer->load($row->uid); $name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); $mail = $row->uid.'@'.DOMAIN; } else { $mail = $row->email; $name = $row->name; } $coodle_ressource_termin = new coodle(); $partstat=''; if($coodle_ressource_termin->checkTermin($termin_id, $row->coodle_ressource_id)) $partstat='ACCEPTED'; else $partstat='TENTATIVE'; $teilnehmer.='ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT='.$partstat.';CN='.$name."\n :MAILTO:".$mail."\n"; } } $date = new DateTime($coodle_help->datum.' '.$coodle_help->uhrzeit); //Datum des Termins ins richtige Format bringen $dtstart = $date->format('Ymd\THis'); //Ende Datum berechnen $interval =new DateInterval('PT'.$coodle->dauer.'M'); $date->add($interval); $dtend = $date->format('Ymd\THis'); $date = new DateTime(); $dtstamp = $date->format('Ymd\THis'); $benutzer = new benutzer(); $benutzer->load($coodle->ersteller_uid); $erstellername = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); //Ical File erstellen $ical = "BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN VERSION:2.0 METHOD:PUBLISH BEGIN:VTIMEZONE TZID:Europe/Vienna BEGIN:DAYLIGHT TZOFFSETFROM:+0100 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU DTSTART:19810329T020000 TZNAME:GMT+02:00 TZOFFSETTO:+0200 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+0200 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU DTSTART:19961027T030000 TZNAME:GMT+01:00 TZOFFSETTO:+0100 END:STANDARD END:VTIMEZONE BEGIN:VEVENT ORGANIZER:MAILTO:".$erstellername." <".$coodle->ersteller_uid."@".DOMAIN." ".$teilnehmer." DTSTART;TZID=Europe/Vienna:".$dtstart." DTEND;TZID=Europe/Vienna:".$dtend." LOCATION:".$ort." TRANSP:OPAQUE SEQUENCE:0 UID:FHCompleteCoodle".$coodle_id." DTSTAMP;TZID=Europe/Vienna:".$dtstamp." DESCRIPTION:".strip_tags(html_entity_decode($coodle->beschreibung, ENT_QUOTES, 'UTF-8'))." SUMMARY:".strip_tags($coodle->titel)." PRIORITY:5 CLASS:PUBLIC END:VEVENT END:VCALENDAR"; if(count($coodle_ressource->result)>0) { foreach($coodle_ressource->result as $row) { if($row->uid!='') { $benutzer = new benutzer(); if(!$benutzer->load($row->uid)) { $mailMessage.="Fehler beim Laden des Benutzers ".$coodle_ressource->convert_html_chars($row->uid); continue; } if($benutzer->geschlecht=='w') $anrede = "Sehr geehrte Frau "; else $anrede = "Sehr geehrter Herr "; $anrede.= $benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost; // Interner Teilnehmer $email = $row->uid.'@'.DOMAIN; } elseif($row->email!='') { // Externe Teilnehmer $email = $row->email; $anrede='Sehr geehrte(r) Herr/Frau '.$row->name; } else { // Raueme bekommen kein Mail continue; } $anrede = trim($anrede); $sign = $p->t('mail/signatur'); $datum = new datum(); $html=$anrede.'!

Die Terminumfrage zum Thema "'.$coodle_ressource->convert_html_chars($coodle->titel).'" ist beendet.
Der Termin wurde auf den '.$datum->formatDatum($coodle_help->datum, 'd.m.Y').' '.$coodle_help->uhrzeit.' festgelegt.

'.nl2br($sign); $text=$anrede."!\n\nDie Terminumfrage zum Thema \"".$coodle_help->convert_html_chars($coodle->titel).'"\" ist beendet.\n Der Termin wurde auf den '.$datum->formatDatum($coodle_help->datum, 'd.m.Y').' '.$coodle_help->uhrzeit." festgelegt\n. \n\n$sign"; $mail = new mail($email, 'no-reply@'.DOMAIN,'Terminbestätigung - '.$coodle->titel, $text); $mail->setHTMLContent($html); //ICal Termineinladung hinzufuegen $mail->addAttachmentPlain($ical, 'text/calendar', 'meeting.ics'); if($mail->send()) { $mailMessage.= $p->t('coodle/mailVersandtAn',array($email))."
"; } } } else { die($p->t('coodle/keineRessourcenVorhanden')); } } /** * * Prueft ob ein Raum belegt ist * @param $ort_kurzbz * @param $datum * @param array $stunden */ function RaumBelegt($ort_kurzbz, $datum, $stunden) { foreach($stunden as $stunde) { //Reservierungen pruefen $raum_reservierung = new reservierung(); if($raum_reservierung->isReserviert($ort_kurzbz, $datum, $stunde)) { return true; } //Stundenplan abfragen $stundenplan = new stundenplan('stundenplan'); if($stundenplan->isBelegt($ort_kurzbz, $datum, $stunde)) { return true; } //Stundenplan DEV abfragen $stundenplan = new stundenplan('stundenplandev'); if($stundenplan->isBelegt($ort_kurzbz, $datum, $stunde)) { return true; } } return false; } ?>