diff --git a/system/sync/sync_stpldev_stpl.php b/system/sync/sync_stpldev_stpl.php index 03b8ac446..0cd854c54 100644 --- a/system/sync/sync_stpldev_stpl.php +++ b/system/sync/sync_stpldev_stpl.php @@ -25,12 +25,12 @@ * an die Betroffenen Lektoren und Studenten * Uebersichtsmails werden an LV-Planung und Administration geschickt */ -require_once('../../config/vilesci.config.inc.php'); -require_once('../../config/global.config.inc.php'); -require_once('../../include/functions.inc.php'); -require_once('../../include/studiensemester.class.php'); -require_once('../../include/mail.class.php'); -require_once('../../include/datum.class.php'); +require_once(dirname(__FILE__).'/../../config/vilesci.config.inc.php'); +require_once(dirname(__FILE__).'/../../config/global.config.inc.php'); +require_once(dirname(__FILE__).'/../../include/functions.inc.php'); +require_once(dirname(__FILE__).'/../../include/studiensemester.class.php'); +require_once(dirname(__FILE__).'/../../include/mail.class.php'); +require_once(dirname(__FILE__).'/../../include/datum.class.php'); echo ' @@ -51,6 +51,15 @@ else $mailstudents=(boolean)true; +// Commandline Paramter parsen bei Aufruf ueber Cronjob +// zb php sync_stpldev_stpl.php --sendmail false +$longopt = array( + "sendmail:", +); +$commandlineparams = getopt('', $longopt); +if(isset($commandlineparams['sendmail']) && $commandlineparams['sendmail']=='false') + $sendmail=false; + $datum = new datum(); $count_del=0; @@ -81,6 +90,7 @@ $datum_ende=$ss->ende; if(defined('LVPLAN_SYNC_ENDE') && LVPLAN_SYNC_ENDE!='') $datum_ende=LVPLAN_SYNC_ENDE; +$db =new basis_db(); $stgwhere = ''; $stgwheredev = ''; if(isset($_GET['custom'])) @@ -88,12 +98,12 @@ if(isset($_GET['custom'])) $sendmail = isset($_GET['mail']); $mailstudents = (isset($_GET['nostudentmail'])?false:true); $studiengang_kz=$_GET['studiengang_kz']; - $stgwhere = " AND studiengang_kz='".addslashes($studiengang_kz)."'"; - $stgwheredev = " AND vw_stundenplandev.studiengang_kz='".addslashes($studiengang_kz)."'"; + $stgwhere = " AND studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + $stgwheredev = " AND vw_stundenplandev.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); $datum_begin = $datum->formatDatum($_GET['von'],'Y-m-d'); $datum_ende = $datum->formatDatum($_GET['bis'],'Y-m-d'); } -$db =new basis_db(); + // Beginnzeiten holen $qry = "SELECT stunde,to_char(beginn, 'HH24:MI') AS beginn FROM lehre.tbl_stunde"; $beginnzeit_arr=array(); @@ -109,7 +119,7 @@ if($result = $db->db_query($qry)) function getStudentsFromGroup($studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz, $studiensemester_kurzbz) { $db = new basis_db(); - + $students = array(); if($gruppe_kurzbz=='') { @@ -121,15 +131,15 @@ function getStudentsFromGroup($studiengang_kz, $semester, $verband, $gruppe, $gr public.tbl_benutzer ON (uid=student_uid) WHERE tbl_benutzer.aktiv=true AND - studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."' AND - studiengang_kz = '".addslashes($studiengang_kz)."' AND - semester = '".addslashes($semester)."'"; + studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND + studiengang_kz = ".$db->db_add_param($studiengang_kz)." AND + semester = ".$db->db_add_param($semester); if(trim($verband)!='') { - $qry.=" AND verband = '".addslashes($verband)."'"; + $qry.=" AND verband = ".$db->db_add_param($verband); if(trim($gruppe)!='') { - $qry.=" AND gruppe = '".addslashes($gruppe)."'"; + $qry.=" AND gruppe = ".$db->db_add_param($gruppe); } } } @@ -142,8 +152,8 @@ function getStudentsFromGroup($studiengang_kz, $semester, $verband, $gruppe, $gr LEFT JOIN public.tbl_benutzer USING (uid) WHERE - gruppe_kurzbz='".addslashes($gruppe_kurzbz)."' AND - studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."' AND + gruppe_kurzbz=".$db->db_add_param($gruppe_kurzbz)." AND + studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND tbl_benutzer.aktiv=true "; @@ -183,9 +193,16 @@ Dies ist eine automatische Mail!
Es haben sich folgende Aenderungen in Ihrem echo 'Neue Datensätze werden geholt. ('.date('H:i:s').')
';flush(); $message_stpl .= 'Neue Datensätze werden geholt. ('.date('H:i:s').')'; -$sql_query="SELECT * FROM lehre.vw_stundenplandev WHERE datum>='".addslashes($datum_begin)."' AND datum<='".addslashes($datum_ende)."' ".$stgwhere." AND - NOT EXISTS - (SELECT stundenplan_id FROM lehre.tbl_stundenplan WHERE datum>='".addslashes($datum_begin)."' AND datum<='".addslashes($datum_ende)."' AND stundenplan_id=stundenplandev_id) +$sql_query="SELECT * FROM lehre.vw_stundenplandev + WHERE + datum>=".$db->db_add_param($datum_begin)." + AND datum<=".$db->db_add_param($datum_ende)." ".$stgwhere." + AND NOT EXISTS + (SELECT stundenplan_id FROM lehre.tbl_stundenplan + WHERE + datum>=".$db->db_add_param($datum_begin)." + AND datum<=".$db->db_add_param($datum_ende)." + AND stundenplan_id=stundenplandev_id) ORDER BY datum, stunde;"; @@ -203,32 +220,41 @@ else $sql_query='INSERT INTO lehre.tbl_stundenplan (stundenplan_id,unr,mitarbeiter_uid,datum,stunde,ort_kurzbz,studiengang_kz,semester,verband,gruppe, gruppe_kurzbz,titel,'.(LVPLAN_ANMERKUNG_ANZEIGEN?'anmerkung,':'').'fix,updateamum,updatevon,insertamum,insertvon,lehreinheit_id) VALUES'; //spalte anmerkung nur syncen, wenn im Config aktiv - $sql_query.="($row->stundenplandev_id,$row->unr,'$row->uid','$row->datum',$row->stunde,'$row->ort_kurzbz', - $row->studiengang_kz,$row->semester"; + $sql_query.="(".$db->db_add_param($row->stundenplandev_id).",". + $db->db_add_param($row->unr).",". + $db->db_add_param($row->uid).",". + $db->db_add_param($row->datum).",". + $db->db_add_param($row->stunde).",". + $db->db_add_param($row->ort_kurzbz).",". + $db->db_add_param($row->studiengang_kz).",". + $db->db_add_param($row->semester); if ($row->verband==null) $sql_query.=',NULL'; else - $sql_query.=",'$row->verband'"; + $sql_query.=",".$db->db_add_param($row->verband); if ($row->gruppe==null) $sql_query.=',NULL'; else - $sql_query.=",'$row->gruppe'"; + $sql_query.=",".$db->db_add_param($row->gruppe); if ($row->gruppe_kurzbz==null) $sql_query.=',NULL'; else - $sql_query.=",'$row->gruppe_kurzbz'"; - $sql_query.=",'$row->titel'"; + $sql_query.=",".$db->db_add_param($row->gruppe_kurzbz); + $sql_query.=",".$db->db_add_param($row->titel); if (LVPLAN_ANMERKUNG_ANZEIGEN) //spalte anmerkung nur syncen, wenn im Config aktiv - $sql_query.=",'$row->anmerkung'"; + $sql_query.=",".$db->db_add_param($row->anmerkung); if ($row->fix=='t') $sql_query.=',TRUE'; else $sql_query.=',FALSE'; - $sql_query.=",'$row->updateamum','$row->updatevon','$row->insertamum','$row->insertvon'"; + $sql_query.=",".$db->db_add_param($row->updateamum).','. + $db->db_add_param($row->updatevon).','. + $db->db_add_param($row->insertamum).','. + $db->db_add_param($row->insertvon); if ($row->lehreinheit_id==null) $sql_query.=',NULL'; else - $sql_query.=",$row->lehreinheit_id"; + $sql_query.=','.$db->db_add_param($row->lehreinheit_id); $sql_query.=');'; //echo $sql_query; if (!$result_insert = $db->db_query($sql_query)) @@ -273,14 +299,14 @@ else if ($mailstudents) { $studenten = getStudentsFromGroup($row->studiengang_kz, $row->semester, $row->verband, $row->gruppe, $row->gruppe_kurzbz, $ss->studiensemester_kurzbz); - + foreach ($studenten as $student) { if (!isset($message[$student]->isneu)) { if(!isset($message[$student])) $message[$student] = new stdClass(); - + $message[$student]->isneu=true; $message[$student]->mailadress=$student.'@'.DOMAIN; $message[$student]->message_begin=$message_begin.'
'; @@ -310,9 +336,14 @@ else echo '
Alte Datensätze werden geholt.('.date('H:i:s').')
';flush(); $message_stpl .='
Alte Datensätze werden geholt.('.date('H:i:s').')
'; -$sql_query="SELECT * FROM lehre.vw_stundenplan WHERE datum>='".addslashes($datum_begin)."' AND datum<='".addslashes($datum_ende)."' ".$stgwhere." +$sql_query="SELECT * FROM lehre.vw_stundenplan + WHERE datum>=".$db->db_add_param($datum_begin)." + AND datum<=".$db->db_add_param($datum_ende)." ".$stgwhere." AND NOT EXISTS - (SELECT stundenplandev_id FROM lehre.tbl_stundenplandev WHERE datum>='".addslashes($datum_begin)."' AND datum<='".addslashes($datum_ende)."' AND stundenplandev_id=stundenplan_id);"; + (SELECT stundenplandev_id FROM lehre.tbl_stundenplandev + WHERE datum>=".$db->db_add_param($datum_begin)." + AND datum<=".$db->db_add_param($datum_ende)." + AND stundenplandev_id=stundenplan_id);"; if (!$result = $db->db_query($sql_query)) { echo $sql_query.' fehlgeschlagen!
'.$db->db_last_error(); @@ -323,8 +354,8 @@ else echo '
Alte Datensätze werden gelöscht.
';flush(); while ($row = $db->db_fetch_object($result)) { - $sql_query='DELETE FROM lehre.tbl_stundenplan WHERE stundenplan_id='.$row->stundenplan_id; - + $sql_query='DELETE FROM lehre.tbl_stundenplan WHERE stundenplan_id='.$db->db_add_param($row->stundenplan_id); + if (!$result_delete=$db->db_query($sql_query)) { echo $sql_query.' fehlgeschlagen!
'.$db->db_last_error(); @@ -351,6 +382,8 @@ else $message[$row->uid]->isalt=true; $message[$row->uid]->mailadress=$row->uid.'@'.DOMAIN; $message[$row->uid]->message_begin=$message_begin.'
'; + if(!isset($message[$row->uid]->message)) + $message[$row->uid]->message=''; $message[$row->uid]->message.='Gelöschte Stunden:
'; } @@ -367,14 +400,14 @@ else if ($mailstudents) { $studenten = getStudentsFromGroup($row->studiengang_kz, $row->semester, $row->verband, $row->gruppe, $row->gruppe_kurzbz, $ss->studiensemester_kurzbz); - + foreach ($studenten as $student) { if (!isset($message[$student]->isalt)) { if(!isset($message[$student])) $message[$student] = new stdClass(); - + $message[$student]->isalt=true; $message[$student]->mailadress=$student.'@'.DOMAIN; $message[$student]->message_begin=$message_begin.'
'; @@ -405,8 +438,8 @@ else echo '
Geänderte Datensätze werden geholt.('.date('H:i:s').')
';flush(); $message_stpl.='
Geänderte Datensätze werden geholt.('.date('H:i:s').')
'; $sql_query="SELECT vw_stundenplandev.*, vw_stundenplan.datum AS old_datum, vw_stundenplan.stunde AS old_stunde, - vw_stundenplan.ort_kurzbz AS old_ort_kurzbz, vw_stundenplan.lektor AS old_lektor, - vw_stundenplan.uid AS old_uid, vw_stundenplan.titel AS old_titel + vw_stundenplan.ort_kurzbz AS old_ort_kurzbz, vw_stundenplan.lektor AS old_lektor, + vw_stundenplan.uid AS old_uid, vw_stundenplan.titel AS old_titel FROM lehre.vw_stundenplandev, lehre.vw_stundenplan WHERE vw_stundenplan.stundenplan_id=vw_stundenplandev.stundenplandev_id AND ( vw_stundenplandev.unr!=vw_stundenplan.unr OR @@ -422,13 +455,13 @@ $sql_query="SELECT vw_stundenplandev.*, vw_stundenplan.datum AS old_datum, vw_st coalesce(vw_stundenplandev.titel,'')!=coalesce(vw_stundenplan.titel,'') OR vw_stundenplandev.fix!=vw_stundenplan.fix OR vw_stundenplandev.lehreinheit_id!=vw_stundenplan.lehreinheit_id ) - AND vw_stundenplandev.datum>='".addslashes($datum_begin)."' - AND vw_stundenplandev.datum<='".addslashes($datum_ende)."' ".$stgwheredev.";"; + AND vw_stundenplandev.datum>=".$db->db_add_param($datum_begin)." + AND vw_stundenplandev.datum<=".$db->db_add_param($datum_ende)." ".$stgwheredev.";"; //vw_stundenplandev.anmerkung!=vw_stundenplan.anmerkung OR --> von kindlm am 16.03.2012 aus obigem SQL entfernt, da nicht relevant fuer tbl_stundenplan und nur fuer intern gedacht //echo $sql_query.'
'; - - + + if (!$result = $db->db_query($sql_query)) { echo $sql_query.' fehlgeschlagen!
'.$db->db_last_error(); @@ -441,7 +474,7 @@ else { //echo '.';flush(); // Alten Eintrag aus tbl_stundenplan holen - $sql_query="SELECT * FROM lehre.tbl_stundenplandev WHERE stundenplandev_id='".addslashes($row->stundenplandev_id)."';"; + $sql_query="SELECT * FROM lehre.tbl_stundenplandev WHERE stundenplandev_id=".$db->db_add_param($row->stundenplandev_id).";"; if (!$result_old = $db->db_query($sql_query)) { echo $sql_query.' fehlgeschlagen!
'.$db->db_last_error(); @@ -452,21 +485,26 @@ else // Datensaetze aendern $sql_query="UPDATE lehre.tbl_stundenplan SET - unr=$row->unr,mitarbeiter_uid='$row->uid',datum='$row->datum',stunde=$row->stunde, - ort_kurzbz='$row->ort_kurzbz',studiengang_kz=$row->studiengang_kz,semester=$row->semester"; + unr=".$db->db_add_param($row->unr). + ",mitarbeiter_uid=".$db->db_add_param($row->uid). + ",datum=".$db->db_add_param($row->datum). + ",stunde=".$db->db_add_param($row->stunde). + ",ort_kurzbz=".$db->db_add_param($row->ort_kurzbz). + ",studiengang_kz=".$db->db_add_param($row->studiengang_kz). + ",semester=".$db->db_add_param($row->semester); if ($row->verband==null) $sql_query.=',verband=NULL'; else - $sql_query.=",verband='$row->verband'"; + $sql_query.=",verband=".$db->db_add_param($row->verband); if ($row->gruppe==null) $sql_query.=',gruppe=NULL'; else - $sql_query.=",gruppe='$row->gruppe'"; + $sql_query.=",gruppe=".$db->db_add_param($row->gruppe); if ($row->gruppe_kurzbz==null) // $sql_query.=",gruppe_kurzbz=NULL, titel=$row->titel"; --> Das war die urspruengliche query. row->titel von kindlm am 16.03.2012 entfernt und in eigenes if geschrieben. $sql_query.=',gruppe_kurzbz=NULL'; else - $sql_query.=",gruppe_kurzbz='$row->gruppe_kurzbz'"; + $sql_query.=",gruppe_kurzbz=".$db->db_add_param($row->gruppe_kurzbz); //$sql_query.=",titel='$row->titel',anmerkung='$row->anmerkung'"; --> anmerkung auskommentiert vom kindlm am 16.03.2012 da nicht relevant fuer tbl_stundenplan und nur fuer intern gedacht if ($row->titel=='') $sql_query.=',titel=NULL'; @@ -476,12 +514,12 @@ else $sql_query.=',fix=TRUE'; else $sql_query.=',fix=FALSE'; - $sql_query.=",updateamum='$row->updateamum',updatevon='$row->updatevon'"; + $sql_query.=",updateamum=".$db->db_add_param($row->updateamum).",updatevon=".$db->db_add_param($row->updatevon); if ($row->lehreinheit_id==null) $sql_query.=',lehreinheit_id=NULL'; else - $sql_query.=",lehreinheit_id=$row->lehreinheit_id"; - $sql_query.=" WHERE stundenplan_id=$row->stundenplandev_id;"; + $sql_query.=",lehreinheit_id=".$db->db_add_param($row->lehreinheit_id); + $sql_query.=" WHERE stundenplan_id=".$db->db_add_param($row->stundenplandev_id).";"; echo $sql_query.'
'; if (!$result_update=$db->db_query($sql_query)) { @@ -508,6 +546,8 @@ else $message[$row->uid]->isset=true; $message[$row->uid]->mailadress=$row->uid.'@'.DOMAIN; $message[$row->uid]->message_begin=$message_begin.'
'; + if(!isset($message[$row->uid]->message)) + $message[$row->uid]->message=''; $message[$row->uid]->message.='Geänderte Stunden:
OrtVerbandLektorInDatumStd (Beginnzeit)LehrfachInfo
'; } @@ -588,14 +628,14 @@ else if ($mailstudents) { $studenten = getStudentsFromGroup($row->studiengang_kz, $row->semester, $row->verband, $row->gruppe, $row->gruppe_kurzbz, $ss->studiensemester_kurzbz); - + foreach ($studenten as $student) { if (!isset($message[$student]->isset)) { if(!isset($message[$student])) $message[$student] = new stdClass(); - + $message[$student]->isset=true; $message[$student]->mailadress=$student.'@'.DOMAIN; $message[$student]->message_begin=$message_begin.'
'; @@ -611,7 +651,7 @@ else $message[$student]->message.=''; $message[$student]->message.=''; $message[$student]->message.=''; - + $message[$student]->message.="\n"; $message[$student]->message.=''; $myclass=($row->ort_kurzbz!=$row->old_ort_kurzbz?'marked':'unmarked');
StatusOrtVerbandLektorInDatumStd (Beginnzeit)LehrfachInfo
'.$row->old_stunde.' ('.$beginnzeit_arr[$row->old_stunde].')'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')'.$row->old_titel.'
Jetzt: