From 53fcda35046531dc576ab2f1b256a651e91f3e88 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 23 Feb 2018 10:06:46 +0100 Subject: [PATCH 01/14] added infomail when interessent freigegeben --- .../system/infocenter/InfoCenter.php | 89 +++++++++++++++++-- application/models/crm/Prestudent_model.php | 14 +-- application/models/person/Notiz_model.php | 13 +++ .../mailtemplates/interessentFreigabe.php | 54 +++++++++++ 4 files changed, 159 insertions(+), 11 deletions(-) create mode 100644 application/views/templates/mailtemplates/interessentFreigabe.php diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 03d98dd14..c65d15238 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -69,7 +69,6 @@ class InfoCenter extends VileSci_Controller // Loads libraries $this->load->library('DmsLib'); $this->load->library('PersonLogLib'); - $this->load->library('MailLib'); $this->load->library('WidgetLib'); $this->_setAuthUID(); // sets property uid @@ -336,6 +335,8 @@ class InfoCenter extends VileSci_Controller show_error($result->retval); } + $this->_sendFreigabeMail($prestudent_id); + $logdata = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id); $this->_log($logdata['person_id'], 'freigegeben', array($prestudent_id, $logdata['studiengang_kurzbz'])); @@ -645,6 +646,7 @@ class InfoCenter extends VileSci_Controller foreach ($prestudenten->retval as $prestudent) { $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent->prestudent_id); + $personid = $this->_getPersonAndStudiengangFromPrestudent($person_id); if (isError($prestudent)) { @@ -755,9 +757,86 @@ class InfoCenter extends VileSci_Controller $this->uid ); } -/* - private function _sendFreigabeMail() + + /** + * Sends infomail with prestudent and person data when Prestudent is freigegeben + * @param $prestudent_id + */ + private function _sendFreigabeMail($prestudent_id) { - $this->maillib->send('alex@alex-ThinkCentre-M900', 'karpen_ko@hotmail.com', 'test', 'test'); - }*/ + //get data + $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id)->retval[0]; + $prestudentstatus = $prestudent->prestudentstatus; + $person_id = $prestudent->person_id; + $person = $this->PersonModel->getPersonStammdaten($person_id, true)->retval; + + //fill mail variables + $interessentbez = $person->geschlecht == 'm' ? 'Ein Interessent' : 'Eine Interessentin'; + $sprache = $prestudentstatus->sprachedetails->bezeichnung[0]; + $orgform = $prestudentstatus->orgform != '' ? ' ('.$prestudentstatus->orgform.')' : ''; + $geschlecht = $person->geschlecht == 'm' ? 'männlich' : 'weiblich'; + $geburtsdatum = date('d.m.Y', strtotime($person->gebdatum)); + + $notizenBewerbung = $this->NotizModel->getNotizByTitel($person_id, 'Anmerkung zur Bewerbung')->retval; + + $notizentext = ''; + $lastElement = end($notizenBewerbung); + foreach ($notizenBewerbung as $notiz) + { + $notizentext .= $notiz->text; + if ($notiz != $lastElement) + $notizentext .= ' | '; + } + + $mailadresse = ''; + foreach ($person->kontakte as $kontakt) + { + if ($kontakt->kontakttyp === 'email') + { + $mailadresse = $kontakt->kontakt; + break; + } + } + + $data = array + ( + 'interessentbez' => $interessentbez, + 'studiengangbez' => $prestudent->studiengangbezeichnung, + 'studiengangtypbez' => $prestudent->studiengangtyp_bez, + 'orgform' => $orgform, + 'studiensemester' => $prestudentstatus->studiensemester_kurzbz, + 'sprache' => $sprache, + 'geschlecht' => $geschlecht, + 'vorname' => $person->vorname, + 'nachname' => $person->nachname, + 'gebdatum' => $geburtsdatum, + 'mailadresse' => $mailadresse, + 'prestudentid' => $prestudent_id, + 'notizentext' => $notizentext + ); + + $this->load->library('parser'); + $this->load->library('MailLib'); + $this->load->library('LogLib'); + + //parse freigabe html email template, wordwrap wraps text so no display errors + $email = wordwrap($this->parser->parse('templates/mailtemplates/interessentFreigabe', $data, true), 70); + + $subject = ($person->geschlecht == 'm' ? 'Interessent ' : 'Interessentin ').$person->vorname.' '.$person->nachname.' freigegeben'; + + $receiver = $prestudent->studiengangmail; + + if (!empty($receiver)) + { + //Freigabeinformationmail sent from default system mail to studiengang mail(s) + $sent = $this->maillib->send('', $receiver, $subject, $email); + + if (!$sent) + $this->loglib->logError('Error when sending Freigabe mail'); + } + else + { + $this->loglib->logError('Studiengang has no mail for sending Freigabe mail'); + } + } } diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index a56592467..d75d17236 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -201,10 +201,12 @@ class Prestudent_model extends DB_Model */ public function getPrestudentWithZgv($prestudent_id) { - $this->addSelect('tbl_prestudent.*, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.bezeichnung as studiengangbezeichnung, tbl_studiengang.english as studiengangenglish, tbl_studiengang.typ as studiengangtyp, - tbl_zgv.zgv_code, tbl_zgv.zgv_bez, tbl_prestudent.zgvort, tbl_prestudent.zgvdatum, tbl_prestudent.zgvnation as zgvnation_code, zgvnat.kurztext as zgvnation_kurzbez, zgvnat.langtext as zgvnation_bez, zgvnat.engltext as zgvnation_englbez, - tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmaort, tbl_prestudent.zgvmadatum, tbl_prestudent.zgvmanation as zgvmanation_code, zgvmanat.kurztext as zgvmanation_kurzbez, zgvmanat.langtext as zgvmanation_bez, zgvmanat.engltext as zgvmanation_englbez'); + $this->addSelect('tbl_prestudent.*, tbl_studiengang.studiengang_kz, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.bezeichnung as studiengangbezeichnung, tbl_studiengang.english as studiengangenglish, + tbl_studiengang.email as studiengangmail, tbl_studiengang.typ as studiengangtyp, tbl_studiengangstyp.bezeichnung as studiengangtyp_bez, + tbl_zgv.zgv_code, tbl_zgv.zgv_bez, tbl_prestudent.zgvnation as zgvnation_code, zgvnat.kurztext as zgvnation_kurzbez, zgvnat.langtext as zgvnation_bez, zgvnat.engltext as zgvnation_englbez, + tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmanation as zgvmanation_code, zgvmanat.kurztext as zgvmanation_kurzbez, zgvmanat.langtext as zgvmanation_bez, zgvmanat.engltext as zgvmanation_englbez'); $this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT'); + $this->addJoin('public.tbl_studiengangstyp', 'typ', 'LEFT'); $this->addJoin('bis.tbl_zgv', 'zgv_code', 'LEFT'); $this->addJoin('bis.tbl_zgvmaster', 'zgvmas_code', 'LEFT'); $this->addJoin('bis.tbl_nation zgvnat', 'zgvnation = zgvnat.nation_code', 'LEFT'); @@ -223,13 +225,13 @@ class Prestudent_model extends DB_Model return error($lastStatus->retval); } - if(count($lastStatus->retval) > 0) + if (count($lastStatus->retval) > 0) { $this->load->model('system/sprache_model', 'SpracheModel'); $language = $this->SpracheModel->load($lastStatus->retval[0]->sprache); - if($language->error) + if ($language->error) return error($language->retval); - if(count($language->retval) > 0) + if (count($language->retval) > 0) $lastStatus->retval[0]->sprachedetails = $language->retval[0]; $prestudent->retval[0]->prestudentstatus = $lastStatus->retval[0]; } diff --git a/application/models/person/Notiz_model.php b/application/models/person/Notiz_model.php index 61f935d19..ccc1e2719 100644 --- a/application/models/person/Notiz_model.php +++ b/application/models/person/Notiz_model.php @@ -144,6 +144,19 @@ class Notiz_model extends DB_Model return $this->loadWhere(array('person_id' => $person_id)); } + + /** + * gets all Notizen for a person with a specific title + * @param $person_id + * @param $titel + */ + public function getNotizByTitel($person_id, $titel) + { + // Join with the table public.tbl_notizzuordnung using notiz_id + $this->addJoin('public.tbl_notizzuordnung', 'notiz_id'); + + return $this->loadWhere(array('person_id' => $person_id, 'titel' => $titel)); + } // ------------------------------------------------------------------------------------------------------ } diff --git a/application/views/templates/mailtemplates/interessentFreigabe.php b/application/views/templates/mailtemplates/interessentFreigabe.php new file mode 100644 index 000000000..91ca22f94 --- /dev/null +++ b/application/views/templates/mailtemplates/interessentFreigabe.php @@ -0,0 +1,54 @@ + + + Interessentenfreigabe mail + + +
+ {interessentbez} wurde freigegeben. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Studiengang{studiengangbez} {studiengangtypbez} {orgform} {sprache}
Studiensemester{studiensemester}
Geschlecht{geschlecht}
Vorname{vorname}
Nachname{nachname}
Geburtsdatum{gebdatum}
E-Mail Adresse{mailadresse}
Prestudent ID{prestudentid}
Anmerkungen zur Bewerbung{notizentext}
+
+ Für mehr Details verwenden Sie die Personenansicht im FAS. +
+ + + From 74702d27cab7551c056921a378ca1f816175b47b Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 23 Feb 2018 11:04:26 +0100 Subject: [PATCH 02/14] Termindauer wird auf Auswahlseite angezeigt --- cis/public/coodle.php | 979 ++++++++++++++++++++++-------------------- 1 file changed, 512 insertions(+), 467 deletions(-) diff --git a/cis/public/coodle.php b/cis/public/coodle.php index ac007146b..2ad68c48f 100644 --- a/cis/public/coodle.php +++ b/cis/public/coodle.php @@ -19,213 +19,217 @@ * Authors: Karl Burkhart , * 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'); +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); +$sprache = getSprache(); +$p = new phrasen($sprache); $datum_obj = new datum(); $message = ''; -$mailMessage=''; -$saveOk=null; -$ersteller = false; -$abgeschlossen = false; +$mailMessage = ''; +$saveOk = null; +$ersteller = false; +$abgeschlossen = false; -$coodle_id = (isset($_GET['coodle_id'])?$_GET['coodle_id']:''); +$coodle_id = (isset($_GET['coodle_id']) ? $_GET['coodle_id'] : ''); -$coodle = new coodle(); -if(!$coodle->load($coodle_id)) - die($coodle->errormsg); +$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')); +// Überprüfen ob Coodle Status laufend oder abgeschlossen hat +if (! $coodle->checkStatus($coodle_id)) + die($p->t('coodle/umfrageNichtGueltig')); // authentifizierung -if(!isset($_GET['zugangscode'])) +if (! isset($_GET['zugangscode'])) { $uid = get_uid(); - if(!$coodle->checkBerechtigung($coodle_id, $uid)) - die($p->t('coodle/keineBerechtigung')); + 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; + if ($coodle->ersteller_uid == $uid) + $ersteller = true; } else { - if(!$coodle->checkBerechtigung($coodle_id, '', $_GET['zugangscode'])) - die($p->t('coodle/keineBerechtigung')); + if (! $coodle->checkBerechtigung($coodle_id, '', $_GET['zugangscode'])) + die($p->t('coodle/keineBerechtigung')); } // checkboxen speichern -if(isset ($_POST['save'])) +if (isset($_POST['save'])) { - $coodle_help = new coodle(); + $coodle_help = new coodle(); $error = false; $teilnehmer_uid = ''; // Ressource ID von Zugangscode oder UID holen und Beiträge löschen - if(isset($_GET['zugangscode'])) + 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); + $coodle_ressource_termin = $coodle_help->deleteRessourceTermin($coodle_id, $coodle_help->coodle_ressource_id); $teilnehmer_uid = $coodle_help->coodle_ressource_id; } else { - if($coodle_help->RessourceExists($coodle_id, $uid)) + 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); + $coodle_ressource_termin = $coodle_help->deleteRessourceTermin($coodle_id, $coodle_help->coodle_ressource_id); $teilnehmer_uid = $coodle_help->coodle_ressource_id; } } - // Einträge speichern - foreach($_POST as $key=>$value) + // Einträge speichern + foreach ($_POST as $key => $value) { - if(mb_substr($key, 0, 5) =='check') + 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 = 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; + $coodle_ressource_termin->coodle_termin_id = $termin_id; + $coodle_ressource_termin->new = true; + + if (! $coodle_ressource_termin->saveRessourceTermin()) + $error = true; } } - if($error) + if ($error) { - $message.= "".$p->t('global/fehlerBeimSpeichernDerDaten')."
"; + $message .= "" . $p->t('global/fehlerBeimSpeichernDerDaten') . "
"; } else { $coodle_help->load($coodle_id); // email an ersteller senden wenn option aktiviert - if ($coodle_help->mailversand && (!isset($_POST['auswahl_termin']))) - sendBenachrichtigung($coodle_id,$teilnehmer_uid); + if ($coodle_help->mailversand && (! isset($_POST['auswahl_termin']))) + sendBenachrichtigung($coodle_id, $teilnehmer_uid); - $saveOk=true; + $saveOk = true; } } // endgültige auswahl des termins speichern -if(isset($_POST['auswahl_termin'])) +if (isset($_POST['auswahl_termin'])) { - if($ersteller) + if ($ersteller) { - $auswahl = $_POST['auswahl_termin']; - if($auswahl!='') + $auswahl = $_POST['auswahl_termin']; + if ($auswahl != '') { // setzte auswahl von termin_id auf true - $coodle_help = new coodle(); + $coodle_help = new coodle(); $coodle_help->loadTermin($auswahl); - $coodle_help->auswahl = true; + $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')."
"; + if (! $coodle_help->setTerminFalse($coodle_id)) + exit('Fehler beim Update aufgetreten'); + + if (! $coodle_help->saveTermin(false)) + $message .= "" . $p->t('global/fehlerBeimSpeichernDerDaten') . "
"; else - $saveOk=true; + $saveOk = true; - $coodle_status = new coodle(); - $coodle_status->load($coodle_id); - $coodle_status->coodle_status_kurzbz = 'abgeschlossen'; - $coodle_status->new = false; - $coodle_status->save(); + $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); + sendEmail($coodle_id); - - if($coodle_help->datumdatum < RES_TAGE_LEKTOR_BIS) { // Raum reservieren - $coodle_raum = new coodle(); - $coodle_raum->getRaumeFromId($coodle_id); + $coodle_raum = new coodle(); + $coodle_raum->getRaumeFromId($coodle_id); - //Ende Uhrzeit berechnen - $date = new DateTime($coodle_help->datum.' '.$coodle_help->uhrzeit); - $interval =new DateInterval('PT'.$coodle->dauer.'M'); + // 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) + + 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)) + if (! RaumBelegt($raum->ort_kurzbz, $coodle_help->datum, $stunden)) { - $reservierung_error=false; + $reservierung_error = false; // Stunden reservieren - foreach($stunden as $stunde) + 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 = 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->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.= "Reserviere $raum->ort_kurzbz Stunde $stunde:"; + if (! $raum_reservierung->save(true)) + $reservierung_error = true; } - $message.= $p->t('coodle/raumErfolgreichReserviert', array($raum->ort_kurzbz)).'
'; + $message .= $p->t('coodle/raumErfolgreichReserviert', array( + $raum->ort_kurzbz + )) . '
'; } else { - $message.=''.$p->t('coodle/raumBelegt', array($raum->ort_kurzbz)).'
'; + $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'))).'
'; + $message .= '' . $p->t('coodle/raumNichtReserviert', array( + $datum_obj->formatDatum(RES_TAGE_LEKTOR_BIS, 'd.m.Y') + )) . '
'; } } } else - $message.= ''.$p-t('global/keineBerechtigung').''; + $message .= '' . $p - t('global/keineBerechtigung') . ''; } +$coodle->load($coodle_id); -$coodle->load($coodle_id); +if ($coodle->coodle_status_kurzbz == 'abgeschlossen') + $abgeschlossen = true; -if($coodle->coodle_status_kurzbz == 'abgeschlossen') - $abgeschlossen = true; - -if(isset($_GET['resend'])) +if (isset($_GET['resend'])) { - if($ersteller && $abgeschlossen) - sendEmail ($coodle_id); + if ($ersteller && $abgeschlossen) + sendEmail($coodle_id); } ?> @@ -255,11 +259,16 @@ if(isset($_GET['resend'])) function showInfotext() { $("#infotext").show(); - } + }; function hideInfotext() { $("#infotext").hide(); - } + }; + window.setTimeout(function() { + $("#success-alert").fadeTo(500, 0).slideUp(500, function(){ + $(this).remove(); + }); + }, 1500); '.$p->t('coodle/coodle').''; +echo '

