aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-orig/www/include/modules/naplo/osztalyozo
diff options
context:
space:
mode:
authorM.Gergo2018-07-06 11:14:41 +0200
committerM.Gergo2018-07-06 11:14:41 +0200
commit43de9af71f7f4ca5731b94a06d688ae8412ba427 (patch)
tree54835de1dfcda504c02da261f0dc26885aed2e89 /mayor-orig/www/include/modules/naplo/osztalyozo
parent50310b0e4513ee3fcce67351ae61e8fff851130e (diff)
downloadmayor-43de9af71f7f4ca5731b94a06d688ae8412ba427.tar.gz
mayor-43de9af71f7f4ca5731b94a06d688ae8412ba427.zip
2018/Feb/28 -i állapot hozzáadva, mint a módosítások kiindulási állapota
Diffstat (limited to 'mayor-orig/www/include/modules/naplo/osztalyozo')
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/bizonyitvany.php134
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/diak.php106
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/dolgozat.php123
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/stat.php249
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/szempontRendszer.php56
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/szovegesErtekeles.php67
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/tankor.php205
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/targySorrend.php55
-rw-r--r--mayor-orig/www/include/modules/naplo/osztalyozo/vizsga.php136
9 files changed, 1131 insertions, 0 deletions
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/bizonyitvany.php b/mayor-orig/www/include/modules/naplo/osztalyozo/bizonyitvany.php
new file mode 100644
index 00000000..1df529a4
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/bizonyitvany.php
@@ -0,0 +1,134 @@
+<?php
+
+ function getDiakBizonyitvany($diakId, $ADAT) {
+
+ $tanev = $ADAT['szemeszterAdat']['tanev'];
+ $szemeszter = $ADAT['szemeszterAdat']['szemeszter'];
+ $sorrendNev = $ADAT['sorrendNev'];
+ $osztalyId = $ADAT['osztalyId'];
+ if ($tanev == '') {
+ // Összes zárójegy lekérdezése
+ $q = "SELECT * FROM zaroJegy
+ LEFT JOIN targy USING (targyId)
+ LEFT JOIN szemeszter ON kezdesDt=(SELECT MAX(kezdesDt) FROM szemeszter WHERE kezdesDt<=hivatalosDt)
+ WHERE diakId=%u ORDER BY tanev,szemeszter,targyNev";
+ $r = db_query($q, array('fv' => 'getDiakBizonyitvany', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => array($diakId)));
+ $ret = array('tanevek' => array(), 'szemeszterek' => array(), 'tanevSzemeszterei' => array(), 'jegyek' => array());
+ if (is_array($ret)) foreach ($r as $i => $jegy) {
+ $ret['jegyek'][$jegy['targyId']][$jegy['tanev']][$jegy['szemeszter']][] = $jegy;
+ $ret['jegyekEvfolyamonkent'][$jegy['evfolyam']][$jegy['szemeszter']][] = $jegy;
+ if (!in_array($jegy['tanev'], $ret['tanevek'])) {
+ $ret['tanevek'][] = $jegy['tanev'];
+ $ret['tanevSzemeszterei'][$jegy['tanev']] = array();
+ }
+ if (!in_array($jegy['szemeszter'], $ret['tanevSzemeszterei'][$jegy['tanev']])) {
+ $ret['szemeszterek'][] = array('tanev' => $jegy['tanev'], 'szemeszter' => $jegy['szemeszter']);
+ $ret['tanevSzemeszterei'][$jegy['tanev']][] = $jegy['szemeszter'];
+ }
+ }
+ } else {
+ // Adott szemeszter tárgyainak
+ $ret['targyak'] = getTargyakByDiakIds(array($diakId), $ADAT['szemeszterAdat'], $osztalyId, $sorrendNev, array('result' => 'assoc', 'keyfield' => 'targyId'));
+ // Adott szemeszter zárójegyeinek lekérdezése
+ if (isset($sorrendNev) && $sorrendNev != '') {
+ $q = "SELECT *,zaroJegy.targyId FROM zaroJegy
+ LEFT JOIN targy USING (targyId)
+ LEFT JOIN ".__TANEVDBNEV.".targySorszam
+ ON zaroJegy.targyId = targySorszam.targyId AND osztalyId=%u AND sorrendNev='%s'
+ LEFT JOIN szemeszter ON kezdesDt=(SELECT MAX(kezdesDt) FROM szemeszter WHERE kezdesDt<=hivatalosDt)
+ WHERE diakId=%u AND tanev=%u AND szemeszter=%u ORDER BY sorszam,targyNev";
+ $v = array($osztalyId, $sorrendNev, $diakId, $tanev, $szemeszter);
+ } else {
+ $q = "SELECT *,zaroJegy.targyId FROM zaroJegy LEFT JOIN targy USING (targyId)
+ WHERE diakId=%u AND tanev=%u AND szemeszter=%u ORDER BY targyNev";
+ $v = array($diakId, $tanev, $szemeszter);
+ }
+ $r = db_query($q, array(
+ 'fv' => 'getDiakBizonyitvany', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v
+ ));
+
+ if (is_array($r)) foreach ($r as $i => $jegy) {
+ $ret['jegyek'][$jegy['targyId']][] = $jegy;
+// $ret['jegyekEvfolyamonkent'][$jegy['evfolyam']][$jegy['szemeszter']][] = $jegy;
+ }
+
+ $utolsoTanitasiNap = getOsztalyUtolsoTanitasiNap($osztalyId);
+ // éves óraszámok lekérdezése - tárgyanként
+ $q = "SELECT targyId,oraszam FROM tankorDiak LEFT JOIN tankorSzemeszter USING (tankorId) LEFT JOIN tankor USING (tankorId)
+ WHERE diakId=%u AND tanev=%u AND beDt<='%s' AND (kiDt IS NULL OR '%s'<=kiDt)";
+ //$v = array($diakId, $tanev, $ADAT['szemeszterAdat']['zarasDt'], $ADAT['szemeszterAdat']['zarasDt']);
+ $v = array($diakId, $tanev, $utolsoTanitasiNap, $utolsoTanitasiNap);
+ $jres = db_query($q, array(
+ 'fv' => 'getDiakBizonyitvany/óraszám', 'modul' => 'naplo_intezmeny', 'result' => 'multiassoc', 'keyfield' => 'targyId', 'values' => $v
+ ));
+
+ $szDb = $ADAT['szemeszterAdat']['tanevAdat']['maxSzemeszter']; // Feltételezzük, hogy a szemeszterek számozása 1-től indul és folyamatos
+ foreach ($jres as $targyId => $tAdat) {
+ $oraszam = 0;
+ for ($i = 0; $i < count($tAdat); $i++) {
+ $oraszam += $tAdat[$i]['oraszam'];
+ }
+ $ret['targyOraszam'][$targyId]['hetiOraszam'] = $oraszam / $szDb;
+ /*
+ A TANITASI_HETEK_SZAMA a diák (egyik) osztályához rendelt munkaterv alapján van meghatározva - így
+ csak az aktuális tanévben (__TANEV) van értelme. Ha több osztálya is van a tanulónak, akkor problémás...
+ */
+ if (defined('TANITASI_HETEK_SZAMA')) $ret['targyOraszam'][$targyId]['evesOraszam'] = $oraszam / $szDb * TANITASI_HETEK_SZAMA;
+ }
+ }
+ return $ret;
+ }
+
+ function getHianyzasOsszesitesByDiakId($diakId, $szemeszterAdat = '') { // DEPRECATED. a függvény helyett a share/hianyzas.php getDiakHianyzasOsszesites() - t használd!
+
+ $ret = array();
+ if (is_array($szemeszterAdat)) {
+ // Egy szemeszter hiányzási adatainak lekérdezése
+ if ($szemeszterAdat['statusz'] == 'aktív') {
+ // Folyó tanév - a tanév adatbázisból kérdezünk le
+ $Wnemszamit = defWnemszamit();
+ $q = "SELECT tankorTipus.jelleg,
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolt',1,NULL)) AS igazolt,
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolatlan',1,NULL)) AS igazolatlan,
+ SUM(IF(tipus='késés' AND statusz='igazolatlan',perc,NULL)) AS kesesPercOsszeg
+ FROM `%s`.hianyzas " .
+ $Wnemszamit['join'] .
+ "WHERE (
+ tipus = 'hiányzás' OR (tipus='késés' AND statusz='igazolatlan' AND perc IS NOT NULL)
+ ) AND dt<='%s' AND diakId=%u".
+ $Wnemszamit['nemszamit']
+ ." GROUP BY tankorTipus.jelleg"
+ ;
+ $v = array(tanevDbNev(__INTEZMENY, $szemeszterAdat['tanev']), $szemeszterAdat['zarasDt'], $diakId);
+ $ret = db_query($q, array('fv' => 'getDiakHianyzasOsszesitesByDiakId', 'modul' => 'naplo_intezmeny', 'result' => 'assoc', 'keyfield'=>'jelleg', 'values' => $v));
+ if (is_array($ret))
+ foreach ($ret as $_key=>$_val) {
+ $ret['igazolt'] += intval($ret[$_key]['igazolt']);
+ $ret['igazolatlan'] += intval($ret[$_key]['igazolatlan']);
+ }
+
+ $hozottHianyzas = getDiakHozottHianyzas($diakId, array('tanev'=> $szemeszterAdat['tanev'], 'igDt'=>$szemeszterAdat['zarasDt'] ));
+ $ret['igazolt'] += intval($hozottHianyzas['igazolt']['db']);
+ $ret['igazolatlan'] += intval($hozottHianyzas['igazolatlan']['db']);
+
+ } else {
+ // lezárt tanév - az intézmény adatbázisból kérdezünk le
+// Tudtommal az összesítésbe már csak a "beszámítandó" hiányzások kerülnek, így nem kell plusz feltétel... [bb - 2010-11-24]
+// $q = "SELECT * FROM hianyzasOsszesites WHERE diakId=%u AND tanev=%u AND szemeszter=%u $Wnemszamit";
+ $q = "SELECT * FROM hianyzasOsszesites WHERE diakId=%u AND tanev=%u AND szemeszter=%u";
+ $v = array($diakId, $szemeszterAdat['tanev'], $szemeszterAdat['szemeszter']);
+ $ret = db_query($q, array('fv' => 'getDiakHianyzasOsszesitesByDiakId', 'modul' => 'naplo_intezmeny', 'result' => 'record', 'values' => $v));
+ }
+
+ } else {
+ // A diák összes hiányzási adata ??????????????
+ // ??????????????????????????? // ???????????????????????????
+ $q = "SELECT * FROM hianyzasOsszesites WHERE diakId=%u ORDER BY tanev,szemeszter";
+ $r = db_query($q, array('fv' => 'getDiakHianyzasOsszesitesByDiakId', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => array($diakId)));
+ for ($i = 0; $i < count($r); $i++) $ret[$r[$i]['tanev']][$r[$i]['szemeszter']] = $r[$i];
+ }
+ return $ret;
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/diak.php b/mayor-orig/www/include/modules/naplo/osztalyozo/diak.php
new file mode 100644
index 00000000..be285f8b
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/diak.php
@@ -0,0 +1,106 @@
+<?php
+/*
+ Module: naplo
+
+ getDiakJegyek($diakId, $SET, $olr)
+
+ +getTankorByDiakId
+ +getTankorDolgozatok
+*/
+
+ function getDiakJegyek($diakId, $SET = array('sulyozas'=>'1:1:1:1:1:1'), $olr = '') {
+
+ global $_TANEV, $KOVETELMENY;
+
+ if ($olr == '') $lr = db_connect('naplo');
+ else $lr = $olr;
+
+ if (isset($SET['sulyozas']) && $SET['sulyozas']!='') {
+ $suly = explode(':',':'.$SET['sulyozas']);
+ } else {
+ if (defined('__DEFAULT_SULYOZAS')) $suly = explode(':',':'.__DEFAULT_SULYOZAS);
+ else $suly = array(1,1,1,1,1,1);
+ }
+ $q = "SELECT DISTINCT jegyId, tankorId, tankorNev, dt, jegy, jegyTipus, tipus, oraId, dolgozatId, megjegyzes, IF (modositasDt='0000-00-00 00:00:00',dt,modositasDt) AS modositasDt
+ FROM jegy LEFT JOIN ".__INTEZMENYDBNEV.".tankorSzemeszter USING (tankorId)
+ WHERE tipus <> 0 AND tanev=".__TANEV." AND diakId=%u
+ ORDER BY dt, jegyId";
+ $v = array($diakId);
+ $jegyAdatok = db_query($q, array('fv' => 'getDiakJegyek', 'modul' => 'naplo', 'result' => 'assoc', 'keyfield' => 'jegyId', 'values' => $v), $lr);
+
+ $tankorIds = getTankorByDiakId($diakId, __TANEV, array('csakId' => true, 'tolDt' => '', 'igDt' => ''), $lr);
+
+ if (is_array($jegyAdatok))
+ foreach ($jegyAdatok as $jegyId => $jegyAdat) {
+ if (!in_array($jegyAdat['tankorId'], $tankorIds)) $tankorIds[] = $jegyAdat['tankorId'];
+ }
+ if (is_array($tankorIds) && count($tankorIds) > 0) {
+ $q = "SELECT tankorId, targyId, targyNev FROM ".__INTEZMENYDBNEV.".tankor
+ LEFT JOIN ".__INTEZMENYDBNEV.".targy USING (targyId)
+ WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).")
+ ORDER BY targyNev";
+ $tankorTargyak = db_query($q, array(
+ 'fv' => 'getDiakJegyek', 'modul' => 'naplo', 'result' => 'assoc', 'keyfield' => 'tankorId', 'values' => $tankorIds
+ ), $lr);
+ if (!is_array($tankorTargyak)) $tankorTargyak = array();
+ } else { $tankorTargyak = array(); }
+ $targyJegyei = array();
+ foreach ($tankorTargyak as $tankorId => $tAdat) {
+ $targyId = $tAdat['targyId']; $targyNev = $tAdat['targyNev'];
+ if (!is_array($targyJegyei[$targyId])) $targyJegyei[$targyId] = array('targyNev' => $targyNev);
+ }
+ foreach ($jegyAdatok as $jegyId => $jegyAdat) {
+ $tankorId = $jegyAdat['tankorId'];
+ $targyId = $tankorTargyak[$tankorId]['targyId'];
+ //$targyNev = $tankorTargyak[$tankorId]['targyNev'];
+ list($ev,$ho,$nap) = explode('-',$jegyAdat['dt']);
+ $targyJegyei[$targyId][$ev][$ho][] = $jegyId;
+ if (
+ in_array($jegyAdat['jegyTipus'],array('jegy','féljegy'))
+ || $KOVETELMENY[ $jegyAdat['jegyTipus'] ]['átlagolható'] === true
+ ) {
+ $targyJegyei[$targyId]['osszeg'] += $jegyAdat['jegy']*$suly[$jegyAdat['tipus']];
+ $targyJegyei[$targyId]['db'] += $suly[$jegyAdat['tipus']];
+ }
+ }
+ foreach ($targyJegyei as $targyId => $targyAdat)
+ if ($targyJegyei[$targyId]['db'] != 0)
+ $targyJegyei[$targyId]['atlag'] = number_format($targyJegyei[$targyId]['osszeg'] / $targyJegyei[$targyId]['db'],2,',','');
+
+ // Bizonyítvány
+ // kikerült innen...
+
+ // Dolgozatok lekérdezése
+ $dolgozatAdat = getTankorDolgozatok($tankorIds, ($csakTervezett = false));
+ // Nem megírt dolgozatok lekérdezése
+ if (is_array($dolgozatAdat['dolgozatIds']) && count($dolgozatAdat['dolgozatIds']) > 0) {
+ $q = "SELECT dolgozat.dolgozatId, bejelentesDt, dolgozatNev FROM dolgozat LEFT JOIN jegy ON dolgozat.dolgozatId=jegy.dolgozatId AND diakId=%u
+ WHERE dolgozat.dolgozatId IN (".implode(',', array_fill(0, count($dolgozatAdat['dolgozatIds']), '%u')).")
+ AND diakId IS NULL ORDER BY bejelentesDt";
+ $v = mayor_array_join(array($diakId), $dolgozatAdat['dolgozatIds']);
+ $nemMegirtDolgozat = db_query($q, array('fv' => 'getDiakJegyek/nem megírt dolgozat', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v));
+ } else {
+ $nemMegirtDolgozat = array();
+ }
+ $targyHianyzoDolgozatai = array();
+ for ($i = 0; $i < count($nemMegirtDolgozat); $i++) {
+ $dolgozatId = $nemMegirtDolgozat[$i]['dolgozatId'];
+ $tankorId = $dolgozatAdat[$dolgozatId]['tankor'][0]['tankorId'];
+ $targyId = $tankorTargyak[$tankorId]['targyId'];
+ //$targyNev = $tankorTargyak[$tankorId]['targyNev'];
+ list($ev,$ho,$nap) = explode('-',$nemMegirtDolgozat[$i]['bejelentesDt']);
+ $targyHianyzoDolgozatai[$targyId][$ev][$ho][] = $dolgozatId;
+ }
+ /* -------------- */
+
+ if ($olr == '') db_close($lr);
+ $ret = array(
+ 'jegyek' => $jegyAdatok, 'targyak' => $targyJegyei,
+ 'dolgozat' => $dolgozatAdat, 'hianyzoDolgozatok' => $targyHianyzoDolgozatai
+ );
+
+ return $ret;
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/dolgozat.php b/mayor-orig/www/include/modules/naplo/osztalyozo/dolgozat.php
new file mode 100644
index 00000000..f38bb1b1
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/dolgozat.php
@@ -0,0 +1,123 @@
+<?php
+/*
+ Module: naplo
+*/
+
+ function getDolgozat($dolgozatId, $olr='') {
+
+ global $_TANEV;
+
+ if ($olr == '') $lr = db_connect('naplo', array('fv' => 'getDolgozat'));
+ else $lr = $olr;
+
+ $v = array($dolgozatId);
+ // A dolgozat alapadatai
+ $q = "SELECT * FROM dolgozat WHERE dolgozatId=%u";
+ $Dolgozat = db_query($q, array('fv' => 'getDolgozat', 'modul' => 'naplo', 'values' => $v, 'result' => 'record'), $lr);
+ $Dolgozat['diakIds'] = array();
+
+ // A dolgozat jegyei
+ $q = "SELECT * FROM jegy WHERE dolgozatId=%u AND tipus != 0";
+ $ret = db_query($q, array('fv' => 'getDolgozat', 'modul' => 'naplo', 'keyfield' => 'tankorId', 'result' => 'multiassoc', 'values' => $v), $lr);
+ $Dolgozat['ertekelt'] = (is_array($ret) && count($ret) > 0);
+ if (is_array($ret)) foreach ($ret as $tankorId => $tankorJegyek) {
+ for ($j = 0; $j < count($tankorJegyek); $j++) {
+ $diakId = $tankorJegyek[$j]['diakId'];
+ $tankorDiakJegyek[$tankorId][$diakId][] = $tankorJegyek[$j];
+ }
+ }
+
+ // A dolgozat tankörei
+ $q = "SELECT DISTINCT tankorId, targyId, tankorNev
+ FROM tankorDolgozat LEFT JOIN ".__INTEZMENYDBNEV.".tankorSzemeszter USING (tankorId)
+ LEFT JOIN ".__INTEZMENYDBNEV.".tankor USING (tankorId)
+ WHERE tanev=".__TANEV." AND dolgozatId=%u";
+ $Dolgozat['tankor'] = db_query($q, array('fv' => 'getDolgozat', 'modul' => 'naplo', 'values' => $v, 'result' => 'indexed'), $lr);
+ $Dolgozat['tankorIds'] = array();
+ for ($d = 0; $d < count($Dolgozat['tankor']); $d++) $Dolgozat['tankorIds'][] = $Dolgozat['tankor'][$d]['tankorId'];
+ $Dolgozat['tanarIds'] = getTankorTanaraiByInterval($Dolgozat['tankorIds'], array('tanev' => __TANEV, 'result' => 'csakId'));
+ $Dolgozat['targyId'] = $Dolgozat['tankor'][0]['targyId'];
+ for ($i = 0; $i < count($Dolgozat['tankor']); $i++) {
+ $tankorId = $Dolgozat['tankor'][$i]['tankorId'];
+ $Dolgozat['tankor'][$i]['diakok'] = getTankorDiakjaiByInterval($tankorId, __TANEV);
+ foreach ($Dolgozat['tankor'][$i]['diakok']['idk'] as $index => $diakId)
+ if (!in_array($diakId, $Dolgozat['diakIds'])) $Dolgozat['diakIds'][] = $diakId;
+ $Dolgozat['tankor'][$i]['jegyek'] = $tankorDiakJegyek[$tankorId];
+ }
+ //$diakTankorIds = getTankorIdsByDiakIds($Dolgozat['diakIds'],array('kovetelmeny'=>array('jegy'))); // miért csak jegy???
+ $diakTankorIds = getTankorIdsByDiakIds($Dolgozat['diakIds']);
+ $Dolgozat['utkozoDolgozatok'] = getTankorDolgozatok($diakTankorIds, true, date('Y-m-d'), $_TANEV['zarasDt']);
+ if ($olr == '') db_close($lr);
+
+ return $Dolgozat;
+
+ }
+
+ function dolgozatTankorHozzarendeles($dolgozatId, $torlendoTankorIds, $ujTankorIds) {
+
+
+ $lr = db_connect('naplo');
+ if (count($torlendoTankorIds) > 0) {
+ // ellenőrizzük, hogy van-e jegy hozzá!
+ $q = "SELECT COUNT(jegyId) FROM jegy WHERE dolgozatId=%u
+ AND tankorId IN (".implode(',', array_fill(0, count($torlendoTankorIds), '%u')).")";
+ $v = $torlendoTankorIds; array_unshift($v, $dolgozatId);
+ $num = db_query($q, array('fv' => 'dolgozatTankorHozzarendeles', 'modul' => 'naplo', 'result' => 'value', 'values' => $v), $lr);
+ if ($num > 0) {
+ $_SESSION['alert'][] = 'message:wrong_data:dolgozatTankorHozzarendeles:Tankör hozzárendelés megszüntetése előtt a jegyeket törölni kell!:jegyek száma '.$num;
+ db_close($lr);
+ return false;
+ }
+ $q = "DELETE FROM tankorDolgozat WHERE dolgozatId=%u
+ AND tankorId IN (".implode(',', array_fill(0, count($torlendoTankorIds), '%u')).")";
+ db_query($q, array('fv' => 'dolgozatTankorHozzarendeles', 'modul' => 'naplo', 'values' => $v), $lr);
+ }
+ if (($count = count($ujTankorIds)) > 0) {
+ foreach ($ujTankorIds as $key => $tankorId) $Val[] = "(%".($key+1)."\$u, %".($count+1)."\$u)";
+ array_push($ujTankorIds, $dolgozatId);
+ $q = "INSERT INTO tankorDolgozat (tankorId, dolgozatId) VALUES ".implode(',',$Val);
+ db_query($q, array('fv' => 'dolgozatTankorHozzarendeles', 'values' => $ujTankorIds, 'modul' => 'naplo'), $lr);
+ }
+ db_close($lr);
+ return true;
+
+ }
+
+ function dolgozatJegyekTorlese($dolgozatId, $tankorId) {
+
+ // Törlendő jegyek lekérdezése - logolás céljából
+ $q = "SELECT diakId, jegy, dt FROM jegy WHERE dolgozatId=%u AND tankorId=%u";
+ $ret = db_query($q, array('fv' => 'dolgozatJegyekTorlese', 'modul' => 'naplo', 'result' => 'indexed', 'values' => array($dolgozatId, $tankorId)));
+ if (!$ret) return false;
+
+ for ($i = 0; $i < count($ret); $i++) {
+ if (__NAPLOADMIN || (strtotime(_OSZTALYOZO_HATARIDO) <= strtotime($ret[$i]['dt']))) {
+ logAction(
+ array(
+ 'szoveg'=>'Dolgozat jegy törlése: diakId: '.$ret[$i]['diakId'].', tankorId: '.$ret[$i]['tankorId'].', jegy: '.$ret[$i]['jegy'],
+ 'table'=>'jegy'
+ )
+ );
+ } else {
+ $_SESSION['alert'][] = 'message:deadline_expired:'.$ret[$i]['dt'];
+ }
+ }
+ $q = "DELETE FROM jegy WHERE dolgozatId=%u AND tankorId=%u";
+ return db_query($q, array('fv' => 'dolgozatJegyekTorlese', 'modul' => 'naplo', 'values' => array($dolgozatId, $tankorId)));
+ }
+
+ function dolgozatTorles($dolgozatId) {
+
+ $q = "DELETE FROM dolgozat WHERE dolgozatId=%u";
+ return db_query($q, array('fv' => 'dolgozatTorles', 'modul' => 'naplo', 'values' => array($dolgozatId)));
+
+ }
+
+ function dolgozatModositas($dolgozatId, $dolgozatNev, $tervezettDt) {
+
+ $q = "UPDATE dolgozat SET dolgozatNev='%s', tervezettDt='%s', modositasDt=now() WHERE dolgozatId=%u";
+ return db_query($q, array('fv' => 'dolgozatModositas', 'modul' => 'naplo', 'values' => array($dolgozatNev, $tervezettDt, $dolgozatId)));
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/stat.php b/mayor-orig/www/include/modules/naplo/osztalyozo/stat.php
new file mode 100644
index 00000000..c6be21fb
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/stat.php
@@ -0,0 +1,249 @@
+<?php
+/*
+ module: naplo
+
+ * getTargyakByDiakIds($diakIds, $szemeszterAdat, $osztalyId, $sorrendNev) --> SHARED! (bizonyítvány nyomtatás/értesítő)
+ * getDiakZarojegyAtlagok($diakIds, $tanev, $szemeszter)
+ * getTargyZarojegyAtlagok($diakIds, $tanev, $szemeszter)
+ * getTanarokByDiakIds($diakIds, $szemeszterAdat) --> SHARED!
+ * getTargyakBySzemeszter($szemeszterAdat) --> SHARED!
+ * getTargyAtlagokBySzemeszter($szemeszterAdat)
+ * getOsztalyHianyzasOsszesites($szemeszterAdat)
+ * getZarojegyStatBySzemeszter($SZA)
+
+*/
+
+ function getDiakZarojegyAtlagok($diakIds, $tanev, $szemeszter) {
+
+ if (count($diakIds)<1) return false;
+ $mIdk = getMagatartas();
+ $szIdk = getSzorgalom();
+ $q = "SELECT diakId,FLOOR(100*AVG(jegy))/100 AS atlag FROM zaroJegy LEFT JOIN targy USING (targyId)
+ LEFT JOIN szemeszter ON kezdesDt<=hivatalosDt AND hivatalosDt<=zarasDt
+ WHERE diakId IN (".implode(',', array_fill(0, count($diakIds), '%u')).") AND tanev=%u AND szemeszter=%u
+ AND jegy != 0 AND zaroJegy.jegyTipus ='jegy' AND targy.targyId NOT IN (".implode(',',array_merge($mIdk,$szIdk)).")
+ AND felev = %u
+ GROUP BY diakId WITH ROLLUP";
+ array_push($diakIds, $tanev, $szemeszter, $szemeszter);
+ $r = db_query($q, array('fv' => 'getDiakZarojegyAtlagok', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $diakIds));
+ $ret = array();
+ $sum = $db = 0;
+ for ($i = 0; $i < count($r); $i++) {
+ if ($r[$i]['diakId'] == '') {
+ $r[$i]['diakId'] = 'osztaly';
+ $ret['osztaly'] = floor(100*$r[$i]['atlag'])/100;
+ } else {
+ //$ret[ $r[$i]['diakId'] ] = floor(100*$r[$i]['atlag'])/100; - elvileg nem lenne baj, de php hiba: pl. 4.64, 4.14, 4.35 hibásan "kerekedik"...
+ $ret[ $r[$i]['diakId'] ] = $r[$i]['atlag']; // a lekérdezésben már csonkoltunk...
+ $sum += $ret[ $r[$i]['diakId'] ];
+ $db++;
+ }
+ }
+ $ret['osztaly'] = ($db==0) ? 0 : floor(100*$sum/$db)/100; // felülírjuk, mert a jegyek átlaga a tárgy átlagoknál már megvan
+ return $ret;
+ }
+
+ function getTargyZarojegyAtlagok($diakIds, $tanev, $szemeszter) {
+ /*
+ * Az adott szemeszterben szerzett zárójegyek átlaga, de csak szemeszter=felev megfeleltetéssel
+ */
+ if (count($diakIds)<1) return false;
+
+ $q = "SELECT targyId, floor(100*avg(jegy))/100 AS atlag FROM zaroJegy
+ LEFT JOIN szemeszter ON kezdesDt<=hivatalosDt AND hivatalosDt<=zarasDt AND felev=szemeszter
+ WHERE diakId IN (".implode(',', array_fill(0, count($diakIds), '%u')).") AND tanev=%u AND szemeszter=%u
+ AND jegy != 0 AND jegyTipus='jegy' GROUP BY targyId WITH ROLLUP";
+ array_push($diakIds, $tanev, $szemeszter);
+ $r = db_query($q, array('fv' => 'getTargyZarojegyAtlagok', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $diakIds));
+ $ret = array();
+ for ($i = 0; $i < count($r); $i++) {
+ if ($r[$i]['targyId'] == '') $r[$i]['targyId'] = 'osztaly';
+ //$ret[ $r[$i]['targyId'] ] = floor(100*$r[$i]['atlag'])/100; // sql-ben megbízhatóbb a csonkolás működése - sajnos...
+ $ret[ $r[$i]['targyId'] ] = $r[$i]['atlag'];
+ }
+ return $ret;
+ }
+
+ function getTanarokByDiakIds($diakIds, $szemeszterAdat) {
+ //??? 2009. shared lib ?
+
+ if (count($diakIds)<1) return false;
+
+ // A tárgyak lekérdezése a szemeszterben felvett tankörök alapján (miből lehet zárójegyet kapni)
+ $q = "SELECT DISTINCT targyId, TRIM(CONCAT_WS(' ',viseltNevElotag,viseltCsaladinev,viseltUtonev)) AS tanarNev
+ FROM tankor LEFT JOIN tankorDiak USING (tankorId) LEFT JOIN tankorTanar USING (tankorId) LEFT JOIN tanar USING (tanarId)
+ WHERE diakId IN (".implode(',', array_fill(0, count($diakIds), '%u')).")
+ AND (tankorDiak.kiDt IS NULL OR tankorDiak.kiDt>='%s') AND tankorDiak.beDt<='%s'
+ AND (tankorTanar.kiDt IS NULL OR tankorTanar.kiDt>='%s') AND tankorTanar.beDt<='%s'";
+ array_push($diakIds, $szemeszterAdat['kezdesDt'], $szemeszterAdat['zarasDt'], $szemeszterAdat['kezdesDt'], $szemeszterAdat['zarasDt']);
+ return db_query($q, array('debug'=>false,'fv' => 'getTanarokByDiakIds', 'modul' => 'naplo_intezmeny', 'result' => 'multiassoc', 'keyfield' => 'targyId', 'values' => $diakIds));
+
+ }
+
+ function getTargyakBySzemeszter($szemeszterAdat) {
+ //??? 2009. shared lib ?
+
+ // A tárgyak lekérdezése a beírt jegyek alapján (lehet hozott jegy)
+ $q = "SELECT DISTINCT targyId,targyNev
+ FROM targy LEFT JOIN zaroJegy USING (targyId)
+ LEFT JOIN szemeszter ON kezdesDt<=hivatalosDt AND hivatalosDt<=zarasDt
+ WHERE tanev=%u AND szemeszter=%u ORDER BY targyNev";
+ $v = array($szemeszterAdat['tanev'], $szemeszterAdat['szemeszter']);
+ return db_query($q, array('fv' => 'getTargyakBySzemeszter', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v));
+ }
+
+
+ function getTargyAtlagokBySzemeszter($szemeszterAdat) {
+ $q = "SELECT targyId,osztalyId,FLOOR(100*AVG(jegy))/100 AS atlag FROM zaroJegy LEFT JOIN osztalyDiak
+ ON (zaroJegy.diakId=osztalyDiak.diakId AND beDt<='%s' AND (kiDt IS NULL OR '%s'<=kiDt))
+ LEFT JOIN szemeszter ON kezdesDt<=hivatalosDt AND hivatalosDt<=zarasDt
+ AND felev=szemeszter
+ WHERE tanev=%u AND szemeszter=%u AND jegy != 0
+ AND jegyTipus in ('jegy','magatartas','szorgalom')
+ GROUP BY targyId,osztalyId WITH ROLLUP";
+ $v = array($szemeszterAdat['zarasDt'], $szemeszterAdat['zarasDt'], $szemeszterAdat['tanev'], $szemeszterAdat['szemeszter']);
+ $r = db_query($q, array('fv' => 'getTargyAtlagokBySzemeszter', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v));
+ $ret = array();
+ for ($i = 0; $i < count($r); $i++)
+ if ($r[$i]['targyId'] != '') {
+ if ($r[$i]['osztalyId'] == '') $r[$i]['osztalyId'] = 'iskola'; // tárgyanként az összes jegy átlagát írjuk ki
+ $ret[ $r[$i]['targyId'] ][ $r[$i]['osztalyId'] ] = $r[$i]['atlag'];
+ } else {
+ $ret['iskola'] = $r[$i]['atlag']; // nem használjuk - ez az összes jegyek átlaga
+ }
+ return $ret;
+
+ }
+
+ function getOsztalyHianyzasOsszesites($szemeszterAdat, $SET = array('telephelyId'=>null)) {
+ $ret = array();
+ if (is_array($szemeszterAdat)) {
+ // Egy szemeszter hiányzási adatainak lekérdezése
+ if ($szemeszterAdat['statusz'] == 'aktív') {
+ // Mindenféle típus kell?
+ $Wnemszamit = defWnemszamit();
+ // Folyó tanév - a tanév adatbázisból kérdezünk le
+/* $q = "SELECT osztalyId,
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolt',1,NULL)) AS igazolt,
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolatlan',1,NULL)) AS igazolatlan,
+ SUM(IF(tipus='késés' AND statusz='igazolatlan',perc,NULL)) AS kesesPercOsszeg
+ FROM `%s`.hianyzas
+ ".$Wnemszamit['join']."
+ LEFT JOIN osztalyDiak ON (hianyzas.diakId=osztalyDiak.diakId AND beDt<='%s'
+ AND (kiDt IS NULL OR '%s'<=kiDt))
+ WHERE (tipus = 'hiányzás' OR (tipus='késés' AND statusz='igazolatlan' AND perc IS NOT NULL))
+ AND dt<='%s'
+ ".$Wnemszamit['nemszamit']."
+ GROUP BY osztalyId WITH ROLLUP";
+*/
+ $tanevDbNev = tanevDbNev(__INTEZMENY, $szemeszterAdat['tanev']);
+
+ $q = "SELECT osztalyId, SUM(igazolt) AS igazolt, SUM(igazolatlan) AS igazolatlan, SUM(kesesPercOsszeg) AS kesesPercOsszeg,
+ SUM(igazolatlanKesesbol) AS igazolatlanKesesbol, SUM(osszesIgazolatlan) AS osszesIgazolatlan FROM
+ (SELECT osztalyId,hianyzas.diakId,
+ (COUNT(IF(tipus='hianyzas' AND statusz='igazolt',1,NULL)) + IFNULL((SELECT SUM(dbHianyzas) FROM `".$tanevDbNev."`.hianyzasHozott WHERE hianyzasHozott.diakId=hianyzas.diakId AND statusz='igazolt'),0)) AS igazolt,
+ (COUNT(IF(tipus='hianyzas' AND statusz='igazolatlan',1,NULL)) + IFNULL((SELECT SUM(dbHianyzas) FROM `".$tanevDbNev."`.hianyzasHozott WHERE hianyzasHozott.diakId=hianyzas.diakId AND statusz='igazolatlan'),0)) AS igazolatlan,
+ IFNULL(SUM(IF(tipus='késés' AND statusz='igazolatlan',perc,NULL)),0) AS kesesPercOsszeg,
+ SUM(IF(tipus='késés' AND statusz='igazolatlan',perc,NULL)) DIV 45 as igazolatlanKesesbol,
+ (
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolatlan',1,NULL))+IFNULL((SUM(IF(tipus='késés' AND statusz='igazolatlan',perc,NULL)) DIV 45),0)
+ + IFNULL((SELECT SUM(dbHianyzas) FROM `".$tanevDbNev."`.hianyzasHozott WHERE hianyzasHozott.diakId=hianyzas.diakId AND statusz='igazolatlan'),0)
+ )
+ AS osszesIgazolatlan
+ FROM `".$tanevDbNev."`.hianyzas
+ LEFT JOIN tankorTipus USING (tankorTipusId)
+ LEFT JOIN osztalyDiak ON (hianyzas.diakId=osztalyDiak.diakId AND beDt<='%s' AND (kiDt IS NULL OR '%s'<=kiDt))
+ WHERE (tipus = 'hiányzás' OR (tipus='késés' AND statusz='igazolatlan' AND perc IS NOT NULL)) AND dt<='%s' AND hianyzasBeleszamit='igen'
+ GROUP BY osztalyId,hianyzas.diakId
+ ) AS diakHianyzas GROUP BY osztalyId WITH ROLLUP";
+// $v = array(tanevDbNev(__INTEZMENY, $szemeszterAdat['tanev']), $szemeszterAdat['zarasDt'], $szemeszterAdat['kezdesDt'], $szemeszterAdat['zarasDt']);
+// Csak az záráskori tagokat vegyük figyelembe
+ $v = array($szemeszterAdat['zarasDt'], $szemeszterAdat['zarasDt'], $szemeszterAdat['zarasDt']);
+ } else {
+ // lezárt tanév - az intézmény adatbázisból kérdezünk le - nincs $Wnemszamit !!!
+ $q = "SELECT osztalyId, SUM(igazolt) AS igazolt, SUM(igazolatlan) AS igazolatlan, SUM(kesesPercOsszeg) AS kesesPercOsszeg,
+ SUM(kesesPercOsszeg DIV 45) AS igazolatlanKesebol, SUM(igazolatlan + (kesesPercOsszeg DIV 45)) AS osszesIgazolatlan
+ FROM hianyzasOsszesites
+ LEFT JOIN osztalyDiak ON (hianyzasOsszesites.diakId=osztalyDiak.diakId AND beDt<='%s'
+ AND (kiDt IS NULL OR '%s'<=kiDt))
+ WHERE tanev=%u AND szemeszter=%u
+ GROUP BY osztalyId WITH ROLLUP";
+// $v = array($szemeszterAdat['zarasDt'], $szemeszterAdat['kezdesDt'], $szemeszterAdat['tanev'], $szemeszterAdat['szemeszter']);
+// Csak az záráskori tagokat vegyük figyelembe
+ $v = array($szemeszterAdat['zarasDt'], $szemeszterAdat['zarasDt'], $szemeszterAdat['tanev'], $szemeszterAdat['szemeszter']);
+ }
+ $ret = db_query($q, array('fv' => 'getOsztalyHianyzasOsszesites', 'modul' => 'naplo_intezmeny', 'result' => 'assoc', 'keyfield' => 'osztalyId', 'values' => $v));
+ }
+ return $ret;
+ }
+
+ function getZarojegyStatBySzemeszter($SZA, $SET = array('telephelyId'=>null)) {
+
+ // Le kell kérdezni minden zárójegyet osztályonként
+ $tanev = $SZA['tanev'];
+ $telephelyId = readVariable($SET['telephelyId'],'id');
+
+ $OSZTALYOK = getOsztalyok($tanev,array('result'=>'indexed','telephelyId'=>$telephelyId));
+ for ($i=0; $i<count($OSZTALYOK); $i++) {
+ $osztalyIdk[] = $OSZTALYOK[$i]['osztalyId'];
+ }
+ $DIAKIDS = getDiakokByOsztalyId($osztalyIdk, array(
+ 'result' => 'multiassoc', 'tanev' => $tanev, 'tolDt' => $SZA['zarasDt'], 'igDt' => $SZA['zarasDt'],
+ 'statusz' => array('jogviszonyban van','magántanuló','jogviszonya felfüggesztve','jogviszonya lezárva'))
+ );
+ $ret['intezmeny'] = array('kituno' => 0, 'jeles' => 0, 'bukott' => 0, 'bukas' => 0, 'atlag' => 0, 'osztalyDb' => 0);
+ foreach($DIAKIDS as $osztalyId => $DIAKOK) {
+ $diakIds = array();
+ $dbDiaknakVanJegye = 0;
+ for ($i=0; $i<count($DIAKOK); $i++) $diakIds[] = $DIAKOK[$i]['diakId'];
+ $D = getDiakZarojegyek($diakIds, $SZA['tanev'], $SZA['szemeszter'], array('arraymap'=>array('diakId')));
+ $O = array('letszam' => count($diakIds), 'kituno' => 0, 'jeles' => 0, 'bukott' => 0, 'bukas' => 0, 'atlag' => 0);
+ foreach ($D as $diakId => $dJegyek) {
+ $lehetJeles = true; $bukas = 0; $sum = 0; $db = 0;
+ for ($i = 0; $i < count($dJegyek); $i++) {
+ if (in_array($dJegyek[$i]['jegyTipus'], array('jegy','magatartás','szorgalom'))) { // A statisztika csak a jegy típusra értelmes!
+ if ($dJegyek[$i]['jegyTipus'] == 'jegy') {
+ $sum += $dJegyek[$i]['jegy'];
+ $db++;
+ if ($dJegyek[$i]['jegy'] < _JELES_LEGGYENGEBB_JEGY) $lehetJeles = false;
+ }
+ if ($dJegyek[$i]['jegy'] == 1) {
+ $bukas++;
+ $ret['intezmeny']['targy'][ $dJegyek[$i]['targyId'] ]++;
+ }
+ }
+ }
+ if ($db != 0) { // volt legalább 1 jegy típusú jegye
+ $dbDiaknakVanJegye++;
+ $atlag = @floor(100 * $sum / $db) / 100;
+ $O['atlag'] += $atlag;
+ if ($atlag >= _KITUNO_ATLAG) $O['kituno']++;
+ elseif ($atlag >= _JELES_ATLAG && $lehetJeles) $O['jeles']++;
+ if ($bukas > 0) {
+ $O['bukas'] += $bukas;
+ $O['bukott']++;
+ }
+ }
+ }
+ //if (count($diakIds) > 0) $O['atlag'] = $O['atlag'] / count($diakIds);
+ if($dbDiaknakVanJegye>0) $O['atlag'] = floor(100 * $O['atlag'] / $dbDiaknakVanJegye) / 100;
+ $ret[$osztalyId] = $O;
+ $ret['intezmeny']['kituno'] += $O['kituno'];
+ $ret['intezmeny']['jeles'] += $O['jeles'];
+ $ret['intezmeny']['bukott'] += $O['bukott'];
+ $ret['intezmeny']['bukas'] += $O['bukas'];
+ $ret['intezmeny']['atlag'] += $O['atlag'];
+ if ($O['atlag'] > 0) $ret['intezmeny']['osztalyDb']++;
+ }
+ if ($ret['intezmeny']['osztalyDb'] > 0) $ret['intezmeny']['atlag'] = $ret['intezmeny']['atlag'] / $ret['intezmeny']['osztalyDb'];
+ return $ret;
+
+ }
+
+ function getDiakKonferenciaZaradekok($diakIds, $utolsoTanitasiNap) {
+
+ return getZaradekokByDiakIds($diakIds, array('tipus' => 'konferencia, konferencia bukás', 'tolDt' => $utolsoTanitasiNap, 'igDt' => $utolsoTanitasiNap));
+
+ }
+
+?> \ No newline at end of file
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/szempontRendszer.php b/mayor-orig/www/include/modules/naplo/osztalyozo/szempontRendszer.php
new file mode 100644
index 00000000..e2b750f9
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/szempontRendszer.php
@@ -0,0 +1,56 @@
+<?php
+
+ function ujSzempontRendszer($ADAT) {
+
+ $kepzesId = readVariable($ADAT['kepzesId'], 'numeric unsigned', 'NULL');
+ $targyId = readVariable($ADAT['targyId'], 'numeric unsigned', 'NULL');
+ // Az új szempontRendszer felvétele
+ $q = "INSERT INTO szempontRendszer (tanev,szemeszter,evfolyamJel,kepzesId,targyId,targyTipus) VALUES (%u, %u, '%s', ";
+ $v = array($ADAT['szemeszter']['tanev'], $ADAT['szemeszter']['szemeszter'], $ADAT['evfolyamJel']);
+ if ($kepzesId == 'NULL') $q .= "NULL, ";
+ else { $q .= "%u, "; $v[] = $kepzesId; }
+ if ($targyId == 'NULL') $q .= "NULL, ";
+ else { $q .= "%u, "; $v[] = $targyId; }
+ if ($ADAT['targyTipus'] == '') $q .= "NULL)";
+ else { $q .= "'%s')"; $v[] = $ADAT['targyTipus']; }
+
+ $szrId = db_query($q, array('fv' => 'ujSzempontRendszer', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v));
+ if (!$szrId) return false;
+
+ // A szempontok és minősítések rögzítése
+ $Szempont = $aktSz = array();
+ for ($i = 0; $i < count($ADAT['txt']); $i++) {
+ $txt = trim($ADAT['txt'][$i]);
+ if ($txt != '') {
+ if (!isset($aktSz['szempont'])) {
+ $aktSz['szempont'] = $txt;
+ $q = "INSERT INTO szrSzempont (szrId, szempont) VALUES (%u, '%s')";
+ $v = array($szrId, $txt);
+ $szempontId = db_query($q, array('fv' => 'ujSzempontRendszer/szempont', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v));
+ } else {
+ $aktSz['minosites'][] = $txt;
+ $q = "INSERT INTO szrMinosites (szempontId, minosites) VALUES (%u,'%s')";
+ $v = array($szempontId, $txt);
+ db_query($q, array('fv' => 'ujSzempontRendszer/minősítés', 'modul' => 'naplo_intezmeny', 'values' => $v));
+ }
+ } else {
+ if (isset($aktSz['szempont'])) {
+ $Szempont[] = $aktSz;
+ $aktSz = array();
+ }
+ }
+ }
+
+ return true;
+
+ }
+
+ function szempontRendszerTorles($ADAT) {
+
+ // cascade-olás miatt törli a hozzá tartozó értékeléseket is!
+ $q = "DELETE FROM szempontRendszer WHERE szrId=%u";
+ return db_query($q, array('fv' => 'szempontRendszerTorles', 'modul' => 'naplo_intezmeny', 'values' => array($ADAT['szrId'])));
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/szovegesErtekeles.php b/mayor-orig/www/include/modules/naplo/osztalyozo/szovegesErtekeles.php
new file mode 100644
index 00000000..803056a7
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/szovegesErtekeles.php
@@ -0,0 +1,67 @@
+<?php
+
+ function ujErtekeles($diakId, $szrId, $targyId, $dt, $minosites, $egyediMinosites) {
+
+ // A korábbi értékelés törlése
+ $q = "DELETE FROM szovegesErtekeles WHERE diakId=%u AND szrId=%u AND targyId=%u AND dt='%s'";
+ $v = array($diakId, $szrId, $targyId, $dt);
+ db_query($q, array('fv' => 'ujErtekeles', 'modul' => 'naplo', 'values' => $v));
+
+ // Szoveges értékelés felvétele
+ $q = "INSERT INTO szovegesErtekeles (diakId, szrId, targyId, dt) VALUES (%u, %u, %u, '%s')";
+ $v = array($diakId, $szrId, $targyId, $dt);
+ $szeId = db_query($q, array('fv' => 'ujErtekeles', 'modul' => 'naplo', 'result' => 'insert', 'values' => $v));
+ if (!$szeId) return false;
+
+ // Minősítések felvétele
+ if (count($minosites) > 0) {
+ $q = "INSERT INTO szeMinosites (szeId,minositesId) VALUES ($szeId,".implode("),($szeId,", array_fill(0, count($minosites), '%u')).")";
+ db_query($q, array('fv' => 'ujErtekeles', 'modul' => 'naplo', 'values' => $minosites));
+ }
+ // Egyedi minősítések felvétele
+ if (count($egyediMinosites) > 0) {
+ $v = $V = array();
+ foreach ($egyediMinosites as $szempontId => $egyediMinosites) {
+ $V[] = "(%u, %u, '%s')";
+ array_push($v, $szeId, $szempontId, $egyediMinosites);
+ }
+ $q = "INSERT INTO szeEgyediMinosites (szeId,szempontId,egyediMinosites) VALUES ".implode(',', $V);
+ db_query($q, array('fv' => 'ujErtekeles', 'modul' => 'naplo', 'values' => $v));
+ }
+
+ return true;
+ }
+
+ function ujZaroErtekeles($diakId, $szrId, $targyId, $tanev, $szemeszter, $minosites, $egyediMinosites) {
+
+ // A korábbi értékelés törlése
+ $q = "DELETE FROM szovegesErtekeles WHERE diakId=%u AND szrId=%u AND targyId=%u AND tanev=%u AND szemeszter=%u";
+ $v = array($diakId, $szrId, $targyId, $tanev, $szemeszter);
+ db_query($q, array('fv' => 'ujZaroErtekeles', 'modul' => 'naplo_intezmeny', 'values' => $v));
+
+ // Szoveges értékelés felvétele
+ $q = "INSERT INTO szovegesErtekeles (diakId, szrId, targyId, dt, tanev, szemeszter) VALUES (%u, %u, %u, CURDATE(), %u, %u)";
+ $v = array($diakId, $szrId, $targyId, $tanev, $szemeszter);
+ $szeId = db_query($q, array('fv' => 'ujZaroErtekeles', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v));
+ if (!$szeId) return false;
+
+ // Minősítések felvétele
+ if (count($minosites) > 0) {
+ $q = "INSERT INTO szeMinosites (szeId,minositesId) VALUES ($szeId,".implode("),($szeId,", array_fill(0, count($minosites), '%u')).")";
+ db_query($q, array('fv' => 'ujZaroErtekeles', 'modul' => 'naplo_intezmeny', 'values' => $minosites));
+ }
+ // Egyedi minősítések felvétele
+ if (count($egyediMinosites) > 0) {
+ $v = $V = array();
+ foreach ($egyediMinosites as $szempontId => $egyediMinosites) {
+ $V[] = "(%u, %u, '%s')";
+ array_push($v, $szeId, $szempontId, $egyediMinosites);
+ }
+ $q = "INSERT INTO szeEgyediMinosites (szeId,szempontId,egyediMinosites) VALUES ".implode(',', $V);
+ db_query($q, array('fv' => 'ujZaroErtekeles', 'modul' => 'naplo_intezmeny', 'values' => $v));
+ }
+
+ return true;
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/tankor.php b/mayor-orig/www/include/modules/naplo/osztalyozo/tankor.php
new file mode 100644
index 00000000..8cc06915
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/tankor.php
@@ -0,0 +1,205 @@
+<?php
+/*
+ module: naplo
+ version: 3.0
+
+ function getJegyek($tankorId, $sulyozas='', $NEVSOR)
+
+ function jegyBeiras($tankorId, $tipus, $oraId, $dolgozatId, $tanarId, $Beirando, $actionId) {
+ + checkTankorDolgozata()
+ + ujDolgozat()
+
+ csinálmány: jó lenne, ha nem $Jegyek-nek hívnánk mindent ebben, esetleg elemjeire bonthatnánk a tömböt.
+*/
+
+ function getJegyek($tankorId, $tolDt, $igDt, $sulyozas = '', $Diakok = array()) {
+
+ global $_TANEV, $KOVETELMENY;
+
+ // Diákok lekérdezése
+ if (!is_array($Diakok['idk']) || count($Diakok['idk']) == 0) $Diakok = getTankorDiakjaiByInterval($tankorId, __TANEV, $tolDt, $igDt);
+ // kezdőértékek
+ $Jegyek = array('dolgozatok' => array('lista' => array()), 'tankörök' => array(), 'tanárok' => array('tanarIds' => array()));
+ // A tankör adatainak lekérdezése
+ list($tankorAdat) = getTankorById($tankorId, __TANEV);
+ // Ha nincsenek diákok
+ if (!is_array($Diakok['idk']) || count($Diakok['idk']) == 0) {
+ $Tanarok = $Jegyek['tankörök'][$tankorId]['tanárok'] = getTankorTanaraiByInterval($tankorId, array('tanev' => __TANEV, 'tolDt' => $tolDt, 'igDt' => $igDt, 'result' => 'nevsor'));
+ for ($t = 0; $t < count($Tanarok); $t++) {
+ if (!in_array($Tanarok[$t]['tanarId'], $Jegyek['tanárok']['tanarIds'])) {
+ $Jegyek['tanárok'][$Tanarok[$t]['tankorId']] = $Tanarok[$t];
+ $Jegyek['tanárok']['tanarIds'][] = $Tanarok[$t]['tanarId'];
+ $Jegyek['tanárok']['tanarNevek'][] = $Tanarok[$t]['tanarNev'];
+ }
+ }
+ $Jegyek['tankörök'][$tankorId] = $tankorAdat;
+ return $Jegyek;
+ }
+
+
+ if ($sulyozas == '') $suly = array(0,1,1,1,1,1,1);
+ else $suly = explode(':', '0:'.$sulyozas);
+
+
+ // A diákok tárgyhoz tartozó tankörei
+ $q = "SELECT DISTINCT tankorDiak.tankorId, tankorNev, tankor.targyId, felveheto
+ FROM ".__INTEZMENYDBNEV.".tankorDiak LEFT JOIN ".__INTEZMENYDBNEV.".tankor USING (tankorId)
+ LEFT JOIN ".__INTEZMENYDBNEV.".tankorSzemeszter USING (tankorId)
+ WHERE tankor.targyId=%u AND tanev=".__TANEV."
+ AND diakId IN ('".implode("','", array_fill(0, count($Diakok['idk']), '%u'))."')
+ AND beDt<='%s' AND (kiDt IS NULL OR kiDt>='%s')";
+ $v = mayor_array_join(array($tankorAdat['targyId']), $Diakok['idk'], array($igDt, $tolDt));
+ $Jegyek['tankörök'] = db_query($q, array('fv' => 'getJegyek (Tankör)', 'modul' => 'naplo_intezmeny', 'result' => 'assoc', 'keyfield' => 'tankorId', 'values' => $v));
+ $Jegyek['tanárok']['tanarIds'] = $Jegyek['tanárok']['tanarNevek'] = array();
+ if (is_array($Jegyek['tankörök']))
+ foreach ($Jegyek['tankörök'] as $_tankorId => $a) {
+ $Jegyek['tankörök']['tankorId'][] = $_tankorId;
+ $Tanarok = $Jegyek['tankörök'][$_tankorId]['tanárok'] = getTankorTanaraiByInterval($_tankorId, array('tanev' => __TANEV, 'tolDt' => $tolDt, 'igDt' => $igDt, 'result' => 'nevsor'));
+ for ($t = 0; $t < count($Tanarok); $t++) {
+ if (!in_array($Tanarok[$t]['tanarId'], $Jegyek['tanárok']['tanarIds'])) {
+ $Jegyek['tanárok'][$Tanarok[$t]['tankorId']] = $Tanarok[$t];
+ $Jegyek['tanárok']['tanarIds'][] = $Tanarok[$t]['tanarId'];
+ $Jegyek['tanárok']['tanarNevek'][] = $Tanarok[$t]['tanarNev'];
+ }
+ }
+ }
+
+ // ---
+ if (count($Diakok['idk']) > 0 && count($Jegyek['tankörök']['tankorId']) > 0) { // Vannak diákok és a diákoknak adott tárgyhoz tankörei - olyankor lehet gond, ha a tankör csak egy korábbi időszakban volt, most már nem aktív
+ $q = "SELECT * FROM jegy
+ WHERE tankorId IN ('".implode("','", array_fill(0, count($Jegyek['tankörök']['tankorId']), '%u'))."')
+ AND tipus <> 0
+ AND diakId IN ('".implode("','", array_fill(0, count($Diakok['idk']), '%u'))."')
+ ORDER BY jegy.dt, jegy.jegyId";
+ $v = mayor_array_join($Jegyek['tankörök']['tankorId'], $Diakok['idk']);
+ $ret = db_query($q, array('fv' => 'getJegyek (Tankör)', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v));
+ reset($_TANEV['szemeszter']);
+ $szAdat = current($_TANEV['szemeszter']); $szemeszter = $szAdat['szemeszter'];
+ foreach ($ret as $i => $a) {
+ if (strtotime($a['dt']) > strtotime($szAdat['zarasDt'])) { $szAdat = next($_TANEV['szemeszter']); $szemeszter = $szAdat['szemeszter']; }
+ $tipus = $a['tipus'];
+ if ($tipus > 2) {
+ if (!in_array($a['dolgozatId'], $Jegyek['dolgozatok']['lista'])) {
+ list($ev,$ho,$napEsIdo) = explode('-', $a['dt']);
+ $Jegyek['dolgozatok']['lista'][] = $a['dolgozatId'];
+ $Jegyek['dolgozatok']['dátum szerint'][$ev][$ho][] = $a['dolgozatId'];
+ $Jegyek['dolgozatok']['dátum szerint'][$szemeszter][$ev][$ho][] = $a['dolgozatId'];
+ $Jegyek['dolgozatok'][$a['dolgozatId']] = array('év' => $ev, 'hó' => $ho, 'szemeszter' => $szemeszter);
+ $Jegyek['dolgozatok'][$a['dolgozatId']]['tankorIds'] = array($a['tankorId']);
+ $dSzemeszter = $szemeszter; // A dolozat első jegyének szemesztere
+ } else {
+ $ev = $Jegyek['dolgozatok'][$a['dolgozatId']]['év'];
+ $ho = $Jegyek['dolgozatok'][$a['dolgozatId']]['hó'];
+ $dSzemeszter = $Jegyek['dolgozatok'][$a['dolgozatId']]['szemeszter'];
+ if (!in_array($a['tankorId'], $Jegyek['dolgozatok'][$a['dolgozatId']]['tankorIds'])) $Jegyek['dolgozatok'][$a['dolgozatId']]['tankorIds'][] = $a['tankorId'];
+ }
+// $Jegyek[$a['diakId']][$ev][$ho]['dolgozat'][$a['dolgozatId']][] = $a;
+ $Jegyek[$a['diakId']][$dSzemeszter][$ev][$ho]['dolgozat'][$a['dolgozatId']][] = $a;
+
+ $Jegyek['dolgozatok'][$a['dolgozatId']]['jegyTipus'] = $a['jegyTipus'];
+ $Jegyek['dolgozatok'][$a['dolgozatId']]['átlag'] = $Jegyek['dolgozatok'][$a['dolgozatId']]['átlag'] * $Jegyek['dolgozatok'][$a['dolgozatId']]['sulyösszeg'] + $a['jegy']*$suly[$tipus];
+ $Jegyek['dolgozatok'][$a['dolgozatId']]['db']++;
+ $Jegyek['dolgozatok'][$a['dolgozatId']]['sulyösszeg'] += $suly[$tipus];
+ if ($Jegyek['dolgozatok'][$a['dolgozatId']]['sulyösszeg'] != 0)
+ $Jegyek['dolgozatok'][$a['dolgozatId']]['átlag'] = $Jegyek['dolgozatok'][$a['dolgozatId']]['átlag'] / $Jegyek['dolgozatok'][$a['dolgozatId']]['sulyösszeg'];
+ else
+ $Jegyek['dolgozatok'][$a['dolgozatId']]['átlag'] = 0;
+ } else {
+ list($ev,$ho,$nap) = explode('-',$a['dt']);
+ $Jegyek[$a['diakId']][$ev][$ho]['jegyek'][] = $a;
+ $Jegyek[$a['diakId']][$szemeszter][$ev][$ho]['jegyek'][] = $a;
+ }
+ if (
+ in_array($a['jegyTipus'],array('jegy','féljegy'))
+ || $KOVETELMENY[ $a['jegyTipus'] ]['átlagolható'] === true
+ ) {
+ $Jegyek[$a['diakId']]['átlag'] = $Jegyek[$a['diakId']]['átlag'] * $Jegyek[$a['diakId']]['sulyösszeg'] + $a['jegy']*$suly[$tipus];
+ $Jegyek[$a['diakId']]['db']++;
+ $Jegyek[$a['diakId']]['sulyösszeg'] += $suly[$tipus];
+
+ if ($Jegyek[$a['diakId']]['sulyösszeg'] != 0)
+ $Jegyek[$a['diakId']]['átlag'] = $Jegyek[$a['diakId']]['átlag'] / $Jegyek[$a['diakId']]['sulyösszeg'];
+ else
+ $Jegyek[$a['diakId']]['átlag'] = 0;
+ }
+ }
+ // Osztályátlag
+ $sum = $db = 0;
+ foreach ($Jegyek as $diakId => $dAdat)
+ if (isset($dAdat['átlag'])) { $sum += $dAdat['átlag']; $db++; }
+ if ($db > 0) $Jegyek['átlag'] = $sum / $db;
+ } // vannak diákok
+
+ // ------------------------------------
+ // A tárgycsoporthoz tartozó zárójegyek
+ // EZ NEM IDE TARTOZIK! --> share lib
+ return $Jegyek;
+
+ }
+
+ /*
+ Ez kerüljön át a share/jegyModifier-be
+ */
+ function jegyBeiras($tankorId, $tipus, $oraId, $dolgozatId, $tanarId, $megjegyzes, $Beirando, $actionId, $lr) {
+
+
+ // ha kell, van megadva dolgozat, ami tényleg a tankörhöz tartozik, vagy 'uj'...
+ if ($tipus < 3 || checkTankorDolgozata($tankorId, $dolgozatId)) {
+ // Új dolgozat felvétele - ha kell
+ if (($tipus > 2) and ($dolgozatId == 'uj')) $dolgozatId = ujDolgozat($tanarId, $tankorId);
+ // Jegyek beírása
+ $v = $Values = array();
+ for ($i = 0; $i < count($Beirando); $i++) {
+ /* oraId, dolgozatId 'NULL' stringet is kaphat a hívó függvénytől */
+ if ($oraId == 'NULL') {
+ if ($dolgozatId == 'NULL') $Values[] = "(%u, '%s', %f, %u, %u, NOW(), %s, %s, '%s',NOW())";
+ else $Values[] = "(%u, '%s', %f, %u, %u, NOW(), %s, %u, '%s',NOW())";
+ } else {
+ if ($dolgozatId == 'NULL') $Values[] = "(%u, '%s', %f, %u, %u, NOW(), %u, %s, '%s',NOW())";
+ else $Values[] = "(%u, '%s', %f, %u, %u, NOW(), %u, %u, '%s',NOW())";
+ }
+ array_push($v, $Beirando[$i]['diakId'], $Beirando[$i]['jegyTipus'], $Beirando[$i]['jegy'], $tipus, $tankorId, $oraId, $dolgozatId, $megjegyzes);
+ }
+ $q = "INSERT INTO jegy (diakId, jegyTipus, jegy, tipus, tankorId, dt, oraId, dolgozatId, megjegyzes, modositasDt)
+ VALUES ".implode(',',$Values);
+ $r = db_query($q, array('fv' => 'jegyBeiras', 'modul' => 'naplo', 'values' => $v), $lr);
+ if (!$r) return false;
+ logAction(
+ array(
+ 'actionId'=>$actionId,
+ 'szoveg'=>"Jegybeírás: $tankorId, $tipus, $oraId, $dolgozatId",
+ 'table'=>'jegy'
+ )
+ );
+ } else {
+ // dolgozat jegy lenne, de nincs dolgozat megadva, legalábbis nem a tankörhöz tartozó...
+ $_SESSION['alert'][] = 'message:wrong_data:jegyBeiras:tipus '.$tipus.':dolgozatId '.$did;
+ return false;
+ }
+
+ return true;
+
+ }
+
+
+
+
+ // -- 2009
+ /* $jegyek[index] = assoc array, melyben a módosuló jegy adatai szerepelnek
+ tankorId, targyId, actionId csak a loghoz kell!!! --> (???)
+ */
+ function jegyLezaras($jegyek, $tankorId, $targyId, $actionId) {
+
+ zaroJegyBeiras($jegyek);
+ logAction(
+ array(
+ 'actionId'=>$actionId,
+ 'szoveg'=>"Bizonyítvány: $tankorId, $targyId",
+ 'table'=>'bizonyitvany'
+ )
+ );
+ return true;
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/targySorrend.php b/mayor-orig/www/include/modules/naplo/osztalyozo/targySorrend.php
new file mode 100644
index 00000000..c634641a
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/targySorrend.php
@@ -0,0 +1,55 @@
+<?php
+ function targySorrendValtas($osztalyId, $sorrendNev, $targyId, $irany = 'fel') {
+
+ // A tárgy aktuális sorszámát lekérdezzük...
+ $q = "SELECT sorszam FROM targySorszam WHERE osztalyId=%u AND targyId=%u AND sorrendNev='%s'";
+ $v = array($osztalyId, $targyId, $sorrendNev);
+ $s = db_query($q, array('fv' => 'targySorrendValtas', 'modul' => 'naplo', 'result' => 'value', 'values' => $v));
+
+ $q = "UPDATE targySorszam SET sorszam=%u-sorszam WHERE osztalyId=%u AND sorrendNev='%s' AND sorszam IN (%u, %u)";
+ if ($irany == 'fel' && $s > 0) $v = array((2*$s-1), $osztalyId, $sorrendNev, $s, ($s-1));
+ elseif ($irany == 'le') $v = array((2*$s+1), $osztalyId, $sorrendNev, $s, ($s+1));
+ else return false;
+
+ return db_query($q, array('fv' => 'targySorrendValtas', 'modul' => 'naplo', 'values' => $v));
+
+ }
+
+ function checkTargySor($osztalyId, $sorrendNev, $Targyak) {
+
+ $q = "SELECT COUNT(sorszam) AS db FROM targySorszam WHERE osztalyId=%u AND sorrendNev='%s'";
+ $v = array($osztalyId, $sorrendNev);
+ $db = db_query($q, array('fv' => 'checkTargySor', 'modul' => 'naplo', 'result' => 'value', 'values' => $v));
+ if ($db == 0 && count($Targyak) > 0) {
+ // feltöltjük
+ $v = $V = array();
+ for ($i = 0; $i < count($Targyak); $i++) {
+ $V[] = "(%u, %u, '%s', %u)";
+ array_push($v, $osztalyId, $Targyak[$i]['targyId'], $sorrendNev, $i);
+ }
+ $q = "INSERT INTO targySorszam (osztalyId, targyId, sorrendNev, sorszam) VALUES ".implode(',', $V);
+ db_query($q, array('fv' => 'checkTargySor', 'modul' => 'naplo', 'values' => $v));
+ }
+
+ }
+
+ function ujTargySorrend($osztalyId, $sorrendNev, $targyIds) {
+
+ $q = "DELETE FROM targySorszam WHERE osztalyId=%u AND sorrendNev='%s'";
+ db_query($q, array('fv' => 'usTargySorrend', 'modul' => 'naplo', 'values' => array($osztalyId, $sorrendNev)));
+
+ if (count($targyIds) > 0) {
+ $v = $V = array();
+ for ($i = 0; $i < count($targyIds); $i++) {
+ $V[] = "(%u, %u, '%s', %u)";
+ array_push($v, $osztalyId, $targyIds[$i], $sorrendNev, $i);
+ }
+ $q = "INSERT INTO targySorszam (osztalyId, targyId, sorrendNev, sorszam) VALUES ".implode(',', $V);
+ db_query($q, array('fv' => 'usTargySorrend', 'modul' => 'naplo', 'values' => $v));
+ }
+
+ return true;
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/osztalyozo/vizsga.php b/mayor-orig/www/include/modules/naplo/osztalyozo/vizsga.php
new file mode 100644
index 00000000..96dfa210
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/osztalyozo/vizsga.php
@@ -0,0 +1,136 @@
+<?php
+
+ function vizsgajelentkezes($ADAT) {
+
+ $q = "INSERT INTO vizsga (diakId, targyId, evfolyam, evfolyamJel, felev, tipus, jelentkezesDt) VALUES (%u, %u, %u, '%s', %u, '%s', '%s')";
+ $v = array($ADAT['diakId'], $ADAT['targyId'], $ADAT['evfolyam'], $ADAT['evfolyamJel'], $ADAT['felev'], $ADAT['tipus'], $ADAT['jelentkezesDt']);
+ return db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgajelentkezes', 'result' => 'insert', 'values' => $v));
+
+ }
+
+ function vizsgaIdopontRogzites($VD) {
+
+
+ foreach ($VD as $vizsgaId => $vizsgaDt) {
+ $vizsgaAdat = getVizsgaAdatById($vizsgaId);
+ if ($vizsgaAdat['vizsgaDt'] == '') {
+ $q = "UPDATE vizsga SET vizsgaDt='%s' WHERE vizsgaId=%u";
+ $v = array($vizsgaDt, $vizsgaId);
+ db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgaIdopontRogzites', 'values' => $v));
+ } else {
+ $_SESSION['alert'][] = 'message:wrong_data:már van vizsgaDt:vizsgaId='.$vizsgaId;
+ }
+ }
+
+ }
+
+ function vizsgaHalasztas($HD) {
+
+ global $ZaradekIndex;
+
+ foreach ($HD as $vizsgaId => $halasztasDt) {
+ $vizsgaAdat = getVizsgaAdatById($vizsgaId);
+ if ($vizsgaAdat['vizsgaDt'] != '' && strtotime($vizsgaAdat['vizsgaDt']) < strtotime($halasztasDt) && !isset($vizsgaAdat['zaradekId'])) {
+ // vizsgahalasztás záradékai
+ $zaradekIndex = $ZaradekIndex['vizsga halasztás'][ $vizsgaAdat['tipus'] ];
+ $Z = array(
+ 'zaradekIndex' => $zaradekIndex,
+ 'diakId' => $vizsgaAdat['diakId'],
+ 'dt' => date('Y-m-d'),
+ 'csere' => array('%igDt%' => $halasztasDt)
+ );
+ $zaradekId = zaradekRogzites($Z);
+ // eredeti vizsga záradékolása
+ $q = "UPDATE vizsga SET zaradekId=%u WHERE vizsgaId=%u";
+ $v = array($zaradekId, $vizsgaId);
+ db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgaHalasztas/záradékolás', 'values' => $v));
+ // új vizsga felvétele
+// $q = "INSERT INTO vizsga (diakId, targyId, evfolyam, felev, tipus, jelentkezesDt, vizsgaDt) VALUES (%u, %u, %u, %u, '%s', '%s', '%s')";
+// $v = array($vizsgaAdat['diakId'], $vizsgaAdat['targyId'], $vizsgaAdat['evfolyam'], $vizsgaAdat['felev'], $vizsgaAdat['tipus'], $vizsgaAdat['jelentkezesDt'], $halasztasDt);
+// A halasztáskor megadott dátum nem a vizsga dátuma, hanem egy határidő, amíg le kell tenni a vizsgát.
+ $q = "INSERT INTO vizsga (diakId, targyId, evfolyam, evfolyamJel, felev, tipus, jelentkezesDt) VALUES (%u, %u, %u, '%s', %u, '%s', '%s')";
+ $v = array($vizsgaAdat['diakId'], $vizsgaAdat['targyId'], $vizsgaAdat['evfolyam'], $ADAT['evfolyamJel'], $vizsgaAdat['felev'], $vizsgaAdat['tipus'], $vizsgaAdat['jelentkezesDt']);
+ db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgajelentkezes', 'result' => 'insert', 'values' => $v));
+
+ } else {
+ $_SESSION['alert'][] = 'message:wrong_data:még nincs vizsgaDt, vagy korábbi, mint a halasztás dátuma:vizsgaId='.$vizsgaId;
+ }
+ }
+
+ }
+
+ function vizsgaErtekeles($jegyek) {
+
+ global $KOVETELMENY, $ZaradekIndex;
+
+ if (is_array($jegyek)) foreach ($jegyek as $vizsgaId => $jegyAdat) {
+ $vizsgaAdat = getVizsgaAdatById($vizsgaId);
+// dump($vizsgaAdat);
+ // A beírandó jegy adatai szinkronban kell legyenek a vizsga adataival
+ $jegyAdat['felev'] = $vizsgaAdat['felev'];
+ $jegyAdat['diakId'] = $vizsgaAdat['diakId'];
+ $jegyAdat['targyId'] = $vizsgaAdat['targyId'];
+ $jegyAdat['evfolyamJel'] = $vizsgaAdat['evfolyamJel'];
+ $jegyAdat['evfolyam'] = $vizsgaAdat['evfolyam'];
+
+ $targyAdat = getTargyById($vizsgaAdat['targyId']);
+ $bukas = (in_array($jegyAdat['jegy'], $KOVETELMENY[ $jegyAdat['jegyTipus'] ]['sikertelen']));
+ if ($vizsgaAdat['vizsgaDt'] != '' && !isset($vizsgaAdat['zaroJegyId']) && !isset($vizsgaAdat['zaradekId'])) {
+ // vizsga értékelés záradékai
+ if ($bukas) {
+ if (
+ $jegyAdat['jegyTipus'] != 'jegy'
+ && $jegyAdat['jegyTipus'] != 'féljegy'
+ && $vizsgaAdat['tipus'] == 'javítóvizsga'
+ ) $zaradekIndex = $ZaradekIndex['vizsga'][$vizsgaAdat['tipus'].' nem teljesített'];
+ else $zaradekIndex = $ZaradekIndex['vizsga'][$vizsgaAdat['tipus'].' bukás'];
+ } else { $zaradekIndex = $ZaradekIndex['vizsga'][ $vizsgaAdat['tipus'] ]; }
+ $Z = array(
+ 'zaradekIndex' => $zaradekIndex,
+ 'diakId' => $vizsgaAdat['diakId'],
+ 'dt' => $vizsgaAdat['vizsgaDt'], // date('Y-m-d'),
+ 'csere' => array(
+ '%tantárgy%' => $targyAdat['targyNev'],
+ '%dátum%' => str_replace('-','.',$vizsgaAdat['vizsgaDt']),
+ '%osztályzat%' => $KOVETELMENY[ $jegyAdat['jegyTipus'] ][ $jegyAdat['jegy'] ]['rovid'].' ('.$KOVETELMENY[ $jegyAdat['jegyTipus'] ][ $jegyAdat['jegy'] ]['hivatalos'].')',
+ '%évfolyam%' => $vizsgaAdat['evfolyamJel'] . (($jegyAdat['felev'] == 2) ? '.':'. ('.$jegyAdat['felev'].'. félév)') // +1 - vajon miért volt?
+ )
+ );
+ // Ez hibás így!
+ // - lehet, hogy több tárgyból is bukott! Akkor egy sikeres javítóvizsga nem jelenti azt, hogy tovább léphet
+ if ($vizsgaAdat['tipus'] == 'javítóvizsga' && !$bukas) $Z['csere']['%évfolyam%'] = getKovetkezoEvfolyamJel($vizsgaAdat['evfolyamJel']).'.'; // következő évfolyamba léphet
+ $zaradekId = zaradekRogzites($Z);
+ // vizsga zárójegyének beírása
+ $jegyAdat['dt'] = $vizsgaAdat['vizsgaDt']; // -- ez elavult
+ $jegyAdat['hivatalosDt'] = $vizsgaAdat['vizsgaDt'];
+ if ($jegyAdat['evfolyamJel'] != '') $jegyAdat['evfolyam'] = evfolyamJel2evfolyam($jegyAdat['evfolyamJel']);
+ $zaroJegyId = zaroJegyBeiras(array($jegyAdat));
+ // eredeti vizsga záradékolása és zárójegyhez kötése
+ $q = "UPDATE vizsga SET zaradekId=%u, zaroJegyId=%u WHERE vizsgaId=%u";
+ $v = array($zaradekId, $zaroJegyId, $vizsgaId);
+ db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgaHalasztas/záradékolás', 'values' => $v));
+ }
+ }
+
+ }
+
+ function vizsgaTorlese($vizsgaId) {
+
+ $v = array($vizsgaId);
+
+ // Elároljuk a vizsgához tartozó zárójegyId-t
+ $q = "SELECT zaroJegyId FROM vizsga WHERE vizsgaId=%u";
+ $zaroJegyId = db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgaTorlese/zárójegy törlése', 'result' => 'value', 'values' => $v));
+ // Töröljük a vizsgához tartozó zárasékot - és ezzel a vizsgát is
+ $q = "DELETE FROM zaradek WHERE zaradekId=(SELECT zaradekId FROM vizsga WHERE vizsgaId=%u)";
+ db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgaTorlese/zárójegy törlése', 'values' => $v));
+ // Töröljük az eltárolt vizsgajegyet
+ $q = "DELETE FROM zaroJegy WHERE zaroJegyId=%u";
+ db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgaTorlese/zárójegy törlése', 'values' => array($zaroJegyId)));
+ // Ha netán még nem törlődött volna a függőségek miatt, akkor most töröljük a vizsgát
+ $q = "DELETE FROM vizsga WHERE vizsgaId=%u";
+ return db_query($q, array('modul' => 'naplo_intezmeny', 'fv' => 'vizsgaTorlese', 'values' => $v));
+
+ }
+
+?>