diff options
Diffstat (limited to 'mayor-orig/www/include/modules/naplo/intezmeny')
17 files changed, 2432 insertions, 0 deletions
diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/diakExport.php b/mayor-orig/www/include/modules/naplo/intezmeny/diakExport.php new file mode 100644 index 00000000..7752c577 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/diakExport.php @@ -0,0 +1,137 @@ +<?php + + define('__DIAK_EXPORT_FILE',_DOWNLOADDIR.'/private/export/diakExport'); + + $exportFormatum = array( + 'alapértelmezett' => array('oId','viseltNevElotag','viseltCsaladinev','viseltUtonev','diakNaploSorszam'), + 'egyszerű' => array('diakigazolvanySzam','viseltNevElotag','viseltCsaladinev','viseltUtonev','diakNaploSorszam'), + 'osztályfőnöki' => array('diakigazolvanySzam','viseltNevElotag','viseltCsaladinev','viseltUtonev','oId','diakNaploSorszam'), + 'taninformTanuló' => array('oId','diakigazolvanySzam','viseltNevElotag','viseltCsaladinev','viseltUtonev','szuleteskoriNevElotag', + 'szuleteskoriCsaladinev','szuleteskoriUtonev','szuletesiHely','szuletesiIdo','anyaSzuleteskoriNevElotag','anyaSzuleteskoriCsaladinev', + 'anyaSzuleteskoriUtonev','allampolgarsag','lakhelyOrszag','lakhelyHelyseg', + 'lakhelyIrsz','lakhelyKozteruletNev','lakhelyKozteruletJelleg','lakhelyHazszam','lakhelyEmelet','lakhelyAjto','tartOrszag','tartHelyseg', + 'tartIrsz','tartKozteruletNev','tartKozteruletJelleg','tartHazszam','tartEmelet','tartAjto','jogviszonyKezdete','diakNaploSorszam' + ), + ); + + function diakExport($ADAT) { + + $tanevDbNev = tanevDbNev(__INTEZMENY, $ADAT['tanev']); + $W = array(); + $q = "SELECT diak.*, osztalyId, osztalyJel, diakNaploSorszam(osztalyDiak.diakId,".$ADAT['tanev'].",osztalyDiak.osztalyId) AS diakNaploSorszam FROM diak LEFT JOIN osztalyDiak USING (diakId) + LEFT JOIN `%s`.osztalyNaplo USING (osztalyId)"; + $v = array($tanevDbNev); + if (isset($ADAT['osztalyId'])) { $W[] = "osztalyId=%u"; $v[] = $ADAT['osztalyId']; } + if (isset($ADAT['dt'])) { $W[] = "beDt<='%s' AND ('%s'<=kiDt OR kiDt IS NULL)"; array_push($v, $ADAT['dt'], $ADAT['dt']); } + + $q .= " WHERE ".implode(' AND ', $W); + + $ret = db_query($q, array('fv' => 'diakExport', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v)); + + if (!$ret) return false; + + $osztalyAdat = getOsztalyok($ADAT['tanev'], array('result' => 'assoc')); + + $Szulok = getSzulok(); + for ($i = 0; $i < count($ret); $i++) { + $ret[$i]['telephelyId'] = $osztalyAdat[ $ret[$i]['osztalyId'] ]['telephelyId']; + foreach (array('anya','apa','gondviselo') as $tipus) { + $szuloId = $ret[$i][ $tipus.'Id' ]; + if (is_array($Szulok[$szuloId])) foreach ($Szulok[$szuloId] as $attr => $value) { + $ret[$i][ $tipus . ucfirst($attr) ] = $value; + } elseif ($i == 0 && is_array($Szulok[1])) foreach ($Szulok[1] as $attr => $value) { + $ret[$i][ $tipus . ucfirst($attr) ] = ''; + } + } + } + + return $ret; + + } + + function createFile($ADAT) { + if ($ADAT['formatum'] == 'xls' || $ADAT['formatum'] == 'xml') return generateXLSExport($ADAT['export'], $ADAT['mezok']); + elseif ($ADAT['formatum'] == 'pdf') return generatePDFExport($ADAT['export'], $ADAT['mezok']); + else return generateCSVExport($ADAT['export'], $ADAT['mezok']); + } + + function generateCSVExport($ret, $Mezok = array()) { + + $fp = fopen(__DIAK_EXPORT_FILE . '.csv', 'w'); + if (!$fp) return false; + + fputs($fp, implode(' ',$Mezok)."\n"); + for ($i = 0; $i < count($ret); $i++) { + $A = array(); + foreach ($Mezok as $attr => $attrNev) $A[] = $ret[$i][$attr]; + $sor = implode(' ', $A)."\n"; + fputs($fp, $sor); + } + + fclose($fp); + return true; + + } + + function generateXLSExport($ret, $Mezok = array()) { + + $fp = fopen(__DIAK_EXPORT_FILE . '.xml', 'w'); + if (!$fp) return false; + + fputs($fp, '<?xml version="1.0"?>'."\r\n"); + fputs($fp, '<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"'."\r\n" + .' xmlns:o="urn:schemas-microsoft-com:office:office"'."\r\n" + .' xmlns:x="urn:schemas-microsoft-com:office:excel"'."\r\n" + .' xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"'."\r\n" + .' xmlns:html="http://www.w3.org/TR/REC-html40">'."\r\n"); + + fputs($fp, ' <Styles>'."\r\n" + .' <Style ss:ID="s21">'."\r\n".' <NumberFormat ss:Format="Short Date" />'."\r\n".' </Style>'."\r\n" + .' <Style ss:ID="s22">'."\r\n".' <NumberFormat ss:Format="yyyy\.m\.d\.\ h:mm" />'."\r\n".' </Style>'."\r\n" + ."\r\n".' </Styles>'."\r\n"); + + fputs($fp, '<Worksheet ss:Name="Diák adatok">'."\r\n"); + fputs($fp, '<Table>'."\r\n"); + + // fejléc + fputs($fp, '<Row>'."\r\n"); + foreach ($Mezok as $index => $attr) { + fputs($fp, " <Cell><Data ss:Type=\"String\">".$attr."</Data></Cell>\r\n"); + } + fputs($fp, '</Row>'."\r\n"); + + + for ($i = 0; $i < count($ret); $i++) { + fputs($fp, '<Row>'."\r\n"); + foreach ($Mezok as $attr => $attrNev) { + $value = $ret[$i][$attr]; + $time = strtotime($value); + if (is_numeric($value)) + fputs($fp, " <Cell><Data ss:Type=\"Number\">".$value."</Data></Cell>\r\n"); + elseif (is_numeric($time) && $value == date('Y-m-d H:i:s', $time)) + fputs($fp, " <Cell ss:StyleID=\"s22\"><Data ss:Type=\"DateTime\">".str_replace(' ','T',$value).'.000'."</Data></Cell>\r\n"); + elseif (is_numeric($time) && $value == date('Y-m-d', $time)) + fputs($fp, " <Cell ss:StyleID=\"s21\"><Data ss:Type=\"DateTime\">".$value.'T08:40:00.000'."</Data></Cell>\r\n"); + else + fputs($fp, " <Cell><Data ss:Type=\"String\">".$value."</Data></Cell>\r\n"); + } + fputs($fp, '</Row>'."\r\n"); + } + + fputs($fp, '</Table>'."\r\n"); + fputs($fp, '</Worksheet>'."\r\n"); + fputs($fp, '</Workbook>'."\r\n"); + + fclose($fp); + return true; + + } + + function generatePDFExport($ret, $mezok = array()) { + + + $_SESSION['alert'][] = 'message:not implemented'; + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/diakFelmentes.php b/mayor-orig/www/include/modules/naplo/intezmeny/diakFelmentes.php new file mode 100644 index 00000000..383281de --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/diakFelmentes.php @@ -0,0 +1,6 @@ +<?php + + + + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/diakStatusz.php b/mayor-orig/www/include/modules/naplo/intezmeny/diakStatusz.php new file mode 100644 index 00000000..94944ba1 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/diakStatusz.php @@ -0,0 +1,12 @@ +<?php + + function getHibasJogviszony() { + + $q = "select distinct diakId from diakJogviszony as d1 where d1.statusz=(select statusz from diakJogviszony as d2 + where diakId=d1.diakId and d2.dt<d1.dt order by dt desc limit 1) order by diakId, dt"; + $ret['tobbszoros'] = db_query($q, array('fv' => 'getHibasJogviszony', 'modul' => 'naplo_intezmeny', 'result' => 'idonly')); + + return $ret; + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/diakSzulo.php b/mayor-orig/www/include/modules/naplo/intezmeny/diakSzulo.php new file mode 100644 index 00000000..a6f1bd2b --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/diakSzulo.php @@ -0,0 +1,98 @@ +<?php + + function szuloAdatModositas($ADAT, $FIELDS) { + + $v = array(); + foreach($ADAT as $attr => $value) { + if (array_key_exists(($attr), $FIELDS) && !in_array($attr, array('szuloId'))) { + if ($value == '') { + $T[] = "`%s`=NULL"; + array_push($v, $attr); + } else { + array_push($v, $attr, $value); + $T[] = "`%s`='%s'"; + } + } + } + $q = "UPDATE szulo SET ".implode(',',$T)." WHERE szuloId=%u"; + array_push($v, $ADAT['szuloId']); + + return db_query($q, array('fv' => 'szuloAdatModositas', 'modul' => 'naplo_intezmeny', 'values' => $v)); + + } + + function szuloHozzarendeles($diakId, $tipus, $ujSzuloId) { + + + if ($tipus == 'anya' || $tipus == 'apa') { + // Nem ellenőrzés + if ($tipus == 'anya') $tiltott = 'fiú'; + else $tiltott = 'lány'; + $q = "SELECT nem FROM szulo WHERE szuloId=%u"; + $nem = db_query($q, array('fv' => 'szuloHozzarendeles', 'modul' => 'naplo_intezmeny', 'result' => 'value', 'values' => array($ujSzuloId))); + if ($nem == $tiltott) { + $_SESSION['alert'][] = 'message:tiltott_nem_'.$tiltott; + return false; + } + } + + $q = "UPDATE diak SET `%sId` = %u WHERE diakId = %u"; + $v = array($tipus, $ujSzuloId, $diakId); + $ret = db_query($q, array('fv' => 'szuloHozzarendeles', 'modul' => 'naplo_intezmeny', 'values' => $v)); + if ($ret) return $ujSzuloId; + else return false; + + } + + function szuloHozzarendelesTorlese($diakId, $tipus) { + + $q = "UPDATE diak SET `%sId` = NULL WHERE diakId = %u"; + $v = array($tipus, $diakId); + return db_query($q, array('fv' => 'szuloHozzarendelesTorles', 'modul' => 'naplo_intezmeny', 'values' => $v)); + + } + + function ujSzulo($ADAT, $FIELDS) { + + + $diakId = $ADAT['diakId']; + $tipus = $ADAT['tipus']; + + // Kötelező paraméterek ellenőrzése + if ($ADAT['csaladinev'] == '' + || $ADAT['utonev'] == '' + || !in_array($tipus, array('anya','apa','gondviselo','nevelo')) + ) { + $_SESSION['alert'][] = 'message:wrong_data:ujSzulo:csaladinev - '.$_POST['csaladinev'].', utonev - '.$_POST['utonev'].', tipus - '.$tipus; + return false; + } + + $lr = db_connect('naplo_intezmeny', array('fv' => 'ujSzulo')); + + foreach($ADAT as $attr => $value) { + if (array_key_exists(($attr), $FIELDS)) { + if ($value != '') { + $V[] = $value; + $A[] = $attr; + } + } + } + + $q = "INSERT INTO szulo (`".implode('`,`', array_fill(0, count($A), '%s'))."`) VALUES ('".implode("', '", array_fill(0, count($V), '%s'))."')"; + $v = mayor_array_join($A, $V); + $szuloId = db_query($q, array('fv' => 'ujSzulo', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v), $lr); + if ($szuloId) { + $q = "UPDATE diak SET `%sId` = %u WHERE diakId = %u"; + $v = array($tipus, $szuloId, $diakId); + $r = db_query($q, array('fv' => 'ujSzulo', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + db_close($lr); + if ($r) return $szuloId; + else return false; + } else { + db_close($lr); + return false; + } + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/diakTankorJelentkezes.php b/mayor-orig/www/include/modules/naplo/intezmeny/diakTankorJelentkezes.php new file mode 100644 index 00000000..e7ab1aad --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/diakTankorJelentkezes.php @@ -0,0 +1,97 @@ +<?php + + + function getValaszthatoTankorok($tanev, $szemeszter, $OSZTALYIDK) { + + if ($tanev=='') { + $tanevAdat = $_TANEV; + } else { + $tanevAdat = getTanevAdat($tanev); + } + + $tanevDbNev = tanevDbNev(__INTEZMENY, $tanev); + + $DT['tolDt'] = $tanevAdat['kezdesDt']; + $DT['igDt'] = $tanevAdat['zarasDt'] ; + + $tankorBlokkok = getTankorBlokkok($tanev); + if (is_array($tankorBlokkok) && is_array($tankorBlokkok['idk'])) + foreach ($tankorBlokkok['idk'] as $blokkId => $TB) { + for ($j=0; $j<count($TB); $j++) { + $TID2B[$TB[$j]][] = $blokkId; + } + } + + if (is_array($OSZTALYIDK) && count($OSZTALYIDK)>0) { + $W = " AND osztalyId IN (".implode(',', array_fill(0, count($OSZTALYIDK), '%u')).")"; + $v = mayor_array_join(array($tanev, $szemeszter), $OSZTALYIDK, $OSZTALYIDK, array($tanev,$tanev,$szemeszter)); + } else { + $v = array($tanev, $szemeszter, $tanev, $tanev, $szemeszter); + } + $q = "SELECT DISTINCT tankorId, targyId, kovetelmeny, min, max, tanev, szemeszter, oraszam, tankorNev + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) JOIN tankorOsztaly USING (tankorId) + WHERE tanev=%u and szemeszter=%u and tankor.felveheto =1".$W." + AND tankorId NOT IN ( + SELECT distinct tankorId FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) JOIN tankorOsztaly USING (tankorId) + WHERE tankor.felveheto =1".$W." AND (tanev<%u OR (tanev=%u AND szemeszter<%u)) + ) + ORDER BY tankorNev,tankor.tankorId"; + $felvehetoTankorok = db_query($q, array('fv' => 'getValaszthatoTankorok', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v)); + + for ($i=0; $i<count($felvehetoTankorok); $i++) { + $felvehetoTankorok[$i]['blokkIdk'] = $TID2B[$felvehetoTankorok[$i]['tankorId']]; + $felvehetoTankorok[$i]['letszam'] = getTankorLetszam($felvehetoTankorok[$i]['tankorId'],$DT); + $felvehetoTankorok[$i]['tanarok'] = getTankorTanaraiByInterval($felvehetoTankorok[$i]['tankorId'], array('tolDt' => $DT['tolDt'], 'igDt' => $DT['igDt'], 'result' => 'nevsor')); + } + return $felvehetoTankorok; + } + + + + function getValaszthatoTankorokOrig($tanev, $szemeszter, $OSZTALYIDK) { + + if ($tanev=='') { + $tanevAdat = $_TANEV; + } else { + $tanevAdat = getTanevAdat($tanev); + } + + $tanevDbNev = tanevDbNev(__INTEZMENY, $tanev); + + $DT['tolDt'] = $tanevAdat['kezdesDt']; + $DT['igDt'] = $tanevAdat['zarasDt'] ; + + $tankorBlokkok = getTankorBlokkok($tanev); + if (is_array($tankorBlokkok) && is_array($tankorBlokkok['idk'])) + foreach ($tankorBlokkok['idk'] as $blokkId => $TB) { + for ($j=0; $j<count($TB); $j++) { + $TID2B[$TB[$j]][] = $blokkId; + } + } + + if (is_array($OSZTALYIDK) && count($OSZTALYIDK)>0) { + $W = " AND osztalyId IN (".implode(',', array_fill(0, count($OSZTALYIDK), '%u')).")"; + $v = mayor_array_join(array($tanev, $szemeszter), $OSZTALYIDK, $OSZTALYIDK, array($tanev)); + } else { + $v = array($tanev, $szemeszter, $tanev); + } + $q = "SELECT DISTINCT tankorId, targyId, kovetelmeny, min, max, tanev, szemeszter, oraszam, tankorNev + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) JOIN tankorOsztaly USING (tankorId) + WHERE tanev=%u and szemeszter=%u and tankor.felveheto =1".$W." + AND tankorId NOT IN ( + SELECT distinct tankorId FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) JOIN tankorOsztaly USING (tankorId) + WHERE tankor.felveheto =1".$W." AND tanev<%u + ) + ORDER BY tankorNev,tankor.tankorId"; + $felvehetoTankorok = db_query($q, array('fv' => 'getValaszthatoTankorok', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v)); + + for ($i=0; $i<count($felvehetoTankorok); $i++) { + $felvehetoTankorok[$i]['blokkIdk'] = $TID2B[$felvehetoTankorok[$i]['tankorId']]; + $felvehetoTankorok[$i]['letszam'] = getTankorLetszam($felvehetoTankorok[$i]['tankorId'],$DT); + $felvehetoTankorok[$i]['tanarok'] = getTankorTanaraiByInterval($felvehetoTankorok[$i]['tankorId'], array('tolDt' => $DT['tolDt'], 'igDt' => $DT['igDt'], 'result' => 'nevsor')); + } + return $felvehetoTankorok; + } + + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/kepzes.php b/mayor-orig/www/include/modules/naplo/intezmeny/kepzes.php new file mode 100644 index 00000000..e08e6856 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/kepzes.php @@ -0,0 +1,64 @@ +<?php + + function ujKepzes($kepzesNev, $tanev, $osztalyJellegId) { + + $q = "INSERT INTO kepzes (kepzesNev,tanev, osztalyJellegId) VALUES ('%s', %u, %u)"; + $v = array($kepzesNev, $tanev, $osztalyJellegId); + return db_query($q, array('fv' => 'ujKepzes', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v)); + + } + + function kepzesEles($kepzesId, $kepzesEles) { + + $q = "UPDATE kepzes SET kepzesEles=%u WHERE kepzesId =%u"; + $v = array($kepzesEles,$kepzesId); + return db_query($q, array('fv' => 'kepzesEles', 'modul' => 'naplo_intezmeny', 'result' => 'update', 'values' => $v)); + + } + + function kepzesModositas($ADAT) { + + //$ADAT eredeti paraméterezése: $kepzesId, $kepzesNev, $tanev, $osztalyJellegId, $osztalyIds, $delOsztalyIds + extract($ADAT); + + // Van-e ilyen képzés + $q = "SELECT COUNT(*) AS db FROM kepzes WHERE kepzesId = %u"; + $v = array($kepzesId); + $db = db_query($q, array('modul'=> 'naplo_intezmeny','fv'=>'kepzesModositas','values'=>$v, 'result'=>'value')); + + if ($db != 1) { + $_SESSION['alert'][] = 'message:wrong_data:hibás képzés azonosító:'.$kepzesId; + return false; + } + + if (isset($osztalyJellegId) && $osztalyJellegId>0) { + $q = "UPDATE kepzes SET kepzesNev='%s',tanev=%u,osztalyJellegId=%u WHERE kepzesId=%u"; + $v = array($kepzesNev,$tolTanev,$osztalyJellegId,$kepzesId); + } + db_query($q, array('modul'=> 'naplo_intezmeny','fv'=>'kepzesModositas','values'=>$v)); + + // TOROLNI NEM LEHET csak, ha egyetlen osztály-tag sincs hozzárendelve az adott képzéshez AZ ADOTT TANÉVBEN... + if (count($delOsztalyIds) > 0) { + foreach ($delOsztalyIds as $osztalyId) { + $q = "SELECT COUNT(*) FROM kepzesDiak LEFT JOIN osztalyDiak USING (diakId) WHERE kepzesId=%u AND osztalyId=%u + AND tolDt<='".$_TANEV['zarasDt']."' AND (igDt IS NULL OR igDt>='".$_TANEV['kezdesDt']."') + AND beDt<='".$_TANEV['zarasDt']."' AND (kiDt IS NULL OR kiDt>='".$_TANEV['kezdesDt']."')"; + $db = db_query($q, array('fv'=>'kepzesModositas/del-osztaly#1','modul'=>'naplo_intezmeny','result'=>'value','values'=>array($kepzesId, $osztalyId))); + if ($db == 0) { + $q = "DELETE FROM kepzesOsztaly WHERE kepzesId=%u AND osztalyId=%u"; + db_query($q, array('fv' => 'kepzesModositas/osztályhozzárendelés törlése', 'modul' => 'naplo_intezmeny', 'values' => array($kepzesId,$osztalyId))); + } else { + $_SESSION['alert'][] = 'message:wrong_data:Az osztály hozzárendelés nem törölhető! '.$db.' db tanuló az osztályból hozzá van rendelve ehhez a képzéshez.'; + } + } + } + if (count($osztalyIds)>0) { + $q = "REPLACE INTO kepzesOsztaly (kepzesId,osztalyId) VALUES (".implode("),(", array_fill(0, count($osztalyIds), '%u, %u')).")"; + $v = array(); + for ($i = 0; $i < count($osztalyIds); $i++) array_push($v, $kepzesId, $osztalyIds[$i]); + db_query($q, array('fv' => 'kepzesModositas/osztályhozzárendelés', 'modul' => 'naplo_intezmeny', 'values' => $v)); + } + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/kepzesOraterv.php b/mayor-orig/www/include/modules/naplo/intezmeny/kepzesOraterv.php new file mode 100644 index 00000000..d689aa40 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/kepzesOraterv.php @@ -0,0 +1,92 @@ +<?php + + require_once('include/modules/naplo/share/kepzes.php'); + + function modifyKepzesOraterv($ADAT,$kepzesId) { + + $lr = db_connect('naplo_intezmeny'); + + if (is_array($ADAT['oraszamok'])) foreach($ADAT['oraszamok'] as $evfolyamJel => $D) { + $q = "REPLACE INTO kepzesOraszam (kepzesId,evfolyamJel,kotelezoOraszam,maximalisOraszam) VALUES (%u,'%s',%f,%f)"; + $v = array($kepzesId,$evfolyamJel,$D['kotelezo'],$D['max']); + db_query($q, array('modul'=>'naplo_intezmeny','fv'=>'modifyKepzesOraterv', 'values'=>$v), $lr); + } + + //blabla if + if (is_array($ADAT['adatok'])) { + foreach ($ADAT['adatok'] as $targyTipus => $X) { + foreach ($X as $targyId => $EGYTARGY) { + // [$evfolyamJel][$szemeszter]['oraszam'|'kovetelmeny'] + if (is_array($EGYTARGY)) + foreach ($EGYTARGY as $evfolyamJel => $DS) { + if (is_array($DS)) foreach($DS as $szemeszter => $D) { + if ($D['kovetelmeny']!='' && isset($D['oraszam'])) { + if ($targyTipus!='mintatantervi') { + $q = "SELECT kepzesOratervId FROM kepzesOraterv WHERE kepzesId=%u AND evfolyamJel='%s' AND szemeszter=%u AND tipus='%s'"; + $v = array($kepzesId,$evfolyamJel,$szemeszter,$targyTipus); + $_oratervId = db_query($q, array('modul'=>'naplo_intezmeny','result'=>'value','fv'=>'modifyKepzesOraterv', 'debug'=>false, 'values'=>$v), $lr); + if ($_oratervId>0) { + $q = "UPDATE kepzesOraterv SET hetiOraszam=%f,kovetelmeny='%s' WHERE kepzesOratervId=%u"; + $v = array($D['oraszam'],$D['kovetelmeny'],$_oratervId); + } else { + $q = "INSERT INTO kepzesOraterv (kepzesId,targyId,evfolyamJel,szemeszter,hetiOraszam,kovetelmeny,tipus) + VALUES (%u,null,'%s',%u,%f,'%s','%s')"; + $v = array($kepzesId,$evfolyamJel,$szemeszter,$D['oraszam'],$D['kovetelmeny'],$targyTipus); + } + } else { + $q = "SELECT kepzesOratervId FROM kepzesOraterv WHERE kepzesId=%u AND evfolyamJel='%s' AND szemeszter=%u AND tipus='%s' AND targyId=%u"; + $v = array($kepzesId,$evfolyamJel,$szemeszter,$targyTipus,$targyId); + $_oratervId = db_query($q, array('modul'=>'naplo_intezmeny','result'=>'value','fv'=>'modifyKepzesOraterv', 'debug'=>false, 'values'=>$v), $lr); + if ($_oratervId>0) { + $q = "UPDATE kepzesOraterv SET hetiOraszam=%f,kovetelmeny='%s' WHERE kepzesOratervId=%u"; + $v = array($D['oraszam'],$D['kovetelmeny'],$_oratervId); + } else { + $q = "INSERT INTO kepzesOraterv (kepzesId,targyId,evfolyamJel,szemeszter,hetiOraszam,kovetelmeny,tipus) VALUES (%u,%u,'%s',%u,%f,'%s','%s')"; + $v = array($kepzesId,$targyId,$evfolyamJel,$szemeszter,$D['oraszam'],$D['kovetelmeny'],$targyTipus); + } + } + } else { // ha nincs megadva követelmény, akkor töröljük + if ($targyTipus!='mintatantervi') { + $q = "DELETE FROM kepzesOraterv WHERE kepzesId=%u AND evfolyamJel='%s' AND szemeszter=%u AND tipus='%s'"; + $v = array($kepzesId,$evfolyamJel,$szemeszter,$targyTipus); + } else { + $q = "DELETE FROM kepzesOraterv WHERE kepzesId=%u AND targyId=%u AND evfolyamJel='%s' AND szemeszter=%u"; + $v = array($kepzesId,$targyId,$evfolyamJel,$szemeszter); + } + } + db_query($q, array('modul'=>'naplo_intezmeny','fv'=>'modifyKepzesOraterv', 'debug'=>false, 'values'=>$v), $lr); + } /* if */ + } /* if-foreach */ + } /* foreach */ + } /* foreach */ + } /* if */ + db_close($lr); + } + + function dropKepzesOratervRekord($kepzesId,$tipus,$targyId) { + if ($tipus=='mintatantervi') { + $q = "DELETE FROM kepzesOraterv WHERE kepzesId=%u AND targyId=%u"; + $v = array($kepzesId,$targyId); + } else { + $q = "DELETE FROM kepzesOraterv WHERE kepzesId=%u AND tipus='%s'"; + $v = array($kepzesId,$tipus); + } + db_query($q, array('modul'=>'naplo_intezmeny','fv'=>'dropKepzesOratervRekord', 'debug'=>false, 'values'=>$v)); + } + + function getKepzesOraszam($kepzesId) { + $q = "SELECT * FROM kepzesOraszam WHERE kepzesId=$kepzesId ORDER BY evfolyamJel ASC"; // order error! + return db_query($q, array('modul'=>'naplo_intezmeny','fv'=>'getKepzesOraszam', 'result'=>'assoc', 'keyfield'=>'evfolyamJel')); + } + + function kepzesOratervMasolas($masolandoKepzesId, $kepzesId) { + + $q ="INSERT INTO kepzesOraterv (kepzesId, targyId, evfolyamJel, szemeszter, hetiOraszam, kovetelmeny, tipus) + SELECT %u AS kepzesId, targyId, evfolyamJel, szemeszter, hetiOraszam, kovetelmeny, tipus + FROM kepzesOraterv WHERE kepzesId=%u"; + return db_query($q, array('debug'=>false,'fv'=>'kepzesOratervMasolas','modul'=>'naplo_intezmeny','values'=>array($kepzesId, $masolandoKepzesId))); + + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/munkakozosseg.php b/mayor-orig/www/include/modules/naplo/intezmeny/munkakozosseg.php new file mode 100644 index 00000000..d9c01d61 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/munkakozosseg.php @@ -0,0 +1,288 @@ +<?php + + // Az általános getter függvények a share-ben vannak (munkakozosseg, targy) + + function ujMunkakozosseg($leiras, $mkVezId='') { + + + $lr = db_connect('naplo_intezmeny', array('fv' => 'ujMunkakozosseg')); + if (!$lr) return false; + + $result = false; // sikerült-e? + + // Van-e már ilyen munkaközösség? + $q = "SELECT COUNT(mkId) FROM munkakozosseg WHERE leiras='%s'"; + $num = db_query($q, array('fv' => 'ujMunkakozosseg', 'modul' => 'naplo_intezmeny', 'result' => 'value', 'values' => array($leiras)), $lr); + + if ($num == 0) { + $v = array($leiras); + if ($mkVezId == '') { + $MKVEZID = 'NULL'; + } else { + $MKVEZID = '%u'; + $v[] = $mkVezId; + } + $q = "INSERT INTO munkakozosseg (leiras,mkVezId) VALUES ('%s',$MKVEZID)"; + $result = db_query($q, array('fv' => 'ujMunkakozosseg', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v), $lr); + + } else { + // már van ilyen munkaközösség... + $_SESSION['alert'][] = 'massege:wrong_data:duplikált munkaközösség leírás (név)'; + } + db_close($lr); + + return $result; + + } + + function modMunkakozosseg($mkId,$leiras,$mkVezId,$MKUJTAGOK,$MKTORLENDOTAGOK) { + + + $lr = db_connect('naplo_intezmeny', array('fv' => 'modMunkakozosseg')); + + if (!$lr) return false; + if ($mkId=='') { $_SESSION['alert'][] = 'message::no mkId'; return false; } + + $result = false; // sikerült-e? + + // Van-e már ilyen munkaközösség? + $q = "SELECT COUNT(mkId) FROM munkakozosseg WHERE mkId=%u"; + $num = db_query($q, array('fv' => 'modMunkakozosseg', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => array($mkId)), $lr); + + if ($num != 0) { + if ($mkVezId == '') { + $q = "UPDATE munkakozosseg SET leiras='%s',mkVezId=NULL WHERE mkId=%u"; + $v = array($leiras, $mkId); + } else { + $q = "UPDATE munkakozosseg SET leiras='%s',mkVezId=%u WHERE mkId=%u"; + $v = array($leiras, $mkVezId, $mkId); + } + $result = db_query($q, array('fv' => 'modMunkakozosseg', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + } else { + // már van ilyen munkaközösség... + $_SESSION['alert'][] = 'massege:wrong_data:mkId='.$mkId; + } + + if ($result) { + if (is_array($MKUJTAGOK) && count($MKUJTAGOK)>0) { + //mkTanar[mkId,tanarId] + for($i=0; $i<count($MKUJTAGOK); $i++) { + $_tanarId = $MKUJTAGOK[$i]; + $q = "REPLACE INTO mkTanar (mkId,tanarId) VALUES (%u, %u)"; + db_query($q, array('fv' => 'modMunkakozosseg', 'modul' => 'naplo_intezmeny', 'values' => array($mkId,$_tanarId)), $lr); + } + } + if (is_array($MKTORLENDOTAGOK) && count($MKTORLENDOTAGOK)>0) { + $q = "DELETE FROM mkTanar WHERE mkId=%u AND tanarId IN (".implode(',', array_fill(0, count($MKTORLENDOTAGOK), '%u')).")"; + db_query($q, array('fv' => 'modMunkakozosseg', 'modul' => 'naplo_intezmeny', 'values' => mayor_array_join(array($mkId),$MKTORLENDOTAGOK)), $lr); + } + } + + + db_close($lr); + + return $result; + + } + + + + + function ujTargy($ADAT) { + + + $leiras=$ADAT['leiras']; + $mkId=$ADAT['mkId']; + $targyJelleg=$ADAT['targyJelleg']; + $kirTargyId=$ADAT['kirTargyId']; + + if ($leiras=='') { + $_SESSION['alert'][] = 'message:UI:empty field'; + return false; + } + + if (is_numeric($kirTargyId)) { + $q = "INSERT INTO targy (targyNev,mkId,targyJelleg,kirTargyId) VALUES ('%s',%u,'%s',%u)"; + $v = array($leiras,$mkId,$targyJelleg,$kirTargyId); + } else { + $q = "INSERT INTO targy (targyNev,mkId,targyJelleg) VALUES ('%s',%u,'%s')"; + $v = array($leiras,$mkId,$targyJelleg); + } + $result = db_query($q,array('modul'=>'naplo_intezmeny', 'fv'=>'ujTargy','result'=>'insert', 'detailed'=>false, 'debug'=>false, 'values'=>$v)); + + return $result; + + } + + function targyModosit($ADAT) { + if (is_numeric($ADAT['kirTargyId'])) { + $q = "UPDATE targy SET targyJelleg='%s',zaroKovetelmeny='%s',evkoziKovetelmeny='%s',targyRovidNev='%s',kirTargyId=%u WHERE targyId=%u"; + $v = array($ADAT['targyJelleg'],$ADAT['zaroKovetelmeny'],$ADAT['evkoziKovetelmeny'],$ADAT['targyRovidNev'], $ADAT['kirTargyId'], $ADAT['targyId']); + } else { + $q = "UPDATE targy SET targyJelleg='%s',zaroKovetelmeny='%s',evkoziKovetelmeny='%s',targyRovidNev='%s' WHERE targyId=%u"; + $v = array($ADAT['targyJelleg'],$ADAT['zaroKovetelmeny'],$ADAT['evkoziKovetelmeny'],$ADAT['targyRovidNev'],$ADAT['targyId']); + } + return db_query($q,array('modul'=>'naplo_intezmeny', 'fv'=>'targyModosit', 'detailed'=>false, 'debug'=>false, 'values'=>$v)); + } + + function targyTorol($targyId,$mkId) { + + $q = "DELETE FROM targy WHERE targyId=%u AND mkId=%u"; + return db_query($q, array('fv' => 'targyTorol', 'modul' => 'naplo_intezmeny', 'values' => array($targyId, $mkId)), $lr); + + } + + + function munkakozossegTorol($mkId) { + + $q = "DELETE FROM munkakozosseg WHERE mkId=%u"; + return db_query($q, array('fv' => 'munkakozossegTorol', 'modul' => 'naplo_intezmeny', 'values' => array($mkId)), $lr); + + } + + function targyBeolvasztas($ADAT) { + /** + * Elvárt paraméterek: $ADAt['targyId'], $ADAT['befogadoTargyId'], $ADAT['tankorJeloles'] (lehet üres) + **/ + + $lr = db_connect('naplo_intezmeny'); + db_start_trans($lr); + + // A befogadó tárgy adatai + $befogadoTargy = getTargyById($ADAT['befogadoTargyId']); + $targyAdat = getTargyById($ADAT['targyId']); + // A tárgyhoz tartozó tankörök lekérdezése + $q = "SELECT tankorId FROM tankor WHERE targyId=%u"; + $tankorIds = db_query($q, array('fv'=>'targyBeolvasztas/tankorok','result'=>'idonly','values'=>array($ADAT['targyId'])), $lr); + if (is_array($tankorIds) && count($tankorIds)>0) /*foreach ($tankorIds as $tankorId)*/ { + /* tárgyhoz tartozó tankörök átnevezése */ + if (isset($ADAT['tankorJeloles'])) { + $q = "UPDATE tankorSzemeszter SET tankorNev=CONCAT(LEFT(tankorNev,LOCATE('%s',tankorNev)-1),'%s',' ','%s') + WHERE tankorId IN (".implode(',', array_fill(0,count($tankorIds),'%u')).")"; + $v = mayor_array_join(array($targyAdat['targyNev'], $befogadoTargy['targyNev'], $ADAT['tankorJeloles']), $tankorIds); + } else { + $q = "UPDATE tankorSzemeszter SET tankorNev=REPLACE(tankorNev,'%s','%s') + WHERE tankorId IN (".implode(',', array_fill(0,count($tankorIds),'%u')).")"; + $v = mayor_array_join(array($targyAdat['targyNev'], $befogadoTargy['targyNev']), $tankorIds); + } + $r = db_query($q, array('fv'=>'targyBeolvasztas/tankör-átnevezés','values'=>$v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + /* tárgyhoz tartozó tannkörök áthelyezése */ + $q = "UPDATE tankor SET targyId=%u WHERE targyId=%u"; + $r = db_query($q, array('fv'=>'targyBeolvasztas/tankör-tárgy','values'=>array($ADAT['befogadoTargyId'], $ADAT['targyId'])), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + } + + /* tanév adatbázisok lekérdezése */ + $q = "SHOW DATABASES LIKE 'naplo_".__INTEZMENY."%'"; + $dbs = db_query($q, array('fv'=>'targyBeolvasztas/dbs','result'=>'idonly'), $lr); + if (!$dbs) { db_rollback($lr); db_close($lr); return false; } + if (is_array($dbs) && count($dbs) > 0) foreach ($dbs as $db) { + /* tanév adatbázis tábláinak lekérdezése */ + $q = "SHOW TABLES FROM $db"; + $tables = db_query($q, array('fv'=>'targyBeolvasztas/tables','result'=>'idonly'), $lr); + if (is_array($tables) && count($tables)>0) foreach ($tables as $table) { + if ($table == 'targySorszam') { + /* törlendő: targySorszam, */ + $q = "DELETE FROM `$db`.`targySorszam` WHERE targyId=%u"; + $r = db_query($q, array('fv'=>'targyBeolvasztas/targySorszam','values'=>array($ADAT['targyId'])), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + } else { + /* Tábla tartalmaz-e targyId mezőt... */ + $q = "SHOW FIELDS FROM `$db`.`$table` LIKE 'targyId'"; + $ret = db_query($q, array('fv'=>'targyBeolvasztas/table-targyId','result'=>'idonly'), $lr); + if (is_array($ret) && count($ret)>0) { + /* ... ha igen: targyId módosítás */ + $q = "UPDATE `$db`.`$table` SET targyId=%u WHERE targyId=%u"; + $v = array($ADAT['befogadoTargyId'], $ADAT['targyId']); + $r = db_query($q, array('fv'=>'targyBeolvasztas/table','values'=>$v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + } + } + } + } + /* intézményi adattáblák lekérdezése */ + $q = "SHOW TABLES"; + $tables = db_query($q, array('fv'=>'targyBeolvasztas/i-tables','result'=>'idonly'), $lr); + if (is_array($tables) && count($tables)>0) foreach ($tables as $table) { + if ($table != 'targy') { + /* Tábla tartalmaz-e targyId mezőt... */ + $q = "SHOW FIELDS FROM `$table` LIKE 'targyId'"; + $ret = db_query($q, array('fv'=>'targyBeolvasztas/i-table-targyId','result'=>'idonly'), $lr); + if (is_array($ret) && count($ret)>0) { + /* ... ha igen: targyId módosítás */ + $q = "UPDATE IGNORE `$table` SET targyId=%u WHERE targyId=%u"; + $v = array($ADAT['befogadoTargyId'], $ADAT['targyId']); + $r = db_query($q, array('fv'=>'targyBeolvasztas/i-table','values'=>$v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + } + } // != tárgy + } + + /* targy törlése */ + $q = "DELETE FROM targy WHERE targyId=%u"; + $r = db_query($q, array('fv'=>'targyBeolvasztas/delete','values'=>array($ADAT['targyId'])), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + + db_commit($lr); + db_close($lr); + return true; + + } + + function targyMkValtas($ADAT) { + /** + * Elvárt paraméterek: $ADAt['targyId'], $ADAT['befogadoMkId'] + **/ + $lr = db_connect('naplo_intezmeny'); + db_start_trans($lr); + // Az adott tárgy tanköreinek jelenlegi tanárai között van-e az új munkaközösségben nem szereplő + $q = "SELECT DISTINCT tanarId FROM tankor LEFT JOIN tankorTanar USING (tankorId) + WHERE targyId=%u AND beDt<=CURDATE() AND (kiDt IS NULL OR kiDt>=CURDATE()) + AND tanarId NOT IN (SELECT tanarId FROM mkTanar WHERE mkId=%u)"; + $tanarIds = db_query($q, array('fv'=>'targyMkValtas/tanarIds','result'=>'idonly','values'=>array($ADAT['targyId'], $ADAT['befogadoMkId'])), $lr); + if (is_array($tanarIds) && count($tanarIds)>0) { + db_rollback($lr); + db_close($lr); + $_SESSION['alert'][] = 'message:wrong_data:targyMkValtas:Van az új munkaközösségbe nem tartozó érintett tanár!:'.implode(',',$tanarIds); + return false; + } + // munkaközösség váltás + $q = "UPDATE targy SET mkId=%u WHERE targyId=%u"; + $r = db_query($q, array('fv'=>'targyMkValtas/mkId','values'=>array($ADAT['befogadoMkId'], $ADAT['targyId'])), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + + db_commit($lr); + db_close($lr); + return true; + + } + + function targyAtnevezes($ADAT) { + /** + * Elvárt paraméterek: $ADAt['targyId'], $ADAT['ujTargyNev'] + **/ + + $lr = db_connect('naplo_intezmeny'); + db_start_trans($lr); + + $targyAdat = getTargyById($ADAT['targyId']); + // tankörnév módosítás + $q = "UPDATE tankorSzemeszter SET tankorNev=REPLACE(tankorNev,'%s','%s') + WHERE tankorId IN (SELECT tankorId FROM tankor WHERE targyId=%u)"; + $v = array($targyAdat['targyNev'], $ADAT['ujTargyNev'], $ADAT['targyId']); + $r = db_query($q, array('fv'=>'targyAtnevezes/tankor','values'=>$v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + // tárgy átnevezés + $q = "UPDATE targy SET targyNev='%s' WHERE targyId=%u"; + $v = array($ADAT['ujTargyNev'], $ADAT['targyId']); + $r = db_query($q, array('fv'=>'targyAtnevezes/targy','values'=>$v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + + db_commit($lr); + db_close($lr); + return true; + + } + +?>
\ No newline at end of file diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/osztaly.php b/mayor-orig/www/include/modules/naplo/intezmeny/osztaly.php new file mode 100644 index 00000000..a23daa2e --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/osztaly.php @@ -0,0 +1,474 @@ +<?php + + +function ujOsztaly($ADAT) { +/* + TODO: átnézendő az új évfolyam rendszer esetén: + kTanev, vTanev - az osztály tényleges indulási és befejező tanéve (ami != a végzés tanéve) -- ok + osztalyJel generálás (évfolyam lekérdezés) -- ok +*/ + + global $mayorCache; + $mayorCache->delType('osztaly'); + + $leiras = $ADAT['leiras']; $kTanev = $ADAT['kezdoTanev']; $vTanev = $ADAT['vegzoTanev']; + $kEvfolyamSorszam = $ADAT['kezdoEvfolyamSorszam']; $jel = $ADAT['jel']; + $telephelyId = $ADAT['telephelyId']; + // Felhasználva, hogy le vannak kérdzve a definiált tanévek + // Ellenőrizzük, hogy a megadott tanév helyes-e... + if (!in_array($kTanev,$ADAT['tanevek']) || !in_array($vTanev,$ADAT['tanevek'])) { + $_SESSION['alert'][] = 'message:wrong_data:ujOsztaly:'."$kTanev/$vTanev"; + return false; + } + + // Csatlakozás az adatbázishoz + $lr = db_connect('naplo_intezmeny', array('fv' => 'ujOsztaly')); + if (!$lr) return false; + + // Osztály felvétele + if (isset($telephelyId)) { + $q = "INSERT INTO osztaly (leiras, kezdoTanev, vegzoTanev, kezdoEvfolyamSorszam, jel, telephelyId, osztalyJellegId) + VALUES ('%s', %u, %u, %u, '%s', %u, %u)"; + $v = array($leiras, $kTanev, $vTanev, $kEvfolyamSorszam, $jel, $telephelyId, $ADAT['osztalyJellegId']); + } else { + $q = "INSERT INTO osztaly (leiras, kezdoTanev, vegzoTanev, kezdoEvfolyamSorszam, jel, osztalyJellegId) + VALUES ('%s', %u, %u, %u, '%s', %u)"; + $v = array($leiras, $kTanev, $vTanev, $kEvfolyamSorszam, $jel, $ADAT['osztalyJellegId']); + } + $osztalyId = db_query($q, array('fv' => 'ujOsztaly', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v), $lr); + if (!$osztalyId) { db_close($lr); return false; } + + // Az aktív tanévek osztalyNaplo táblájába vegyük fel az osztályt! És ha inicializálva van a munkaterv, akkor a default-hoz rendeljük is hozzá! + // Aktív tanévek lekérdezése + $ok = updateOsztalyNev($osztalyId, $lr); + + db_close($lr); + return $osztalyId; +} + +function updateOsztalyNev($osztalyId, $lr = null) { + /* + Az aktív tanévek osztalyNaplo táblájába vegyük fel/módosítsuk az osztályt! És ha inicializálva van a munkaterv, és nincs még hozzárendelve, + akkor a default-hoz rendeljük is hozzá! + Hopp! És a tankör-nevek? + */ + + global $mayorCache; + $mayorCache->delType('osztaly'); + + // Aktív tanévek lekérdezése + $q ="SELECT DISTINCT tanev FROM szemeszter WHERE statusz = 'aktív'"; + $ret = db_query($q, array('fv' => 'updateOsztalyNev', 'modul' => 'naplo_intezmeny', 'result' => 'idonly', 'values' => array()), $lr); + if (!is_array($ret)) { return false; } + $ok = true; + foreach ($ret as $key => $te) { + $tanevDb = tanevDbNev(__INTEZMENY,$te); + $osztalyAdat = getOsztalyAdat($osztalyId, $te, $lr); + if ($te < $osztalyAdat['kezdoTanev'] || $te > $osztalyAdat['vegzoTanev']) { // ebben a tanévben nem érintett az osztály + // törlés az osztalyNaplo táblából + $q = "DELETE FROM `%s`.osztalyNaplo WHERE osztalyId=%u"; + $v = array($tanevDb, $osztalyId); + $ok = $ok && db_query($q, array('fv' => 'updateOsztalyNev/osztalyNaplo - delete', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + // törlés a munkatervOsztaly táblából + $q = "DELETE FROM `%s`.munkatervOsztaly WHERE osztalyId=%u"; + $v = array($tanevDb, $osztalyId); + $ok = $ok && db_query($q, array('fv' => 'updateOsztalyNev/munkatervOsztaly - delete', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + } else { // ebben a tanévben érintett az osztály + $osztalyJel = getOsztalyJel($osztalyId, $te, $osztalyAdat, $lr); + $evfolyamJel = getEvfolyamJel($osztalyId, $te, $osztalyAdat, $osztalyJellel=false, $lr); + $evfolyam = getEvfolyam($osztalyId, $te, $osztalyAdat, $lr); + // Osztálynapló felvétele + $q = "REPLACE INTO `%s`.osztalyNaplo (osztalyId, osztalyJel, evfolyam, evfolyamJel) VALUES (%u, '%s', %u, '%s')"; + $v = array($tanevDb, $osztalyId, $osztalyJel, $evfolyam, $evfolyamJel); + $ok = $ok && db_query($q, array('fv' => 'updateOsztalyNev/osztalyNaplo - replace', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + if (!$ok) continue; + // Van-e inicializált munkaterv? + $q = "SELECT COUNT(*) FROM `%s`.munkaterv WHERE munkatervId=1"; + $v = array($tanevDb); + $db = db_query($q, array('fv' => 'updateOsztalyNev/munkaterv', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result' => 'value'), $lr); + if ($db == 1) { // Ha van, akkor van-e már osztaly-munkaterv hozzárendelés + $q = "SELECT COUNT(*) FROM `%s`.munkatervOsztaly WHERE osztalyId=%u"; + $v = array($tanevDb, $osztalyId); + $db = db_query($q, array('fv' => 'updateOsztalyNev/munkatervOsztaly - select', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result'=>'value'), $lr); + if ($db == 0) { // Ha nincs, akkor rendeljük az 1-es munkatervhez az osztályt + $q = "INSERT INTO `%s`.munkatervOsztaly (munkatervId, osztalyId) VALUES (1, %u)"; + $v = array($tanevDb, $osztalyId); + $ok = $ok && db_query($q, array('fv' => 'updateOsztaly/munkatervOsztaly - insert', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + } + } + } + } // foreach... + // tankör-nevek módosítása + $q = "SELECT tankorId FROM tankorOsztaly WHERE osztalyId = %u"; + $v = array($osztalyId); + $tankorIds = db_query($q, array('fv' => 'updateOsztalyNev', 'modul' => 'naplo_intezmeny', 'result' => 'idonly', 'values' => $v), $lr); + if (is_array($tankorIds) && count($tankorIds)>0) { + for ($i=0; $i<count($tankorIds); $i++) { + $_tankorId = $tankorIds[$i]; + $ujTankorNevek[] = (setTankorNev($_tankorId, $tankorNevExtra=null, $lr)); // ha ez nem sikerül, a session üzeni majd a megfelelő hibát, nem a tranzakció része + } + } + return $ok; +} + +function updateOsztaly($osztalyId, $file, $MEZO_LISTA, $KULCS_MEZOK, $mezo_elvalaszto = ' ', $rovatfej = false) { + + + if (!file_exists($file)) { + $_SESSION['alert'][] = 'message:file_not_found:'.$file; + return false; + } + + if (!is_array($MEZO_LISTA)) { + $_SESSION['alert'][] = 'message:wrong_parameter:MEZO_LISTA'; + return false; + } + + if (!is_array($KULCS_MEZOK)) { + $_SESSION['alert'][] = 'message:wrong_parameter:KULCS_MEZOK'; + return false; + } + + // A beDt és kiDt kiszűrése a MEZO_LISTABOL + $keyBeDt = array_search('beDt',$MEZO_LISTA); + if (!$keyBeDt && $keyBeDt !== 0) $keyBeDt = false; + else $MEZO_LISTA[$keyBeDt] = ''; + $keyKiDt = array_search('kiDt',$MEZO_LISTA); + if (!$keyKiDt && $keyKiDt !== 0) $keyKiDt = false; + else $MEZO_LISTA[$keyKiDt] = ''; + + // és a KULCS_MEZOK közül + $KULCS_MEZOK = array_diff($KULCS_MEZOK,array('beDt','kiDt')); + + // A frissítendő attribútumok listája + $attrList = array_values(array_filter($MEZO_LISTA)); + + $fp = fopen($file,'r'); + if (!$fp) { + $_SESSION['alert'][] = 'message:file_open_error:'.$file; + return false; + } + + $lr = db_connect('naplo_intezmeny', array('fv' => 'updateOsztaly')); + if (!$lr) { + $_SESSION['alert'][] = 'message:db_connect_failure:updateOsztaly'; + fclose($fp); + return false; + } + db_start_trans($lr); + + // Az első sor kihagyása + if ($rovatfej) $sor = fgets($fp,1024); + $TAG = $TAGV = array(); + while ($sor = fgets($fp, 1024)) { + + $adatSor = explode($mezo_elvalaszto, chop($sor)); + $beDt = $kiDt = ''; + if ($keyBeDt !== false) $beDt = $adatSor[$keyBeDt]; + if ($keyKiDt !== false) $kiDt = $adatSor[$keyKiDt]; + // keresési feltétel összerakása + $where = $wherev = array(); + for ($i = 0; $i < count($KULCS_MEZOK); $i++) { + if ($adatSor[$KULCS_MEZOK[$i]] != '') { + if ($adatSor[$KULCS_MEZOK[$i]] == '\N') { + $where[] = "`%s`=NULL"; + array_push($wherev, $MEZO_LISTA[$KULCS_MEZOK[$i]]); + } else { + $where[] = "`%s`='%s'"; + array_push($wherev, $MEZO_LISTA[$KULCS_MEZOK[$i]], $adatSor[$KULCS_MEZOK[$i]]); + } + } + } + if (count($where) > 0) { + $q = "SELECT diakId FROM diak WHERE ".implode(' AND ', $where); + $diakIds = db_query($q, array('fv' => 'updateOsztaly', 'modul' => 'naplo_intezmeny', 'result' => 'idonly', 'values' => $wherev), $lr); + $num = count($diakIds); + } else { $num = 0; } + if ($num == 1 && _SKIP_ON_DUP === true) { $_SESSION['alert'][] = 'info:_SKIP_ON_DUP:'.serialize($sor); continue; } + if ($num == 1) { // update + // tag felvételhez adatsor + $diakId = $diakIds[0]; + if (!isset($kiDt) || $kiDt=='') { + $TAG[] = "(%u, %u, '%s', NULL)"; + array_push($TAGV, $diakId, $osztalyId, $beDt); + } else { + $TAG[] = "(%u, %u, '%s', '%s')"; + array_push($TAGV, $diakId, $osztalyId, $beDt, $kiDt); + } + // diak adatok frissítése + $UPDATE = $UPDATEV = array(); + for ($i = 0; $i < count($MEZO_LISTA); $i++) { + if ( + $MEZO_LISTA[$i] != '' + and $adatSor[$i] != '' + and !in_array($i, $KULCS_MEZOK) + ) { + $UPDATE[] = "`%s`='%s'"; + array_push($UPDATEV, $MEZO_LISTA[$i], $adatSor[$i]); + } + } + if (count($UPDATE) > 0) { + $q = "UPDATE diak SET ".implode(',', $UPDATE)." WHERE ".implode(' AND ', $where); + $v = mayor_array_join($UPDATEV, $wherev); + $r = db_query($q, array('fv' => 'updateOsztaly/update', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true), $lr); + if (!$r) { + db_close($lr); + fclose($fp); + return false; + } + } + } elseif ($num == 0) { // insert + $insertValues = $insertPatterns = array(); + for ($i = 0; $i < count($MEZO_LISTA); $i++) { + if ($MEZO_LISTA[$i] != '') { + if ($adatSor[$i] == '\N') { + $insertValues[] = 'NULL'; + $insertPatterns[] = '%s'; + } else { + $insertValues[] = $adatSor[$i]; + $insertPatterns[] = "'%s'"; + } + } + } + $q = 'INSERT INTO `diak` ('.implode(',', array_fill(0, count($attrList), '%s')).') + VALUES ('.implode(',', $insertPatterns).')'; + $v = mayor_array_join($attrList, $insertValues); + /* + + + + $value = array(); + for ($i = 0; $i < count($MEZO_LISTA); $i++) { + if ($MEZO_LISTA[$i] != '') $value[] = $adatSor[$i]; + } + // beszúrás egyesével, hogy meglegyen a diakId (insert_id) + $q = "INSERT INTO diak (`".implode("`,`", array_fill(0, count($attrList), '%s'))."`) + VALUES ('".implode("','", array_fill(0, count($value), '%s'))."')"; + $v = array_merge($attrList, $value); + + */ + $diakId = db_query($q, array('fv' => 'updateOsztaly/insert', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v, 'rollback' => true), $lr); + if (!$diakId) { + db_close($lr); + fclose($fp); + return false; + } + + if ($diakId) { + // tagok adatai + if (!isset($kiDt) || $kiDt=='') { + $TAG[] = "(%u, %u,'%s', NULL)"; + array_push($TAGV, $diakId, $osztalyId, $beDt); + } else { + $TAG[] = "(%u, %u, '%s', '%s')"; + array_push($TAGV, $diakId, $osztalyId, $beDt, $kiDt); + } + } + } else { + $_SESSION['alert'][] = 'message:wrong_data:'.$where; + } + } // while + if (count($TAG) > 0) { // tagok felvétele az osztályba + $q = "REPLACE INTO osztalyDiak (diakId,osztalyId,beDt,kiDt) VALUES ".implode(",\n",$TAG); + $r = db_query($q, array('fv' => 'updateOsztaly/osztályba', 'modul' => 'naplo_intezmeny', 'values' => $TAGV, 'rollback'=>true), $lr); + if (!$r) { + db_close($lr); + fclose($fp); + return false; + } + } + db_commit($lr); + db_close($lr); + + fclose($fp); + return true; +} + +/* áthelyezve: share/osztalyModifier.php +// osztalyId, tanarId, beDt --> kiDt +function osztalyfonokKileptetes($osztalyId, $tanarId, $beDt, $kiDt, $olr = '') { +... +} +*/ + +function osztalyfonokKinevezes($osztalyId, $tanarId, $beDt, $lr = null) { + + global $mayorCache; + $mayorCache->delType('osztaly'); + + // Ellenőrizzük, hogy az adott időszakban nincs-e már kinevezve ofőnek + $q = "SELECT COUNT(*) AS db FROM osztalyTanar WHERE osztalyId=%u AND tanarId=%u + AND (beDt<'%s' AND '%s'<kiDt)"; + $v = array($osztalyId, $tanarId, $beDt, $beDt); + $db = db_query($q, array('fv' => 'osztalyfonokKinevezes', 'modul' => 'naplo_intezmeny', 'result' => 'value', 'values' => $v), $lr); + + if ($db > 0) { + $_SESSION['alert'][] = 'message:wrong_data:már ki van nevezve:'."$beDt - $kiDt:$num"; + return false; + } + + $q = "INSERT INTO osztalyTanar (osztalyId, tanarId, beDt, kiDt) VALUES (%u, %u, '%s', NULL)"; + $v = array($osztalyId, $tanarId, $beDt); + return db_query($q, array('fv' => 'osztalyfonokKinevezes', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + +} + +/* + TODO: az osztalyJellegId módosítása nem megengedett, vagy végig kell gondolni, + hogy mi mindent érint (osztalyJel, evfolyam, evfolyamJel - minden érintett tanév osztalyNaplo táblájában+tankör nevek+vegzoTanev...) +*/ +function osztalyLeirasTelephelyModositas($osztalyId, $leiras, $telephelyId, $osztalyJellegId, $kezdoEvfolyamSorszam, $osztalyAdat, $lr = null) { + + global $mayorCache; + $mayorCache->delType('osztaly'); + + if (isset($telephelyId) && $telephelyId != '') { + $q = "UPDATE osztaly SET leiras='%s',telephelyId=%u, kezdoEvfolyamSorszam=%u WHERE osztalyId=%u"; + $v = array($leiras, $telephelyId, $kezdoEvfolyamSorszam, $osztalyId); + } else { + $q = "UPDATE osztaly SET leiras='%s',telephelyId=NULL, kezdoEvfolyamSorszam=%u WHERE osztalyId=%u"; + $v = array($leiras, $kezdoEvfolyamSorszam, $osztalyId); + } + $ret = db_query($q, array('fv' => 'osztalyLeirasTelephelyModositas', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + return osztalyJellegModositas($osztalyId, $osztalyJellegId, $osztalyAdat, $lr); + +} + +function osztalyJellegModositas($osztalyId, $osztalyJellegId, $osztalyAdat, $lr = null) { + + global $mayorCache; + $mayorCache->delType('osztaly'); + + // Az osztalyJelleg lekérdezése + $ojAdat = getOsztalyJellegAdat($osztalyJellegId); + $ojEvfolyamJelek = explode(',', $ojAdat['evfolyamJelek']); + // csak akkor módosítunk, ha az oszály évfolyamainak száma <= az osztály-jelleg évfolyamainak száma + if (count($ojEvfolyamJelek) < ($osztalyAdat['vegzoTanev']-$osztalyAdat['kezdoTanev']+$osztalyAdat['kezdoEvfolyamSorszam'])) { + $_SESSION[] = 'message:wrong_data:Az osztály évfolyamainak száma nem engedi meg az adott osztály-jellegre váltást'; + return false; + } + // osztalyJelleg módosítása + $q = "UPDATE osztaly SET osztalyJellegId=%u WHERE osztalyId=%u"; + $v = array($osztalyJellegId, $osztalyId); + $ret = db_query($q, array('fv' => 'osztalyJellegModositas', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + // tanév adatbázisok frissítése (osztalyNaplo, munkatervOsztaly) + return updateOsztalyNev($osztalyId, $lr); +} + +function osztalyTorles($osztalyId) { + + global $mayorCache; + $mayorCache->delType('osztaly'); + + $q = "DELETE FROM osztaly WHERE osztalyId=%u"; + return db_query($q, array('fv' => 'osztalyTorles', 'modul' => 'naplo_intezmeny', 'values' => array($osztalyId))); + +} + +function ujTag($osztalyId, $diakId, $beDt, $kiDt) { +/* + * Az osztályba sorolás MOSTANTÓL többszakaszos, mint pl. a tankörbesorolás, azaz a diakId:osztalyId:beDt a + * kulcs a kapcsolótáblában. + */ + + // Csatlakozás az adatbázishoz + $lr = db_connect('naplo_intezmeny', array('fv' => 'ujTag')); + if (!$lr) return false; + db_start_trans($lr); + + // Van-e már beDt-t tartalmazó osztálytagsága + $q = "SELECT beDt FROM osztalyDiak WHERE osztalyId=%u AND diakId=%u AND beDt<'%s' AND (kiDt IS NULL OR kiDt >= '%s')"; + $ret = db_query($q, array('fv' => 'ujTag', 'modul' => 'naplo_intezmeny', 'result' => 'value', 'values' => array($osztalyId, $diakId, $beDt, $beDt))); + if (!is_null($ret)) $beDt = $ret; + + if ($kiDt != '') { + // Ha kiDt nem üres, akkor: van-e kiDt-t tartalmazó osztálytagsága + $q = "SELECT kiDt FROM osztalyDiak WHERE osztalyId=%u AND diakId=%u AND beDt<'%s' AND (kiDt IS NULL OR kiDt >= '%s')"; + $ret = db_query($q, array('fv' => 'ujTag', 'modul' => 'naplo_intezmeny', 'result' => 'record', 'values' => array($osztalyId, $diakId, $kiDt, $kiDt))); + if (!is_null($ret)) $kiDt = $ret['kiDt']; + } + + if ($kiDt == '') { + // Ha $kiDt üres, akkor töröljük az eddigi bejegyzéseket a lefedett tartományból és felvesszük az újat + $q = "DELETE FROM osztalyDiak WHERE osztalyId=%u AND diakId=%u AND beDt>='%s'"; + db_query($q, array('fv' => 'ujTag/töröl', 'modul' => 'naplo_intezmeny', 'values' => array($osztalyId, $diakId, $beDt))); + $q = "INSERT INTO osztalyDiak (osztalyId, diakId, beDt, kiDt) VALUES (%u, %u, '%s', NULL)"; + db_query($q, array('fv' => 'ujTag/felvesz', 'modul' => 'naplo_intezmeny', 'values' => array($osztalyId, $diakId, $beDt))); + } else { + // Ha $kiDt nem üres, akkor töröljük az eddigi bejegyzéseket a lefedett tartományból és felvesszük az újat + $q = "DELETE FROM osztalyDiak WHERE osztalyId=%u AND diakId=%u AND '%s'<=beDt AND kiDt<='%s'"; + db_query($q, array('fv' => 'ujTag/töröl', 'modul' => 'naplo_intezmeny', 'values' => array($osztalyId, $diakId, $beDt, $kiDt))); + $q = "INSERT INTO osztalyDiak (osztalyId, diakId, beDt, kiDt) VALUES (%u, %u, '%s', '%s')"; + db_query($q, array('fv' => 'ujTag/felvesz', 'modul' => 'naplo_intezmeny', 'values' => array($osztalyId, $diakId, $beDt, $kiDt))); + } + + db_commit($lr); + db_close($lr); + return $r; +} + +function diakKepzesModositas($diakIds, $kepzesMod, $dt) { + + $modKepzesIds = array_keys($kepzesMod); + + if (!is_array($diakIds) || !is_array($modKepzesIds) || count($diakIds) == 0) return false; + $lr = db_connect('naplo_intezmeny'); + db_start_trans($lr); + + // A megadott diákok adott dátum szerinti képzései + $q = "SELECT kepzesId, diakId FROM kepzesDiak WHERE diakId IN (".implode(',', array_fill(0, count($diakIds), '%u')).") AND tolDt<='%s' AND (igDt IS NULL OR '%s'<=igDt)"; + $v = mayor_array_join($diakIds, array($dt,$dt)); + $kepzesOld = db_query($q, array('fv' => 'diakKepzesModositas/dKepzes','modul'=>'naplo_intezmeny','values'=>$v,'result'=>'keyvalues'), $lr); + if (!is_array($kepzesOld)) { db_rollback($lr); db_close($lr); return false; } + + $oldKepzesIds = array_keys($kepzesOld); + $kepzesIds = array_unique(array_merge($modKepzesIds, $oldKepzesIds)); + foreach ($kepzesIds as $kepzesId) { + + if (!is_array($kepzesMod[$kepzesId])) $kepzesMod[$kepzesId] = array(); + if (!is_array($kepzesOld[$kepzesId])) $kepzesOld[$kepzesId] = array(); + + $add = array_unique(array_diff($kepzesMod[$kepzesId], $kepzesOld[$kepzesId])); + $del = array_unique(array_diff($kepzesOld[$kepzesId], $kepzesMod[$kepzesId])); + $diff = array_unique(array_merge($add, $del)); + // Aki $dt után került be a képzésbe és most kiveendő vagy felveendő, azt töröljük + if (count($diff) > 0) { + $q = "DELETE FROM kepzesDiak WHERE kepzesId=%u AND tolDt>'%s' + AND diakId IN (".implode(',',array_fill(0,count($diff),'%u')).")"; + $v = mayor_array_join(array($kepzesId, $dt), $diff); + $r = db_query($q, array('fv'=>'diakKepzesModositas/delete','modul'=>'naplo_intezmeny','values'=>$v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + } + if (count($del) > 0) { + // a tolDt=$dt esetén csak a lezárandókat kell törölni + $q = "DELETE FROM kepzesDiak WHERE kepzesId=%u AND tolDt='%s' + AND diakId IN (".implode(',',array_fill(0,count($del),'%u')).")"; + $v = mayor_array_join(array($kepzesId, $dt), $del); + $r = db_query($q, array('fv'=>'diakKepzesModositas/delete','modul'=>'naplo_intezmeny','values'=>$v), $lr); + // Aki korábban benne volt a képzésben, de most nincs, azt le kell zárni + $q = "UPDATE kepzesDiak SET igDt='%s' - INTERVAL 1 DAY WHERE kepzesId=%u AND tolDt<'%s' AND (igDt IS NULL OR '%s'<=igDt) + AND diakId IN (".implode(',',array_fill(0,count($del),'%u')).")"; + $v = mayor_array_join(array($dt, $kepzesId, $dt, $dt), $del); + $r = db_query($q, array('fv'=>'diakKepzesModositas/update','modul'=>'naplo_intezmeny','values'=>$v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + } + if (count($add) > 0) { + // Aki eddig nem volt, azt fel kell venni + $v = $INS = array(); + foreach ($add as $diakId) { + $INS[] = "(%u, %u, '%s', NULL)"; + array_push($v, $kepzesId, $diakId, $dt); + } + if (count($INS)>0) { + $q = "INSERT INTO kepzesDiak (kepzesId, diakId, tolDt, igDt) VALUES ".implode(',',$INS); + db_query($q, array('fv'=>'diakKepzesModositas/inster','modul'=>'naplo_intezmeny','values'=>$v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return false; } + } + } + } + db_commit($lr); + db_close($lr); + +} + +?>
\ No newline at end of file diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/tanar.php b/mayor-orig/www/include/modules/naplo/intezmeny/tanar.php new file mode 100644 index 00000000..68a203a8 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/tanar.php @@ -0,0 +1,54 @@ +<?php + + function tanarAdatModositas($ADAT) { + + $FIELDS = getTableFields('tanar'); + $v = array(); + foreach($ADAT as $attr => $value) { + if (array_key_exists($attr, $FIELDS) && !in_array($attr, array('action','tanarId'))) { + if ($value == '') { + $T[] = "$attr=NULL"; + } else { + $v[] = $value; + $T[] = "$attr='%s'"; + } + } + } + $q = "UPDATE tanar SET ".implode(',',$T)." WHERE tanarId=%u"; + $v[] = $ADAT['tanarId']; + return db_query($q, array('fv' => 'tanarAdatModositas', 'modul' => 'naplo_intezmeny', 'values' => $v)); + + } + + function ujTanar($ADAT) { + + + $FIELDS = getTableFields('tanar'); + $A = $V = $v = array(); + // Ellenőrizzük, hogy az oktatási azonosító szerepel-e már.... + if ($ADAT['oId'] != '') { + $q = "SELECT COUNT(*) FROM tanar WHERE oId=%u"; + $db = db_query($q, array('fv' => 'ujTanar/ütközés ellenőrzés','modul' => 'naplo_intezmeny', 'values' => array($ADAT['oId']), 'result' => 'value')); + if ($db > 0) { + $_SESSION['alert'][] = 'message:wrong_data:ujTanar/ütközés ellenőrzés:ütköző oktatási azonosító ('.$ADAT['oId'].')'; + return false; + } + } + foreach($ADAT as $attr => $value) { + if (array_key_exists($attr,$FIELDS) && !in_array($attr, array('action','tanarId'))) { + if ($value == '' && !in_array($attr, array('viseltNevElotag'))) { + $V[] = "NULL"; + } else { + $V[] = "'%s'"; + $v[] = $value; + } + $A[] = "$attr"; + } + } + $q = "INSERT INTO tanar (".implode(',', $A).") VALUES (".implode(',',$V).')'; + + return db_query($q, array('fv' => 'ujTanar', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v), $lr); + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/tankor.php b/mayor-orig/www/include/modules/naplo/intezmeny/tankor.php new file mode 100644 index 00000000..8db17e7a --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/tankor.php @@ -0,0 +1,201 @@ +<?php + + function ujTankor($ADAT) { + + + $return = false; + $lr = db_connect('naplo_intezmeny', array('fv' => 'ujTankor')); + if (!$lr) return false; + + /* pre-check variables */ + //... + /* pre-check */ + if (isset($ADAT['tankorId']) && $ADAT['tankorId']!='') { + $return = $tankorId = $ADAT['tankorId']; + $q = "UPDATE tankor SET felveheto=%u, min=%u, max=%u, kovetelmeny='%s' WHERE tankorId=%u"; + $v = array($ADAT['felveheto'], $ADAT['min'], $ADAT['max'], $ADAT['kovetelmeny'],$tankorId); + db_query($q, array('fv' => 'ujTankor', 'modul' => 'naplo_intezmeny', 'values' => $v)); + $tanarFelvesz = false; + } else { + $q = "INSERT INTO tankor (targyId,felveheto,min,max,kovetelmeny) VALUES (%u, '%s', %u, %u,'%s')"; + $v = array($ADAT['targyId'], $ADAT['felveheto'], $ADAT['min'], $ADAT['max'], $ADAT['kovetelmeny']); + $return = $tankorId = db_query($q, array('fv' => 'ujTankor', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v), $lr); + $tanarFelvesz = true; + } + /* tankorTipus rev 1261++ -- 1294 */ + if (isset($ADAT['tankorTipus']) && !is_null($ADAT['tankorTipus'])) { + $q = "UPDATE tankor SET tankorTipus='%s' WHERE tankorId=%u"; + $v = array($ADAT['tankorTipus'], $tankorId); + db_query($q, array('fv' => 'ujTankor', 'modul' => 'naplo_intezmeny', 'values' => $v)); + } + /* tankorTipus rev 1294++ */ + if (isset($ADAT['tankorTipusId']) && !is_null($ADAT['tankorTipusId'])) { + $q = "UPDATE tankor SET tankorTipusId='%s' WHERE tankorId=%u"; + $v = array($ADAT['tankorTipusId'], $tankorId); + db_query($q, array('fv' => 'ujTankor', 'modul' => 'naplo_intezmeny', 'values' => $v)); + $q = "SELECT jelleg FROM tankorTipus WHERE tankorTipusId=%u"; + $v = array($ADAT['tankorTipusId']); + $tankorTipusJelleg = db_query($q, array('fv' => 'ujTankor', 'modul' => 'naplo_intezmeny', 'result'=>'value','values' => $v)); + } + + /* TankörCsoport min/max - a tankörcsoport minden tankörében átállítjuk ezeket */ + $q = "UPDATE ".__INTEZMENYDBNEV.".tankor SET min=%u, max=%u WHERE tankorId IN ( + SELECT DISTINCT tankorId FROM tankorCsoport WHERE csoportId IN ( + SELECT csoportId FROM tankorCsoport WHERE tankorId=%u + ) + )"; + $v = array($ADAT['min'], $ADAT['max'], $tankorId); + db_query($q, array('fv' => 'ujTankor/minMax', 'modul' => 'naplo', 'values' => $v)); + + //-- + $IOSZTALY = getTankorOsztalyai($tankorId, array('result' => 'id'), $lr); //TAGOK ALAPJÁN??? + for ($i = 0; $i < count($ADAT['osztalyok']); $i++) { + $q = "REPLACE INTO tankorOsztaly (tankorId, osztalyId) VALUES (%u, %u)"; + $v = array($tankorId, $ADAT['osztalyok'][$i]); + db_query($q, array('fv' => 'ujTankor', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + } + + /* */ + $TOSZTALY = getTankorOsztalyaiByTanev($tankorId, $ADAT['tanev'], array('result' => 'id', 'tagokAlapjan' => true), $lr); + + /* FIGYELEM! EZ veszélyes művelet! */ + if (is_array($IOSZTALY) && is_array($ADAT['osztalyok'])) $DEL_OSZTALY = array_diff($IOSZTALY,$ADAT['osztalyok']); + if (($_ERR = array_intersect($DEL_OSZTALY,$TOSZTALY))) { + $_SESSION['alert'][] = 'info:tankorOsztalyNemTorolheto:'.implode('-',$_ERR); + for ($k=0; $k<count($_ERR); $k++) { + $ADAT['osztalyok'][] = $_ERR[$k]; + } + } + $DEL_OSZTALY = array_diff($DEL_OSZTALY,$TOSZTALY); + + if (is_array($DEL_OSZTALY) && count($DEL_OSZTALY)>0) { + $q = "DELETE FROM tankorOsztaly WHERE osztalyId IN (".implode(',', array_fill(0, count($DEL_OSZTALY), '%u')).") AND tankorId=%u"; + $v = mayor_array_join($DEL_OSZTALY, array($tankorId)); + db_query($q, array('fv' => 'ujTankor/del-oszt', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + } + + /* create name */ + // osztalyId alapján évfolyam, osztály jelek lekérdezése + // abból összeállítás + // getOsztalyAdat helyett + + $TARGYADAT = getTargyById($ADAT['targyId'],$lr); + $kdt = '3000-01-01'; + $vdt = '1970-01-01'; + if (is_array($ADAT['szemeszterek'])) + for ($j = 0; $j < count($ADAT['szemeszterek']); $j++) { + $nev = ''; + $szid = $ADAT['szemeszterek'][$j]; + $_SZ = getSzemeszterek(array('filter' => array("szemeszterId=$szid"))); + if ($_SZ[0]['kezdesDt'] < $kdt) $kdt = $_SZ[0]['kezdesDt']; + if ($_SZ[0]['zarasDt'] > $vdt) $vdt = $_SZ[0]['zarasDt']; + $_tanev = $_SZ[0]['tanev']; + $_szemeszter = $_SZ[0]['szemeszter']; + $_oraszam = $ADAT['SZ'.$szid]; + if ($tankorTipusJelleg=='osztályfüggetlen') { + $nev = "Isk."; + } else { + $OSZTALYOK = getOsztalyok($_tanev); + if ($OSZTALYOK !== false && is_array($OSZTALYOK) && is_array($ADAT['osztalyok'])) { + $nev = ''; + $TMP = array(); + for($i = 0; $i < count($OSZTALYOK); $i++) { + // Ha évenként változik az osztály jele, akkor jobb, ha nem generáljuk, hanem a lekérdezett adatokat használjuk! + // $_oj = genOsztalyJel($_tanev, $OSZTALYOK[$i]); + $_oj = $OSZTALYOK[$i]['osztalyJel']; + if ($_oj!==false && !is_null($_oj)) { + list($e,$o) = explode('.',$_oj); + if (in_array($OSZTALYOK[$i]['osztalyId'], $ADAT['osztalyok'])) $TMP[$e][]= $o; + } + } + if (count(array_keys($TMP)) == 1) { // évfolyamon belüli osztályok: + $nev = implode('||',array_keys($TMP)); + $nev .= '.'.implode('',$TMP[$nev]); + } elseif (count((array_keys($TMP)))>1) { // multi évfolyam: + $K = (array_keys($TMP)); + sort($K); + $nev = $K[0].'-'.$K[count($K)-1].'.'; + } else { // ekkorra már elballagott minden osztaly... + $nev = false; + $_SESSION['alert'][] = '::Minden osztály elballagott'; + } + } else { + $nev = false; // adott szemeszterbe nem jár osztály + $_SESSION['alert'][] = '::Az adott szemeszterbe nem jár osztály'; + } + } + if ($nev !== false) { + $nev .= ' '.$TARGYADAT['targyNev']; + $nev .= ' '; + + $q = "SELECT tankorJel FROM tankor LEFT JOIN tankorTipus USING (tankorTipusId) WHERE tankorId=%u"; + $tankorJel = db_query($q, array('fv' => 'genTankorNev', 'modul' => 'naplo_intezmeny', 'result'=>'value', 'values' => array($tankorId), 'debug'=>false), $lr); + if ($tankorJel!='') $nev .= $tankorJel.' '.$ADAT['tipus']; + else $nev .= $ADAT['tipus']; + $q = "REPLACE INTO tankorSzemeszter (tankorId,tanev,szemeszter,oraszam,tankorNev) VALUES (%u, %u, %u, %f, '%s')"; + if ($ADAT['tanev'] < __TANEV || $ADAT['tankorNevMegorzes']===true) { // a neve már ne változzon, és az óraszáma? + $q1 = "SELECT tankorNev FROM tankorSzemeszter WHERE tankorId=%u AND tanev=%u AND szemeszter=%u"; + // OVERWRITE!!!! + $orignev = db_query($q1, array('fv' => 'ujTankor', 'result'=>'value', 'modul' => 'naplo_intezmeny', 'values' => array($tankorId,$_tanev,$_szemeszter), 'debug'=>false), $lr); + if ($orignev!='' && $orignev!='Array') $nev = $orignev; // csúnya bugfix + } + $v = array($tankorId, $_tanev, $_szemeszter, $_oraszam, $nev); + if ($nev!='') db_query($q, array('fv' => 'ujTankor', 'modul' => 'naplo_intezmeny', 'values' => $v, 'debug'=>false), $lr); + // delete!!!!???? + } + + } + if ($tanarFelvesz && $ADAT['tanarId']!='') { + + $q = "INSERT INTO tankorTanar (tankorId,tanarId,beDt,kiDt) VALUES (%u, %u, '%s', '%s')"; + $v = array($tankorId, $ADAT['tanarId'], $kdt, $vdt); + $r = db_query($q, array('fv' => 'ujTankor', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + + } + + // ======================================================= + + db_close($lr); + + return $return; + } + + function tankorTorol($tankorId) { + + $q = "DELETE FROM tankor WHERE tankorId=%u"; + return db_query($q, array('fv' => 'tankorTorol', 'modul' => 'naplo_intezmeny', 'values' => array($tankorId))); + + } + + function tankorTargyModositas($ADAT) { + /** + * Elvárt paraméterek: $ADAT['tankorId'], $ADAT['ujTargyId'], $ADAT['targyId'] // az eredeti + **/ + $lr = db_connect('naplo_intezmeny'); + if (!$lr) return false; + db_start_trans($lr); + + // A régi és új tárgynév lekérdezése + $q = "SELECT targyId, targyNev FROM targy WHERE targyId IN (%u, %u)"; + $v = array($ADAT['ujTargyId'], $ADAT['targyId']); + $ret = db_query($q, array('fv'=>'tankorTargyModositas/targyNev','values'=>$v, 'result'=>'keyvaluepair'), $lr); + // a tárgynév cserje a tankorSzemeszter táblában + $q = "UPDATE tankorSzemeszter SET tankorNev=REPLACE(tankorNev,'%s','%s') WHERE tankorId=%u"; + $v = array($ret[$ADAT['targyId']], $ret[$ADAT['ujTargyId']], $ADAT['tankorId']); + $r = db_query($q, array('fv'=>'tankorTargyModositas/updateTargyNev','values'=>$v), $lr); + if (!$r) { db_rollback($lr, 'tankorTargyModositas'); db_close($lr); return false; } + // A targyId módosítása + $q = "UPDATE tankor SET targyId=%u WHERE tankorId=%u"; + $v = array($ADAT['ujTargyId'], $ADAT['tankorId']); + $r = db_query($q, array('fv'=>'tankorTargyModositas/updateTargyId','values'=>$v), $lr); + if (!$r) { db_rollback($lr, 'tankorTargyModositas'); db_close($lr); return false; } + $nev = setTankorNev($ADAT['tankorId'], $tankorNevExtra=null, $lr); + if (!$nev) { db_rollback($lr, 'tankorTargyModositas'); db_close($lr); return false; } + + db_commit($lr); + db_close($lr); + return true; + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/tankorSzemeszter.php b/mayor-orig/www/include/modules/naplo/intezmeny/tankorSzemeszter.php new file mode 100644 index 00000000..fcd411c4 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/tankorSzemeszter.php @@ -0,0 +1,200 @@ +<?php +/* + function getTankorSzemeszterek($tankorIds) + | A függvény visszaadja az összes `tankorSzemeszter` bejegyzést: szűrő tankorIds tömb + --> [multiassoc][tankorId] + function getSzemeszterek_spec($tolTanev = '', $igTanev = '') + | `szemeszter` tábla bejegyzései + --> [indexed] + function tankorSzemeszterModositas($Modositas, $tankorSzemeszter, $tankorNevek, $Szemeszterek, $tanevZarasDt) { + | A módosító + * function _createName($ADAT,$SZ,$extra) +*/ + + function getTankorSzemeszterek($tankorIds) { + + if (count($tankorIds) > 0) { + $q = "SELECT * FROM tankorSzemeszter WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).")"; + return db_query($q, array( + 'fv' => 'getTankorSzemeszterek', 'modul' => 'naplo_intezmeny', 'result' => 'multiassoc', 'keyfield' => 'tankorId', 'values' => $tankorIds + )); + } else { + return array(); + } + + } + + function getSzemeszterek_spec($tolTanev = '', $igTanev = '') { + + $v = array(); + if ($tolTanev != '') { + $where = "WHERE tanev >= %u"; + $v[] = $tolTanev; + } + if ($igTanev != '') { + if ($tolTanev != '') $where .= " AND tanev <= %u"; + else $where = "WHERE tanev <= %u"; + $v[] = $igTanev; + } + + $q = "SELECT * FROM szemeszter $where ORDER BY tanev,szemeszter"; + return db_query($q, array('fv' => 'getSzemeszterek', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v)); + + } + + function tankorSzemeszterModositas($Modositas, $tankorSzemeszter, $tankorNevek, $Szemeszterek, $tanevZarasDt) { + + // $tankorTanarAdatok inicializásása - $Szemeszterek alapján + $tankorIds = $tankorTanarAdatok = array(); + for ($i = 0; $i < count($Szemeszterek); $i++) { + $tankorTanarAdatok[$Szemeszterek[$i]['tanev']][$Szemeszterek[$i]['szemeszter']] = array( + 'tankorIds' => array(), + 'tanev' => $Szemeszterek[$i]['tanev'], + 'statusz' => $Szemeszterek[$i]['statusz'], + 'kezdesDt' => $Szemeszterek[$i]['kezdesDt'], + 'zarasDt' => $Szemeszterek[$i]['zarasDt'] + ); + } + + $lr = db_connect('naplo_intezmeny'); + + $Values = array(); + $Values = $v = array(); + for ($i = 0; $i < count($Modositas); $i++) { + + $M = $Modositas[$i]; + if ($tankorTanarAdatok[$M['tanev']][$M['szemeszter']]['statusz'] != 'lezárt') { + + if (is_array($tankorSzemeszter[$M['tankorId']][$M['tanev']][$M['szemeszter']])) { + // update - vagy semmi + $regiOraszam = $tankorSzemeszter[$M['tankorId']][$M['tanev']][$M['szemeszter']]['oraszam']; + if (floatval($M['oraszam']) >= 0 && $regiOraszam != $M['oraszam']) { // állíthatjuk nullára + // update - most már tényleg - itt csak az óraszám változik: + $q = "UPDATE tankorSzemeszter SET oraszam=%f WHERE tankorId=%u AND tanev=%u AND szemeszter=%u"; + db_query($q, array( + 'fv' => 'tankorSzemeszterModositas', 'modul' => 'naplo_intezmeny', + 'values' => array($M['oraszam'], $M['tankorId'], $M['tanev'], $M['szemeszter']) + ,'debug'=>false + )); + } elseif ( + floatval($M['oraszam']) == 0 + && $tankorTanarAdatok[$M['tanev']][$M['szemeszter']]['statusz'] == 'tervezett' + && $regiOraszam != $M['oraszam'] + ) { // Ekkor törölhetjük... nemde? + $q = "DELETE FROM tankorSzemeszter + WHERE tankorId=%u AND tanev=%u + AND szemeszter=%u"; + db_query($q, array( + 'fv' => 'tankorSzemeszterModositas', 'modul' => 'naplo_intezmeny', + 'values' => array($M['tankorId'], $M['tanev'], $M['szemeszter']) + ,'debug'=>false + )); + } + } else { + // insert + $tankorNev = _createName($M, array($M['tanev'].'/'.$M['szemeszter']), $tankorNevek[$M['tankorId']]); + if ($tankorNev != '') { + array_push($v, $M['tankorId'], $M['tanev'], $M['szemeszter'], $M['oraszam'], $tankorNev); + $Values[] = "(%u, %u, %u, %f, '%s')"; + // A tanár felvételéhez kell a tol-ig dt (Szemeszterek) + // tankorIds + $tankorTanarAdatok[$M['tanev']][$M['szemeszter']]['tankorIds'][] = $M['tankorId']; + if (!in_array($M['tankorId'], $tankorIds)) $tankorIds[] = $M['tankorId']; + // tankorTanarIds - a tanevZarasDt pillanatában lévő tanárait kérdezzük le + + } + } // insert vagy update + } // nem lezárt szemeszter + } // for + if (count($Values) > 0) { + $q = "INSERT INTO tankorSzemeszter (tankorId, tanev, szemeszter, oraszam, tankorNev) + VALUES ".implode(',', $Values); + db_query($q, array('fv' => 'tankorSzemeszterModositas', 'modul' => 'naplo_intezmeny', 'values' => $v,'debug'=>false)); + // Az $tanev évi tanárt is rendeljük hozzá! + // kik voltak tanárok a zárás napján + $q = "SELECT DISTINCT tankorId, tanarId FROM tankorTanar + WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") + AND '%s' >= beDt AND '%s' <= kiDt"; + $v = mayor_array_join($tankorIds, array($tanevZarasDt, $tanevZarasDt)); + $ret = db_query($q, array('fv' => 'tankorSzemeszterModositas', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v, 'debug'=>false), $lr); + for ($i = 0; $i < count($ret); $i++) $tankorTanarIds[$ret[$i]['tankorId']][] = $ret[$i]['tanarId']; + foreach ($tankorTanarAdatok as $szTanev => $tanevAdat) + foreach ($tanevAdat as $szSzemeszter => $szemeszterAdat) + if (count($szemeszterAdat['tankorIds']) > 0) { + tankorTanarFelvesz( + $szemeszterAdat['tankorIds'], $tankorTanarIds, $szemeszterAdat, + $szemeszterAdat['kezdesDt'], $szemeszterAdat['zarasDt'] + ); + } + } + + db_close($lr); + return true; + + } + + function _createName($ADAT,$SZ,$extra) { + + global $TANKOR_TIPUS; + + $tankorId = $ADAT['tankorId']; + if ($tankorId=='') return false; + $tanev = $ADAT['tanev']; + $szemeszter = $ADAT['szemeszter']; + + $targyId = getTankorTargyId($tankorId); + $TANKOROSZTALYOK = getTankorOsztalyai($tankorId, array('result' => 'id')); + + if ($targyId=='') return false; + $TARGYADAT = getTargyById($targyId); + $kdt='3000-01-01'; + $vdt='1970-01-01'; + if (is_array($SZ)) + for ($j=0; $j<count($SZ); $j++) { + $nev = ''; + list($_tanev,$_szemeszter)= explode('/',$SZ[$j]); + //checkOsztalyInTanev($_tanev); + $OSZTALYOK = getOsztalyok($_tanev); + if ($OSZTALYOK!== false && is_array($OSZTALYOK) && is_array($TANKOROSZTALYOK)) { + $nev = ''; + $TMP = array(); + for($i=0; $i<count($OSZTALYOK); $i++) { + // Ha évenként változik az osztály jele, akkor jobb, ha nem generáljuk, hanem a lekérdezett adatokat használjuk! + // $_oj = genOsztalyJel($_tanev, $OSZTALYOK[$i]); + $_oj = $OSZTALYOK[$i]['osztalyJel']; + if ($_oj!==false) { + list($e,$o) = explode('.',$_oj); + if (in_array($OSZTALYOK[$i]['osztalyId'], $TANKOROSZTALYOK)) $TMP[$e][]= $o; + } + } + if (count(array_keys($TMP)) == 1) { // évfolyamon belüli osztályok: + $nev = implode('||',array_keys($TMP)); + $nev .= '.'.implode('',$TMP[$nev]); + } elseif (count((array_keys($TMP)))>1) { // multi évfolyam: + $K = (array_keys($TMP)); + sort($K); + $nev = $K[0].'-'.$K[count($K)-1].'.'; + } else { // ekkorra már elballagott minden osztaly... + $nev = false; + + } + + } else { + $nev = false; // adott szemeszterbe nem jár osztály + } + + if ($nev!== false) { + $nev .= ' '.$TARGYADAT['targyNev']; + foreach($TANKOR_TIPUS as $_tt=>$_tipus) { + if (strstr($extra,$_tipus)) { + $_extra = $_tipus; + } + } + $nev .= ' '.$_extra; + } + } + return $nev; + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/tankorTanar.php b/mayor-orig/www/include/modules/naplo/intezmeny/tankorTanar.php new file mode 100644 index 00000000..af6840e9 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/tankorTanar.php @@ -0,0 +1,292 @@ +<?php + + function tankorTanarTorol($tankorId,$tanarId,$beDt,$kiDt) { // CORE function + + $q = "SELECT COUNT(*) AS db FROM szemeszter WHERE statusz='lezárt' AND + (('%s' BETWEEN szemeszter.kezdesDt AND szemeszter.zarasDt) + OR + ('%s' BETWEEN szemeszter.kezdesDt AND szemeszter.zarasDt)) + LIMIT 1"; + $v = array($beDt, $kiDt); + $r = db_query($q, array('fv' => 'tankorTanarTorol', 'modul' => 'naplo_intezmeny', 'result' => 'value', 'values' => $v)); + + if ($r == 0) { + $q = "DELETE FROM ".__INTEZMENYDBNEV.".tankorTanar WHERE tankorId=%u AND bedt='%s' AND tanarId=%u"; + $v = array($tankorId, $beDt, $tanarId); + db_query($q, array('fv' => 'tankorTanarTorol', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true)); + } else { + $_SESSION['alert'][] = 'info:lezart_tanev'; + } + } + + function tankorTanarJavit($tankorId,$tanarId,$beDt,$kiDt) { + + $q = "SELECT COUNT(*) AS db FROM szemeszter WHERE statusz='lezárt' AND + (('%s' BETWEEN szemeszter.kezdesDt AND szemeszter.zarasDt) + OR + ('%s' BETWEEN szemeszter.kezdesDt AND szemeszter.zarasDt)) + LIMIT 1"; + $v = array($beDt, $kiDt); + $r = db_query($q, array('fv' => 'tankorTanarTorol', 'modul' => 'naplo_intezmeny', 'result' => 'value', 'values' => $v)); + + if ($r == 0) { + $q = "UPDATE ".__INTEZMENYDBNEV.".tankorTanar SET kiDt='%s' WHERE tankorId=%u AND bedt='%s' AND tanarId=%u"; + $v = array($kiDt,$tankorId, $beDt, $tanarId); + db_query($q, array('fv' => 'tankorTanarTorol', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true)); + } else { + $_SESSION['alert'][] = 'info:lezart_tanev'; + } + } + + //--- + + + function tankorTanarFelvesz($tankorIds, $tankorTanarIds, $tanevAdat, $tolDt, $igDt) { + + + if (!is_array($tankorIds) || count($tankorIds) == 0) return false; + $D = array(); + + $lr = db_connect('naplo_intezmeny', array('fv' => 'tankorTanarFelvesz')); + db_start_trans($lr); + + // Az intervallumban érintett tankör-tanár tagságok lekérdezése... + $v = mayor_array_join($tankorIds, array($igDt, $tolDt)); + $q = "SELECT tanarId, tankorId, min(bedt) AS mbe ,max(kidt) AS mki + FROM ".__INTEZMENYDBNEV.".tankorTanar WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") + AND bedt<='%s' AND kidt>='%s' GROUP BY tankorid,tanarid"; + $ret = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v, 'rollback' => true), $lr); + if ($ret === false) { db_close($lr); return false; } + for ($i = 0; $i < count($ret); $i++) { + if ($tolDt < $ret[$i]['mbe']) $ret[$i]['mbe'] = $tolDt; + if ($igDt > $ret[$i]['mki']) $ret[$i]['mki'] = $igDt; + $D[ $ret[$i]['tankorId'] ][ $ret[$i]['tanarId'] ] = array('mbe' => $ret[$i]['mbe'], 'mki' => $ret[$i]['mki'], 'torlendo' => true); + } + + // Az érintett intervallumba eső tankör-tanár tagságok törlése + $q = "DELETE FROM ".__INTEZMENYDBNEV.".tankorTanar WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") + AND bedt<='%s' AND kidt>='%s'"; + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + + // beszúrandó + for ($i = 0; $i < count($tankorIds); $i++) { + $tankorId = $tankorIds[$i]; + $tanarIds = $tankorTanarIds[$tankorId]; + for ($j = 0; $j < count($tanarIds); $j++) { + $tanarId = $tanarIds[$j]; + if ($tanarId != '') { + $D[$tankorId][$tanarId]['torlendo'] = false; + if (($beDt = $D[$tankorId][$tanarId]['mbe']) == '') $beDt = $tolDt; + if (($kiDt = $D[$tankorId][$tanarId]['mki']) == '') $kiDt = $igDt; + $q = "INSERT INTO ".__INTEZMENYDBNEV.".tankorTanar (tankorId,tanarId,beDt,kiDt) VALUES (%u, %u, '%s', '%s')"; + $v = array($tankorId, $tanarId, $beDt, $kiDt); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + } + } + } + + // törlendők felvétele + for ($i = 0; $i < count($tankorIds); $i++) { + $tankorId = $tankorIds[$i]; + if (is_array($D[$tankorId])) + foreach($D[$tankorId] as $tanarId => $T) { + if ($T['torlendo']) { + if ($T['mbe'] < $tolDt) { + $beDt = $T['mbe']; + $kiDt = date('Y-m-d', strtotime('-1 days',strtotime($tolDt))); + $q = "INSERT INTO ".__INTEZMENYDBNEV.".tankorTanar (tankorId,tanarId,beDt,kiDt) VALUES (%u, %u, '%s', '%s')"; + $v = array($tankorId, $tanarId, $beDt, $kiDt); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + } + if ($T['mki'] > $igDt) { + $kiDt = $T['mki']; + $beDt = date('Y-m-d', strtotime('+1 days',strtotime($igDt))); + $q = "INSERT INTO ".__INTEZMENYDBNEV.".tankorTanar (tankorId,tanarId,beDt,kiDt) VALUES (%u, %u, '%s','%s')"; + $v = array($tankorId, $tanarId, $beDt, $kiDt); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + } + } + } + } + + // tankörblokkok ellenőrzése - csak nem tervezett tanévben + // Érintett blokkok lekérdezése + if ($tanevAdat['statusz'] != 'tervezett') { + $blokkIds = getTankorBlokkByTankorId($tankorIds, $tanevAdat['tanev']); + if (is_array($blokkIds)) foreach ($blokkIds as $index => $blokkId) { + // A blokk tankörei + $bTankorIds = getTankorokByBlokkId($blokkId, $tanevAdat['tanev']); + + // Ellenőrizzük a tankör tanárokat - azonosak-e tankörönként + $q = "SELECT tanarId,COUNT(DISTINCT tankorId) AS c FROM ".__INTEZMENYDBNEV.".tankorTanar + WHERE tankorId IN (".implode(',', array_fill(0, count($bTankorIds), '%u')).") + AND beDt <= '%s' AND (kiDt IS NULL OR '%s' <= kiDt) + GROUP BY tanarId HAVING c>1 + ORDER BY tankorId,tanarId"; + $v = mayor_array_join($bTankorIds, array($igDt, $tolDt)); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz/BlokkEllenőrzés', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v), $lr); + if (is_array($r) && count($r) > 0) { + db_rollback($lr, 'Ütköző tanárt találtam egy blokkban ('.$blokkId.')! Visszaállítjuk az eredeti állapotot!'); + db_close($lr); + return false; + } + } + } + /* ======================================================== + Órarend módosítása + ======================================================== */ + + + if ($tanevAdat['statusz'] == 'aktív') { + + $tanevDbNev = tanevDbNev(__INTEZMENY, $tanevAdat['tanev']); + + // ÓrarendiOraTankor bejegyzés ellenőrzés/készítés + $V = $v2 = array(); + foreach ($tankorIds as $i => $tankorId) { + if ($tankorTanarIds[$tankorId][0] != '') { // Ha akarunk egyáltalán tanárt hozzárendelni + // van-e már az igényeinknek megfelelő bejegyzés + $q = "SELECT * FROM `%s`.orarendiOraTankor WHERE tankorId=%u + AND tanarId IN (".implode(',', array_fill(0, count($tankorTanarIds[$tankorId]), '%u')).") LIMIT 1"; + $v = mayor_array_join(array($tanevDbNev, $tankorId), $tankorTanarIds[$tankorId]); + $ret = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v, 'rollback' => true), $lr); + if ($ret === false) { db_close($lr); return false; } + + if (count($ret) != 0) { // ha van, akkor az elsőt használjuk + $OOT[$tankorId] = $ret[0]; + } else { // ha nincs, akkor generálunk egy jót + $OOT[$tankorId] = array( + 'tanarId' => $tankorTanarIds[$tankorId][0], + 'osztalyJel' => 'NaN', + 'targyJel' => $tankorId.'-'.$tankorTanarIds[$tankorId][0], + 'tankorId' => $tankorId + ); + $V[] = "(%u, 'NaN', '%s', %u)"; + array_push($v2, $tankorTanarIds[$tankorId][0], $tankorId.'-'.$tankorTanarIds[$tankorId][0], $tankorId); + } + } + } + if (count($V) > 0) { // Az új bejegyzéseket felvesszük + $q = "INSERT INTO `%s`.orarendiOraTankor (tanarId,osztalyJel,targyJel,tankorId) VALUES ".implode(',', $V); + array_unshift($v2, $tanevDbNev); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'values' => $v2, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + + } + + // Az érintett órarendi bejegyzések lekérdezése beDt szerint rendezve + $q = "SELECT tolDt,igDt,het,nap,ora,tankorId,tanarId,osztalyJel,targyJel,teremId + FROM `%s`.orarendiOra LEFT JOIN `%s`.orarendiOraTankor USING (tanarId,osztalyJel,targyJel) + WHERE tolDt <= '%s' AND (igDt >= '%s' OR igDt IS NULL) + AND tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") + ORDER BY tankorId,tolDt"; + $v = mayor_array_join(array($tanevDbNev, $tanevDbNev, $igDt, $tolDt), $tankorIds); + $ret = db_query($q, array( + 'fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'result' => 'multiassoc', 'keyfield' => 'tankorId', 'values' => $v, 'rollback' => true + ), $lr); + if ($ret === false) { db_close($lr); return false; } + + foreach ($ret as $tankorId => $tankorOrarendiBejegyzesek) { + + // Ha van orarendiOra bejegyzés és nem akarunk tanárt hozzárendelni - az hiba!! + if (!is_array($OOT[$tankorId])) { + db_rollback($lr, 'Létező órarendi óra esetén a tanár nem törölhető:'.$tankorId); db_close($lr); return false; + }; + + $tanarId = $OOT[$tankorId]['tanarId']; + $osztalyJel = $OOT[$tankorId]['osztalyJel']; + $targyJel = $OOT[$tankorId]['targyJel']; + + foreach ($tankorOrarendiBejegyzesek as $i => $TOB) { + if ($TOB['teremId'] == '') { + $TOB['teremId'] = 'NULL'; + $valueStr = "(%u, %u, %u, %u, '%s', '%s', %s, '%s', '%s')"; + } else { + $valueStr = "(%u, %u, %u, %u, '%s', '%s', %u, '%s', '%s')"; + } + if ($TOB['tolDt'] < $tolDt) { // balról túlnyúlik - kettévágjuk + $q = "UPDATE `%s`.orarendiOra SET igDt='%s' - INTERVAL 1 DAY + WHERE tolDt='%s' AND tanarId=%u + AND het=%u AND nap=%u AND ora=%u"; + $v = array($tanevDbNev, $tolDt, $TOB['tolDt'], $TOB['tanarId'], $TOB['het'], $TOB['nap'], $TOB['ora']); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + $q = "INSERT INTO `%s`.orarendiOra (het,nap,ora,tanarId,osztalyJel,targyJel,teremId,tolDt,igDt) VALUES $valueStr"; + $v = array( + $tanevDbNev, $TOB['het'], $TOB['nap'], $TOB['ora'], $TOB['tanarId'], $TOB['osztalyJel'], + $TOB['targyJel'], $TOB['teremId'], $tolDt, $TOB['igDt'] + ); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + $TOB['tolDt'] = $tolDt; // Az intervallumot lefedő bejegyzések miatt - három fele fogjuk vágni + } + if ($igDt < $TOB['igDt']) { // jobbról túlnyúlik - kettévágjuk !! igDt nem lehet NULL !! + $q = "UPDATE `%s`.orarendiOra SET tolDt='%s' + INTERVAL 1 DAY + WHERE igDt='%s' AND tanarId=%u AND het=%u AND nap=%u AND ora=%u"; + $v = array($tanevDbNev, $igDt, $TOB['igDt'], $TOB['tanarId'], $TOB['het'], $TOB['nap'], $TOB['ora']); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + $q = "INSERT INTO `%s`.orarendiOra (het,nap,ora,tanarId,osztalyJel,targyJel,teremId,tolDt,igDt) VALUES $valueStr"; + $v = array( + $tanevDbNev, $TOB['het'], $TOB['nap'], $TOB['ora'], $TOB['tanarId'], $TOB['osztalyJel'], + $TOB['targyJel'], $TOB['teremId'], $TOB['tolDt'], $igDt + ); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + + } + // A közbensőkben tanárt váltunk + if ($tanarId != $TOB['tanarId']) { + $q = "UPDATE `%s`.orarendiOra LEFT JOIN `%s`.orarendiOraTankor USING (tanarId,osztalyJel,targyJel) + SET tanarId=%u, osztalyJel='%s', targyJel='%s' + WHERE '%s'<=tolDt AND igDt<='%s' AND tanarId=%u AND het=%u AND nap=%u AND ora=%u AND tankorId=%u"; + $v = array($tanevDbNev, $tanevDbNev, $tanarId, $osztalyJel, $targyJel, $tolDt, $igDt, $TOB['tanarId'], $TOB['het'], $TOB['nap'], $TOB['ora'], $tankorId); + $r = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + } + + } + + } // foreach + + // A módosított órarend ütközésellenőrzése - [k] munkatervenként külön. Itt most megengedjük, hogy ha több munkaterv is van, de egyszerre van órája a tanárnak... :/ +// $q = "SELECT tanarId, dt, ora, COUNT(*) AS db +// FROM `%s`.nap LEFT JOIN `%s`.orarendiOra +// ON (((DAYOFWEEK(dt)+5) MOD 7)+1 = orarendiOra.nap) +// AND orarendiOra.het=nap.orarendiHet +// AND orarendiOra.tolDt<=dt AND orarendiOra.igDt>=dt +// WHERE '%s' <= dt AND dt <= '%s' +// GROUP BY munkatervId,tanarId, dt, ora +// HAVING db > 1"; + // [bb] szerintem ez a jó: a hét-nap-óra-tanár-tolDt kulcs az orarendiOra táblában, így ha két sorban ezek megegyeznek, akkor nem kell külön számolni... + $q = "SELECT tanarId, dt, ora, COUNT(DISTINCT het, nap, ora, tanarId, tolDt) AS db + FROM `%s`.nap LEFT JOIN `%s`.orarendiOra + ON (((DAYOFWEEK(dt)+5) MOD 7)+1 = orarendiOra.nap) + AND orarendiOra.het=nap.orarendiHet + AND orarendiOra.tolDt<=dt AND orarendiOra.igDt>=dt + WHERE '%s' <= dt AND dt <= '%s' + GROUP BY tanarId, dt, ora + HAVING db > 1"; + $v = array($tanevDbNev, $tanevDbNev, $tolDt, $igDt); + $ret = db_query($q, array('fv' => 'tankorTanarFelvesz', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v, 'rollback' => true), $lr); + if ($ret === false) { db_close($lr); return false; } + + if (count($ret)) { // Van ütközés! + db_rollback($lr, 'Az összes ütközést ellenőriztem, és a megadott '.$tolDt.'-'.$igDt.' intervallumban egy (esetleg másik) tanárnak több órája van egy időben (tanarId='.$ret[0]['tanarId'].', dt='.$ret[0]['dt'].', ora='.$ret[0]['ora'].') - így visszaállítjuk az eredeti állapotot...'); + db_close($lr); + return false; + } + + } // aktív tanév + + db_commit($lr); + db_close($lr); + return true; + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/tankorTanarHozzarendeles.php b/mayor-orig/www/include/modules/naplo/intezmeny/tankorTanarHozzarendeles.php new file mode 100644 index 00000000..600ee897 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/tankorTanarHozzarendeles.php @@ -0,0 +1,224 @@ +<?php + + function getTanarLekotottOraszam($tanarId) { + + $q = "SELECT sum(oraszam)/2 FROM tankorSzemeszter LEFT JOIN tankorTanar USING (tankorId) WHERE tanev=".__TANEV." AND tanarId=%u"; + + global $_TANEV; + + $q = "select sum(oraszam/db) from ( + select tankorId, sum(oraszam)/2 as oraszam, ( + select count(tanarId) from tankorTanar where tankorId=tankorSzemeszter.tankorId and beDt<='".$_TANEV['kezdesDt']."' + and (kiDt is NULL OR kiDt>='".$_TANEV['zarasDt']."') + ) as db + from tankorSzemeszter left join tankorTanar using (tankorId) + where tanev=".__TANEV." and tanarId=%u and beDt<='".$_TANEV['kezdesDt']."' + and (kiDt is NULL or kiDt>='".$_TANEV['zarasDt']."') group by tankorId + ) as tankorOraszamPerTanar"; + + return db_query($q, array('fv'=>'getTanarLekotottOraszam','modul'=>'naplo_intezmeny','result'=>'value','values'=>array($tanarId))); + + } + + function getTankorokBySzuro($Szuro) { + /* + osztaly U tanar U tanarNelkul || targy U mk U tanar U tanarNelkul || (osztaly M targy) U (osztaly M mk) U tanar U tanarNelkul + */ + global $_TANEV; + + $vanOsztaly = (is_array($Szuro['osztalyIds']) && count($Szuro['osztalyIds'])>0); + $vanMk = (is_array($Szuro['mkIds']) && count($Szuro['mkIds'])>0); + $vanTargy = (is_array($Szuro['targyIds']) && count($Szuro['targyIds'])>0); + $vanTanar = (is_array($Szuro['tanarIds']) && count($Szuro['tanarIds'])>0); + $vanTanarNelkuliek = (bool)$Szuro['tanarNelkuliTankorok']; + + $v = $q = array(); + if ($vanOsztaly && !$vanMk && !$vanTargy) { + $q[] = "SELECT tankorId, tankorNev, targyId, tankorTipusId, avg(oraszam) AS hetiOraszam + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) + LEFT JOIN tankorOsztaly USING (tankorId) + WHERE osztalyId IN (".implode(',', array_fill(0, count($Szuro['osztalyIds']), '%u')).") + AND tanev=".__TANEV." + GROUP BY tankorId, tankorNev, targyId, tankorTipusId + ORDER BY tankorNev, tankorId"; + $v = array_merge($v, $Szuro['osztalyIds']); + } + if ($vanMk) { + if ($vanOsztaly) { + $q[] = "SELECT tankorId, tankorNev, targyId, tankorTipusId, avg(oraszam) AS hetiOraszam + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) + LEFT JOIN targy USING (targyId) + WHERE mkId IN (".implode(',', array_fill(0, count($Szuro['mkIds']), '%u')).") + AND tanev=".__TANEV." + AND tankorId IN ( + SELECT tankorId FROM tankorOsztaly WHERE osztalyId IN (".implode(',', array_fill(0, count($Szuro['osztalyIds']), '%u')).") + ) + GROUP BY tankorId, tankorNev, targyId, tankorTipusId + ORDER BY tankorNev, tankorId"; + $v = array_merge($v, $Szuro['mkIds'], $Szuro['osztalyIds']); + } else { + $q[] = "SELECT tankorId, tankorNev, targyId, tankorTipusId, avg(oraszam) AS hetiOraszam + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) + LEFT JOIN targy USING (targyId) + WHERE mkId IN (".implode(',', array_fill(0, count($Szuro['mkIds']), '%u')).") + AND tanev=".__TANEV." + GROUP BY tankorId, tankorNev, targyId, tankorTipusId + ORDER BY tankorNev, tankorId"; + $v = array_merge($v, $Szuro['mkIds']); + } + } + if ($vanTargy) { + if ($vanOsztaly) { + $q[] = "SELECT tankorId, tankorNev, targyId, tankorTipusId, avg(oraszam) AS hetiOraszam + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) + WHERE targyId IN (".implode(',', array_fill(0, count($Szuro['targyIds']), '%u')).") + AND tanev=".__TANEV." + AND tankorId IN ( + SELECT tankorId FROM tankorOsztaly WHERE osztalyId IN (".implode(',', array_fill(0, count($Szuro['osztalyIds']), '%u')).") + ) + GROUP BY tankorId, tankorNev, targyId, tankorTipusId + ORDER BY tankorNev, tankorId"; + $v = array_merge($v, $Szuro['targyIds'], $Szuro['osztalyIds']); + } else { + $q[] = "SELECT tankorId, tankorNev, targyId, tankorTipusId, avg(oraszam) AS hetiOraszam + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) + WHERE targyId IN (".implode(',', array_fill(0, count($Szuro['targyIds']), '%u')).") + AND tanev=".__TANEV." + GROUP BY tankorId, tankorNev, targyId, tankorTipusId + ORDER BY tankorNev, tankorId"; + $v = array_merge($v, $Szuro['targyIds']); + } + } + if ($vanTanar) { + + $q[] = "SELECT tankorId, tankorNev, targyId, tankorTipusId, avg(oraszam) AS hetiOraszam + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) + LEFT JOIN tankorTanar USING (tankorId) + WHERE tanarId IN (".implode(',', array_fill(0, count($Szuro['tanarIds']), '%u')).") + AND tanev=".__TANEV." + GROUP BY tankorId, tankorNev, targyId, tankorTipusId + ORDER BY tankorNev, tankorId"; + $v = array_merge($v, $Szuro['tanarIds']); + + } + if ($vanTanarNelkuliek) { + $q[] = "SELECT tankor.tankorId AS tankorId, tankorNev, targyId, tankorTipusId, avg(oraszam) AS hetiOraszam + FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) + LEFT JOIN tankorTanar ON tankor.tankorId=tankorTanar.tankorId AND beDt<='".$_TANEV['kezdesDt']."' AND (kiDt IS NULL OR kiDt>='".$_TANEV['zarasDt']."') + WHERE tanarId IS NULL + AND tanev=".__TANEV." + GROUP BY tankorId, tankorNev, targyId, tankorTipusId + ORDER BY tankorNev, tankorId"; + + } + + if (count($q) > 0) { + $query = '('.implode(') UNION DISTINCT (', $q).')'; + $return = db_query($query, array('debug'=>false,'fv'=>'getTankorokBySzuro','modul'=>'naplo_intezmeny','result'=>'indexed','values'=>$v)); + + for ($i=0; $i<count($return); $i++) { + $return[$i]['tanarIds'] = getTankorTanaraiByInterval($return[$i]['tankorId'], array('tanev' => __TANEV, 'result' => 'idonly')); + // A tankör lekötött óraszáma + $tmp = getTankorTervezettOraszamok((array)$return[$i]['tankorId']); + foreach (array(1, 2) as $szemeszter) { + $osz = 0; + foreach ($tmp[ $return[$i]['tankorId'] ]['bontasOraszam'][$szemeszter-1] as $oAdat) $osz += floatval($oAdat['hetiOraszam']); + $return[$i]['tervezettOraszamok'][$szemeszter] = array('btOraszam'=> $osz, 'tszOraszam' => floatval($tmp[ $return[$i]['tankorId'] ]['oraszam'][$szemeszter-1])); + }; + $return[$i]['bontasOk'] = ( + $return[$i]['tervezettOraszamok'][1]['btOraszam']==$return[$i]['tervezettOraszamok'][1]['tszOraszam'] + && $return[$i]['tervezettOraszamok'][2]['btOraszam']==$return[$i]['tervezettOraszamok'][2]['tszOraszam'] + ); + } + + return $return; + } else { return array(); } + } + + function getTanarokBySzuro($Szuro) { + + global $_TANEV; + + // Ha nincs kiválasztott tankör, akkor nincs értelme tanárokat lekérdezni + if (!is_array($Szuro['tankorTargyIds']) || count($Szuro['tankorTargyIds']) == 0) return array(); + + // Az osztály nem játszik szerepet a lehetséges tanárok szűrésében + $vanMk = (is_array($Szuro['mkIds']) && count($Szuro['mkIds'])>0); + $vanTanar = (is_array($Szuro['tanarIds']) && count($Szuro['tanarIds'])>0); + // Tárgy mindig lesz - ha más nem a tankörökből + if (is_array($Szuro['targyIds'])) $targyIds = array_merge($Szuro['targyIds'], $Szuro['tankorTargyIds']); + else $targyIds = $Szuro['tankorTargyIds']; + + $v = $q = array(); + + { + // Itt lehet tárgy és munkaközösség, valamint a megadott tanarId-k alapján szűrni + if ($vanTanar) { + $q[] = "SELECT tanarId, concat_ws(' ',viseltNevElotag,viseltCsaladinev,viseltUtonev) as tanarNev, + hetiMunkaora,hetiKotelezoOraszam, + hetiLekotottMinOraszam,hetiLekotottMaxOraszam,hetiKotottMaxOraszam + FROM tanar WHERE statusz IN ('határozatlan idejű','határozott idejű','külső óraadó') + AND beDt<'".$_TANEV['kezdesDt']."' AND (kiDt IS NULL OR kiDt<'".$_TANEV['zarasDt']."') + AND tanarId IN (".implode(',', array_fill(0, count($Szuro['tanarIds']), '%u')).")"; + $v = array_merge($v, $Szuro['tanarIds']); + } + if ($vanMk) { + $q[] = "SELECT tanarId, concat_ws(' ',viseltNevElotag,viseltCsaladinev,viseltUtonev) as tanarNev, + hetiMunkaora,hetiKotelezoOraszam, + hetiLekotottMinOraszam,hetiLekotottMaxOraszam,hetiKotottMaxOraszam + FROM tanar LEFT JOIN mkTanar USING (tanarId) + WHERE statusz IN ('határozatlan idejű','határozott idejű','külső óraadó') + AND beDt<'".$_TANEV['kezdesDt']."' AND (kiDt IS NULL OR kiDt<'".$_TANEV['zarasDt']."') + AND mkId IN (".implode(',', array_fill(0, count($Szuro['mkIds']), '%u')).")"; + $v = array_merge($v, $Szuro['mkIds']); + } + // targyIds mindig van + $q[] = "SELECT tanarId, concat_ws(' ',viseltNevElotag,viseltCsaladinev,viseltUtonev) as tanarNev, + hetiMunkaora,hetiKotelezoOraszam, + hetiLekotottMinOraszam,hetiLekotottMaxOraszam,hetiKotottMaxOraszam + FROM tanar LEFT JOIN tanarKepesites USING (tanarId) + LEFT JOIN kepesitesTargy USING (kepesitesId) + WHERE statusz IN ('határozatlan idejű','határozott idejű','külső óraadó') + AND beDt<'".$_TANEV['kezdesDt']."' AND (kiDt IS NULL OR kiDt<'".$_TANEV['zarasDt']."') + AND targyId IN (".implode(',', array_fill(0, count($targyIds), '%u')).")"; + $v = array_merge($v, $targyIds); + $q[] = "SELECT tanarId, concat_ws(' ',viseltNevElotag,viseltCsaladinev,viseltUtonev) as tanarNev, + hetiMunkaora,hetiKotelezoOraszam, + hetiLekotottMinOraszam,hetiLekotottMaxOraszam,hetiKotottMaxOraszam + FROM tanar LEFT JOIN mkTanar USING (tanarId) + LEFT JOIN targy USING (mkId) + WHERE statusz IN ('határozatlan idejű','határozott idejű','külső óraadó') + AND beDt<'".$_TANEV['kezdesDt']."' AND (kiDt IS NULL OR kiDt<'".$_TANEV['zarasDt']."') + AND targyId IN (".implode(',', array_fill(0, count($targyIds), '%u')).")"; + $v = array_merge($v, $targyIds); + + $query = '('.implode(') UNION DISTINCT (', $q).') ORDER BY tanarNev, tanarId'; + $return = db_query($query, array('fv'=>'getTanarokBySzuro #1','modul'=>'naplo_intezmeny','result'=>'indexed','values'=>$v)); + + } + // Le kell kérdezni a tárgyait és az eddigi lekötött óraszámát a tanárnak + for ($i = 0; $i < count($return); $i++) { + $return[$i]['targyIds'] = getTargyIdsByTanarId($return[$i]['tanarId']); + $return[$i]['lekotottOraszam'] = getTanarLekotottOraszam($return[$i]['tanarId']); + } + + return $return; + + } + + function getTankorStat() { + + global $_TANEV; + + $q = "select count(distinct tankorId) from tankorSzemeszter left join tankorTanar using (tankorId) + where tanev=".__TANEV." and tankorTanar.tanarId is not null + and beDt<='".$_TANEV['kezdesDt']."' AND (kiDt IS NULL OR kiDt >= '".$_TANEV['zarasDt']."')"; + $ret['kesz'] = db_query($q, array('fv'=>'getTankorStat/1','modul'=>'naplo_intezmeny','result'=>'value')); + + $q = "select count(distinct tankorId) from tankorSzemeszter where tanev=".__TANEV; + $ret['osszes'] = db_query($q, array('fv'=>'getTankorStat/1','modul'=>'naplo_intezmeny','result'=>'value')); + + return $ret; + } + +?>
\ No newline at end of file diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/terem.php b/mayor-orig/www/include/modules/naplo/intezmeny/terem.php new file mode 100644 index 00000000..ee640a54 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/terem.php @@ -0,0 +1,25 @@ +<?php + + function teremAdatModositas($ADAT,$uj=false) { + + if ($uj===true) { + $q = "INSERT INTO `terem` (`teremId`,`leiras`,`tipus`,`ferohely`,`telephelyId`) VALUES ((SELECT max(teremId)+1 FROM terem AS s),'%s','%s',%u,NULL)"; + $v = array($ADAT['leiras'], $ADAT['tipus'], intval($ADAT['ferohely'])); + } else { + $q = "UPDATE `terem` SET `leiras`='%s',`tipus`='%s'"; + $v = array($ADAT['leiras'], $ADAT['tipus']); + if (isset($ADAT['ferohely'])) { $q .= ",`ferohely`=%u"; $v[] = $ADAT['ferohely']; } + else { $q .= ",`ferohely`=NULL"; } + if (isset($ADAT['telephelyId'])) { $q .= ",`telephelyId`=%u"; $v[] = $ADAT['telephelyId']; } + else { $q .= ",`telephelyId`=NULL"; } + + $q .= " WHERE teremId=%u"; + $v[] = $ADAT['teremId']; + } + + return db_query($q, array('fv' => 'teremAdatModositas', 'modul' => 'naplo_intezmeny', 'values' => $v)); + + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/tovabbkepzes.php b/mayor-orig/www/include/modules/naplo/intezmeny/tovabbkepzes.php new file mode 100644 index 00000000..a7f56083 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/tovabbkepzes.php @@ -0,0 +1,159 @@ +<?php + + function getTanarTovabbkepzesCiklus() { + // $q = "select tanarId,tovabbkepzesStatusz,sum(reszosszeg) as sumReszosszeg,sum(oraszam) as sumOraszam,tanar.tovabbkepzesForduloDt,tanev from tovabbkepzesTanulmanyiEgyseg + // left join tovabbkepzes USING (tovabbkepzesId) LEFT JOIN tanar USING (tanarId) + // WHERE tanev BETWEEN YEAR(tovabbkepzesForduloDt)-7 AND YEAR(tovabbkepzesForduloDt) GROUP BY tanarId,tovabbkepzesStatusz"; + $q = "select tanarId,tovabbkepzesStatusz,sum(sumReszosszeg) AS sumReszosszeg,sum(IF(akkreditalt=1,sumOraszam,IF(sumOraszam<=30,sumoraszam,30))) AS sumOraszam, + tovabbkepzesForduloDt,tanev + FROM (select akkreditalt,tanarId,tovabbkepzesStatusz,sum(reszosszeg) as sumReszosszeg,sum(oraszam) as sumOraszam,tanar.tovabbkepzesForduloDt,tanev from tovabbkepzesTanulmanyiEgyseg left join tovabbkepzes USING (tovabbkepzesId) LEFT JOIN tanar USING (tanarId) + WHERE tanev BETWEEN YEAR(tovabbkepzesForduloDt)-8 AND YEAR(tovabbkepzesForduloDt)-1 GROUP BY tanarId,tovabbkepzesStatusz,akkreditalt) AS a GROUP BY tanarId,tovabbkepzesStatusz"; + $r = db_query($q, array('debug'=>false,'fv'=>'getTovabbkepzesek','modul'=>'naplo_intezmeny','result'=>'indexed')); + return reindex($r,array('tanarId','tovabbkepzesStatusz')); + } + + function getTanarTovabbkepzesFolyamat($dt="NOW()") { + $q = "select tanarId,tolDt,igDt,tanusitvanyDt,tanusitvanySzam from tovabbkepzesTanar WHERE NOW() BETWEEN tolDt AND igDt"; + $r = db_query($q, array('debug'=>false,'fv'=>'getTovabbkepzesek','modul'=>'naplo_intezmeny','result'=>'assoc','keyfield'=>'tanarId')); + return $r; + } + + function getTovabbkepzesTerv($tanev) { + $q = "SELECT * FROM tovabbkepzesTanulmanyiEgyseg WHERE tanev=%u"; + $values = array($tanev); + $r = db_query($q, array('debug'=>false,'fv'=>'getTovabbkepzesek','modul'=>'naplo_intezmeny','result'=>'indexed','values'=>$values)); + return $r; + } + + function getTanarTovabbkepzesByEv($tanev,$tanarId=null) { + if ($tanarId>0) { + $values = array($tanev,$tanev,$tanarId); + $W = ' tanarId=%u AND '; + } else { + $values = array($tanev,$tanev); + $W = ''; + } + $q = "SELECT * FROM tovabbkepzesTanar + WHERE $W tolDt<=DATE(CONCAT(%u+1,'-08-31')) AND (igDt>=DATE(CONCAT(%u,'-09-01')) OR igDt IS NULL) AND (tanusitvanySzam='' or tanusitvanySzam IS NULL)"; + $r = db_query($q, array('debug'=>false,'fv'=>'getTanarTovabbkepzesByEv','modul'=>'naplo_intezmeny','result'=>'indexed','values'=>$values)); + return $r; + } + + // TODO ? + function getTanarTeljesitettTanulmanyiEgyseg() { + $q = "SELECT * FROM tovabbkepzesTanulmanyiEgyseg LEFT JOIN tovabbkepzesTanar USING (tovabbkepzesId,tanarId) WHERE tovabbkepzesStatusz='teljesített'"; + $values = array($tanarId); + $r = db_query($q, array('debug'=>false,'fv'=>'getTanarTovabbkepzesByEv','modul'=>'naplo_intezmeny','result'=>'multiassoc','keyfield'=>'tanarId','values'=>$values)); + return $r; + } + + function getTanarTovabbkepzesek($SET = array()) { + $W = ''; + $values=array(); + if (is_array($SET) && count($SET)>0) { + foreach ($SET as $k => $v) { + $M[] = "$k='%s'"; + $values[] = $v; + } + $W = 'WHERE '.implode(' AND ',$M); + } + $q = "SELECT * FROM tovabbkepzesTanar ".$W; + $r = db_query($q, array('debug'=>false,'fv'=>'getTovabbkepzesek','modul'=>'naplo_intezmeny','result'=>'indexed','values'=>$values)); + return $r; + } + function getTovabbkepzesek() { + $q = "SELECT * FROM tovabbkepzes LEFT JOIN tovabbkepzoIntezmeny USING (tovabbkepzointezmenyId) ORDER BY tovabbkepzesNev"; + $r = db_query($q, array('fv'=>'getTovabbkepzesek','modul'=>'naplo_intezmeny','result'=>'indexed')); + return $r; + } + function getTovabbkepzoIntezmenyek() { + $q = "SELECT * FROM tovabbkepzoIntezmeny ORDER BY intezmenyRovidnev,intezmenyNev"; + $r = db_query($q, array('fv'=>'getTovabbkepzoIntezmenyek','modul'=>'naplo_intezmeny','result'=>'indexed')); + return $r; + } + function getKeretosszeg($tanev) { + $q = "SELECT keretOsszeg FROM tovabbkepzesKeret WHERE tanev=%u"; + $v = array($tanev); + $r = db_query($q, array('fv'=>'getKeretosszeg','modul'=>'naplo_intezmeny','result'=>'value','values'=>$v)); + return $r; + } + + function ujTovabbkepzoIntezmeny($ADAT) { + $q = "INSERT INTO tovabbkepzoIntezmeny (intezmenyRovidnev,intezmenyNev) VALUES ('%s','%s')"; + $v = array($ADAT['intezmenyRovidNev'],$ADAT['intezmenyNev']); + $r = db_query($q, array('debug'=>false,'fv'=>'ujTovabbkepzoIntezmeny','modul'=>'naplo_intezmeny','result'=>'insert','values'=>$v)); + return $r; + } + + + function modKeretosszeg($tanev,$keretOsszeg) { + $q = "REPLACE INTO tovabbkepzesKeret (tanev,keretOsszeg) VALUES (%u,%u)"; + $v = array($tanev,$keretOsszeg); + db_query($q, array('debug'=>false,'fv'=>'modKeretOsszeg','modul'=>'naplo_intezmeny','result'=>'insert','values'=>$v)); + } + + function ujTovabbkepzes($ADAT) { + if ($ADAT['tovabbkepzesNev']=='') return false; + $q = "INSERT INTO tovabbkepzes (tovabbkepzesNev,tovabbkepzoIntezmenyId, oraszam, kategoria, akkreditalt) VALUES ('%s',%u,%u,'%s',%u)"; + $v = array($ADAT['tovabbkepzesNev'],$ADAT['tovabbkepzoIntezmenyId'],$ADAT['oraszam'],$ADAT['kategoria'],$ADAT['akkreditalt']); + $r = db_query($q, array('debug'=>false,'fv'=>'ujTovabbkepzes','modul'=>'naplo_intezmeny','result'=>'insert','values'=>$v)); + return $r; + } + function modTovabbkepzes($ADAT) { + if ($ADAT['tovabbkepzesId']=='') return false; + $q = "UPDATE tovabbkepzes SET tovabbkepzesNev='%s',oraszam=%u,kategoria='%s' WHERE tovabbkepzesId=%u"; + $v = array($ADAT['tovabbkepzesNev'],$ADAT['oraszam'],$ADAT['kategoria'],$ADAT['tovabbkepzesId']); + $r = db_query($q, array('debug'=>false,'fv'=>'modTovabbkepzes','modul'=>'naplo_intezmeny','result'=>'update','values'=>$v)); + return $r; + } + function ujTovabbkepzesTanar($ADAT) { + if ($ADAT['tovabbkepzesId']=='') return false; + $q = "INSERT INTO tovabbkepzesTanar (tovabbkepzesId,tanarId, tolDt, igDt) VALUES (%u,%u,'%s','%s')"; + $v = array($ADAT['tovabbkepzesId'],$ADAT['tanarId'],$ADAT['tolDt'],$ADAT['igDt']); + $r = db_query($q, array('debug'=>false,'fv'=>'ujTovabbkepzesTanar','modul'=>'naplo_intezmeny','result'=>'insert','values'=>$v)); + return $r; + } + function modTovabbkepzesTanar($ADAT) { + //if ($ADAT['tovabbkepzesId']=='') return false; + $q = "UPDATE tovabbkepzesTanar SET tolDt='%s', igDt='%s', tanusitvanyDt='%s', tanusitvanySzam='%s' WHERE tovabbkepzesId=%u AND tanarId=%u"; + $v = array($ADAT['tolDt'],$ADAT['igDt'],$ADAT['tanusitvanyDt'],$ADAT['tanusitvanySzam'],$ADAT['tovabbkepzesId'],$ADAT['tanarId']); + $r = db_query($q, array('debug'=>false,'fv'=>'ujTovabbkepzesTanar','modul'=>'naplo_intezmeny','result'=>'update','values'=>$v)); + return $r; + } + function delTovabbkepzesTanar($ADAT) { + //if ($ADAT['tovabbkepzesId']=='') return false; + $q = "DELETE FROM tovabbkepzesTanar WHERE tovabbkepzesId=%u AND tanarId=%u"; + $v = array($ADAT['tovabbkepzesId'],$ADAT['tanarId']); + $r = db_query($q, array('debug'=>false,'fv'=>'delTovabbkepzesTanar','modul'=>'naplo_intezmeny','result'=>'delete','values'=>$v)); + return $r; + } + function ujTovabbkepzesTE($ADAT,$lr) { + $q = "INSERT INTO tovabbkepzesTanulmanyiEgyseg (tovabbkepzesId, tanarId, tanev, reszosszeg, tamogatas, tovabbkepzesStatusz, tavollet,helyettesitesRendje,prioritas) VALUES (%u,%u,%u,%u,%u,'%s','%s','%s','%s')"; + $v = array($ADAT['tovabbkepzesId'],$ADAT['tanarId'],$ADAT['tanev'],intval($ADAT['reszosszeg']),intval($ADAT['tamogatas']),$ADAT['tovabbkepzesStatusz'],$ADAT['tavollet'],$ADAT['helyettesitesRendje'],$ADAT['prioritas']); + $r = db_query($q, array('debug'=>false,'fv'=>'ujTovabbkepzesTanar','modul'=>'naplo_intezmeny','result'=>'insert','values'=>$v),$lr); + } + function modTovabbkepzesTE($ADAT) { + $lr = db_connect('naplo_intezmeny'); + $q = "SELECT count(*) AS db FROM tovabbkepzesTanulmanyiEgyseg WHERE tovabbkepzesId=%u AND tanarId=%u AND tanev=%u"; + $v = array($ADAT['tovabbkepzesId'],$ADAT['tanarId'],$ADAT['tanev']); + $db = db_query($q, array('debug'=>false,'fv'=>'ujTovabbkepzesTanar','modul'=>'naplo_intezmeny','result'=>'value','values'=>$v),$lr); + if ($db==0) { + ujTovabbkepzesTE($ADAT,$lr); + $q = "UPDATE tovabbkepzesTanulmanyiEgyseg SET reszosszeg=%u,tamogatas=%u,tovabbkepzesStatusz='%s',tavollet='%s',helyettesitesRendje='%s',prioritas='%s' WHERE tovabbkepzesId=%u AND tanarId=%u AND tanev=%u"; + $v = array(intval($ADAT['reszosszeg']),intval($ADAT['tamogatas']),$ADAT['tovabbkepzesStatusz'],$ADAT['tavollet'],$ADAT['helyettesitesRendje'],$ADAT['prioritas'],$ADAT['tovabbkepzesId'],$ADAT['tanarId'],$ADAT['tanev']); + $r = db_query($q, array('debug'=>false,'fv'=>'ujTovabbkepzesTanar','modul'=>'naplo_intezmeny','result'=>'value','values'=>$v),$lr); + + } else { + $q = "UPDATE tovabbkepzesTanulmanyiEgyseg SET reszosszeg=%u,tamogatas=%u,tovabbkepzesStatusz='%s',tavollet='%s',helyettesitesRendje='%s',prioritas='%s' WHERE tovabbkepzesId=%u AND tanarId=%u AND tanev=%u"; + $v = array(intval($ADAT['reszosszeg']),intval($ADAT['tamogatas']),$ADAT['tovabbkepzesStatusz'],$ADAT['tavollet'],$ADAT['helyettesitesRendje'],$ADAT['prioritas'],$ADAT['tovabbkepzesId'],$ADAT['tanarId'],$ADAT['tanev']); + $r = db_query($q, array('debug'=>false,'fv'=>'ujTovabbkepzesTanar','modul'=>'naplo_intezmeny','result'=>'value','values'=>$v),$lr); + } + db_commit($lr); + db_close($lr); + } + function delTovabbkepzesTE($ADAT) { + // echo 'EZT TÖRÖLNÉM'; + // dump($ADAT); + } + +?>
\ No newline at end of file diff --git a/mayor-orig/www/include/modules/naplo/intezmeny/valtas.php b/mayor-orig/www/include/modules/naplo/intezmeny/valtas.php new file mode 100644 index 00000000..702766bb --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/intezmeny/valtas.php @@ -0,0 +1,9 @@ +<?php + + function updateNaploSettings($intezmeny) { + $q = "DELETE FROM settings WHERE userAccount='%s' AND policy='%s'"; + db_query($q, array('debug'=>false,'fv'=>'updateNaploSettings','modul'=>'naplo_base','values'=>array(_USERACCOUNT,_POLICY))); + $q = "INSERT INTO settings (userAccount,policy,intezmeny) VALUES ('%s','%s','%s')"; + return db_query($q, array('debug'=>false,'fv'=>'updateNaploSettings','modul'=>'naplo_base','values'=>array(_USERACCOUNT,_POLICY,$intezmeny))); + } +?> |