' . $p->t('coodle/coodle') . '

'; -if(!isset($_GET['zugangscode'])) - echo "<< ".$p->t('coodle/zurueckZurUebersicht').""; +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) ; +$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); -$ersteller_name = trim($benutzer->vorname.' '.$benutzer->nachname); -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)
'; +// $ersteller_name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); +$ersteller_name = trim($benutzer->vorname . ' ' . $benutzer->nachname); +echo '

' . $coodle->titel . '

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

'; + echo $coodle->beschreibung; echo '
'; -if($abgeschlossen) +if ($abgeschlossen) { $datum = new datum(); $coodle_abgeschlossen = new coodle(); $termin_id = $coodle_abgeschlossen->getTerminAuswahl($coodle_id); $coodle_abgeschlossen->loadTermin($termin_id); - echo '

'.$p->t('coodle/umfrageAbgeschlossen',array($datum->formatDatum($coodle_abgeschlossen->datum, 'd.m.Y').' '.$coodle_abgeschlossen->uhrzeit)).'
'; + echo '

' . $p->t('coodle/umfrageAbgeschlossen', array( + $datum->formatDatum($coodle_abgeschlossen->datum, 'd.m.Y') . ' ' . $coodle_abgeschlossen->uhrzeit + )) . '
'; } 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(); - $datum_colspan = ''; - $mailadressen = '?subject=Coodle%20Umfrage%20'.htmlspecialchars($coodle->titel).'&bcc='; +$coodle_ressourcen = new coodle(); +$coodle_ressourcen->getRessourcen($coodle_id); - echo "
+// alle termine der coodle umfrage holen +$coodle_termine = new coodle(); +$coodle_termine->getTermine($coodle_id); + +$datum = new datum(); +$datum_colspan = ''; +$mailadressen = '?subject=Coodle%20Umfrage%20' . htmlspecialchars($coodle->titel) . '&bcc='; + +echo "
"; - // Für Colspan bei Datum - $max_colspan = array(); - foreach($coodle_termine->result as $termin) - { - $max_colspan[] .= $termin->datum; - } +// Für Colspan bei Datum +$max_colspan = array(); +foreach ($coodle_termine->result as $termin) +{ + $max_colspan[] .= $termin->datum; +} - 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'; - - // Colspan für Datum berechnen - $count = array_count_values($max_colspan); - $colspan = $count[$termin->datum]; - - if($datum_colspan != $termin->datum && $termin->datum != '1900-01-01') - echo ""; - - $datum_colspan = $termin->datum; - } - if($ersteller) - echo ''; - 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'; + + // Colspan für Datum berechnen + $count = array_count_values($max_colspan); + $colspan = $count[$termin->datum]; + + if ($datum_colspan != $termin->datum && $termin->datum != '1900-01-01') + echo ""; + + $datum_colspan = $termin->datum; +} +if ($ersteller) + echo ''; +echo ""; + +foreach ($coodle_termine->result as $termin) +{ + $class_auswahl = 'normal_uhrzeit'; + $time = strtotime($termin->uhrzeit); + // Endzeit berechnen + $ende = $time + ($coodle->dauer * 60); + + $coodle_auswahl = new coodle(); + + // Falls es schon eine Auswahl gibt - hervorheben + if ($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) + $class_auswahl = 'auswahl_uhrzeit'; + + if ($termin->datum != '1900-01-01') + echo ""; + else + echo ''; +} +echo ""; + +foreach ($coodle_ressourcen->result as $ressource) +{ + $name = ''; + $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; - foreach($coodle_termine->result as $termin) - { - $class_auswahl='normal_uhrzeit'; - $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_uhrzeit'; - - if($termin->datum != '1900-01-01') - echo ""; - else - echo ''; - } - echo ""; - - foreach($coodle_ressourcen->result as $ressource) - { - $name = ''; - $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; - - $mailadressen .= $ressource->uid.'@'.DOMAIN.';'; - - $ressource->anzeigename = $name; - $ressource->vorname = $benutzer->vorname; - $ressource->nachname = $benutzer->nachname; - } - - // wenn uid nicht gesetzt ist nimm zugangscode - if($ressource->zugangscode != '' && $ressource->uid == '') - { - $name = $ressource->name; - $ressource->anzeigename = $name; - $ressource->vorname = $name; - $ressource->nachname = $name; - - $mailadressen .= ';'.$ressource->email; - } - - - } - - //Sortiert die Ressourcen alphabetisch nach anzeigename - function sortRessourcen($a, $b) - { - return strcmp($a->nachname.''.$a->vorname, $b->nachname.''.$b->vorname); - } - usort($coodle_ressourcen->result, "sortRessourcen"); + $mailadressen .= $ressource->uid . '@' . DOMAIN . ';'; - $owner = false; - // ressourcen durchlaufen - foreach($coodle_ressourcen->result as $ressource) - { - $owner = false; - // Ist der User ident mit einer Ressource - if(isset($_GET['zugangscode']) && $_GET['zugangscode'] == $ressource->zugangscode) - $owner = true; - if(!isset($_GET['zugangscode']) && $ressource->uid == $uid) - $owner = true; - - if ($coodle_help->teilnehmer_anonym && !$owner) - continue; - else - { - - // Ort-Ressourcen ueberspringen - if($ressource->ort_kurzbz != '') - continue; - - $class = 'normal'; - // eigene Reihe farbig hervorheben - if ($owner) - $class = 'owner'; - // Bei anonymen TeilnehmerInnen entfaellt das Hervorheben - if ($coodle_help->teilnehmer_anonym) - $class = 'normal'; - - echo ""; - - $termin_datum = ''; - $disabled = false; - $checked = false; - - $coodle_ressource = new coodle(); - if (isset($_GET['zugangscode'])) - { - $coodle_ressource->getRessourceFromUser($coodle_id, '', $_GET['zugangscode']); - if($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) - $disabled = true; - } - else - { - $coodle_ressource->getRessourceFromUser($coodle_id, $uid); - if($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) - $disabled = true; - } - - if($abgeschlossen) - $disabled = true; - - // termine zu ressourcen anzeigen - foreach($coodle_termine->result as $termin) - { - $checked = false; - $style = ''; - if($coodle_termine->checkTermin($termin->coodle_termin_id, $ressource->coodle_ressource_id)) - $checked = true; - - if ($termin_datum != '' && $termin_datum != $termin->datum) - $style = 'style="border-left: 1px solid #DCDDDF;"'; - - if ($coodle_help->termine_anonym && !$owner && !$ersteller) - echo ""; - else - { - if ($disabled) - { - if ($checked) - echo ''; - else - echo ''; - } - else - { - // Der 01.01.1900 wird fuer "Keine Auswahl" verwendet. Beim anklicken der Checkbox werden alle anderen Checkboxen deaktiviert - echo ''; - } - } - - $termin_datum = $termin->datum; - } - if($ersteller) - echo ""; - echo ''; - } - } + $ressource->anzeigename = $name; + $ressource->vorname = $benutzer->vorname; + $ressource->nachname = $benutzer->nachname; + } + + // wenn uid nicht gesetzt ist nimm zugangscode + if ($ressource->zugangscode != '' && $ressource->uid == '') + { + $name = $ressource->name; + $ressource->anzeigename = $name; + $ressource->vorname = $name; + $ressource->nachname = $name; - $disabled = $abgeschlossen?'disabled':''; + $mailadressen .= ';' . $ressource->email; + } +} - // Counter fuer Anzahl der Auswahlen pro Termin - $counter_arr = array(); - foreach($coodle_termine->result as $termin) - { - $countTermine = new coodle(); - $countTermine->countTermin($termin->coodle_termin_id); - - $counter_arr[] = $countTermine->anzahl; - } +// Sortiert die Ressourcen alphabetisch nach anzeigename +function sortRessourcen($a, $b) +{ + return strcmp($a->nachname . '' . $a->vorname, $b->nachname . '' . $b->vorname); +} +usort($coodle_ressourcen->result, "sortRessourcen"); + +$owner = false; +// ressourcen durchlaufen +foreach ($coodle_ressourcen->result as $ressource) +{ + $owner = false; + // Ist der User ident mit einer Ressource + if (isset($_GET['zugangscode']) && $_GET['zugangscode'] == $ressource->zugangscode) + $owner = true; + if (! isset($_GET['zugangscode']) && $ressource->uid == $uid) + $owner = true; + + if ($coodle_help->teilnehmer_anonym && ! $owner) + continue; + else + { + + // Ort-Ressourcen ueberspringen + if ($ressource->ort_kurzbz != '') + continue; + + $class = 'normal'; + // eigene Reihe farbig hervorheben + if ($owner) + $class = 'owner'; + // Bei anonymen TeilnehmerInnen entfaellt das Hervorheben if ($coodle_help->teilnehmer_anonym) - echo ''; - elseif ($coodle_help->termine_anonym) - echo ''; + $class = 'normal'; - echo ''; - foreach($coodle_termine->result as $termin) + echo ""; + + $termin_datum = ''; + $disabled = false; + $checked = false; + + $coodle_ressource = new coodle(); + if (isset($_GET['zugangscode'])) { - $countTermine = new coodle(); - $countTermine->countTermin($termin->coodle_termin_id); - - if ($countTermine->anzahl == max($counter_arr)) - echo ''; - else - echo ''; + $coodle_ressource->getRessourceFromUser($coodle_id, '', $_GET['zugangscode']); + if ($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) + $disabled = true; } - if($ersteller) - echo ''; - echo ""; - - if($ersteller) + else { - // buttons für auswahl des endgültigen termins - echo ''; - foreach($coodle_termine->result as $termin) + $coodle_ressource->getRessourceFromUser($coodle_id, $uid); + if ($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) + $disabled = true; + } + + if ($abgeschlossen) + $disabled = true; + + // termine zu ressourcen anzeigen + foreach ($coodle_termine->result as $termin) + { + $checked = false; + $style = ''; + if ($coodle_termine->checkTermin($termin->coodle_termin_id, $ressource->coodle_ressource_id)) + $checked = true; + + if ($termin_datum != '' && $termin_datum != $termin->datum) + $style = 'style="border-left: 1px solid #DCDDDF;"'; + + if ($coodle_help->termine_anonym && ! $owner && ! $ersteller) + echo ""; + else { - $checked=($termin->auswahl)?'checked':''; - if ($termin->datum != '1900-01-01') - echo ''; + if ($disabled) + { + if ($checked) + echo ''; + else + echo ''; + } else - echo ''; + { + // Der 01.01.1900 wird fuer "Keine Auswahl" verwendet. Beim anklicken der Checkbox werden alle anderen Checkboxen deaktiviert + echo ''; + } } - echo ''; - echo ""; + + $termin_datum = $termin->datum; } - if($ersteller && $abgeschlossen) - echo ' '; - echo ' - + if ($ersteller) + echo ""; + echo ''; + } +} + +$disabled = $abgeschlossen ? 'disabled' : ''; + +// Counter fuer Anzahl der Auswahlen pro Termin +$counter_arr = array(); +foreach ($coodle_termine->result as $termin) +{ + $countTermine = new coodle(); + $countTermine->countTermin($termin->coodle_termin_id); + + $counter_arr[] = $countTermine->anzahl; +} +if ($coodle_help->teilnehmer_anonym) + echo ''; +elseif ($coodle_help->termine_anonym) + echo ''; + +echo ''; +foreach ($coodle_termine->result as $termin) +{ + $countTermine = new coodle(); + $countTermine->countTermin($termin->coodle_termin_id); + + if ($countTermine->anzahl == max($counter_arr)) + echo ''; + else + echo ''; +} +if ($ersteller) + echo ''; +echo ""; + +if ($ersteller) +{ + // buttons für auswahl des endgültigen termins + echo ''; + foreach ($coodle_termine->result as $termin) + { + $checked = ($termin->auswahl) ? 'checked' : ''; + if ($termin->datum != '1900-01-01') + echo ''; + else + echo ''; + } + echo ''; + echo ""; +} +if ($ersteller && $abgeschlossen) + echo ' '; +echo ' +
".$datum->formatDatum($termin->datum, 'd.m.Y')."
" . $datum->formatDatum($termin->datum, 'd.m.Y') . "
" . date('H:i', $time) . " -
" . date('H:i', $ende) . "  
' . $p->t('coodle/keinTerminMoeglich') . '
".date('H:i',$time)."'.$p->t('coodle/keinTerminMoeglich').'
".$ressource->anzeigename." - datum == '1900-01-01'?'id="disableCheckboxes"':'').' - name="check_'.$ressource->coodle_ressource_id.'_'.$termin->coodle_termin_id.'"> -
Die TeilnehmerInnen dieser Umfrage sind anonym
Die Terminwahl dieser Umfrage erfolgt anonym
Summe der Einträge
" . $ressource->anzeigename . "'.$countTermine->anzahl.''.$countTermine->anzahl.''.$p->t('coodle/keineAuswahl').'
'.$p->t('coodle/auswahlEndtermin').' + datum == '1900-01-01' ? 'id="disableCheckboxes"' : '') . ' + name="check_' . $ressource->coodle_ressource_id . '_' . $termin->coodle_termin_id . '"> +
Mail an alle schicken
'; - - if($ersteller && $abgeschlossen) - echo ''; - if($saveOk===true) - echo ' '.$p->t('global/erfolgreichgespeichert').''; - echo "
Die TeilnehmerInnen dieser Umfrage sind anonym
Die Terminwahl dieser Umfrage erfolgt anonym
Summe der Einträge' . $p->t('coodle/keineAuswahl') . '
' . $p->t('coodle/auswahlEndtermin') . '
Mail an alle schicken
'; + +if ($ersteller && $abgeschlossen) + echo ''; +if ($saveOk === true) + echo '
+ ' . $p->t('global/erfolgreichgespeichert') . ' +
'; +echo "
-
".$message.'
'.$mailMessage; +
" . $message . '
' . $mailMessage; ?>
@@ -657,100 +698,101 @@ echo '

