array ('regexp' => '/^.+$/' , 'errormesssage' => 'Fehler'), //'text' => array ('regexp' => '/^[\ a-zA-Z0-9äÄöÖüÜßáÁúÚóÓéÉíÌàÀòÒìÌèÈâÂôÔûÛ@!?\-\.\,\:^_#+*~\(\)%=\/]*$/' , 'errormesssage' => 'Ungültige Zeichen!'), 'text' => array ('regexp' => '/^[\ a-zA-Z0-9äÄöÖüÜßáÁúÚóÓéÉíÌàÀòÒìÌèÈâÂôÔûÛ@!?\r\n\-\.\,\:\;^_#+*~\(\)%=\/]*$/' , 'errormesssage' => 'Ungültige Zeichen!'), 'int' => array ('regexp' => '/^[0-9]*$/' , 'errormesssage' => 'Keine Zahl!'), 'datum' => array ('regexp' => '/^(\d\d\d\d\-\d\d\-\d\d)$/' , 'errormesssage' => 'Datum ungültig!'), 'datum_us_de' => array ('regexp' => '/^(\d\d\d\d\-\d\d\-\d\d|\d\d\.\d\d\.\d\d\d\d)$/' , 'errormesssage' => 'Datum ungültig!'), 'zeit' => array ('regexp' => '/^\d\d:\d\d(:\d\d)?$/' , 'errormesssage' => 'Zeitangabe ungültig!'), 'uhrzeit' => array ('regexp' => '/^\d\d:\d\d$/' , 'errormesssage' => 'Zeitangabe ungültig!') ); var $plp_data_settings=array( 'ps' => array ( 'text' => array( 'plp3_vorsitz', 'plp3_erstpruefer', 'kontaktdaten_ausarbeitung' ), 'datum' => array( 'plp3_datum' ), 'zeit' => array( 'plp3_zeit_von', 'plp3_zeit_bis' ), 'int' => array( 'plp3_vorsitz_BRN_Freigabe', 'plp3_erstpruefer_BRN_Freigabe') ), 'es' => array ( 'text' => array( 'plp3_zweitpruefer', 'plp3_jgst', 'plp3_klasse', 'plp3_betreuungslehrer', 'plp3_fachlehrer' ), // 'plp3_fach', 'plp3_zfl', 'plp3_kirchliche_oberbehoerde', 'datum' => array( 'vorstunde_datum' ), 'zeit' => array( 'vorstunde_zeit_von', 'vorstunde_zeit_bis' ), 'int' => array( 'plp3_zweitpruefer_BRN_Freigabe', 'plp3_betreuungslehrer_BRN_Freigabe', 'plp3_fachlehrer_BRN_Freigabe') ), 'gs' => array ( 'text_all' => array( 'plp3_thema'), //2018-02-28: Änderung, da ZFLs sich selbst eintragen, somit darf dieses Feld nicht upgedatet werden 'text' => array( 'plp3_seminarleitung_gs', 'plp3_kirchliche_oberbehoerde', 'eroeffnung_an_schule', 'eroeffnung_durch'), // , 'bemerkung' 'int' => array( 'plp3_zeitverlaengerung_auf_minuten','plp3_zeitverlaengerung', 'eroeffnung_erledigt', 'plp3_kirchliche_oberbehoerde_BRN_Freigabe', 'eroeffnung_durch_BRN_Freigabe'), //'text' => array( 'plp3_seminarleitung_gs', 'plp3_zfl', 'plp3_kirchliche_oberbehoerde', 'eroeffnung_an_schule', 'eroeffnung_durch'), // , 'bemerkung' //'int' => array( 'plp3_zeitverlaengerung_auf_minuten','plp3_zeitverlaengerung', 'eroeffnung_erledigt', 'plp3_zfl_BRN_Freigabe', 'plp3_kirchliche_oberbehoerde_BRN_Freigabe', 'eroeffnung_durch_BRN_Freigabe'), 'datum' => array( 'eroeffnung_datum' ) ) ); var $plp_data_settings_necessary_regexp_bad=array( // nur Test auf leer !!! 'text_all' => '/^\s*$/', 'text' => '/^\s*$/', 'datum' => '/^0000-00-00$/', 'datum_us_de' => '/^(0000-00-00|0000\.00\.00)$/', 'zeit' => '/^00:00:00$/' , 'uhrzeit' => '/^00:00$/' ); var $plp_data_settings_necessary=array( // notwendige Eingaben 'ps' => array ( 'text' => array( 'plp3_vorsitz', 'plp3_erstpruefer' ), 'datum' => array( 'plp3_datum' ), 'zeit' => array( 'plp3_zeit_von', 'plp3_zeit_bis' ) ), 'es' => array ( //'text' => array( 'plp3_zweitpruefer', 'plp3_jgst', 'plp3_klasse', 'plp3_betreuungslehrer' ), // 'plp3_fach', 'plp3_betreuungslehrer', 'plp3_fachlehrer', 'plp3_zfl', 'text' => array( 'plp3_zweitpruefer', 'plp3_jgst', 'plp3_klasse' ), // In Prüfungsgespräche kein Betreuungslehrer //'datum' => array( 'vorstunde_datum' ), //'zeit' => array( 'vorstunde_zeit_von', 'vorstunde_zeit_bis' ) ), 'gs' => array ( 'text_all' => array( 'plp3_thema'), 'text' => array( 'eroeffnung_durch', 'eroeffnung_an_schule' ), 'datum' => array( 'eroeffnung_datum' ) ) ); // AUSNAHME: SchPsy var $plp_data_settings_necessary_AUSNAHME_PLP3_FACH=array( 'es' => array( 'SchPsy' => true ) ); var $no_details_for_PLP3_FACH=array( 'es' => array( 'SchPsy' => true ) ); // stati var $plp_status_first = 'ps'; var $plp_status_last = 'fertig'; var $plp_status_follow=array( 'ps' => 'es', 'es' => 'gs', 'gs' => 'fertig' ); //var $plp_status_ready = array(); // error var $error=array(); var $error_data=array(); // more var $showPLZ=false; var $debug=0; var $html_newline="
"; // statt var getExportSettings -> geht schneller als array private function _getExportSettings($setSize=true){ return array( 'pkz' => array( 'headline' => 'PKZ', 'size' => 9, 'setSize' => $setSize ), 'plp3_fach' => array( 'headline' => 'fach_plp_3', 'size' => 10, 'setSize' => $setSize ), 'plp3_klasse' => array( 'headline' => 'klasse', 'size' => 10, 'setSize' => $setSize ), 'plp3_jgst' => array( 'headline' => 'jgst', 'size' => 2, 'setSize' => false ), 'snr_pruef' => array( 'headline' => 'snr_pruef', 'size' => 5, 'setSize' => false ), 'plp3_vorsitz' => array( 'headline' => 'plp3_vorsitz', 'size' => 100, 'setSize' => $setSize ), 'plp3_erstpruefer' => array( 'headline' => 'plp3_erstpruefer', 'size' => 100, 'setSize' => $setSize ), 'plp3_zweitpruefer' => array( 'headline' => 'plp3_zweitpruefer', 'size' => 100, 'setSize' => $setSize ), 'plp3_betreuungslehrer' => array( 'headline' => 'plp3_betreuungslehrer', 'size' => 100, 'setSize' => $setSize ), 'plp3_fachlehrer' => array( 'headline' => 'plp3_fachlehrer', 'size' => 100, 'setSize' => $setSize ), 'plp3_zfl' => array( 'headline' => 'plp3_zfl', 'size' => 100, 'setSize' => $setSize ), 'plp3_kirchliche_oberbehoerde' => array( 'headline' => 'plp3_kirchliche_oberbehoerde', 'size' => 100, 'setSize' => $setSize ), 'vorstunde_datum' => array( 'headline' => 'vorstunde_datum', 'size' => 10, 'setSize' => false ), 'vorstunde_zeit_von' => array( 'headline' => 'vorstunde_zeit_von', 'size' => 10, 'setSize' => false ), 'vorstunde_zeit_bis' => array( 'headline' => 'vorstunde_zeit_bis', 'size' => 10, 'setSize' => false ), 'plp3_datum' => array( 'headline' => 'plp3_datum', 'size' => 10, 'setSize' => $setSize ), 'plp3_zeit_von' => array( 'headline' => 'plp3_zeit_von', 'size' => 10, 'setSize' => false ), 'plp3_zeit_bis' => array( 'headline' => 'plp3_zeit_bis', 'size' => 10, 'setSize' => false ), 'plp3_zeitverlaengerung_auf_minuten' => array( 'headline' => 'plp3_zeitverlaengerung_min', 'size' => 3, 'setSize' => false ), 'eroeffnung_datum' => array( 'headline' => 'datum_eroeffnung', 'size' => 10, 'setSize' => false ), 'plp3_thema' => array( 'headline' => 'plp3_thema', 'size' => 500, 'setSize' => $setSize ) ); } // ************************* // * function plp3_terminvereinbarung($Schulnummer, $Schuljahr) // * Konstruktor function plp3_terminvereinbarung($Schulnummer, $Schuljahr, $type="", $sortierung="") { $countTmp=preg_match('/^\d\d\d\d$/', $Schulnummer); $countTmp2=preg_match('/^\d\d\d\d$/', $Schuljahr); $countTmp3=preg_match('/^[a-zA-Z0-9]*$/', $Schuljahr); $countTmp4=preg_match('/^[a-zA-Z0-9_]*$/', $sortierung); $this->logonOk = ( $countTmp and $countTmp2 and $countTmp3 and $countTmp4 and ($Schuljahr >= 2010) ); if ($this->logonOk) { $this->schulnummer=$Schulnummer; $this->schuljahr=$Schuljahr; $this->type=$type; $this->sortierung=$sortierung; } return $this->logonOk; } // ************************* // * get... function getSchuldaten() { return $this->schuldaten; } function istSeminarschule() { return ($this->schuldaten['seminar']=='ja'); } function getSchulnummer() { return $this->schulnummer; } function getPLP3_GS() { return $this->grund_refs; } function getPLP3_ES() { return $this->einsatz_refs; } function getPLP3_PS() { return $this->pruef_refs; } function getPLP3_Detail() { return $this->plp_data; } function getDetailErrors() { return $this->error_data; } function getStatus() { return $this->plp_data['status']; } function nextStatusOf($status) { return $this->plp_status_follow[$status]; } //function getStatiReady() { return $this->plp_status_ready; } // ************************* // * set... function setStatus($status) { $this->plp_data['status']=$status; } function setAdmin($isadmin) { $this->isAdmin=$isadmin; } // ************************* // * test... function testChangeStatus($c_status) { if ($this->debug>=3) { echo $this->html_newline, $this->html_newline, "change status: ", $c_status, ' - ', 'data status: ', $this->plp_data['status'], $this->html_newline, $this->html_newline; } return ($this->plp_data['status']==$c_status); } // ************************* // * saveDetails() // * speichert die Daten, die ueber POST uebertragen werden function saveDetails_ALT_LOESCHEN_AB_2011_01_01() { if ($this->logonOk) { $this->ladeSchuldaten(); } } // ************************* // * ladePLP3s() // * laedt alle Refs, in der die akt. Schule als Schule der PLP eingetragen ist function ladePLP3s($typ="all", $options=array()) { if ($this->logonOk) { if ($typ=="all" || $typ=="gs") { $this->ladePLP3sRefsAlsGrundstaendigeSeminarschule( $options ); } if ($typ=="all" || $typ=="es") { $this->ladePLP3sRefsAlsEnsatzschule( $options ); } if ($typ=="all" || $typ=="ps") { $this->ladePLP3sRefsAlsPruefendeSeminarschule( $options ); } } } private function querySelectFrom_PLP3s() { return " SELECT plp_tv_main.*, plp_tv_main.idplptvmain as id, plp_tv_status.sort_ps as status_sort_ps, plp_tv_status.sort_es as status_sort_es, plp_tv_status.sort_gs as status_sort_gs, sem_faecher1.bezeichnung as fach1_bezeichnung, sem_faecher2.bezeichnung as fach2_bezeichnung, sem_faecher3.bezeichnung as fach3_bezeichnung, sem_faecherPLP3.bezeichnung as plp3_fach_bezeichnung, schulenGS.Schulnr as schulenGS_Schulnr, schulenGS.Schulname as schulenGS_Schulname, schulenGS.Schulname2 as schulenGS_Schulname2, schulenGS.Strasse as schulenGS_Strasse, schulenGS.PLZ as schulenGS_PLZ, schulenGS.Ort as schulenGS_Ort, schulenGS.Telefon as schulenGS_Telefon, schulenGS.email as schulenGS_Mail, schulenGS.Fax as schulenGS_Fax, schulenGS.seminar as schulenGS_seminar, schulenES.Schulnr as schulenES_Schulnr, schulenES.Schulname as schulenES_Schulname, schulenES.Schulname2 as schulenES_Schulname2, schulenES.Strasse as schulenES_Strasse, schulenES.PLZ as schulenES_PLZ, schulenES.Ort as schulenES_Ort, schulenES.Telefon as schulenES_Telefon, schulenES.email as schulenES_Mail, schulenES.Fax as schulenES_Fax, schulenES.seminar as schulenES_seminar, schulenPS.Schulnr as schulenPS_Schulnr, schulenPS.Schulname as schulenPS_Schulname, schulenPS.Schulname2 as schulenPS_Schulname2, schulenPS.Strasse as schulenPS_Strasse, schulenPS.PLZ as schulenPS_PLZ, schulenPS.Ort as schulenPS_Ort, schulenPS.Telefon as schulenPS_Telefon, schulenPS.email as schulenPS_Mail, schulenPS.Fax as schulenPS_Fax, schulenPS.seminar as schulenPS_seminar, schulen_geodatenGS.Laenge as schulen_geodatenGS_Laenge, schulen_geodatenGS.Breite as schulen_geodatenGS_Breite, schulen_geodatenES.Laenge as schulen_geodatenES_Laenge, schulen_geodatenES.Breite as schulen_geodatenES_Breite, schulen_geodatenPS.Laenge as schulen_geodatenPS_Laenge, schulen_geodatenPS.Breite as schulen_geodatenPS_Breite FROM (((((((((((( plp_tv_main) LEFT JOIN plp_tv_status ON plp_tv_status.status = plp_tv_main.status) LEFT JOIN plp_tv_sem_faecher as sem_faecher1 ON plp_tv_main.fach1 = sem_faecher1.fach) LEFT JOIN plp_tv_sem_faecher as sem_faecher2 ON plp_tv_main.fach2 = sem_faecher2.fach) LEFT JOIN plp_tv_sem_faecher as sem_faecher3 ON plp_tv_main.fach3 = sem_faecher3.fach) LEFT JOIN plp_tv_sem_faecher as sem_faecherPLP3 ON plp_tv_main.plp3_fach = sem_faecherPLP3.fach) LEFT JOIN schulen as schulenGS ON plp_tv_main.snr_gs = schulenGS.Schulnr) LEFT JOIN schulen as schulenES ON plp_tv_main.snr_einsatz = schulenES.Schulnr) LEFT JOIN schulen as schulenPS ON plp_tv_main.snr_pruef = schulenPS.Schulnr) LEFT JOIN schulen_geodaten as schulen_geodatenGS ON plp_tv_main.snr_gs = schulen_geodatenGS.schulnr) LEFT JOIN schulen_geodaten as schulen_geodatenES ON plp_tv_main.snr_einsatz = schulen_geodatenES.schulnr) LEFT JOIN schulen_geodaten as schulen_geodatenPS ON plp_tv_main.snr_pruef = schulen_geodatenPS.schulnr) "; } private function querySelectFrom_ORDER_PLP3s($type='') { $order=''; switch ($this->sortierung) { case 'sort_ref_up': $order=' ORDER BY ref_nachname ASC, ref_vorname ASC '; break; case 'sort_ref_down': $order=' ORDER BY ref_nachname DESC, ref_vorname DESC '; break; case 'sort_pruef_up': $order=' ORDER BY schulenPS.Ort ASC, ref_nachname ASC, ref_vorname ASC '; break; case 'sort_pruef_down': $order=' ORDER BY schulenPS.Ort DESC, ref_nachname DESC, ref_vorname DESC '; break; case 'sort_einsatz_up': $order=' ORDER BY schulenES.Ort ASC, ref_nachname ASC, ref_vorname ASC '; break; case 'sort_einsatz_down': $order=' ORDER BY schulenES.Ort DESC, ref_nachname DESC, ref_vorname DESC '; break; case 'sort_grund_up': $order=' ORDER BY schulenGS.Ort ASC, ref_nachname ASC, ref_vorname ASC '; break; case 'sort_grund_down': $order=' ORDER BY schulenGS.Ort DESC, ref_nachname DESC, ref_vorname DESC '; break; case 'sort_pruef_plz_up': $order=' ORDER BY schulenPS.PLZ ASC, ref_nachname ASC, ref_vorname ASC '; $this->showPLZ=1; break; case 'sort_pruef_plz_down': $order=' ORDER BY schulenPS.PLZ DESC, ref_nachname DESC, ref_vorname DESC '; $this->showPLZ=1; break; case 'sort_einsatz_plz_up': $order=' ORDER BY schulenES.PLZ ASC, ref_nachname ASC, ref_vorname ASC '; $this->showPLZ=1; break; case 'sort_einsatz_plz_down': $order=' ORDER BY schulenES.PLZ DESC, ref_nachname DESC, ref_vorname DESC '; $this->showPLZ=1; break; case 'sort_grund_plz_up': $order=' ORDER BY schulenGS.PLZ ASC, ref_nachname ASC, ref_vorname ASC '; $this->showPLZ=1; break; case 'sort_grund_plz_down': $order=' ORDER BY schulenGS.PLZ DESC, ref_nachname DESC, ref_vorname DESC '; $this->showPLZ=1; break; case 'sort_status_up': $sort_status=( $type=='ps' ? 'status_sort_ps' : ( $type=='es' ? 'status_sort_es' : ( $type=='gs' ? 'status_sort_gs' : '' ) ) ); $order=' ORDER BY '.($sort_status ? $sort_status.' ASC, ': '').'ref_nachname ASC, ref_vorname ASC '; break; case 'sort_status_down': $sort_status=( $type=='ps' ? 'status_sort_ps' : ( $type=='es' ? 'status_sort_es' : ( $type=='gs' ? 'status_sort_gs' : '' ) ) ); $order=' ORDER BY '.($sort_status ? $sort_status.' DESC, ' : '').'ref_nachname DESC, ref_vorname DESC '; break; case 'sort_termin_up': $order=' ORDER BY plp3_datum ASC, ref_nachname ASC, ref_vorname ASC '; break; case 'sort_termin_down': $order=' ORDER BY plp3_datum DESC, ref_nachname DESC, ref_vorname DESC '; break; /* status_sort_ps, status_sort_es, status_sort_gs, */ } return $order; } private function querySelectFrom_ORDER_PLP3s_PDF($sort){ $order=''; switch ($sort) { case 'eroeffnung': $order=' ORDER BY eroeffnung_datum, plp3_fach_bezeichnung, plp3_fach, ref_nachname ASC, ref_vorname ASC '; break; case 'pruefungstermine': $order=' ORDER BY plp3_datum, plp3_fach_bezeichnung, plp3_fach, ref_nachname ASC, ref_vorname ASC '; break; case 'pruefungsfach': $order=' ORDER BY plp3_fach_bezeichnung, plp3_fach, plp3_datum, ref_nachname ASC, ref_vorname ASC '; break; } return $order; } // ************************* // * ladePLP3sRefsAlsGrundstaendigeSeminarschule // * laedt alle Refs, in der die akt. Schule als grundstaendige Seminarschule eingetragen ist function ladePLP3sRefsAlsGrundstaendigeSeminarschule($options=array()) { global $db; if (!$this->refGSgeladen and $this->logonOk) { $query=$this->querySelectFrom_PLP3s(); $query.= " WHERE ( ( snr_gs = '".$this->schulnummer."' ) AND ( schuljahr = '".$this->schuljahr."' ) ) "; // add ORDER if ($options['sort-pdf']) { $query.=$this->querySelectFrom_ORDER_PLP3s_PDF($options['sort-pdf']); } else { $query.=$this->querySelectFrom_ORDER_PLP3s('gs'); } if ($this->debug>=3) { echo $this->html_newline, $query, $this->html_newline; } $rs = $db->Execute($query); while (!$rs->EOF) { // $rs->fields['ref_nameMail'] = rawurlencode($rs->fields['ref_vorname'].' '.$rs->fields['ref_nachname']); $rs->fields['ref_nameMail'] = $this->_formatText_getICal($rs->fields['ref_vorname'].' '.$rs->fields['ref_nachname']); $rs->fields['link_to_details'] = $this->no_details_for_PLP3_FACH['gs'][ $rs->fields['plp3_fach'] ] ? false : true; $tmp=$this->_my_stripslashes_array($rs->fields); $tmp['statusReady'] = $this->calculateStatusReady($rs->fields); $tmp['pre_eroeffnung']=''; if ( isset($tmp['eroeffnung_datum']) and $tmp['eroeffnung_datum'] ) { $tmp['pre_eroeffnung'] = $this->_minus_X_Werktage($tmp['eroeffnung_datum'], $this->day_shift_eroeffnung); } $this->grund_refs[] = $tmp; // $this->plp_data['statusReady'] = $this->calculateStatusReady($rs->fields); $rs->MoveNext(); } $this->refGSgeladen=true; if ($this->debug>=3) { echo $this->html_newline,'Refs - GS:',$this->html_newline; print_r($this->grund_refs); } } } // ************************* // * ladePLP3sRefsAlsEnsatzschule // * laedt alle Refs, in der die akt. Schule als Einsatzschule eingetragen ist function ladePLP3sRefsAlsEnsatzschule($options=array()) { global $db; if (!$this->refESgeladen and $this->logonOk) { $query=$this->querySelectFrom_PLP3s(); $query.= " WHERE ( ( snr_einsatz = '".$this->schulnummer."' ) AND ( schuljahr = '".$this->schuljahr."' ) ) "; // add ORDER if ($options['sort-pdf']) { $query.=$this->querySelectFrom_ORDER_PLP3s_PDF($options['sort-pdf']); } else { $query.=$this->querySelectFrom_ORDER_PLP3s('es'); } // $query.=$this->querySelectFrom_ORDER_PLP3s('es'); if ($this->debug>=3) { echo $this->html_newline, $query, $this->html_newline; } $rs = $db->Execute($query); while (!$rs->EOF) { // $rs->fields['statusReady'] = $this->calculateStatusReady($rs->fields); // $rs->fields['ref_nameMail'] = rawurlencode($rs->fields['ref_vorname'].' '.$rs->fields['ref_nachname']); $rs->fields['ref_nameMail'] = $this->_formatText_getICal($rs->fields['ref_vorname'].' '.$rs->fields['ref_nachname']); $rs->fields['link_to_details'] = $this->no_details_for_PLP3_FACH['es'][ $rs->fields['plp3_fach'] ] ? false : true; // $this->einsatz_refs[] = $this->_my_stripslashes_array($rs->fields); $tmp=$this->_my_stripslashes_array($rs->fields); $tmp['statusReady'] = $this->calculateStatusReady($rs->fields); $tmp['pre_eroeffnung']=''; if ( isset($tmp['eroeffnung_datum']) and $tmp['eroeffnung_datum'] ) { $tmp['pre_eroeffnung'] = $this->_minus_X_Werktage($tmp['eroeffnung_datum'], $this->day_shift_eroeffnung); } $this->einsatz_refs[] = $tmp; $rs->MoveNext(); } $this->refESgeladen=true; if ($this->debug>=3) { echo $this->html_newline,'Refs - ES:',$this->html_newline; print_r($this->einsatz_refs); } } } // ************************* // * ladePLP3sRefsAlsGrundstaendigenSeminarschule // * laedt alle Refs, in der die akt. Schule als pruefende Seminarschule eingetragen ist function ladePLP3sRefsAlsPruefendeSeminarschule($options=array()) { global $db; if (!$this->refPSgeladen and $this->logonOk) { $query=$this->querySelectFrom_PLP3s(); $query.= " WHERE ( ( snr_pruef = '".$this->schulnummer."' ) AND ( schuljahr = '".$this->schuljahr."' ) ) "; // add order // $query.=$this->querySelectFrom_ORDER_PLP3s('ps'); if ($options['sort-pdf']) { $query.=$this->querySelectFrom_ORDER_PLP3s_PDF($options['sort-pdf']); } else { $query.=$this->querySelectFrom_ORDER_PLP3s('ps'); } if ($this->debug>=3) { echo $this->html_newline, $query, $this->html_newline; } // echo $query; // echo $query; $rs = $db->Execute($query); while (!$rs->EOF) { // $rs->fields['statusReady'] = $this->calculateStatusReady($rs->fields); // $rs->fields['ref_nameMail'] = rawurlencode($rs->fields['ref_vorname'].' '.$rs->fields['ref_nachname']); $rs->fields['ref_nameMail'] = $this->_formatText_getICal($rs->fields['ref_vorname'].' '.$rs->fields['ref_nachname']); $rs->fields['link_to_details'] = $this->no_details_for_PLP3_FACH['ps'][ $rs->fields['plp3_fach'] ] ? false : true; // $this->pruef_refs[] = $this->_my_stripslashes_array($rs->fields); $tmp=$this->_my_stripslashes_array($rs->fields); $tmp['statusReady'] = $this->calculateStatusReady($rs->fields); $tmp['pre_eroeffnung']=''; if ( isset($tmp['eroeffnung_datum']) and $tmp['eroeffnung_datum'] ) { $tmp['pre_eroeffnung'] = $this->_minus_X_Werktage($tmp['eroeffnung_datum'], $this->day_shift_eroeffnung); } $this->pruef_refs[] = $tmp; $rs->MoveNext(); } $this->refPSgeladen=true; if ($this->debug>=3) { echo $this->html_newline,'Refs - PS:',$this->html_newline; print_r($this->pruef_refs); } } } function getCountOfRefs() { return array( 'ps' => array( 'do' => $this->_getCountOfRefs('ps', 'do'), 'wait' => $this->_getCountOfRefs('ps', 'wait'), 'ready' => $this->_getCountOfRefs('ps', 'ready') ), 'es' => array( 'do' => $this->_getCountOfRefs('es', 'do'), 'wait' => $this->_getCountOfRefs('es', 'wait'), 'ready' => $this->_getCountOfRefs('es', 'ready') ), 'gs' => array( 'do' => $this->_getCountOfRefs('gs', 'do'), 'wait' => $this->_getCountOfRefs('gs', 'wait'), 'ready' => $this->_getCountOfRefs('gs', 'ready') ) ); } // ************************* // * getCountOfRefs private function _getCountOfRefs($type, $status) { global $db; $querytype='aetsch'; switch ($type) { case 'ps': $querytype='snr_pruef'; break; case 'es': $querytype='snr_einsatz'; break; case 'gs': $querytype='snr_gs'; break; default: $type='aetsch'; break; } $querystatus='aetsch'; switch ($status.'-'.$type) { case 'do-ps': $querystatus="plp_tv_status.status = 'neu' OR plp_tv_status.status = 'ps'"; break; case 'do-es': $querystatus="plp_tv_status.status = 'es'"; break; case 'do-gs': $querystatus="plp_tv_status.status = 'gs'"; break; case 'wait-ps': $querystatus="plp_tv_status.status = 'es' OR plp_tv_status.status = 'gs'"; break; case 'wait-es': $querystatus="plp_tv_status.status = 'ps' OR plp_tv_status.status = 'neu' OR plp_tv_status.status = 'gs'"; break; case 'wait-gs': $querystatus="plp_tv_status.status = 'ps' OR plp_tv_status.status = 'neu' OR plp_tv_status.status = 'es'"; break; case 'ready-ps': case 'ready-es': case 'ready-gs': $querystatus="plp_tv_status.status = 'fertig'"; break; } $query=" SELECT count( plp_tv_main.idplptvmain ) AS countit FROM ((((((((( plp_tv_main) LEFT JOIN plp_tv_status ON plp_tv_status.status = plp_tv_main.status) LEFT JOIN plp_tv_sem_faecher AS sem_faecher1 ON plp_tv_main.fach1 = sem_faecher1.fach) LEFT JOIN plp_tv_sem_faecher AS sem_faecher2 ON plp_tv_main.fach2 = sem_faecher2.fach) LEFT JOIN plp_tv_sem_faecher AS sem_faecher3 ON plp_tv_main.fach3 = sem_faecher3.fach) LEFT JOIN plp_tv_sem_faecher AS sem_faecherPLP3 ON plp_tv_main.plp3_fach = sem_faecherPLP3.fach) LEFT JOIN schulen AS schulenGS ON plp_tv_main.snr_gs = schulenGS.Schulnr) LEFT JOIN schulen AS schulenES ON plp_tv_main.snr_einsatz = schulenES.Schulnr) LEFT JOIN schulen AS schulenPS ON plp_tv_main.snr_pruef = schulenPS.Schulnr) WHERE ( ($querytype= '".$this->schulnummer."') AND (schuljahr = '".$this->schuljahr."') AND ($querystatus) ) "; // echo ($status.'-'.$type)=='wait-es' ? $query: ''; $countit=0; $rs = $db->Execute($query); if (!$rs->EOF) { $countit = $rs->fields['countit']; } return $countit ? $countit : 0; } // ************************* // * ladeDetailsById($plp3id) // * laedt alle Detaildaten zu einer Pruefungslehrprobe function ladeDetailsById($plp3id, $neuladen=false) { global $db; if ($neuladen) {$this->plp_data_geladen=false; } if (!$this->plp_data_geladen and $this->logonOk and preg_match("/^[a-zA-Z0-9]+$/", $plp3id) ) { $schulnummer=$this->schulnummer; $query=$this->querySelectFrom_PLP3s(); $query.= " WHERE ( ( idplptvmain = '".$plp3id."' ) AND ( schuljahr = '".$this->schuljahr."' ) ) AND ( ( snr_gs = '$schulnummer' ) OR ( snr_einsatz = '$schulnummer' ) OR ( snr_pruef = '$schulnummer' ) ) "; if ($this->debug>=3) { echo $this->html_newline, $query, $this->html_newline; } $rs = $db->Execute($query); if (!$rs->EOF) { $rs->fields['statusReady'] = $this->calculateStatusReady($rs->fields); // $rs->fields['ref_nameMail'] = rawurlencode($rs->fields['ref_vorname'].' '.$rs->fields['ref_nachname']); $rs->fields['ref_nameMail'] = $this->_formatText_getICal($rs->fields['ref_vorname'].' '.$rs->fields['ref_nachname']); $this->plp_data = $this->_my_stripslashes_array($rs->fields); $this->plp_data['statusReady'] = $this->calculateStatusReady($rs->fields); $this->plp_data['pre_eroeffnung']=''; if ( isset($this->plp_data['eroeffnung_datum']) and $this->plp_data['eroeffnung_datum'] ) { $this->plp_data['pre_eroeffnung'] = $this->_minus_X_Werktage($this->plp_data['eroeffnung_datum'], $this->day_shift_eroeffnung); } $this->plp_data_geladen = true; } if ($this->debug>=3) { echo $this->html_newline,'PLP-Data:',$this->html_newline; print_r($this->plp_data); } } } // ************************* // * ladeSchuldaten() // * laedt eigene Schuldaten der aktuellen Schule wie Adresse, E-Mail, ... function ladeSchuldaten() { global $db; if (!$this->schuldaten_geladen and $this->logonOk) { $query = " SELECT * FROM schulen WHERE ( Schulnr = '".$this->schulnummer."' ) "; $rs = $db->Execute($query); if (!$rs->EOF) { $this->schuldaten = $rs->fields; $rs->MoveNext(); $this->schuldaten_geladen=true; } if (!$this->schuldaten_geladen) { $this->error['schuldaten-laden']='Schuldaten konnten nicht geladen werden.'; } $this->schuldaten_geladen=true; if ($this->debug>=2) { echo $this->html_newline,'Schuldaten:',$this->html_newline; print_r($this->schuldaten); } } } // ************************* // * saveSchuldaten() // * speichert die uebertragenen Daten (kontrolliert auch die Uebergabe und setzt ggf. neuen status) function saveSchuldaten($sd) { if ($this->debug>=2) { echo $this->html_newline, 'check: ', $this->getStatus(), $this->html_newline; } if ($_POST['autofill_ps'] ) { $autofill='all'; } if ($_POST['autofill_ps_vorsitz'] ) { $autofill='vorsitz'; } if ($_POST['autofill_ps_erstpruefer'] ) { $autofill='erstpruefer'; } if ($_POST['autofill_ps_zweitpruefer'] ) { $autofill='zweitpruefer'; } if ($_POST['autofill_ps_zeit_bis'] ) { $autofill='zeit_bis'; } if ($_POST['autofill_es_vorstunde_zeit_bis'] ) { $autofill='vorstunde_zeit_bis'; } if ($_POST['autofill_es_zweitpruefer'] ) { $autofill='zweitpruefer'; } if ($_POST['autofill_gs_plp3_zfl'] ) { $autofill='zfl'; } if ($_POST['autofill_gs_eroeffnung_datum'] ) { $autofill='eroeffnung_datum'; } if ($_POST['autofill_gs_seminarleitung_gs'] ) { $autofill='seminarleitung_gs'; } if ($_POST['autofill_gs_eroeffnung_durch_gs'] ) { $autofill='eroeffnung_durch_gs'; } if ($_POST['autofill_gs_eroeffnung_durch_es'] ) { $autofill='eroeffnung_durch_es'; } if ($autofill) { $sd = $this->autofill($sd, $this->type, $autofill); } switch ($this->getStatus()) { case 'ps': case 'es': case 'gs': case 'fertig': $this->saveSchuldaten_type($sd, $this->type); break; default: $this->error['savedata_typ']='Schultyp nicht bekannt.'; break; } } // ************************* // * saveSchuldaten_type private function saveSchuldaten_type($sd, $type) { if ( $options['debug'] != '') { $debug=$options['debug']; } else { $debug=$this->debug; } if ($debug>2) { echo $type,"
"; print_r($sd); echo "
"; } $check=true; $allDataNames=array(); $plp_data_settings = $this->plp_data_settings[$type]; foreach ($plp_data_settings as $data_type => $dataNames) { $checktmp=$this->checkSchuldaten_RegExp($sd, $this->plp_data_settings_regexp[$data_type]['regexp'], $this->plp_data_settings_regexp[$data_type]['errormesssage'], $dataNames, array('empty' => true) ); $check = $check && $checktmp; $allDataNames = array_merge($allDataNames, $dataNames); } if ($type=='gs' || $type=='fertig') { if ($sd['plp3_zeitverlaengerung']) { if ($sd['plp3_zeitverlaengerung_auf_minuten'] > 0) {} else { $this->error_data['plp3_zeitverlaengerung_auf_minuten']= 'Bitte angeben.'; $check = $check && false; } } else { if ($sd['plp3_zeitverlaengerung_auf_minuten']) { $this->error_data['plp3_zeitverlaengerung']= 'Bitte genehmigen.'; $check = $check && false; } else { } } } if ($check) { $this->saveCheckedSchuldaten($sd, $allDataNames); } $this->replaceLoadedSchuldaten($sd, $allDataNames); $this->calculateNewStatus(); } // ************************* // * replaceLoadedSchuldaten private function replaceLoadedSchuldaten($sd, $dataNames ) { foreach ( $dataNames as $valName ) { $this->plp_data[$valName] = $sd[$valName]; // geladene (bzw. vorhandene) Daten ersetzen mit den geaenderten } return true; } // ************************* // * checkSchuldaten_RegExp private function checkSchuldaten_RegExp($sd, $suchmuster, $errormessage, $dataNames, $options=array() ) { if ( $options['debug'] != '') { $debug=$options['debug']; } else { $debug=$this->debug; } $error_count=0; foreach ( $dataNames as $valName ) { if (($options['empty']) and ($sd[$valName]=='')) { if ($debug>=2) { echo $this->html_newline, "$valName: ",'leere Eingabe', $this->html_newline; } } elseif ( !preg_match($suchmuster, $sd[$valName]) ) { $this->error_data[$valName]= $errormessage; $error_count++; if ($debug>=2) { echo $this->html_newline, 'ERROR: ', $valName, '=', $sd[$valName], '; ', $this->error_data[$valName], $this->html_newline; } } } return ($error_count == 0 ? 1 : 0); } // ************************* // * saveCheckedSchuldaten private function saveCheckedSchuldaten($sd, $dataNames) { global $db; $record=array(); foreach ( $dataNames as $dataName ) { $record[$dataName] = addslashes($sd[$dataName]); // 2011-02-07 } $updateSQL = $db->AutoExecute("plp_tv_main", $record, 'UPDATE', "idplptvmain = '".$this->plp_data['idplptvmain']."'"); } // HTML / ADDSLASHES / STRIPSLASHES function hsc_3($c) { $a=array(); foreach ($c as $k => $v) { $a[$k]=$this->hsc_2($v); } return $a; } function hsc_2($c) { $a=array(); foreach ($c as $k => $v) { $a[$k]=$this->hsc_1($v); } return $a; } function hsc_1($c) { if (is_array($c)) { return $c; } else { return htmlspecialchars($c); } } private function _my_stripslashes_array($a) { $b=array(); foreach ( $a as $k => $v ) { $b[$k] = stripslashes($v.""); // 2011-02-07 } return $b; } // HTML / ADDSLASHES / STRIPSLASHES // ************************* // * calculateNewStatus private function _minus_X_Werktage($datum, $tage) { $wochen=0+floor($tage/5); $restliche_tage=$tage % 5; $neues_datum=strtotime(" - ".($wochen*7)." days", strtotime($datum)); if ( date("w",$neues_datum)==6 ) { $neues_datum=strtotime(" - 1 day", $neues_datum); } elseif ( date("w",$neues_datum)==0 ) { $neues_datum=strtotime(" - 2 days", $neues_datum); }; $wochentag=date("w",$neues_datum); if ($wochentag - $restliche_tage < 1) { $neues_datum=strtotime(" - ".(2+$restliche_tage)." days", $neues_datum); } else { if ($restliche_tage==1) { $neues_datum=strtotime(" - 1 day", $neues_datum); } else { $neues_datum=strtotime(" - $restliche_tage days", $neues_datum); } } return date("Y-m-d", $neues_datum); } // ************************* // * calculateNewStatus private function calculateNewStatus() { $new_status=$this->calculateStatus($this->plp_data); if ($new_status!=$this->plp_data['status']) { $this->plp_data['status']=$new_status; global $db; $record['status']=$new_status; $updateSQL = $db->AutoExecute("plp_tv_main", $record, 'UPDATE', "idplptvmain = '".$this->plp_data['idplptvmain']."'"); } if ($debug>2) { echo '
new status = ',$new_status,'
'; } } // ************************* // * calculateStatus // * bestimmt den aktuellen Status (PS/neu -> ES -> GS ) private function calculateStatus($sd) { $aktueller_status=$this->getStatus(); // echo "TZ: ", ' - plp3_zeit_von=' , $sd['plp3_zeit_von'], ' - plp3_zeit_bis=' , $sd['plp3_zeit_bis'], ' - plp3_zeitverlaengerung_auf_minuten:' , $sd['plp3_zeitverlaengerung_auf_minuten'], '
'; $status_tmp=$this->plp_status_first; $ready=false; $max_i=99; $i=0; while ($status_tmp!=$this->plp_status_last && !$ready) { $i++; // echo "check $status_tmp
"; if ( $this->check_dataset_completed($sd, $this->plp_data_settings_necessary[$status_tmp], $status_tmp ) ) { $status_tmp=$this->plp_status_follow[$status_tmp]; } else { $ready=true; // $this->plp_status_ready[$status_tmp]=true; // $ready=true; // status suche fertig, da der Datensatz nicht komplett ( check_dataset_completeda() ) } $ready=(($i>$max_i) || $ready); // ($i>$max_i); // (($i>$max_i) || $ready); } if ( $sd['plp3_zeitverlaengerung'] and $sd['plp3_zeitverlaengerung_auf_minuten'] and ( substr($sd['plp3_zeit_bis'].'00:00',0,2)*60 + substr($sd['plp3_zeit_bis'].'00:00',3,2) - substr($sd['plp3_zeit_von'].'00:00',0,2)*60 - substr($sd['plp3_zeit_von'].'00:00',3,2) != $sd['plp3_zeitverlaengerung_auf_minuten'] ) ) { $status_tmp='ps'; } return ($status_tmp ? $status_tmp : $aktueller_status); } // ************************* // * calculateStatusReady // * ueberprueft, ob die Angaben fuer jeden Status (PS,ES,GS) vollstaendig sind private function calculateStatusReady($sd) { // echo "TZ: ", ' - plp3_zeit_von=' , $sd['plp3_zeit_von'], ' - plp3_zeit_bis=' , $sd['plp3_zeit_bis'], ' - plp3_zeitverlaengerung_auf_minuten:' , $sd['plp3_zeitverlaengerung_auf_minuten'], '
'; $status_tmp=$this->plp_status_first; $plp_status_ready=array(); $ready=false; $max_i=99; $i=0; while ($status_tmp!=$this->plp_status_last && !$ready) { $i++; if ( $this->check_dataset_completed($sd, $this->plp_data_settings_necessary[$status_tmp], $status_tmp ) ) { $plp_status_ready[$status_tmp]=1; // ready=true; $status_tmp=$this->plp_status_follow[$status_tmp]; //$ready=true; } else { // $ready=true; $plp_status_ready[$status_tmp]=0; $status_tmp=$this->plp_status_follow[$status_tmp]; // Status nicht ready -> naechster Status } $ready=($i>$max_i); // (($i>$max_i) || $ready); } if ( $sd['plp3_zeitverlaengerung'] and $sd['plp3_zeitverlaengerung_auf_minuten'] and ( substr($sd['plp3_zeit_bis'].'00:00',0,2)*60 + substr($sd['plp3_zeit_bis'].'00:00',3,2) - substr($sd['plp3_zeit_von'].'00:00',0,2)*60 - substr($sd['plp3_zeit_von'].'00:00',3,2) != $sd['plp3_zeitverlaengerung_auf_minuten'] ) ) { $status_tmp='ps'; $plp_status_ready['ps']=0; } // print_r($plp_status_ready); return $plp_status_ready; } private function check_dataset_completed( $sd, $plp_data_settings_necessary_st, $status ) { if ( $options['debug'] != '') { $debug=$options['debug']; } else { $debug=$this->debug; } $is_bad=false; if ($this->plp_data_settings_necessary_AUSNAHME_PLP3_FACH[ $status ][ $sd['plp3_fach'] ] ) { // z. B. $this->plp_data_settings_necessary_AUSNAHME_PLP3_FACH['es']['SchPsy'] // bei Einsatzschulen ist im Fach SchPsy nichts einzugeben } else { foreach ($plp_data_settings_necessary_st as $fieldtype => $fieldnames) { if ($debug>2) { echo "
-----------------------
Teste $fieldtype-Types
-----------------------
"; } foreach ($fieldnames as $fieldname) { if ($debug>2) { echo "$fieldname (",$this->plp_data_settings_necessary_regexp_bad[$fieldtype],"=?=",$sd[$fieldname], "): "; } if ($sd[$fieldname]) { $is_bad=preg_match( $this->plp_data_settings_necessary_regexp_bad[$fieldtype], $sd[$fieldname]); } else { $is_bad=true;} if ($debug>2) { echo ($is_bad ? "bad" : "ok") , "
" ; } if ($is_bad) { break; } } if ($is_bad) { break; } } } return !$is_bad; } // ********************************* // * AUTOFILL // ********************************* private function autofill($sd, $type, $autofill) { switch ($type) { // ********************************* // PS case 'ps': if ($autofill=='all') { $person=$this->load_DATA('Seminarleitung', 'ps'); if ( count($person)<1 ) { $person=$this->load_DATA('Schulleitung', 'ps'); } $sd['plp3_vorsitz']=$person['name']; $sd['plp3_vorsitz_BRN_Freigabe']=$person['BRN_Freigabe']; $person=$this->load_DATA('Seminarlehrer', 'ps'); $sd['plp3_erstpruefer']=$person['name']; $sd['plp3_erstpruefer_BRN_Freigabe']=$person['BRN_Freigabe']; } elseif($autofill=='vorsitz') { $person=$this->load_DATA('Seminarleitung', 'ps'); if ( count($person)<1 ) { $person=$this->load_DATA('Schulleitung', 'ps'); } $sd['plp3_vorsitz']=$person['name']; $sd['plp3_vorsitz_BRN_Freigabe']=$person['BRN_Freigabe']; } elseif($autofill=='erstpruefer') { $person=$this->load_DATA('Seminarlehrer', 'ps'); $sd['plp3_erstpruefer']=$person['name']; $sd['plp3_erstpruefer_BRN_Freigabe']=$person['BRN_Freigabe']; } elseif($autofill=='zweitpruefer'){ $person=$this->load_DATA('Schulleitung', 'es'); $sd['plp3_zweitpruefer']=$person['name']; $sd['plp3_zweitpruefer_BRN_Freigabe']=$person['BRN_Freigabe']; } elseif($autofill=='zeit_bis') { if ( $this->plp_data['plp3_zeitverlaengerung'] and $this->plp_data['plp3_zeitverlaengerung_auf_minuten'] ) { $sd['plp3_zeit_bis']=$this->addXXMinutes($_POST['plp3_zeit_von'], $this->plp_data['plp3_zeitverlaengerung_auf_minuten']); } else{ $sd['plp3_zeit_bis']=$this->add45Minutes($_POST['plp3_zeit_von']); } } break; // ********************************* // ES case 'es': if ($autofill=='vorstunde_zeit_bis') { $sd['vorstunde_zeit_bis'] =$this->add45Minutes($_POST['vorstunde_zeit_von']); } elseif($autofill=='zweitpruefer'){ $person=$this->load_DATA('Schulleitung', 'es'); $sd['plp3_zweitpruefer']=$person['name']; $sd['plp3_zweitpruefer_BRN_Freigabe']=$person['BRN_Freigabe']; } break; // ********************************* // GS case 'gs': //wird eigentlich nicht mehr gebraucht, da ZFL sich nun selbst einträgt if($autofill=='zfl') { $person=$this->load_DATA('ZFL'); $sd['plp3_zfl']=$person['name']; $sd['plp3_zfl_BRN_Freigabe']=$person['BRN_Freigabe']; } elseif($autofill=='eroeffnung_datum') { $sd['eroeffnung_datum']=$this->sub14Days($this->plp_data['plp3_datum']); } elseif($autofill=='seminarleitung_gs') { $person=$this->load_DATA('Seminarleitung', 'gs'); if ( count($person)<1 ) { $person=$this->load_DATA('Schulleitung', 'gs'); } $sd['plp3_seminarleitung_gs']=$person['name']; $sd['plp3_seminarleitung_gs_BRN_Freigabe']=$person['BRN_Freigabe']; } elseif($autofill=='eroeffnung_durch_gs') { $person=$this->load_DATA('Seminarleitung', 'gs'); if ( count($person)<1 ) { $person=$this->load_DATA('Schulleitung', 'gs'); } $sd['eroeffnung_durch']=$person['name']; $sd['eroeffnung_durch_BRN_Freigabe']=$person['BRN_Freigabe']; } elseif($autofill=='eroeffnung_durch_es') { $person=$this->load_DATA('Schulleitung', 'es'); $sd['eroeffnung_durch']=$person['name']; $sd['eroeffnung_durch_BRN_Freigabe']=$person['BRN_Freigabe']; } break; } return $sd; } private function load_DATA($object, $type='') { global $db; $return_val=''; $return_BRN_Freigabe=''; $snr=''; switch ($type) { case 'ps': $snr=$this->plp_data['snr_pruef']; break; case 'es': $snr=$this->plp_data['snr_einsatz']; break; case 'gs': $snr=$this->plp_data['snr_gs']; break; } switch ($object) { case "Seminarleitung": $query= "SELECT * FROM Schulverwaltung WHERE Funktion = 'Seminarleitung' AND Schulnr = '".$snr."'"; $rs = $db->Execute($query); if (!$rs->EOF) { $return_val=$rs->fields['Amtsbezeichnung'].' '.$rs->fields['Vorname'].' '.$rs->fields['Nachname']; $return_BRN_Freigabe = ( $rs->fields['FreigabeBRN'] =='zugestimmt' ? 1 : 0); } break; case "Seminarlehrer": $query= "SELECT * FROM sem_lehrer WHERE Schulnr = '".$snr."' AND seminarfach = '".$this->plp_data['plp3_fach']."'"; $rs = $db->Execute($query); if (!$rs->EOF) { $return_val=$rs->fields['titel'].' '.$rs->fields['vorname'].' '.$rs->fields['name']; $return_BRN_Freigabe = ( $rs->fields['FreigabeBRN'] =='zugestimmt' ? 1 : 0); } break; case "Schulleitung": $query= "SELECT * FROM Schulverwaltung WHERE Schulnr = '".$snr."' AND ( Funktion = 'Schulleiter' OR Funktion = 'Schulleiterin' )"; $rs = $db->Execute($query); if (!$rs->EOF) { $return_val=$rs->fields['Amtsbezeichnung'].' '.$rs->fields['Vorname'].' '.$rs->fields['Nachname']; $return_BRN_Freigabe = ( $rs->fields['FreigabeBRN'] =='zugestimmt' ? 1 : 0); } break; case "ZFL": $query= "SELECT * FROM sem_lehrer WHERE (zfl = 1) AND (seminarfach = '".$this->plp_data['plp3_fach']."')"; //$_POST['plp3_fach']."')"; $rs = $db->Execute($query); // echo $query.'
'; // echo 'ZFL: '.$rs->fields['titel'].' '.$rs->fields['vorname'].' '.$rs->fields['name']; if (!$rs->EOF) { $return_val=$rs->fields['titel'].' '.$rs->fields['vorname'].' '.$rs->fields['name']; $return_BRN_Freigabe = ( $rs->fields['FreigabeBRN'] =='zugestimmt' ? 1 : 0); } else { $query= "SELECT sem_lehrer.* FROM sem_lehrer JOIN plp_tv_sem_faecher ON plp_tv_sem_faecher.fach_alternativ = sem_lehrer.seminarfach WHERE ((sem_lehrer.zfl = 1) AND (plp_tv_sem_faecher.fach= '".$this->plp_data['plp3_fach']."'))"; $rs = $db->Execute($query); if (!$rs->EOF) { $return_val=$rs->fields['titel'].' '.$rs->fields['vorname'].' '.$rs->fields['name']; $return_BRN_Freigabe = ( $rs->fields['FreigabeBRN'] =='zugestimmt' ? 1 : 0); } } break; } return array( 'name' => $return_val, 'BRN_Freigabe' => $return_BRN_Freigabe); } private function add45Minutes($zeit) { return date('h:i',strtotime('2010-01-01 '.$zeit)+(2700)).':00'; } private function addXXMinutes($zeit,$minutes) { $seconds=60*$minutes; return date('h:i',strtotime('2010-01-01 '.$zeit)+($seconds)).':00'; } private function sub14Days($datum) { $datumR=''; if ($datum) { if ($datum!="0000-00-00") { // $datumR=date('Y-m-d',strtotime($datum)-(1209600)); $datumR=date('Y-m-d', strtotime('-14 days', strtotime($datum) ) ); } } return $datumR; } function getSeminarfaecher($all=false) { global $db; $result=array(); $fach1=''; if (!$all) { $fach1=$this->plp_data['fach1']; $fach2=$this->plp_data['fach2']; $fach3=$this->plp_data['fach3']; } $query= "SELECT * FROM plp_tv_sem_faecher"; $where=""; if ($fach1) { $where = " WHERE plp_tv_sem_faecher.fach='$fach1' OR plp_tv_sem_faecher.fach='$fach2' OR plp_tv_sem_faecher.fach='$fach3'"; } $order= " ORDER BY plp_tv_sem_faecher.bezeichnung ASC"; $rs = $db->Execute($query.$where.$order); $result['-']='-'; while (!$rs->EOF) { $result[$rs->fields['fach']] = $rs->fields['bezeichnung']; $rs->MoveNext(); } return $result; } function getJahrgangsstufen() { return array('-'=>'-', 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10); } function getZeiten() { $zeiten=array('00:00:00' => ''); for ($std=7; $std<17; $std++) { for ($min1=0; $min1<12; $min1++) { $tmpZ=''.($std<10 ? '0'.$std : ''.$std).':'.($min1<2 ? '0'.($min1*5) : ''.($min1*5)); $zeiten[$tmpZ.':00']=$tmpZ; } } return $zeiten; } function getAllSchoolsBezirk() { if (!preg_match("/^[a-zA-Z0-9]+$/", $derBezirk)) { $derBezirk='aetsch'; } global $db; $sN = array(); $query = " SELECT regbezirk, Schulname, Ort, Schulnr FROM schulen ORDER BY regbezirk, Schulnr "; $rs = $db->Execute($query); while (!$rs->EOF) { $sN[]=array( 'schulnummer' => $rs->fields['Schulnr'], 'regbezirk' => $rs->fields['regbezirk'], 'name' => $rs->fields['Schulname'], 'ort' => $rs->fields['Ort'] ); $rs->MoveNext(); } return $sN; } // ***************************** PDF function getPdfPLP3Formular() { $status=$this->getStatus(); if ( $status=='fertig' ) { // *** *** *** *** *** *** *** // fuer PDF-Ausgabe // *** *** *** *** *** *** *** $tmp_name=$this->_formatText_getICal( ($this->plp_data['ref_anrede'] ? $this->plp_data['ref_anrede'].'-' : '').$this->plp_data['ref_vorname'].'-'.$this->plp_data['ref_nachname'] ); $fileName="/www/data/ftp/rsmbobbn/_sys/libs/plp3tv/documents/plp3tvFormular.pdf"; $pdffilname="plp3tv-$tmp_name-".$this->plp_data['pkz'].'.pdf'; $pdffilname=preg_replace("/[^a-zA-Z0-9\-.]/", "_", $pdffilname); $pdf = Zend_Pdf::load($fileName); $page = $pdf->pages[0]; // *** *** *** *** *** *** *** // Einstellungen // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** $standardlineheight=18; $standardSize=12; $standardFont=Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); $this->plp_data['schulenPS_Schulname']=utf8_decode($this->plp_data['schulenPS_Schulname']); $this->plp_data['schulenPS_Schulname2']=utf8_decode($this->plp_data['schulenPS_Schulname2']); // *** *** *** *** *** *** *** // Start // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Studienseminar: (Kasten links oben) $yStart=793; $xStart=57; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // Adresse soll vertikal zentriert im Kasten stehen if (!$this->plp_data['schulenGS_Schulname2']) { $yStart-=($lineheight/2); } // 4 Zeilen schreiben // $text=utf8_encode( $this->plp_data['schulenGS_Schulname'] ); $text=( $this->plp_data['schulenGS_Schulname'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); if ($this->plp_data['schulenGS_Schulname2']) { // $text=utf8_encode( $this->plp_data['schulenGS_Schulname2'] ); $text=( $this->plp_data['schulenGS_Schulname2'] ); $ypos-=$lineheight; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // $text=utf8_encode( $this->plp_data['schulenGS_Strasse'] ); $text=( $this->plp_data['schulenGS_Strasse'] ); $ypos-=$lineheight; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // $text=utf8_encode( $this->plp_data['schulenGS_PLZ'].' '.$this->plp_data['schulenGS_Ort'] ); $text=( $this->plp_data['schulenGS_PLZ'].' '.$this->plp_data['schulenGS_Ort'] ); $ypos-=$lineheight; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Pruefungstermin: (Kasten rechts oben) $yStart=775; $size=$standardSize+2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( 'Prüfungstermin '.substr($this->plp_data['plp3_datum'].' ',0,4) ); $text=( 'Prüfungstermin '.substr($this->plp_data['plp3_datum'].' ',0,4) ); $ypos=$yStart; $xpos=$this->_centerstartposition_range($text, $font, $size, 296, 542); $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Referendarin $yStart=718.5; $xStart=218; $size=$standardSize+1; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( ($this->plp_data['ref_anrede'] ? $this->plp_data['ref_anrede'].' ' : '') // .$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); // $text=utf8_encode( $this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); $tmpAnrede=""; if ( $this->plp_data['ref_anrede']=="Stud.-Refin." or $this->plp_data['ref_anrede']=="Frau") { $tmpAnrede="Frau "; } if ( $this->plp_data['ref_anrede']=="Stud.-Ref." or $this->plp_data['ref_anrede']=="Herr") { $tmpAnrede="Herr "; } // $text=utf8_encode( $tmpAnrede.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); $text=( $tmpAnrede.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Faecherverbindung $yStart=702.3; $xStart=218; $size=$standardSize-1; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['fach1'].' / '.$this->plp_data['fach2'].($this->plp_data['fach3'] ? ' / '.$this->plp_data['fach3'] : '')); $text=( $this->plp_data['fach1'].' / '.$this->plp_data['fach2'].($this->plp_data['fach3'] ? ' / '.$this->plp_data['fach3'] : '')); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Unterrichtsfach Mittelblock $yStart=596.5; $xStart=182; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_fach_bezeichnung'] ); $text=( $this->plp_data['plp3_fach_bezeichnung'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Ptuefungsort $yStart=579; $xStart=182; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['schulenES_Schulname'].($this->plp_data['schulenES_Schulname2'] ? ', '.$this->plp_data['schulenES_Schulname2'] : '') ); $text=( $this->plp_data['schulenES_Schulname'].($this->plp_data['schulenES_Schulname2'] ? ', '.$this->plp_data['schulenES_Schulname2'] : '') ); if ( $this->_textwidth($text, $font, $size)+$xStart > 540 ) { // $text=utf8_encode( $this->plp_data['schulenES_Schulname'].' ('.$this->plp_data['schulenES_Schulnr'].')' ); $text=( $this->plp_data['schulenES_Schulname'].' ('.$this->plp_data['schulenES_Schulnr'].')' ); } $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Klasse $yStart=561.5; $xStart=182; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_klasse'] ); $text=( $this->plp_data['plp3_klasse'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Datum $yStart=534.5; $xStart=230; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['plp3_datum'].' ',8,2) .'.'.substr($this->plp_data['plp3_datum'].' ',5,2) .'.'.substr($this->plp_data['plp3_datum'].' ',0,4) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // von $yStart=534.5; $xStart=370; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['plp3_zeit_von'].' ',0,5) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // bis $yStart=534.5; $xStart=460; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['plp3_zeit_bis'].' ',0,5) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // pruefende Seminarschule (links) /* $yStart=486; $xStart=115; $size=$standardSize-5; $lineheight=($size*1.2); $font=$standardFont; $page->setFont($font, $size); $text=utf8_encode( $this->plp_data['schulenPS_Schulname'] ); $ypos=$yStart; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size);; $page->drawText($text, $xpos, $ypos, 'UTF-8'); if ($this->plp_data['schulenPS_Schulname2']) { $text=$this->plp_data['schulenPS_Schulname2']; $ypos=$yStart-$lineheight; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size);; $page->drawText($text, $xpos, $ypos, 'UTF-8'); } */ ////////////////////////////////////////////////////////////////////////////////////////////////////// // *** *** *** *** *** *** *** // pruefende Seminarschule (links) $yStart=486; $xStart=115; $innerpagewidth=118; $size=$standardSize-5; $lineheight=($size*1.2); $font=$standardFont; $page->setFont($font, $size); $textOK=true; $text=( $this->plp_data['schulenPS_Schulname'] ); if ($this->_textwidth($text, $font, $size)>$innerpagewidth) {$textOK=false;} if ($this->plp_data['schulenPS_Schulname2']) { $text=$this->plp_data['schulenPS_Schulname2']; if ($this->_textwidth($text, $font, $size)>$innerpagewidth) {$textOK=false;} } if ($textOK) { // $text=utf8_encode( $this->plp_data['schulenPS_Schulname'] ); $text=( $this->plp_data['schulenPS_Schulname'] ); $ypos=$yStart; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size); $page->drawText($text, $xpos, $ypos, 'UTF-8'); if ($this->plp_data['schulenPS_Schulname2']) { // $text=utf8_encode($this->plp_data['schulenPS_Schulname2']); $text=($this->plp_data['schulenPS_Schulname2']); $ypos=$yStart-$lineheight; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size); $page->drawText($text, $xpos, $ypos, 'UTF-8'); } } else { // MEHRZEILIG // $yStart=500.5; $yStart=486.5; $xStart=52; $xEnd=170; // $yCenter=500.5; $yCenter=486.5; $innerpagewidth=118; $size=$standardSize-5; $lineheight=($size*1.2); $font=$standardFont; $page->setFont($font, $size); $textPS=( $this->plp_data['schulenPS_Schulname'].( $this->plp_data['schulenPS_Schulname2'] ? ', '.$this->plp_data['schulenPS_Schulname2'] :'' ) ); $txt_arr=preg_split( '/ +/', $textPS ); if (count($txt_arr)>0) { $text3 = new textblock2($innerpagewidth, $font, $size, true); for ($i=0; $iaddWord( $txt_arr[$i].' ' ); } if ($text3->getLineCount()==1) { // Text schreiben (nur eine Zeile) -> zentriert $page->drawText( ($text3->getLine(0)), // utf8_encode $this->_centerstartposition_range(($text3->getLine(0)), $font, $size, $xStart, $xEnd), $yCenter, 'UTF-8' ); } elseif ($text3->getLineCount()>1) { // Text schreiben (mehrere Zeilen) -> links beginnen $ypos=$yCenter; // $yCenter+0.5*$lineheight*$text3->getLineCount()-$size*0.5; if ($text3->getLineCount()>2) {$ypos=$yCenter+2;} $xpos=$xStart; for ($i=0; $i<$text3->getLineCount(); $i++) { $page->drawText( ($text3->getLine($i)), // $xpos, $this->_centerstartposition_range(($text3->getLine($i)), $font, $size, $xStart, $xEnd), $ypos-$i*$lineheight, 'UTF-8'); } } } } ////////////////////////////////////////////////////////////////////////////////////////////////////// // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // vorsitz $yStart=508; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_vorsitz'] ); $text=( $this->plp_data['plp3_vorsitz'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // erstpruefer $yStart=490.5; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_erstpruefer'] ); $text=( $this->plp_data['plp3_erstpruefer'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // zweitpruefer $yStart=473; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_zweitpruefer'] ); $text=( $this->plp_data['plp3_zweitpruefer'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // betreuungslehrer $yStart=456; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_betreuungslehrer'] ); $text=( $this->plp_data['plp3_betreuungslehrer'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // fachlehrer $yStart=438; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_fachlehrer'] ); $text=( $this->plp_data['plp3_fachlehrer'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // zfl $yStart=421; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_zfl'] ); $text=( $this->plp_data['plp3_zfl'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // kirchliche_oberbehoerde $yStart=404; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_kirchliche_oberbehoerde'] ); $text=( $this->plp_data['plp3_kirchliche_oberbehoerde'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Vorstunde-Datum if ($this->plp_data['vorstunde_datum'] != NULL) { // Nur wenn VST eingetragen $yStart=386; $xStart=230; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['vorstunde_datum'].' ',8,2) .'.'.substr($this->plp_data['vorstunde_datum'].' ',5,2) .'.'.substr($this->plp_data['vorstunde_datum'].' ',0,4) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Vorstunde-von $yStart=386; $xStart=370; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['vorstunde_zeit_von'].' ',0,5) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Vorstunde-bis $yStart=386; $xStart=460; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['vorstunde_zeit_bis'].' ',0,5) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Thema Kasten unten // range: X 47-543 Y 240(-$size)-302 / 230-302 // mid: 295 271 / 265 $yStart=302; $xStart=55; $xEnd=550; $yCenter=265+$size*0.5; $innerpagewidth=495; // 490 $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $txt_arr=preg_split( '/ +/', utf8_decode($this->plp_data['plp3_thema']) ); if (count($txt_arr)>0) { $text2 = new textblock2($innerpagewidth, $font, $size, true); for ($i=0; $iaddWord( $txt_arr[$i].' ' ); } if ($text2->getLineCount()==1) { // Text schreiben (nur eine Zeile) -> zentriert $page->drawText( $text2->getLine(0), $this->_centerstartposition_range($text2->getLine(0), $font, $size, $xStart, $xEnd), $yCenter, 'UTF-8' ); } elseif ($text2->getLineCount()>1) { // Text schreiben (mehrere Zeilen) -> links beginnen $ypos=$yCenter+0.5*$lineheight*$text2->getLineCount()-$size*0.5; $xpos=$xStart; for ($i=0; $i<$text2->getLineCount(); $i++) { $page->drawText($text2->getLine($i), $xpos, $ypos-$i*$lineheight, 'UTF-8'); } } } // *** *** *** *** *** *** *** // erhalten am (rechts unten oberhalb der Unterschrift Refi) $yStart=169.2; $xStart=498; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['eroeffnung_datum'].' ',8,2) .'.'.substr($this->plp_data['eroeffnung_datum'].' ',5,2) .'.'.substr($this->plp_data['eroeffnung_datum'].' ',0,4) ); $ypos=$yStart; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size); $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Unteschrift links - Seminarleitung GS $yStart=105.5; $xStart=220; $size=$standardSize-4; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['eroeffnung_durch'] ); $text=( $this->plp_data['eroeffnung_durch'] ); $ypos=$yStart; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size); if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Unteschrift rechts - Refi $yStart=105.5; $xStart=478; $size=$standardSize-4; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( ($this->plp_data['ref_anrede'] ? $this->plp_data['ref_anrede'].' ' : '').$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); $text=( ($this->plp_data['ref_anrede'] ? $this->plp_data['ref_anrede'].' ' : '').$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); $ypos=$yStart; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size); $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Faxnummer GS rechts unten $yStart=64.0; $xStart=470; $size=$standardSize-4; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['schulenGS_Fax'] ); $text=( $this->plp_data['schulenGS_Fax'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Ausgabe Kontaktdaten für Übermittlung der Ausarbeitung auf 2. Seite $page2 = $pdf->pages[1]; $font = $standardFont; $size = $standardSize-1; $page2->setFont($font, $size); $xpos = 70; $ypos = 175; //375 $innerpagewidth = 480; $lineheight=($size*1.4); $text = $this->plp_data['kontaktdaten_ausarbeitung']; if($text == "" || $text == NULL) { // keine Kontaktdaten eingetragen $email = $this->getEMailSchule(); $text = "Per E-Mail an: $email"; $page2->drawText($text, $xpos, $ypos, 'UTF-8'); } else { // Trick: Zeilenumbrüche werden durch chr(10) (Text!!!) ersetzt // Wenn später ein Eintrag im Array chr(10) ist, wird in den Textblock // eine neue Zeile eingefügt. $text = str_replace(chr(10), " chr(10) ", $text); $txt_arr=preg_split( '/ +/', utf8_decode($text) ); $text2 = new textblock2($innerpagewidth, $font, $size, true); for ($i=0; $iaddLine(); } else { $text2->addWord( $txt_arr[$i].' ' ); } } for ($i=0; $i<$text2->getLineCount(); $i++) { $page2->drawText($text2->getLine($i), $xpos, $ypos-$i*$lineheight, 'UTF-8'); } } // ****************************** // Ausgabe // ****************************** $pdfAsString = $pdf->render(); // header('Content-type: application/x-pdf'); // header("Content-disposition: attachment; filename=$pdffilname"); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header('Content-type: application/x-pdf'); header("Content-disposition: attachment; filename=$pdffilname"); header("Content-Transfer-Encoding: binary"); echo $pdfAsString; exit; } else { echo "PDF-Generierung nicht möglich."; exit; } } // Änderung 2020-04-28 wegen Corona-Pandemie function getEMailSchule() { global $db; $schulnr = $this->plp_data['snr_pruef']; //$sql = "SELECT snr_pruef FROM plp_tv_main WHERE id='$id'"; $sql = "Select email FROM schulen WHERE Schulnr ='$schulnr'"; $rs = $db->Execute($sql); if ( !$rs->EOF ) { return $rs->fields['email']; } } // ***************************** PDF function getPdfPLP3Niederschrift() { $status=$this->getStatus(); if ( $status=='fertig' ) { // *** *** *** *** *** *** *** // fuer PDF-Ausgabe // *** *** *** *** *** *** *** $tmp_name=$this->_formatText_getICal( ($this->plp_data['ref_anrede'] ? $this->plp_data['ref_anrede'].'-' : '').$this->plp_data['ref_vorname'].'-'.$this->plp_data['ref_nachname'] ); $fileName="/www/data/ftp/rsmbobbn/_sys/libs/plp3tv/documents/plp3tvNiederschrift.pdf"; $pdffilname="plp3tv-niederschrift-$tmp_name-".$this->plp_data['pkz'].'.pdf'; $pdffilname=preg_replace("/[^a-zA-Z0-9\-.]/", "_", $pdffilname); $pdf = Zend_Pdf::load($fileName); $page = $pdf->pages[0]; // *** *** *** *** *** *** *** // Einstellungen // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** $standardlineheight=18; $standardSize=12; $standardFont=Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); $this->plp_data['schulenPS_Schulname']=utf8_decode($this->plp_data['schulenPS_Schulname']); $this->plp_data['schulenPS_Schulname2']=utf8_decode($this->plp_data['schulenPS_Schulname2']); // *** *** *** *** *** *** *** // Start // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Studienseminar: (Kasten links oben) $yStart=793; $xStart=57; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // Adresse soll vertikal zentriert im Kasten stehen if (!$this->plp_data['schulenGS_Schulname2']) { $yStart-=($lineheight/2); } // 4 Zeilen schreiben // $text=utf8_encode( $this->plp_data['schulenGS_Schulname'] ); $text=( $this->plp_data['schulenGS_Schulname'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); if ($this->plp_data['schulenGS_Schulname2']) { // $text=utf8_encode( $this->plp_data['schulenGS_Schulname2'] ); $text=( $this->plp_data['schulenGS_Schulname2'] ); $ypos-=$lineheight; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // $text=utf8_encode( $this->plp_data['schulenGS_Strasse'] ); $text=( $this->plp_data['schulenGS_Strasse'] ); $ypos-=$lineheight; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // $text=utf8_encode( $this->plp_data['schulenGS_PLZ'].' '.$this->plp_data['schulenGS_Ort'] ); $text=( $this->plp_data['schulenGS_PLZ'].' '.$this->plp_data['schulenGS_Ort'] ); $ypos-=$lineheight; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Pruefungstermin: (Kasten rechts oben) $yStart=775; $size=$standardSize+2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( 'Prüfungstermin '.substr($this->plp_data['plp3_datum'].' ',0,4) ); $text=( 'Prüfungstermin '.substr($this->plp_data['plp3_datum'].' ',0,4) ); $ypos=$yStart; $xpos=$this->_centerstartposition_range($text, $font, $size, 296, 542); $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Referendarin $yStart=718.5; $xStart=218; $size=$standardSize+1; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( ($this->plp_data['ref_anrede'] ? $this->plp_data['ref_anrede'].' ' : '') // .$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); // $text=utf8_encode( $this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); $tmpAnrede=""; if ( $this->plp_data['ref_anrede']=="Stud.-Refin." or $this->plp_data['ref_anrede']=="Frau") { $tmpAnrede="Frau "; } if ( $this->plp_data['ref_anrede']=="Stud.-Ref." or $this->plp_data['ref_anrede']=="Herr") { $tmpAnrede="Herr "; } // $text=utf8_encode( $tmpAnrede.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); $text=( $tmpAnrede.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Faecherverbindung $yStart=702.3; $xStart=218; $size=$standardSize-1; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['fach1'].' / '.$this->plp_data['fach2'].($this->plp_data['fach3'] ? ' / '.$this->plp_data['fach3'] : '')); $text=( $this->plp_data['fach1'].' / '.$this->plp_data['fach2'].($this->plp_data['fach3'] ? ' / '.$this->plp_data['fach3'] : '')); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Unterrichtsfach Mittelblock $yStart=611; //596.5; $xStart=182; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_fach_bezeichnung'] ); $text=( $this->plp_data['plp3_fach_bezeichnung'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Pruefungsort $yStart=593.5;//579; $xStart=182; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['schulenES_Schulname'].($this->plp_data['schulenES_Schulname2'] ? ', '.$this->plp_data['schulenES_Schulname2'] : '') ); $text=( $this->plp_data['schulenES_Schulname'].($this->plp_data['schulenES_Schulname2'] ? ', '.$this->plp_data['schulenES_Schulname2'] : '') ); if ( $this->_textwidth($text, $font, $size)+$xStart > 540 ) { // $text=utf8_encode( $this->plp_data['schulenES_Schulname'].' ('.$this->plp_data['schulenES_Schulnr'].')' ); $text=( $this->plp_data['schulenES_Schulname'].' ('.$this->plp_data['schulenES_Schulnr'].')' ); } $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Klasse $yStart=576;//561.5; $xStart=182; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_klasse'] ); $text=( $this->plp_data['plp3_klasse'] ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Datum $yStart=549.5;//534.5; $xStart=230; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['plp3_datum'].' ',8,2) .'.'.substr($this->plp_data['plp3_datum'].' ',5,2) .'.'.substr($this->plp_data['plp3_datum'].' ',0,4) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // von $yStart=549.5;//534.5; $xStart=370; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['plp3_zeit_von'].' ',0,5) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // bis $yStart=549.5;//534.5; $xStart=460; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode substr($this->plp_data['plp3_zeit_bis'].' ',0,5) ); $ypos=$yStart; $xpos=$xStart; $page->drawText($text, $xpos, $ypos, 'UTF-8'); // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // pruefende Seminarschule (links) $yStart=500.5;//486; $xStart=115; $innerpagewidth=118; $size=$standardSize-5; $lineheight=($size*1.2); $font=$standardFont; $page->setFont($font, $size); $textOK=true; $text=( $this->plp_data['schulenPS_Schulname'] ); if ($this->_textwidth($text, $font, $size)>$innerpagewidth) {$textOK=false;} if ($this->plp_data['schulenPS_Schulname2']) { $text=$this->plp_data['schulenPS_Schulname2']; if ($this->_textwidth($text, $font, $size)>$innerpagewidth) {$textOK=false;} } if ($textOK) { // $text=utf8_encode( $this->plp_data['schulenPS_Schulname'] ); $text=( $this->plp_data['schulenPS_Schulname'] ); $ypos=$yStart; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size); $page->drawText($text, $xpos, $ypos, 'UTF-8'); if ($this->plp_data['schulenPS_Schulname2']) { // $text=utf8_encode($this->plp_data['schulenPS_Schulname2']); $text=($this->plp_data['schulenPS_Schulname2']); $ypos=$yStart-$lineheight; $xpos=$xStart-0.5*$this->_textwidth($text, $font, $size); $page->drawText($text, $xpos, $ypos, 'UTF-8'); } } else { // MEHRZEILIG $yStart=500.5; $xStart=52; $xEnd=170; $yCenter=500.5; $innerpagewidth=118; $size=$standardSize-5; $lineheight=($size*1.2); $font=$standardFont; $page->setFont($font, $size); $textPS=( $this->plp_data['schulenPS_Schulname'].( $this->plp_data['schulenPS_Schulname2'] ? ', '.$this->plp_data['schulenPS_Schulname2'] :'' ) ); $txt_arr=preg_split( '/ +/', $textPS ); if (count($txt_arr)>0) { $text3 = new textblock2($innerpagewidth, $font, $size, true); for ($i=0; $iaddWord( $txt_arr[$i].' ' ); } if ($text3->getLineCount()==1) { // Text schreiben (nur eine Zeile) -> zentriert $page->drawText( ($text3->getLine(0)), // utf8_encode $this->_centerstartposition_range(($text3->getLine(0)), $font, $size, $xStart, $xEnd), $yCenter, 'UTF-8' ); } elseif ($text3->getLineCount()>1) { // Text schreiben (mehrere Zeilen) -> links beginnen $ypos=$yCenter; // $yCenter+0.5*$lineheight*$text3->getLineCount()-$size*0.5; if ($text3->getLineCount()>2) {$ypos=$yCenter+2;} $xpos=$xStart; for ($i=0; $i<$text3->getLineCount(); $i++) { $page->drawText( ($text3->getLine($i)), // $xpos, $this->_centerstartposition_range(($text3->getLine($i)), $font, $size, $xStart, $xEnd), $ypos-$i*$lineheight, 'UTF-8'); } } } } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // vorsitz $yStart=522.5;//508; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_vorsitz'] ); $text=( $this->plp_data['plp3_vorsitz'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // erstpruefer $yStart=505;//490.5; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_erstpruefer'] ); $text=( $this->plp_data['plp3_erstpruefer'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // zweitpruefer $yStart=487.5;//473; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_zweitpruefer'] ); $text=( $this->plp_data['plp3_zweitpruefer'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // betreuungslehrer $yStart=470.5;//456; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_betreuungslehrer'] ); $text=( $this->plp_data['plp3_betreuungslehrer'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // fachlehrer $yStart=452.5;//438; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_fachlehrer'] ); $text=( $this->plp_data['plp3_fachlehrer'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // zfl $yStart=435.5;//421; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_zfl'] ); $text=( $this->plp_data['plp3_zfl'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // kirchliche_oberbehoerde $yStart=418.5;//404; $xStart=344; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $this->plp_data['plp3_kirchliche_oberbehoerde'] ); $text=( $this->plp_data['plp3_kirchliche_oberbehoerde'] ); $ypos=$yStart; $xpos=$xStart; if ($text != "-") { $page->drawText($text, $xpos, $ypos, 'UTF-8'); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Thema Kasten unten // range: X 47-543 Y 240(-$size)-302 / 230-302 // mid: 295 271 / 265 $yStart=302; $xStart=55; $xEnd=550; $yCenter=346+$size*0.5; // 265+$size*0.5; $innerpagewidth=495; // 490 $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $txt_arr=preg_split( '/ +/', utf8_decode($this->plp_data['plp3_thema']) ); if (count($txt_arr)>0) { $text2 = new textblock2($innerpagewidth, $font, $size, true); for ($i=0; $iaddWord( $txt_arr[$i].' ' ); } if ($text2->getLineCount()==1) { // Text schreiben (nur eine Zeile) -> zentriert $page->drawText( $text2->getLine(0), $this->_centerstartposition_range($text2->getLine(0), $font, $size, $xStart, $xEnd), $yCenter, 'UTF-8' ); } elseif ($text2->getLineCount()>1) { // Text schreiben (mehrere Zeilen) -> links beginnen $ypos=$yCenter+0.5*$lineheight*$text2->getLineCount()-$size*0.5; $xpos=$xStart; for ($i=0; $i<$text2->getLineCount(); $i++) { $page->drawText($text2->getLine($i), $xpos, $ypos-$i*$lineheight, 'UTF-8'); } } } // *** *** *** *** *** *** *** // 2. Seite $page = $pdf->pages[1]; // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Ort, den Datum (zweite Seite unten mittig) $yStart=180; $xStart=52; $xEnd=538; $size=$standardSize-2; $lineheight=($size*1.4); $font=$standardFont; $page->setFont($font, $size); $text=( // utf8_encode $this->plp_data['schulenES_Ort'] .', den ' .substr($this->plp_data['plp3_datum'].' ',8,2) .'.'.substr($this->plp_data['plp3_datum'].' ',5,2) .'.'.substr($this->plp_data['plp3_datum'].' ',0,4) ); $ypos=$yStart; $page->drawText( $text, $this->_centerstartposition_range($text, $font, $size, $xStart, $xEnd), $ypos, 'UTF-8' ); // *** *** *** *** *** *** *** // ****************************** // Ausgabe // ****************************** $pdfAsString = $pdf->render(); // header('Content-type: application/x-pdf'); // header("Content-disposition: attachment; filename=$pdffilname"); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header('Content-type: application/x-pdf'); header("Content-disposition: attachment; filename=$pdffilname"); header("Content-Transfer-Encoding: binary"); echo $pdfAsString; exit; } else { echo "PDF-Generierung nicht möglich."; exit; } } function pdflist($type='', $sort='') { $data=array(); $als_schule=""; if ($type=='gs') { $data = $this->grund_refs; $als_schule="grundst. Seminarschule"; } if ($type=='es') { $data = $this->einsatz_refs; $als_schule="Einsatzschule"; } if ($type=='ps') { $data = $this->pruef_refs; $als_schule="prüf. Seminarschule"; } $tabellen=array(); $header=array(); if ($sort == 'eroeffnung') { $header['h1']="PLP3-Eröffnungen (als $als_schule)"; $header['h2']='Stand: '.date('d.m.Y H:i'); $header['fussnote']='E = Eröffnung agbeschlossen'; $tabellen[0]['spaltenbreiten'] = array(20,4,40,55,55); $tabellen[0]['ueberschriften'] = array('Eröffnung', 'E', 'Fach', 'Referendar', 'Notizen'); $tabellen[0]['optionen'] = array('linien' => true); $tabellen[0]['optionen']['padding']=2; for ($i=0; $i true); $tabellen[0]['optionen']['padding']=2; for ($i=0; $i true); $tabellen[$t]['optionen']['padding']=2; $tmp_fach = $tabellen[$t]['h1']; } $tabellen[$t]['tabelle'][]=array( $data[$i]['plp3_datum'] ? date('d.m.Y', strtotime($data[$i]['plp3_datum'])) : '', // date('d.m.Y', strtotime($data[$i]['plp3_datum'])), // $data[$i]['plp3_datum'], $data[$i]['ref_vorname'].' '.$data[$i]['ref_nachname'] ); } } else { $header['h1']=="leer"; } $this->getPdfList($header, $tabellen); } // ***************************** PDF-Tabelle private function getPdfList($header, $tabellen) { // *** *** *** *** *** *** *** // fuer PDF-Ausgabe // *** *** *** *** *** *** *** $fileName="/www/data/ftp/rsmbobbn/_sys/libs/plp3tv/documents/BRN-PLP3TV-Liste.pdf"; $pdffilname=preg_replace("/[^a-zA-Z0-9.\-]+/i", '-', "liste-".$header['h1'].'.pdf'); $pdf=new Zend_Pdf(); $pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4); $page = $pdf->pages[0]; $geschrieben=array(); //$page=$pdf->pages[count($pdf->pages)-1]; $yTop=760; $xLeft=40; $xWidth=520; $yHeight=700; $yMin=$yTop-$yHeight; // *** *** *** *** *** *** *** // Start // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Einstellungen global/Start $standardlineheight=16; $standardSize=11; $shift_betweenLine=$standardSize; $standardFont=Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); $standardFontBold=Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA_BOLD); $yCursor=$yTop; $xCursor=$xLeft; // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Ueberschrift (Listname) $size=$standardSize+4; $font=$standardFontBold; $page->setFont($font, $size); // $text=utf8_encode( $header['h1'] ); $text=( $header['h1'] ); $xpos=$this->_centerstartposition_range($text, $font, $size, $xLeft, $xLeft+$xWidth); $page->drawText($text, $xpos, $yCursor, 'UTF-8'); $geschrieben[count($pdf->pages)-1]++; $xCursor=$xLeft; $yCursor-=($standardlineheight+10); if ($yCursor<$yMin) { $pdf->pages[]=$pdf->newPage(Zend_Pdf_Page::SIZE_A4); $page=$pdf->pages[count($pdf->pages)-1]; $yCursor=$yTop; $page->setFont($font, $size); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Unterueberschrift, falls vorhanden if (isset($header['h2']) and $header['h2']) { $size=$standardSize; $font=$standardFontBold; $page->setFont($font, $size); // $text=utf8_encode( $header['h2'] ); $text=( $header['h2'] ); $xpos=$this->_centerstartposition_range($text, $font, $size, $xLeft, $xLeft+$xWidth); $page->drawText($text, $xpos, $yCursor+6, 'UTF-8'); $geschrieben[count($pdf->pages)-1]++; $xCursor=$xLeft; $yCursor-=($standardlineheight+4); } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Fussnote if (isset($header['fussnote']) and $header['fussnote']) { $size=$standardSize*0.5; $font=$standardFont; $page->setFont($font, $size); // $text=utf8_encode( $header['fussnote'] ); $text=( $header['fussnote'] ); $page->drawText($text, $xLeft, $yMin*0.6, 'UTF-8'); $geschrieben[count($pdf->pages)-1]++; } // *** *** *** *** *** *** *** for ($t=0; $tsetFont($font, $size); $yCursor-=$standardlineheight; // $text=utf8_encode( $tabellen[$t]['h1'] ); $text=( $tabellen[$t]['h1'] ); $xpos=$xLeft; $page->drawText($text, $xpos, $yCursor, 'UTF-8'); $geschrieben[count($pdf->pages)-1]++; $xCursor=$xLeft; $yCursor-=($standardlineheight); if ($yCursor<$yMin) { if ($linien) { $this->draw_TableLines($page, $li['vonX'], array_fill(0, count($li['vonX']), $li['oben']), $li['vonX'], array_fill(0, count($li['vonX']), $li['unten']+$standardSize)); $li['oben']=$yTop+$shift_betweenLine; $li['unten']=$yTop+$shift_betweenLine; } $pdf->pages[]=$pdf->newPage(Zend_Pdf_Page::SIZE_A4); $page=$pdf->pages[count($pdf->pages)-1]; $yCursor=$yTop; $page->setFont($font, $size); if ($linien) { $page->drawLine($li['links']-$li['padding'], $li['oben'], $li['rechts']-$li['padding'], $li['oben']); } } } // *** *** *** *** *** *** *** $spaltenbreiten=$tabellen[$t]['spaltenbreiten']; $ueberschriften=$tabellen[$t]['ueberschriften']; $tabelle=$tabellen[$t]['tabelle']; // *** *** *** *** *** *** *** // Spaltenbreiten festlegen $spaltenanzahl=count($spaltenbreiten); if ($linien) { $li['vonX']=$spaltenbreiten; array_unshift($li['vonX'], '-1'); } $tmp_breite_ges=0; for ($i=0; $i<$spaltenanzahl; $i++) { $tmp_breite_ges+=$spaltenbreiten[$i]; } $tmp_breite=($tmp_breite_ges > 0 ? $xWidth/$tmp_breite_ges : 1); for ($i=0; $i<$spaltenanzahl; $i++) { $spaltenbreiten[$i]=$spaltenbreiten[$i]*$tmp_breite; } if ($linien) { $tmp_breite=($tmp_breite_ges > 0 ? ($li['rechts']-$li['links'])/$tmp_breite_ges : 1); $li['vonX'][0]=$li['links']-$li['padding']; for ($i=1; $i<$spaltenanzahl+1; $i++) { $li['vonX'][$i]=$li['vonX'][$i-1]+$li['vonX'][$i]*$tmp_breite; } } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Spaltenueberschriften $li['oben']=$yCursor+0.5*$standardSize; $li['unten']=$yCursor; if ($linien) { $page->drawLine($li['links']-$li['padding'], $li['oben'], $li['rechts']-$li['padding'], $li['oben']); } $li['oben']=$yCursor+0.5*$standardSize; $li['unten']=$yCursor; $yCursor-=$standardlineheight*0.5; $size=$standardSize; $font=$standardFontBold; $page->setFont($font, $size); $xpos=$xLeft; for ($i=0; $i<$spaltenanzahl; $i++) { // $text=utf8_encode( $ueberschriften[$i] ); $text=( $ueberschriften[$i] ); $page->drawText($text, $xpos, $yCursor, 'UTF-8'); $geschrieben[count($pdf->pages)-1]++; $xpos+=$spaltenbreiten[$i]; } $xCursor=$xLeft; $yCursor-=$standardlineheight; $li['unten']=$yCursor; if ($linien) { $page->drawLine($li['links']-$li['padding'], $yCursor+$shift_betweenLine, $li['rechts']-$li['padding'], $yCursor+$shift_betweenLine); } if ($yCursor<$yMin) { if ($linien) { $this->draw_TableLines($page, $li['vonX'], array_fill(0, count($li['vonX']), $li['oben']), $li['vonX'], array_fill(0, count($li['vonX']), $li['unten']+$standardSize)); $li['oben']=$yTop+$shift_betweenLine; $li['unten']=$yTop+$shift_betweenLine; } $pdf->pages[]=$pdf->newPage(Zend_Pdf_Page::SIZE_A4); $page=$pdf->pages[count($pdf->pages)-1]; $yCursor=$yTop; $page->setFont($font, $size); if ($linien) { $page->drawLine($li['links']-$li['padding'], $li['oben'], $li['rechts']-$li['padding'], $li['oben']); } } // *** *** *** *** *** *** *** // *** *** *** *** *** *** *** // Tabelle ausgeben $size=$standardSize; $font=$standardFont; $page->setFont($font, $size); for ($z=0; $zdrawText($text, $xpos, $yCursor, 'UTF-8'); $geschrieben[count($pdf->pages)-1]++; $xpos+=$spaltenbreiten[$i]; } $xCursor=$xLeft; $yCursor-=$standardlineheight; $li['unten']=$yCursor; if ($linien) { $page->drawLine($li['links']-$li['padding'], $yCursor+$shift_betweenLine, $li['rechts']-$li['padding'], $yCursor+$shift_betweenLine); } if ($yCursor<$yMin) { if ($linien) { $this->draw_TableLines($page, $li['vonX'], array_fill(0, count($li['vonX']), $li['oben']), $li['vonX'], array_fill(0, count($li['vonX']), $li['unten']+$standardSize)); $li['oben']=$yTop+$shift_betweenLine; $li['unten']=$yTop+$shift_betweenLine; } $pdf->pages[]=$pdf->newPage(Zend_Pdf_Page::SIZE_A4); $page=$pdf->pages[count($pdf->pages)-1]; $yCursor=$yTop; $page->setFont($font, $size); if ($linien) { $page->drawLine($li['links']-$li['padding'], $li['oben'], $li['rechts']-$li['padding'], $li['oben']); } } } $li['unten']=$yCursor; if ($yCursor<$yMin) { if ($linien) { $this->draw_TableLines($page, $li['vonX'], array_fill(0, count($li['vonX']), $li['oben']), $li['vonX'], array_fill(0, count($li['vonX']), $li['unten']+$standardSize)); $li['oben']=$yTop+$shift_betweenLine; $li['unten']=$yTop+$shift_betweenLine; } $pdf->pages[]=$pdf->newPage(Zend_Pdf_Page::SIZE_A4); $page=$pdf->pages[count($pdf->pages)-1]; $yCursor=$yTop; $page->setFont($font, $size); if ($linien) { $page->drawLine($li['links']-$li['padding'], $li['oben'], $li['rechts']-$li['padding'], $li['oben']); } } // *** *** *** *** *** *** *** if ($linien) { $this->draw_TableLines($page, $li['vonX'], array_fill(0, count($li['vonX']), $li['oben']), $li['vonX'], array_fill(0, count($li['vonX']), $li['unten']+$standardSize)); } } if (count($pdf->pages)>1) { if (!$geschrieben[count($pdf->pages)-1]) { unset($pdf->pages[count($pdf->pages)-1]); } } // ****************************** // Ausgabe // ****************************** $pdfAsString = $pdf->render(); // header('Content-type: application/x-pdf'); // header("Content-disposition: attachment; filename=$pdffilname"); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header('Content-type: application/x-pdf'); header("Content-disposition: attachment; filename=$pdffilname"); header("Content-Transfer-Encoding: binary"); echo $pdfAsString; } function draw_TableLines($page, $vonX=array(), $vonY=array(), $nachX=array(), $nachY=array()) { for ($i=0; $idrawLine($vonX[$i], $vonY[$i], $nachX[$i], $nachY[$i]); } } function _textwidth($string, $font, $fontSize) { return $this->_fontStringWidth($string, $font, $fontSize); } function _rightstartposition($right, $string, $font, $fontSize) { $textwidth=$this->_fontStringWidth($string, $font, $fontSize); return ( $right - $textwidth ); } function _rightjustifiedstartposition($page, $string, $font, $fontSize){ $textwidth=$this->_fontStringWidth($string, $font, $fontSize); $pagewidth=$page->getWidth(); return (($pagewidth-$textwidth)); } function _centerstartposition($page, $string, $font, $fontSize) { $textwidth=$this->_fontStringWidth($string, $font, $fontSize); $pagewidth=$page->getWidth(); return (($pagewidth-$textwidth) * 0.5); } function _centerstartposition_range($string, $font, $fontSize, $xLeft, $xRight) { $textwidth=$this->_fontStringWidth($string, $font, $fontSize); return (($xLeft+$xRight-$textwidth) * 0.5); } function _fontStringWidth($string, $font, $fontSize){ // #if (strpos($string,utf8_encode('?'))!==false) { echo $string; die(); } // $pattern_s = array(utf8_encode('ä'),utf8_encode('ö'),utf8_encode('ü'), // utf8_encode('Ä'),utf8_encode('Öœ'),utf8_encode('Ü„'), // utf8_encode('ß')); // $replace_s = array(utf8_encode('a'),utf8_encode('o'),utf8_encode('u'), // utf8_encode('A'),utf8_encode('O'),utf8_encode('U'), // utf8_encode('S')); $pattern_s = array(('ä'),('ö'),('ü'), ('Ä'),('Ö'),('Ü'), ('ß')); $replace_s = array(('a'),('o'),('u'), ('A'),('O'),('U'), ('S')); $string = str_replace($pattern_s,$replace_s,$string); $string = preg_replace('/[^a-zA-Z0-9 :();.,\-\+]/', 'W', $string); // # Inoffizielle Funktion aus dem Zend-WiKi // #$drawingString = iconv('', 'UTF-16BE', $string); $drawingString = iconv('', 'UTF-16BE', $string); $characters = array(); for ($i = 0; $i < strlen($drawingString); $i++) { $characters[] = (ord($drawingString[$i++]) << 8) | ord($drawingString[$i]); } $glyphs = $font->glyphNumbersForCharacters($characters); $widths = $font->widthsForGlyphs($glyphs); $stringWidth = (array_sum($widths) / $font->getUnitsPerEm()) * $fontSize; return $stringWidth; } // ***************************** ENDE PDF function getMail($type){ $mail=array(); // ggf. mit $this->_formatText_getICal statt mit rawurlencode switch ($type) { case 'zeitverlaengerung': $mail['zeitverlaengerung']['body']= rawurlencode($this->_formatText_getICal( "Sehr geehrter Herr Seminarleiter, " ."\nsehr geehrte Frau Seminarleiterin, " ."\n\nfür die 3. Prüfungslehrprobe von ".$this->plp_data['ref_vorname']." ".$this->plp_data['ref_nachname'] ." wurde eine Zeitverlängerung beantragt und genehmigt. " ."\nBitte vereinbaren Sie mit der Einsatzschule einen neuen Beginn bzw. ein neues Ende der Prüfungslehrprobe. " ."\n\nMit freundlichen Grüߟen " ."\n\n " )); $mail['zeitverlaengerung']['subject']= rawurlencode($this->_formatText_getICal('PLP3-Terminvereinbarung: Zeitverlängerung bei PLP3 - ' .$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] )); break; case 'terminPLPok': $mail['terminPLPok']['body']= rawurlencode($this->_formatText_getICal( "Sehr geehrter Herr Seminarleiter, " ."\nsehr geehrte Frau Seminarleiterin, " ."\n\nder Termin für die Prüfungslehrprobe von ".$this->plp_data['ref_vorname']." " .$this->plp_data['ref_nachname']." wurde für den " .substr($this->plp_data['plp3_datum'],8,2).'.' .substr($this->plp_data['plp3_datum'],5,2).'.' .substr($this->plp_data['plp3_datum'],0,4) ." festgesetzt. " ."\nDie weiteren Daten der Lehrprobe können nun im BRN vervollständigt werden. " ."\n\nMit freundlichen Grüߟen " ."\n\n " )); $mail['terminPLPok']['subject']= rawurlencode($this->_formatText_getICal( 'PLP3-Terminvereinbarung - '.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'] )); break; } /* switch ($type) { case 'zeitverlaengerung': $mail['zeitverlaengerung']['body']= rawurlencode('Sehr geehrter Herr Seminarleiter, sehr geehrte Frau Seminarleiterin, f?r die 3. Pr?fungslehrprobe von '.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'].' wurde eine Zeitverl?ngerung beantragt und genehmigt. Bitte vereinbaren Sie mit der Einsatzschule einen neuen Beginn bzw. ein neues Ende der Pr?fungslehrprobe. Mit freundlichen Gr??en'); $mail['zeitverlaengerung']['subject']= rawurlencode('PLP3-Terminvereinbarung: Zeitverl?ngerung bei PLP3 - '.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname']); break; case 'terminPLPok': $mail['terminPLPok']['body']= rawurlencode('Sehr geehrter Herr Seminarleiter, sehr geehrte Frau Seminarleiterin, der Termin f?r die Pr?fungslehrprobe von '.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname'].' wurde f?r den '.$this->plp_data['plp3_datum'].' festgesetzt. Die weiteren Daten der Lehrprobe k?nnen nun im BRN vervollst?ndigt werden. Mit freundlichen Gr??en'); $mail['terminPLPok']['subject']= rawurlencode('PLP3-Terminvereinbarung - '.$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname']); break; } */ return $mail; } function checkZeitverlaengerung($sd) { return true; } function getFehlerBeiZeitverlaengerung() { global $db; $query=$this->querySelectFrom_PLP3s(); $query.= " WHERE ( ( snr_pruef = '".$this->schulnummer."' ) AND ( schuljahr = '".$this->schuljahr."' ) ) AND ( `plp3_zeit_von` <> '' AND `plp3_zeit_von` <> '00:00:00' AND `plp3_zeit_von` <> '00:00' AND `plp3_zeit_bis` <> '' AND `plp3_zeit_bis` <> '00:00:00' AND `plp3_zeit_bis` <> '00:00' AND `plp3_zeitverlaengerung` AND `plp3_zeitverlaengerung_auf_minuten` >0 ) AND ( ADDTIME( `plp3_zeit_von` , SEC_TO_TIME( `plp3_zeitverlaengerung_auf_minuten` *60 ) ) <> `plp3_zeit_bis` ) "; $query.=$this->querySelectFrom_ORDER_PLP3s('ps'); if ($this->debug>=3) { echo $this->html_newline, $query, $this->html_newline; } $fehler_bei_zeitverlaengerung=array(); $rs = $db->Execute($query); while (!$rs->EOF) { $fehler_bei_zeitverlaengerung[] = $this->_my_stripslashes_array($rs->fields); $rs->MoveNext(); } return $fehler_bei_zeitverlaengerung; } function getFehlerBeiEroeffnung() { global $db; $query=$this->querySelectFrom_PLP3s(); $query.= " WHERE ( ( snr_gs = '".$this->schulnummer."' ) AND ( schuljahr = '".$this->schuljahr."' ) ) AND ( `plp3_datum` <> '' AND `plp3_datum` <> '0000-00-00' AND `eroeffnung_datum` <> '' AND `eroeffnung_datum` <> '0000-00-00' ) AND ( DATEDIFF( `plp3_datum`, `eroeffnung_datum`) <> 14 ) "; // $query.=$this->querySelectFrom_ORDER_PLP3s('ps'); if ($this->debug>=3) { echo $this->html_newline, $query, $this->html_newline; } $fehler_bei_eroeffnung=array(); $rs = $db->Execute($query); while (!$rs->EOF) { $fehler_bei_eroeffnung[] = $this->_my_stripslashes_array($rs->fields); $rs->MoveNext(); } return $fehler_bei_eroeffnung; } function csvExport(){ $schulnummer=$this->schulnummer; $filname='PLP3_SemDB_SNr'.$schulnummer.'.csv'; $setSize=false; $csv_export=$this->_getExportSettings($setSize); $csvdata=''; //headlines foreach ($csv_export as $csvD) { $csvdata.=$this->_formatCsvData( $csvD['headline'] , $csvD['size'], $csvD['setSize']); } $csvdata.="\n"; //data foreach( $this->grund_refs as $refdata ){ foreach ($csv_export as $csvD_key => $csvD) { $csvdata.=$this->_formatCsvData($refdata[$csvD_key], $csvD['size'], $csvD['setSize']); } $csvdata.="\n"; } header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("content-type: application/csv-tab-delimited-table"); header("content-length: ".strlen($csvdata)); header('content-disposition: attachment; filename="'.$filname.'"'); header("Content-Transfer-Encoding: binary"); echo $csvdata; exit; } private function _formatCsvData($data, $size, $setSize=true) { $data=utf8_decode($data); if ($setSize) { $str_lenth=strlen($data); if ($str_lenth>$size) { $data='"'.$this->_formatCsvData_inner_Gaensefuesschen(substr($data,0,$size)).'";'; } else { // ($str_lenth<4) $data=(str_pad('"'.$this->_formatCsvData_inner_Gaensefuesschen($data).'"', $size+2, " ")).';'; } } else { $data='"'.$this->_formatCsvData_inner_Gaensefuesschen($data).'";'; } return $data; } private function _formatCsvData_inner_Gaensefuesschen($s) { $suchmuster = '/\"/i'; $ersetzung = '""'; return preg_replace($suchmuster, $ersetzung, $s); } function getICal($schule, $typ) { $organizer = (array) array(); // (array) array('www.realschule.bayern.de', 'mbino@realschule-bayern.info'); $categories = array('3. PLP'); $end_date = ''; $start_date = ''; $title=$this->_formatText_getICal('3. PLP, '.($this->plp_data['ref_anrede'] ? $this->plp_data['ref_anrede'].' ' : '') .$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname']); $location=''; $beschreibung = $this->_formatText_getICal("Daten zur 3. Prüfungslehrprobe:\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal("Referendar/in:\n"); $beschreibung .= $this->_formatText_getICal('_ '.($this->plp_data['ref_anrede'] ? $this->plp_data['ref_anrede'].' ' : '').$this->plp_data['ref_vorname'].' '.$this->plp_data['ref_nachname']."\n"); $beschreibung .= $this->_formatText_getICal('_ '.'PLP im Fach:'.' '.$this->plp_data['plp3_fach']."\n"); $beschreibung .= $this->_formatText_getICal('_ '.'Fächerkombination: '.$this->plp_data['fach1'].' / '.$this->plp_data['fach2'].' / '.$this->plp_data['fach3']."\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal("Termine:\n"); $beschreibung .= $this->_formatText_getICal('_ '.'Eröffnung:'.' '.($this->plp_data['eroeffnung_datum'] ? $this->plp_data['eroeffnung_datum'] : '')."\n"); $beschreibung .= $this->_formatText_getICal('_ '.'Vorstunde:'.' '.($this->plp_data['vorstunde_datum'] ? $this->plp_data['vorstunde_datum'] : '').($this->plp_data['vorstunde_zeit_von'] ? ', '.$this->plp_data['vorstunde_zeit_von'].' - '.$this->plp_data['vorstunde_zeit_bis'] : ' ')."\n"); $beschreibung .= $this->_formatText_getICal('_ '.'Prüfung:' .' '.($this->plp_data['plp3_datum'] ? $this->plp_data['plp3_datum'] : '').($this->plp_data['plp3_zeit_von'] ? ', '.$this->plp_data['plp3_zeit_von'] .' - '.$this->plp_data['plp3_zeit_bis'] : ' ')."\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal("Daten der Einsatzschule:\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal('_ '.$this->plp_data['schulenES_Schulname'].($this->plp_data['schulenES_Schulname2'] ? ', '.$this->plp_data['schulenES_Schulname2'] : '')."\n"); $beschreibung .= $this->_formatText_getICal('_ '.$this->plp_data['schulenES_Strasse']."\n"); $beschreibung .= $this->_formatText_getICal('_ '.$this->plp_data['schulenES_PLZ'].' '.$this->plp_data['schulenES_Ort']."\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal('_ '.'Telefonnummer: '.$this->plp_data['schulenES_Telefon']." \n"); $beschreibung .= $this->_formatText_getICal('_ '.'Geodaten: L: ' .($this->plp_data['schulen_geodatenES_Laenge'] ? $this->plp_data['schulen_geodatenES_Laenge'] : '-').' B: ' .($this->plp_data['schulen_geodatenES_Breite'] ? $this->plp_data['schulen_geodatenES_Breite'] : '-')." \n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal('_ '.'im BRN: http://www.realschule.bayern.de/schulen/info/?Schulnr='.$this->plp_data['snr_einsatz']." \n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal("beteiligte Schulen:\n"); $beschreibung .= $this->_formatText_getICal("\n"); $beschreibung .= $this->_formatText_getICal('_ '.'grundständige Seminarschule:'.' '.$this->plp_data['schulenGS_Schulname'].($this->plp_data['schulenGS_Schulname2'] ? ', '.$this->plp_data['schulenGS_Schulname2'] : '').' in '.$this->plp_data['schulenGS_Ort']."\n"); $beschreibung .= $this->_formatText_getICal('_ '.'Einsatzschule:'.' '.$this->plp_data['schulenES_Schulname'].($this->plp_data['schulenES_Schulname2'] ? ', '.$this->plp_data['schulenES_Schulname2'] : '').' in '.$this->plp_data['schulenES_Ort']."\n"); $beschreibung .= $this->_formatText_getICal('_ '.'prüfende Seminarschule:'.' '.$this->plp_data['schulenPS_Schulname'].($this->plp_data['schulenPS_Schulname2'] ? ', '.$this->plp_data['schulenPS_Schulname2'] : '').' in '.$this->plp_data['schulenPS_Ort']."\n"); $beschreibung .= $this->_formatText_getICal("\n"); $attendees = (array) array( 'unknow' => ',1' //'RS-Bayreuth' => 'verwaltunq@r2-bayreuth.de,1', //GEHT NICHT??? //'Michi' => 'flaimo@gmx.net,1' // 'unknow' => ',1' ); // Name => e-mail,role (see iCalEvent class) $days = (array) array (2,3); if ($schule=='gs' and $this->plp_data['snr_gs']) { // Termin Eroeffnung if ($typ=='eroeffnung' and $this->plp_data['eroeffnung_datum']) { $start_date = strtotime($this->plp_data['eroeffnung_datum'].' 09:00:00'); $end_date = $start_date; $title=$this->_formatText_getICal("Eröffnung ").$title; $location=$this->_formatText_getICal($this->plp_data['schulenGS_Ort']); $location.=$this->_formatText_getICal(', '.$this->plp_data['schulenGS_Schulname']); if ($this->plp_data['schulenGS_Schulname2']) { $location.=$this->_formatText_getICal(', '.$this->plp_data['schulenGS_Schulname2']); } } } elseif ($schule=='es' and $this->plp_data['snr_einsatz']) { // Termin Pruefung if ($typ=='pruefung' and $this->plp_data['plp3_datum'] and $this->plp_data['plp3_zeit_von'] and $this->plp_data['plp3_zeit_bis']) { $start_date = strtotime($this->plp_data['plp3_datum'].' '.($this->plp_data['plp3_zeit_von']!='00:00:00' ? $this->plp_data['plp3_zeit_von'] : '00:00:01')); $end_date = strtotime($this->plp_data['plp3_datum'].' '.($this->plp_data['plp3_zeit_bis']!='00:00:00' ? $this->plp_data['plp3_zeit_bis'] : '00:00:01')); // $title=$this->_formatText_getICal("Termin ").$title; $location=$this->_formatText_getICal($this->plp_data['schulenES_Ort']); $location.=$this->_formatText_getICal(', '.$this->plp_data['schulenES_Schulname']); if ($this->plp_data['schulenES_Schulname2']) { $location.=$this->_formatText_getICal(', '.$this->plp_data['schulenES_Schulname2']); } } // Termin Vorstunde elseif ($typ=='vorstunde' and $this->plp_data['vorstunde_datum'] and $this->plp_data['vorstunde_zeit_von'] and $this->plp_data['vorstunde_zeit_bis']) { $start_date = strtotime($this->plp_data['vorstunde_datum'].' '.($this->plp_data['vorstunde_zeit_von']!='00:00:00' ? $this->plp_data['vorstunde_zeit_von'] : '00:00:01') ); $end_date = strtotime($this->plp_data['vorstunde_datum'].' '.($this->plp_data['vorstunde_zeit_bis']!='00:00:00' ? $this->plp_data['vorstunde_zeit_bis'] : '00:00:01')); $title=$this->_formatText_getICal("Vorstunde ").$title; $location=$this->_formatText_getICal($this->plp_data['schulenES_Ort']); $location.=$this->_formatText_getICal(', '.$this->plp_data['schulenES_Schulname']); if ($this->plp_data['schulenES_Schulname2']) { $location.=$this->_formatText_getICal(', '.$this->plp_data['schulenES_Schulname2']); } } } elseif ($schule=='ps' and $this->plp_data['snr_pruef']) { // Termin Pruefung if ($typ=='pruefung' and $this->plp_data['plp3_datum'] and $this->plp_data['plp3_zeit_von'] and $this->plp_data['plp3_zeit_bis']) { $start_date = strtotime($this->plp_data['plp3_datum'].' '.($this->plp_data['plp3_zeit_von']!='00:00:00' ? $this->plp_data['plp3_zeit_von'] : '00:00:01')); $end_date = strtotime($this->plp_data['plp3_datum'].' '.($this->plp_data['plp3_zeit_bis']!='00:00:00' ? $this->plp_data['plp3_zeit_bis'] : '00:00:01')); // $title=$this->_formatText_getICal("Termin ").$title; $location=$this->_formatText_getICal($this->plp_data['schulenES_Ort']); $location.=$this->_formatText_getICal(', '.$this->plp_data['schulenES_Schulname']); if ($this->plp_data['schulenES_Schulname2']) { $location.=$this->_formatText_getICal(', '.$this->plp_data['schulenES_Schulname2']); } } } else { } $plp3UID='plp3tv'.'-'.$this->plp_data['schuljahr'].'-'.$typ.'-'.$this->plp_data['pkz'].'@realschule.bayern.de'; //??? $plp3UID=md5($plp3UID); $iCal = (object) new iCal('', 1, ''); // (ProgrammID, Method (1 = Publish | 0 = Request), Download Directory) $iCal->addEvent( $organizer, // Organizer $start_date, // Start Time (timestamp; for an allday event the startdate has to start at YYYY-mm-dd 00:00:00) $end_date, // End Time (write 'allday' for an allday event instead of a timestamp) $location, // Location 1, // Transparancy (0 = OPAQUE | 1 = TRANSPARENT) $categories, // Array with Strings $beschreibung, // ."\n\n\nUID: ".$plp3UID, // Description $title, // Title 2, // Class (0 = PRIVATE | 1 = PUBLIC | 2 = CONFIDENTIAL) $attendees, // Array (key = attendee name, value = e-mail, second value = role of the attendee [0 = CHAIR | 1 = REQ | 2 = OPT | 3 =NON]) 5, // Priority = 0-9 0, // frequency: 0 = once, secoundly - yearly = 1-7 10, // recurrency end: ('' = forever | integer = number of times | timestring = explicit date) 2, // Interval for frequency (every 2,3,4 weeks...) $days, // Array with the number of the days the event accures (example: array(0,1,5) = Sunday, Monday, Friday 0, // Startday of the Week ( 0 = Sunday - 6 = Saturday) '', // exeption dates: Array with timestamps of dates that should not be includes in the recurring event 0, // kein Arlarm //$alarm, // Sets the time in minutes an alarm appears before the event in the programm. no alarm if empty string or 0 1, // Status of the event (0 = TENTATIVE, 1 = CONFIRMED, 2 = CANCELLED) '', // optional URL for that event 'de', // Language of the Strings $plp3UID //'' // Optional UID for this event ); $iCal->outputFile('ics'); // output file as ics (xcs and rdf possible) } private function _formatText_getICal($s){ // return utf8_encode($s); $umlaute = Array( "/À/", "/Á/", "/Â/", "/Ä/", "/È/", "/É/", "/Ì/", "/Í/", "/Î/", "/Ò/", "/Ó/", "/Ô/", "/Ö/", "/Ù/", "/Ú/", "/Û/", "/Ü/", "/Ý/", "/ß/", "/à/", "/á/", "/â/", "/ä/", "/è/", "/é/", "/ê/", "/ì/", "/í/", "/î/", "/ò/", "/ó/", "/ô/", "/ö/", "/ù/", "/ú/", "/ü/", "/ý/" ); $replace = Array( "A", "A", "A", "Ae", "E", "E", "I", "I", "I", "O", "O", "O", "Oe", "U", "U", "U", "Ue", "Y", "ss", "a", "a", "a", "ae", "e", "e", "e", "i", "i", "i", "o", "o", "o", "oe", "u", "u", "ue", "y" ); $s_neu = preg_replace($umlaute, $replace, $s); return $s_neu; } } // END: class plp3_terminvereinbarung // ************************************************** // * class textblock2 // ************************************************** class textblock2 { var $maxwidth=0; var $font=""; var $fontSize=0; var $lines=array(); var $encodeUTF8=false; function textblock2($tb_maxwidth, $tb_font, $bt_fontSize, $bf_encodeUTF8) { $this->maxwidth=$tb_maxwidth; $this->font=$tb_font; $this->fontSize=$bt_fontSize; $this->encodeUTF8=$bf_encodeUTF8; $this->lines[0]=""; } function addWord($word2) { $word = $this->encodeUTF8 ? utf8_encode($word2) : $word2; $i=count($this->lines)-1; if ( $this->_fontStringWidth($this->lines[$i].$word, $this->font, $this->fontSize) > $this->maxwidth ) { $this->lines[$i+1] = $word; } else { $this->lines[$i].=$word; } } function addText($text) { $words=split( " ", $text ); for ($i=0; $iaddWord($words[$i]." "); } } } // Ergänzung Zebetic: Fügt eine neue "Zeile" ein. function addLine() { array_push($this->lines, ""); } function getLineCount() { return count($this->lines); } function getLine($i) { return $this->lines[$i]; } function _fontStringWidth($string, $font, $fontSize){ // #if (strpos($string,utf8_encode('?'))!==false) { echo $string; die(); } // $pattern_s = array(utf8_encode('ö'),utf8_encode('ü'),utf8_encode('ä'), // utf8_encode('Ö'),utf8_encode('Ü'),utf8_encode('Ä'), // utf8_encode('ß')); // $replace_s = array(utf8_encode('o'),utf8_encode('u'),utf8_encode('a'), // utf8_encode('O'),utf8_encode('U'),utf8_encode('A'), // utf8_encode('S')); $pattern_s = array(('ö'),('ü'),('ä'), ('Ö'),('Ü'),('Ä'), ('ß')); $replace_s = array(('o'),('u'),('a'), ('O'),('U'),('A'), ('S')); $string = str_replace($pattern_s,$replace_s,$string); $string = preg_replace('/[^a-zA-Z0-9 .,\-\+]/', 'W', $string); // # Inoffizielle Funktion aus dem Zend-WiKi // #$drawingString = iconv('', 'UTF-16BE', $string); $drawingString = iconv('', 'UTF-16BE', $string); $characters = array(); for ($i = 0; $i < strlen($drawingString); $i++) { $characters[] = (ord($drawingString[$i++]) << 8) | ord($drawingString[$i]); } $glyphs = $font->glyphNumbersForCharacters($characters); $widths = $font->widthsForGlyphs($glyphs); $stringWidth = (array_sum($widths) / $font->getUnitsPerEm()) * $fontSize; return $stringWidth; } } // ende class textblock2 // ************************* // ************************* // ************************* // ************************* // * class plp3_table_admin // ************************* class plp3_table_admin { var $schuljahr=0; function plp3_table_admin($schuljahr) { $this->schuljahr=$schuljahr; } function backupTable() { global $db; $zeit=date("Y_m_d__H_i_s"); $query='CREATE TABLE plp_tv_main_'.$zeit.' SELECT * FROM plp_tv_main'; $rs = $db->Execute($query); } function clearTable() { global $db; $query='TRUNCATE TABLE plp_tv_main'; $rs = $db->Execute($query); } function importTable( $options=array() ) { global $db; $import_errors=array(); $pseudo=false; if ( isset($options['pseudo']) ) { $pseudo=$options['pseudo']; }; $semfaecher=$this->getSeminarfaecher(true); $query= " SELECT * FROM plp_tv_import "; $rs = $db->Execute($query); $count_import=0; while (!$rs->EOF) { $rs->fields['idplptvmain']=md5(rand(0,1000).$rs->fields['pkz'].$rs->fields['nachname'].$rs->fields['vorname'].date("YmdHis")); // Anrede if ($rs->fields['ref_anrede']!='M' and $rs->fields['ref_anrede']!='W') { $import_errors[ $rs->fields['idplptvmain'] ]['ref_anrede']='Geschlecht fehlt, also Stud.-Ref./in'; } $rs->fields['ref_anrede']=( ($rs->fields['ref_anrede']=='W') ? 'Stud.-Refin.' : ( ($rs->fields['ref_anrede']=='M') ? 'Stud.-Ref.' : 'Stud.-Ref./in') ); // GS $rs->fields['snr_gs']=$this->_vierstelligeSchulnummer($rs->fields['snr_gs']); if ($rs->fields['snr_gs']=='0000') { $import_errors[ $rs->fields['idplptvmain'] ]['snr_gs']='Grundständige Seminarschule fehlt.'; } elseif ( !$this->_existiert_Schule_mit_Schulnummer($rs->fields['snr_gs']) ) { $import_errors[ $rs->fields['idplptvmain'] ]['snr_gs']='Grundständige Seminarschule: Die Schulnummer '.$rs->fields['snr_gs'].' existiert nicht.'; } // ES $rs->fields['snr_einsatz']=$this->_vierstelligeSchulnummer($rs->fields['snr_einsatz']); if ($rs->fields['snr_einsatz']=='0000') { $import_errors[ $rs->fields['idplptvmain'] ]['snr_einsatz']='Einsatzschule fehlt.'; } elseif ( !$this->_existiert_Schule_mit_Schulnummer($rs->fields['snr_einsatz']) ) { $import_errors[ $rs->fields['idplptvmain'] ]['snr_einsatz']='Einsatzschule: Die Schulnummer '.$rs->fields['snr_gs'].' existiert nicht.'; } // PS $rs->fields['snr_pruef']=$this->_vierstelligeSchulnummer($rs->fields['snr_pruef']); if ($rs->fields['snr_pruef']=='0000') { $import_errors[ $rs->fields['idplptvmain'] ]['snr_pruef']='Prüfende Seminarschule fehlt.'; } elseif ( !$this->_existiert_Schule_mit_Schulnummer($rs->fields['snr_pruef']) ) { $import_errors[ $rs->fields['idplptvmain'] ]['snr_pruef']='Prüfende Seminarschule: Die Schulnummer '.$rs->fields['snr_gs'].' existiert nicht.'; } // PKZ if (!$rs->fields['pkz'] ) { $import_errors[ $rs->fields['idplptvmain'] ]['pkz']='Die PKZ-Nummer fehlt.'; } // Nachname if (!$rs->fields['ref_nachname'] ) { $import_errors[ $rs->fields['idplptvmain'] ]['ref_nachname']='Der Nachname fehlt.'; } // Vorname if (!$rs->fields['ref_vorname'] ) { $import_errors[ $rs->fields['idplptvmain'] ]['ref_vorname']='Der Vorname fehlt.'; } // fach1 if (!$rs->fields['fach1'] or $rs->fields['fach1']=='' or $rs->fields['fach1']=='-' ) { $import_errors[ $rs->fields['idplptvmain'] ]['fach1']='Das 1. Fach fehlt.'; } // fach2 if (!$rs->fields['fach2'] or $rs->fields['fach2']=='' or $rs->fields['fach2']=='-' ) { $import_errors[ $rs->fields['idplptvmain'] ]['fach2']='Das 2. Fach fehlt.'; } // plp_fach if (!$rs->fields['plp3_fach'] or $rs->fields['plp3_fach']=='' or $rs->fields['plp3_fach']=='-' ) { $import_errors[ $rs->fields['idplptvmain'] ]['plp3_fach']='Das PLP-Fach fehlt.'; } else { if ($rs->fields['plp3_fach'] != $rs->fields['fach1'] and $rs->fields['plp3_fach'] != $rs->fields['fach2'] and $rs->fields['plp3_fach'] != $rs->fields['fach3']) { if ( $semfaecher[ $rs->fields['plp3_fach'] ]['fach_alternativ'] != $rs->fields['fach1'] and $semfaecher[ $rs->fields['plp3_fach'] ]['fach_alternativ'] != $rs->fields['fach2'] and $semfaecher[ $rs->fields['plp3_fach'] ]['fach_alternativ'] != $rs->fields['fach3']) { $import_errors[ $rs->fields['idplptvmain'] ]['plp3_fach']='Das PLP-Fach stimmt nicht mit den angegebenen Fächern überein: '; $import_errors[ $rs->fields['idplptvmain'] ]['plp3_fach'].=$rs->fields['plp3_fach']." <=> ".$rs->fields['fach1'].", ".$rs->fields['fach2'].", ".$rs->fields['fach3']; } } } if ( isset($import_errors[ $rs->fields['idplptvmain'] ]) ) { $import_errors[ $rs->fields['idplptvmain'] ]['data']=$rs->fields; } $rs->fields['schuljahr']=$this->schuljahr; if (!$pseudo) { $insertSQL = $db->AutoExecute("plp_tv_main", $rs->fields, 'INSERT'); } $count_import++; $rs->MoveNext(); } return array ( 'pseudo' => $pseudo, 'import_count' => $count_import, 'error_count' => count($import_errors), 'error_data' => $import_errors ); } private function getSeminarfaecher() { global $db; $result=array(); $fach1=''; if (!$all) { $fach1=$this->plp_data['fach1']; $fach2=$this->plp_data['fach2']; $fach3=$this->plp_data['fach3']; } $query= "SELECT * FROM plp_tv_sem_faecher"; $order= " ORDER BY plp_tv_sem_faecher.bezeichnung ASC"; $rs = $db->Execute($query.$order); while (!$rs->EOF) { $result[$rs->fields['fach']] = $rs->fields; $rs->MoveNext(); } return $result; } private function _vierstelligeSchulnummer($snr){ $str_lenth=strlen($snr); if ($str_lenth>4) { return substr($snr,0,4); } else { // ($str_lenth<4) return (str_pad($snr, 4, "0", STR_PAD_LEFT)); } } private function _existiert_Schule_mit_Schulnummer($snr){ global $db; if ( $snr=='9999' ) { return false; } elseif ( strlen($snr)!=4 ) { return false; } $query= " SELECT * FROM schulen WHERE ( Schulnr = '$snr' ) "; $rs = $db->Execute($query); if (!$rs->EOF) { return true; } else { return false; } } } // END: class plp3_table_admin ?>