-load($coodle_id)) + global $uid; + global $coodle; + $coodle_send = new coodle(); + + if (! $coodle_send->load($coodle_id)) { die("Fehler beim senden aufgetreten"); } - $mitarbeiter = new mitarbeiter(); - $person = new person(); + $mitarbeiter = new mitarbeiter(); + $person = new person(); $teilnehmer = new coodle(); $teilnehmer->getRessourceFromId($teilnehmer_id); - if ($teilnehmer->zugangscode!='') + if ($teilnehmer->zugangscode != '') $tn = $teilnehmer->name; - else + else { $mitarbeiter->load($teilnehmer->uid); $person->load($mitarbeiter->person_id); - $tn = $person->vorname." ".$person->nachname; + $tn = $person->vorname . " " . $person->nachname; } - $mitarbeiter->load($coodle_send->ersteller_uid); + $mitarbeiter->load($coodle_send->ersteller_uid); $person->load($mitarbeiter->person_id); - + $email = ''; - $name = ''; - $name.= ($person->titelpre != '')?$person->titelpre.' ':''; - $name.= $person->vorname.' '.$person->nachname; - $name.= ($person->titelpost != '')?' '.$person->titelpost:''; + $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."!

"; + if ($person->geschlecht == 'w') + $email .= 'Sehr geehrte Frau ' . $name . "!

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

"; - - $link = APP_ROOT.'cis/public/coodle.php?coodle_id='.urlencode($coodle_id).'&uid='.urlencode($uid); - $email.= $tn.' hat einen Termin zu Ihrer Coodle-Umfrage mit dem Thema "'.$coodle->titel.'" ausgewählt.
Link zu Ihrer Coodle Umfrage

Mit freundlichen Grüßen

+ $email .= "Sehr geehrter Herr " . $name . "!

"; + + $link = APP_ROOT . 'cis/public/coodle.php?coodle_id=' . urlencode($coodle_id) . '&uid=' . urlencode($uid); + $email .= $tn . ' hat einen Termin zu Ihrer Coodle-Umfrage mit dem Thema "' . $coodle->titel . '" ausgewählt.
Link zu Ihrer Coodle Umfrage

Mit freundlichen Grüßen

Fachhochschule Technikum Wien
Höchstädtplatz 6
- 1200 Wien'; + 1200 Wien'; - $mail = new mail($coodle_send->ersteller_uid.'@'.DOMAIN, 'no-reply', 'Feedback zu Ihrer Coodle Umfrage "' . $coodle->titel . '"', '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"); + $mail = new mail($coodle_send->ersteller_uid . '@' . DOMAIN, 'no-reply', 'Feedback zu Ihrer Coodle Umfrage "' . $coodle->titel . '"', '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 + * @param type $auswahl */ function sendEmail($coodle_id) { global $mailMessage; - global $p; - $coodle_help = new coodle(); - $termin_id = $coodle_help->getTerminAuswahl($coodle_id); + 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!='') + $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"; + if ($ort != '') + $ort .= ', '; + $ort .= "$row->ort_kurzbz"; } else { - if($row->uid!='') + if ($row->uid != '') { $benutzer = new benutzer(); $benutzer->load($row->uid); - $name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); - $mail = $row->uid.'@'.DOMAIN; + $name = trim($benutzer->titelpre . ' ' . $benutzer->vorname . ' ' . $benutzer->nachname . ' ' . $benutzer->titelpost); + $mail = $row->uid . '@' . DOMAIN; } else { @@ -758,29 +800,29 @@ function sendEmail($coodle_id) $name = $row->name; } $coodle_ressource_termin = new coodle(); - $partstat=''; - if($coodle_ressource_termin->checkTermin($termin_id, $row->coodle_ressource_id)) - $partstat='ACCEPTED'; + $partstat = ''; + if ($coodle_ressource_termin->checkTermin($termin_id, $row->coodle_ressource_id)) + $partstat = 'ACCEPTED'; else - $partstat='TENTATIVE'; + $partstat = 'TENTATIVE'; - $teilnehmer.='ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT='.$partstat.';CN='.$name."\n :MAILTO:".$mail."\n"; + $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 + $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'); + + // 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 + $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 @@ -803,50 +845,50 @@ 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." +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)." +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) + + if (count($coodle_ressource->result) > 0) { - foreach($coodle_ressource->result as $row) + foreach ($coodle_ressource->result as $row) { - if($row->uid!='') + if ($row->uid != '') { $benutzer = new benutzer(); - if(!$benutzer->load($row->uid)) + if (! $benutzer->load($row->uid)) { - $mailMessage.="Fehler beim Laden des Benutzers ".$coodle_ressource->convert_html_chars($row->uid); + $mailMessage .= "Fehler beim Laden des Benutzers " . $coodle_ressource->convert_html_chars($row->uid); continue; } - - if($benutzer->geschlecht=='w') + + if ($benutzer->geschlecht == 'w') $anrede = "Sehr geehrte Frau "; else $anrede = "Sehr geehrter Herr "; - - $anrede.= $benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost; - + + $anrede .= $benutzer->titelpre . ' ' . $benutzer->vorname . ' ' . $benutzer->nachname . ' ' . $benutzer->titelpost; + // Interner Teilnehmer - $email = $row->uid.'@'.DOMAIN; + $email = $row->uid . '@' . DOMAIN; } - elseif($row->email!='') + elseif ($row->email != '') { // Externe Teilnehmer $email = $row->email; - $anrede='Sehr geehrte(r) Herr/Frau '.$row->name; + $anrede = 'Sehr geehrte(r) Herr/Frau ' . $row->name; } else { @@ -855,27 +897,29 @@ END:VCALENDAR"; } $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. + + $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. + 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 = new mail($email, 'no-reply@' . DOMAIN, 'Terminbestätigung - ' . $coodle->titel, $text); $mail->setHTMLContent($html); - //ICal Termineinladung hinzufuegen + // ICal Termineinladung hinzufuegen $mail->addAttachmentPlain($ical, 'text/calendar', 'meeting.ics'); - if($mail->send()) + if ($mail->send()) { - $mailMessage.= $p->t('coodle/mailVersandtAn',array($email))."
"; - } + $mailMessage .= $p->t('coodle/mailVersandtAn', array( + $email + )) . "
"; + } } } else @@ -885,33 +929,34 @@ END:VCALENDAR"; } /** - * + * * Prueft ob ein Raum belegt ist + * * @param $ort_kurzbz * @param $datum * @param array $stunden */ function RaumBelegt($ort_kurzbz, $datum, $stunden) { - foreach($stunden as $stunde) + foreach ($stunden as $stunde) { - //Reservierungen pruefen + // Reservierungen pruefen $raum_reservierung = new reservierung(); - if($raum_reservierung->isReserviert($ort_kurzbz, $datum, $stunde)) + if ($raum_reservierung->isReserviert($ort_kurzbz, $datum, $stunde)) { return true; } - //Stundenplan abfragen + // Stundenplan abfragen $stundenplan = new stundenplan('stundenplan'); - if($stundenplan->isBelegt($ort_kurzbz, $datum, $stunde)) + if ($stundenplan->isBelegt($ort_kurzbz, $datum, $stunde)) { return true; } - //Stundenplan DEV abfragen + // Stundenplan DEV abfragen $stundenplan = new stundenplan('stundenplandev'); - if($stundenplan->isBelegt($ort_kurzbz, $datum, $stunde)) + if ($stundenplan->isBelegt($ort_kurzbz, $datum, $stunde)) { return true; } From feb3a4be08864df488e08b20ddb226a7ca52b7c1 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 23 Feb 2018 11:13:10 +0100 Subject: [PATCH 03/14] Funktion getStudiengaengeDokument ignoriert Abgewiesene und Abbrecher --- include/dokument.class.php | 1 + include/functions.inc.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/include/dokument.class.php b/include/dokument.class.php index 1b8514c9e..e7eb50b05 100644 --- a/include/dokument.class.php +++ b/include/dokument.class.php @@ -826,6 +826,7 @@ class dokument extends basis_db WHERE dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz)." AND person_id =".$this->db_add_param($person_id, FHC_INTEGER)." AND tbl_prestudentstatus.status_kurzbz = 'Interessent' + AND get_rolle_prestudent (prestudent_id, NULL) NOT IN ('Abgewiesener','Abbrecher') ORDER BY kuerzel"; diff --git a/include/functions.inc.php b/include/functions.inc.php index 6f6c5cc3b..447c3f772 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -27,7 +27,7 @@ require_once(dirname(__FILE__).'/personlog.class.php'); // Auth: Benutzer des Webportals /** * DEPRECATED - Use Authentication Class - */ + */ function get_uid() { $auth = new authentication(); From 1a15c134d1c6996bcb7137cfcb7af0f16b251ff3 Mon Sep 17 00:00:00 2001 From: oesi Date: Fri, 23 Feb 2018 15:41:23 +0100 Subject: [PATCH 04/14] =?UTF-8?q?Problem=20behoben=20beim=20Pr=C3=BCfen=20?= =?UTF-8?q?der=20Vertrags-Betr=C3=A4ge=20wenn=20Stundensatz=20oder=20Semes?= =?UTF-8?q?terstunden=20NULL=20sind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/vertrag.class.php | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/include/vertrag.class.php b/include/vertrag.class.php index 7ed1fadde..8ebb602b4 100644 --- a/include/vertrag.class.php +++ b/include/vertrag.class.php @@ -1078,16 +1078,21 @@ class vertrag extends basis_db */ public function getFalscheBetraege($studiensemester_kurzbz) { - $qry = "SELECT - tbl_vertrag.*, tbl_lehreinheitmitarbeiter.mitarbeiter_uid, tbl_lehreinheitmitarbeiter.lehreinheit_id, - tbl_lehreinheitmitarbeiter.stundensatz, tbl_lehreinheitmitarbeiter.semesterstunden - FROM - lehre.tbl_vertrag - JOIN lehre.tbl_lehreinheitmitarbeiter USING(vertrag_id) - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - WHERE - studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." - AND tbl_lehreinheitmitarbeiter.semesterstunden*tbl_lehreinheitmitarbeiter.stundensatz!=tbl_vertrag.betrag"; + $qry = "SELECT * FROM + ( + SELECT + tbl_vertrag.*, tbl_lehreinheitmitarbeiter.mitarbeiter_uid, tbl_lehreinheitmitarbeiter.lehreinheit_id, + COALESCE(tbl_lehreinheitmitarbeiter.stundensatz, 0) as stundensatz, + COALESCE(tbl_lehreinheitmitarbeiter.semesterstunden, 0) as semesterstunden + FROM + lehre.tbl_vertrag + JOIN lehre.tbl_lehreinheitmitarbeiter USING(vertrag_id) + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + WHERE + studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + )x + WHERE + x.semesterstunden * x.stundensatz != x.betrag"; if($result = $this->db_query($qry)) { From a07fa5e8ba71dbfbfeedce756b2599780ca7e1f1 Mon Sep 17 00:00:00 2001 From: oesi Date: Mon, 26 Feb 2018 09:56:28 +0100 Subject: [PATCH 05/14] Problem behoben wodurch UDF bei Mitarbeitern nicht korrekt ausgeblendet wurden --- content/mitarbeiter/mitarbeiteroverlay.xul.php | 1 + 1 file changed, 1 insertion(+) diff --git a/content/mitarbeiter/mitarbeiteroverlay.xul.php b/content/mitarbeiter/mitarbeiteroverlay.xul.php index 51ac61ddf..4af5bf350 100644 --- a/content/mitarbeiter/mitarbeiteroverlay.xul.php +++ b/content/mitarbeiter/mitarbeiteroverlay.xul.php @@ -28,6 +28,7 @@ header("Pragma: no-cache"); header("Content-type: application/vnd.mozilla.xul+xml"); require_once('../../config/vilesci.config.inc.php'); +require_once('../../config/global.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/benutzerberechtigung.class.php'); From 67ae79d4e04247eda4b4cb0c89b0f53378a321b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 26 Feb 2018 10:40:55 +0100 Subject: [PATCH 06/14] =?UTF-8?q?Infocenter=20Spalte=20fuer=20abgeschickte?= =?UTF-8?q?=20Studiengaenge=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/system/infocenter/infocenterData.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 1caa6ffb4..9dd0ef176 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -64,9 +64,23 @@ AND tbl_studiengang.typ in(\'b\') LIMIT 1 ) AS "AnzahlAbgeschickt", + array_to_string( + ( + SELECT array_agg(tbl_studiengang.kurzbzlang) + FROM + public.tbl_prestudentstatus pss + INNER JOIN public.tbl_prestudent ps USING(prestudent_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE pss.status_kurzbz = \'Interessent\' + AND pss.bewerbung_abgeschicktamum IS NOT NULL + AND ps.person_id = p.person_id + AND tbl_studiengang.typ in(\'b\') + LIMIT 1 + ),\',\' + ) AS "StgAbgeschickt", pl.zeitpunkt AS "LockDate" FROM public.tbl_person p - LEFT JOIN (SELECT person_id, zeitpunkt FROM system.tbl_person_lock WHERE app = \''.$APP.'\') pl USING(person_id) + LEFT JOIN (SELECT person_id, zeitpunkt FROM system.tbl_person_lock WHERE app = \''.$APP.'\') pl USING(person_id) WHERE EXISTS( SELECT 1 From 526cacbe96abd1dd28e34605ed41e6ca8c8cdd12 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 26 Feb 2018 11:15:26 +0100 Subject: [PATCH 07/14] Adding "anrede" to CIS-search and profile --- cis/private/profile/index.php | 1 + cis/private/tools/suche.php | 3 ++- include/benutzer.class.php | 3 ++- locale/de-AT/global.php | 1 + locale/en-US/global.php | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cis/private/profile/index.php b/cis/private/profile/index.php index 0ada54965..6961ddf11 100644 --- a/cis/private/profile/index.php +++ b/cis/private/profile/index.php @@ -230,6 +230,7 @@ echo ''; echo ' '.($type=="student"?$p->t("profil/student"):$p->t('profil/mitarbeiter')).'

'.$p->t('global/username').': '.$user->uid.'
+ '.$p->t('global/anrede').': '.$user->anrede.'
'.$p->t('global/titel').': '.$user->titelpre.'
'; if(!$ansicht) diff --git a/cis/private/tools/suche.php b/cis/private/tools/suche.php index 89d3030fb..b262ea01c 100644 --- a/cis/private/tools/suche.php +++ b/cis/private/tools/suche.php @@ -82,7 +82,6 @@ $searchItems = explode(' ',TRIM(str_replace(',', '', $search),'!.?')); // Leerzeichen und Whitespaces entfernen $searchItems = preg_replace("/\s/", '', $searchItems); - // Leere Strings aus Array entfernen while ($array_key = array_search("", $searchItems)) unset ($searchItems[$array_key]); @@ -139,6 +138,7 @@ function searchPerson($searchItems) echo ' + @@ -161,6 +161,7 @@ function searchPerson($searchItems) echo ''; //echo ''; + echo ''; echo ''; echo '
',$p->t('global/anrede'),' ',$p->t('global/vorname'),' ',$p->t('global/nachname'),' ',$p->t('global/studiengang'),'
',$row->titelpre,'',$row->anrede,'',$row->vorname,'',$row->nachname,''; if($row->aktiv==false) diff --git a/include/benutzer.class.php b/include/benutzer.class.php index 999f19da8..7025044b3 100644 --- a/include/benutzer.class.php +++ b/include/benutzer.class.php @@ -304,7 +304,7 @@ class benutzer extends person { $qry = "SELECT * FROM ( SELECT - distinct on (uid) vorname, nachname, uid, mitarbeiter_uid, titelpre, titelpost, lektor, fixangestellt, alias, tbl_benutzer.aktiv, + distinct on (uid) vorname, nachname, uid, mitarbeiter_uid, titelpre, titelpost, lektor, fixangestellt, alias, tbl_benutzer.aktiv, anrede, (SELECT UPPER (tbl_studiengang.typ || tbl_studiengang.kurzbz) FROM public.tbl_student @@ -371,6 +371,7 @@ class benutzer extends person $obj->lektor = $row->lektor; $obj->fixangestellt = $row->fixangestellt; $obj->aktiv = $this->db_parse_bool($row->aktiv); + $obj->anrede = $row->anrede; $this->result[] = $obj; } diff --git a/locale/de-AT/global.php b/locale/de-AT/global.php index ca75ca7c4..318e7e5f6 100644 --- a/locale/de-AT/global.php +++ b/locale/de-AT/global.php @@ -65,6 +65,7 @@ $this->phrasen['global/oder']='oder'; $this->phrasen['global/username']='Username'; $this->phrasen['global/vorname']='Vorname'; $this->phrasen['global/nachname']='Nachname'; +$this->phrasen['global/anrede']='Anrede'; $this->phrasen['global/name']='Name'; $this->phrasen['global/uid']='UID'; $this->phrasen['global/postnomen']='Postnomen'; diff --git a/locale/en-US/global.php b/locale/en-US/global.php index 1ff736473..0fa50791b 100644 --- a/locale/en-US/global.php +++ b/locale/en-US/global.php @@ -64,6 +64,7 @@ $this->phrasen['global/oder']='or'; $this->phrasen['global/username']='Username'; $this->phrasen['global/vorname']='First Name'; $this->phrasen['global/nachname']='Last Name'; +$this->phrasen['global/anrede']='Title'; $this->phrasen['global/name']='Name'; $this->phrasen['global/uid']='UID'; $this->phrasen['global/postnomen']='Postnomen'; From ac1f55b19c94554d96315b235951e366752f51b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 26 Feb 2018 15:37:23 +0100 Subject: [PATCH 08/14] Web User fuer tbl_msg_status berechtigt damit der Message-Status gesetzt werden kann --- system/dbupdate_3.3.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 0b03c8bcb..513d778d4 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -1300,6 +1300,19 @@ if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_person_lock LIMIT 1")) echo ' system.tbl_person_lock hinzugefügt
'; } +// INSERT Berechtigungen fuer web User erteilen fuer tbl_msg_status +if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_msg_status' AND table_schema='public' AND grantee='web' AND privilege_type='INSERT'")) +{ + if($db->db_num_rows($result)==0) + { + $qry = "GRANT SELECT, INSERT ON public.tbl_msg_status TO web;"; + + if(!$db->db_query($qry)) + echo 'public.tbl_msg_status Berechtigungen: '.$db->db_last_error().'
'; + else + echo 'INSERT Rechte fuer public.tbl_msg_status fuer web user gesetzt '; + } +} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From 8f6ee06b9d1ec6b00683afa387865aeb6b240bf3 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 26 Feb 2018 16:54:41 +0100 Subject: [PATCH 09/14] added "zgv uebernehmen" for prefill of zgv with latest edited zgv, optimized sort of zgvs --- .../system/infocenter/InfoCenter.php | 40 ++++++++++--- application/models/crm/Prestudent_model.php | 23 ++++++++ .../system/infocenter/infocenterDetails.php | 1 + .../views/system/infocenter/zgvpruefungen.php | 37 ++++++------ include/js/infocenter/infocenterDetails.js | 57 +++++++++++++++++-- 5 files changed, 128 insertions(+), 30 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index c65d15238..135e24a5c 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -194,6 +194,26 @@ class InfoCenter extends VileSci_Controller redirect(self::URL_PREFIX.'/showDetails/'.$person_id.'#DokPruef'); } + /** + * Gets prestudent that was last modified in json format, for ZGV übernehmen + * @param $person_id + */ + public function getLastPrestudentWithZgvJson($person_id) + { + $prestudent = $this->PrestudentModel->getLastPrestudent($person_id, true); + + if (isError($prestudent)) + { + show_error($prestudent->retval); + } + + $jsonoutput = count($prestudent->retval) > 0 ? $prestudent->retval[0] : null; + + $this->output + ->set_content_type('application/json') + ->set_output(json_encode($jsonoutput)); + } + /** * Saves a zgv for a prestudent. includes Ort, Datum, Nation for bachelor and master. * @param $prestudent_id @@ -225,7 +245,8 @@ class InfoCenter extends VileSci_Controller 'zgvmas_code' => $zgvmas_code, 'zgvmaort' => $zgvmaort, 'zgvmadatum' => $zgvmadatum, - 'zgvmanation' => $zgvmanation_code + 'zgvmanation' => $zgvmanation_code, + 'updateamum' => date('Y-m-d H:i:s') ) ); @@ -249,7 +270,6 @@ class InfoCenter extends VileSci_Controller */ public function saveAbsage($prestudent_id) { - //TODO email messaging $statusgrund = $this->input->post('statusgrund'); $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id); @@ -646,7 +666,6 @@ class InfoCenter extends VileSci_Controller foreach ($prestudenten->retval as $prestudent) { $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent->prestudent_id); - $personid = $this->_getPersonAndStudiengangFromPrestudent($person_id); if (isError($prestudent)) { @@ -668,15 +687,18 @@ class InfoCenter extends VileSci_Controller $zgvpruefungen[] = $zgvpruefung; } - // Interessenten come first - usort($zgvpruefungen, function ($a, $b) - { + // Interessenten come first, otherwise by bewerbungsdatum desc, then by prestudent_id desc + usort($zgvpruefungen, function ($a, $b) { + $bewdatesort = strcmp($b->prestudentstatus->bewerbung_abgeschicktamum, $a->prestudentstatus->bewerbung_abgeschicktamum); + $defaultsort = $bewdatesort === 0 ? (int)$b->prestudent_id - (int)$a->prestudent_id : $bewdatesort; if (!isset($a->prestudentstatus->status_kurzbz) || !isset($b->prestudentstatus->status_kurzbz)) - return 0; + return $defaultsort; elseif ($a->prestudentstatus->status_kurzbz === 'Interessent' && $b->prestudentstatus->status_kurzbz === 'Interessent') { //infoonly Interessenten come after new Interessenten - if ($a->infoonly) + if ($a->infoonly === $b->infoonly) + return $defaultsort; + elseif ($a->infoonly) return 1; elseif ($b->infoonly) return -1; @@ -686,7 +708,7 @@ class InfoCenter extends VileSci_Controller elseif ($b->prestudentstatus->status_kurzbz === 'Interessent') return 1; else - return 0; + return $defaultsort; }); $statusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => 'Abgewiesener'))->retval; diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index d75d17236..2051c1666 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -239,4 +239,27 @@ class Prestudent_model extends DB_Model return success($prestudent->retval); } + /** + * gets the prestudent edited last. + * if no updateamum, sort by insertamum + * @param $person_id + * @param bool $withzgv if true, only prestudenten with zgv_code are taken + * @return array|null + */ + public function getLastPrestudent($person_id, $withzgv = false) + { + $qry = 'SELECT * FROM public.tbl_prestudent + WHERE person_id = ? + %s + ORDER BY updateamum DESC NULLS LAST, insertamum DESC NULLS LAST + LIMIT 1'; + + $zgvwhere = $withzgv === true ? 'AND zgv_code IS NOT NULL' : ''; + + $qry = sprintf($qry, $zgvwhere); + + $parametersArray = array($person_id); + + return $this->execQuery($qry, $parametersArray); + } } diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index 6b672cd87..da6abaf78 100644 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -36,6 +36,7 @@ ?>
+
@@ -89,7 +89,7 @@ ?> + name="zgvort" id="zgvort_prestudent_id ?>">
@@ -103,7 +103,7 @@ zgvdatum), 'd.m.Y') ?>" - name="zgvdatum"> + name="zgvdatum" id="zgvdatum_prestudent_id ?>"> @@ -116,7 +116,7 @@ echo $this->widgetlib->widget( 'Nation_widget', array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code), - array('name' => 'zgvnation', 'id' => 'zgvnation') + array('name' => 'zgvnation', 'id' => 'zgvnation_'.$zgvpruefung->prestudent_id) ); ?> @@ -183,7 +183,12 @@
-
+
+ +
+
@@ -203,7 +208,7 @@
-
+
- - + +
-
-