aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-orig/www/include/modules/naplo/admin
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/admin
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/admin')
-rw-r--r--mayor-orig/www/include/modules/naplo/admin/azonositok.php14
-rw-r--r--mayor-orig/www/include/modules/naplo/admin/checksql.php98
-rw-r--r--mayor-orig/www/include/modules/naplo/admin/intezmenyek.php117
-rw-r--r--mayor-orig/www/include/modules/naplo/admin/szemeszterek.php48
-rw-r--r--mayor-orig/www/include/modules/naplo/admin/szuloiAzonositok.php14
-rw-r--r--mayor-orig/www/include/modules/naplo/admin/tanevek.php390
-rw-r--r--mayor-orig/www/include/modules/naplo/admin/tankorok.php133
7 files changed, 814 insertions, 0 deletions
diff --git a/mayor-orig/www/include/modules/naplo/admin/azonositok.php b/mayor-orig/www/include/modules/naplo/admin/azonositok.php
new file mode 100644
index 00000000..9d85b3e5
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/admin/azonositok.php
@@ -0,0 +1,14 @@
+<?php
+
+ function getOsztalyNevsorEsOid($osztalyId) {
+
+ $q = "SELECT diakId, TRIM(CONCAT_WS(' ',viseltNevElotag, ViseltCsaladiNev, viseltUtoNev)) AS diakNev, viseltCsaladinev, viseltUtonev, oId
+ FROM diak LEFT JOIN osztalyDiak USING (diakId)
+ WHERE osztalyId=%u
+ AND beDt<=CURDATE() AND (kiDt >= CURDATE() OR kiDt IS NULL)
+ AND (statusz != 'jogviszonya lezárva' OR jogviszonyVege < CURDATE()) ORDER BY diakNev, oId";
+ return db_query($q, array('fv' => 'getOsztalyAzonositok', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => array($osztalyId)), $lr);
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/admin/checksql.php b/mayor-orig/www/include/modules/naplo/admin/checksql.php
new file mode 100644
index 00000000..cb751521
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/admin/checksql.php
@@ -0,0 +1,98 @@
+<?php
+
+
+
+ function checkSqlConsistency($queryFile,$db,&$Q_ERR)
+ {
+
+ $convert = array("%DB%" => intezmenyDbNev(__INTEZMENY));
+
+ $fp = fopen($queryFile, 'r');
+ $query = fread($fp, filesize($queryFile));
+ fclose($fp);
+
+ // A tárolt eljárásoknak, függvényeknek "DELIMITER //" és "DELIMITER ; //" között kell lenniük - egy blokkban a file végén!
+ list($query, $delimiter) = explode('DELIMITER //', $query);
+
+ // Tábladefiníciók - normál query-k
+ $QUERIES = explode(';', str_replace("\n", '', $query));
+ for ($i = 0; $i < count($QUERIES); $i++) {
+ $q = $QUERIES[$i];
+ if (trim($q) != '' and substr($q, 0, 2) != '--' and substr($q, 0, 3) != '/*!') {
+ if (is_array($convert)) foreach ( $convert as $mit=>$mire ) $q = str_replace($mit,$mire,$q);
+ }
+ if (substr($q,0,6) == 'CREATE') {
+ $_q = str_replace(' ','',$q);
+ $first = $second = 0;
+ for ($c = 0; $c<strlen($_q); $c++) {
+ if ($_q[$c]==='`') {
+ if ($first==0) $first = $c;
+ else {
+ $second = $c; break;
+ }
+ }
+ }
+ $table = substr($_q,$first+1,$second-$first-1);
+ $r = db_query("SHOW CREATE TABLE $table",array('modul'=>$db,'result'=>'record'));
+ $q1 = str_replace("\n",'',str_replace(' ','',$r['Create Table']));
+ $q2 = str_replace(' ','',$_q);
+ $q1_tmp = substr($q1,0,strrpos($q1,")"));
+ $q2_tmp = substr($q2,0,strrpos($q2,")"));
+ if ($q1_tmp!=$q2_tmp) {
+ $Q_ERR[]=array('inDb'=>$r['Create Table'],'inFile'=>$q);
+ }
+ }
+ }
+ }
+
+
+
+/*
+Paul's Simple Diff Algorithm v 0.1
+(C) Paul Butler 2007 <http://www.paulbutler.org/>
+May be used and distributed under the zlib/libpng license.
+This code is intended for learning purposes; it was written with short
+code taking priority over performance. It could be used in a practical
+application, but there are a few ways it could be optimized.
+Given two arrays, the function diff will return an array of the changes.
+I won't describe the format of the array, but it will be obvious
+if you use print_r() on the result of a diff on some test data.
+htmlDiff is a wrapper for the diff command, it takes two strings and
+returns the differences in HTML. The tags used are <ins> and <del>,
+which can easily be styled with CSS.
+*/
+
+function diff($old, $new){
+foreach($old as $oindex => $ovalue){
+$nkeys = array_keys($new, $ovalue);
+foreach($nkeys as $nindex){
+$matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
+$matrix[$oindex - 1][$nindex - 1] + 1 : 1;
+if($matrix[$oindex][$nindex] > $maxlen){
+$maxlen = $matrix[$oindex][$nindex];
+$omax = $oindex + 1 - $maxlen;
+$nmax = $nindex + 1 - $maxlen;
+}
+}
+}
+if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new));
+return array_merge(
+diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)),
+array_slice($new, $nmax, $maxlen),
+diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen)));
+}
+
+function htmlDiff($old, $new){
+$diff = diff(explode(' ', $old), explode(' ', $new));
+foreach($diff as $k){
+if(is_array($k))
+$ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
+(!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
+else $ret .= $k . ' ';
+}
+return $ret;
+}
+
+
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/admin/intezmenyek.php b/mayor-orig/www/include/modules/naplo/admin/intezmenyek.php
new file mode 100644
index 00000000..654a4c56
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/admin/intezmenyek.php
@@ -0,0 +1,117 @@
+<?php
+
+ function updateNaploSession($sessionID,$rovidnev) {
+ if (defined('__TANEV')) {
+ $q = "UPDATE session SET intezmeny='%s',tanev=%u WHERE sessionID='%s'";
+ $v = array($rovidnev,__TANEV,$sessionID);
+ } else {
+ $q = "UPDATE session SET intezmeny='%s' WHERE sessionID='%s'";
+ $v = array($rovidnev,$sessionID);
+ }
+ $r = db_query($q, array('fv' => 'updateNaploSession', 'modul' => 'naplo_base', 'values' => $v));
+ }
+
+ function intezmenyBejegyzese($OMKod, $nev, $rovidnev) {
+
+ $lr = db_connect('naplo_base', array('fv' => 'intezmenyBejegyzese'));
+
+ $q = "SELECT COUNT(*) FROM intezmeny WHERE alapertelmezett=1";
+ $num = db_query($q, array('fv' => 'intezmenyBejegyzese', 'modul' => 'naplo_base', 'result' => 'value'), $lr);
+
+ if ($num > 0) $alapertelmezett = 0;
+ else $alapertelmezett = 1;
+
+ $q = "INSERT INTO intezmeny (OMKod, nev, rovidnev, alapertelmezett)
+ VALUES ('%s', '%s', '%s', %u)";
+ $v = array($OMKod, $nev, $rovidnev, $alapertelmezett);
+ $r = db_query($q, array('fv' => 'intezmenyBejegyzese', 'modul' => 'naplo_base', 'values' => $v), $lr);
+
+ db_close($lr);
+ }
+
+ function intezmenyModositas($ADAT) {
+
+ $q = "UPDATE intezmeny SET nev='%s', OMKod='%s', alapertelmezett=%u, fenntarto='%s' WHERE rovidNev='".__INTEZMENY."' ";
+ $v = array($ADAT['nev'], $ADAT['OMKod'], $ADAT['alapertelmezett'], $ADAT['fenntarto']);
+ return db_query($q, array('fv' => 'intezmenyModositas', 'modul' => 'naplo_base', 'values' => $v));
+
+ }
+
+ function intezmenyTorles($intezmeny) {
+
+ $q = "DELETE FROM intezmeny WHERE rovidNev='%s'";
+ return db_query($q, array('fv' => 'intezmenyTorles', 'modul' => 'naplo_base', 'values' => array($intezmeny)));
+
+ }
+
+ function getIntezmeny($intezmeny) {
+
+ $q = "SELECT * FROM `intezmeny` WHERE `rovidNev`='%s'";
+ $ret = db_query($q, array('fv' => 'getIntezmeny', 'modul' => 'naplo_base', 'result' => 'record', 'values' => array($intezmeny)));
+
+ $q = "SELECT * FROM `%s`.`telephely`";
+ $ret['telephely'] = db_query($q, array('fv' => 'getIntezmeny', 'modul' => 'naplo_base', 'result' => 'indexed', 'values' => array(intezmenyDbNev($intezmeny))));
+
+ return $ret;
+
+ }
+
+ function telephelyModositas($ADAT) {
+
+ $v = array(
+ __INTEZMENYDBNEV,
+ // Telephely adatai
+ readVariable($ADAT['telephelyNev'], 'sql', null),
+ readVariable($ADAT['telephelyRovidNev'], 'sql', null),
+ readVariable($ADAT['alapertelmezett'], 'numeric unsigned', 0, array(0,1)),
+ readVariable($ADAT['cimHelyseg'], 'sql', null),
+ readVariable($ADAT['cimIrsz'], 'numeric', 'NULL'),
+ readVariable($ADAT['cimKozteruletNev'], 'sql', null),
+ readVariable($ADAT['cimKozteruletJelleg'], 'sql', null),
+ readVariable($ADAT['cimHazszam'], 'sql', null),
+ readVariable($_POST['telefon'], 'string'),
+ readVariable($_POST['fax'], 'string'),
+ readVariable($_POST['email'], 'string'),
+ readVariable($_POST['honlap'], 'string'),
+ readVariable($_POST['telephelyId'], 'id')
+ );
+
+ $q = "UPDATE `%s`.`telephely`
+ SET `telephelyNev`='%s', `telephelyRovidNev`='%s', `alapertelmezett`=%u,
+ `cimHelyseg`='%s', `cimIrsz`=%u, `cimKozteruletNev`='%s',`cimKozteruletJelleg`='%s', `cimHazszam`='%s',
+ `telefon`='%s',`fax`='%s',`email`='%s',`honlap`='%s'
+ WHERE `telephelyId`='%s' ";
+
+ return db_query($q, array('fv' => 'telephelyModositas', 'modul' => 'naplo_base', 'values' => $v));
+
+ }
+
+ function ujTelephely($ADAT) {
+
+ $v = array(
+ __INTEZMENYDBNEV,
+ // Telephely adatai
+ readVariable($ADAT['telephelyNev'], 'sql', null),
+ readVariable($ADAT['telephelyRovidNev'], 'sql', null),
+ readVariable($ADAT['alapertelmezett'], 'numeric unsigned', 0, array(0,1)),
+ readVariable($ADAT['cimHelyseg'], 'sql', null),
+ readVariable($ADAT['cimIrsz'], 'numeric', 'NULL'),
+ readVariable($ADAT['cimKozteruletNev'], 'sql', null),
+ readVariable($ADAT['cimKozteruletJelleg'], 'sql', null),
+ readVariable($ADAT['cimHazszam'], 'sql', null),
+ readVariable($_POST['telefon'], 'string'),
+ readVariable($_POST['fax'], 'string'),
+ readVariable($_POST['email'], 'string'),
+ readVariable($_POST['honlap'], 'string'),
+ );
+
+ $q = "INSERT INTO `%s`.`telephely`
+ (`telephelyNev`,`telephelyRovidNev`,`alapertelmezett`,`cimHelyseg`,`cimIrsz`,`cimKozteruletNev`,`cimKozteruletJelleg`,`cimHazszam`,
+ `telefon`,`fax`,`email`,`honlap`)
+ VALUES ('%s', '%s', %u,'%s', %u, '%s','%s', '%s','%s','%s','%s','%s')";
+
+ return db_query($q, array('fv' => 'ujTelephely', 'modul' => 'naplo_base', 'values' => $v));
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/admin/szemeszterek.php b/mayor-orig/www/include/modules/naplo/admin/szemeszterek.php
new file mode 100644
index 00000000..6e4c2149
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/admin/szemeszterek.php
@@ -0,0 +1,48 @@
+<?php
+
+ function idoszakTorles($idoszakId) {
+ $q = "DELETE FROM idoszak WHERE idoszakId=%u";
+ return db_query($q, array('fv' => 'idoszakTorles', 'modul' => 'naplo_intezmeny', 'values' => array($idoszakId)));
+ }
+
+ function idoszakModositas($idoszakId, $tolDt, $igDt) {
+ $q = "UPDATE idoszak SET tolDt='%s', igDt='%s' WHERE idoszakId=%u";
+ $v = array($tolDt, $igDt, $idoszakId);
+ return db_query($q, array('fv' => 'idoszakModositas', 'modul' => 'naplo_intezmeny', 'values' => $v));
+ }
+
+ function ujIdoszak($tolDt, $igDt, $tipus, $tanev = '', $szemeszter = '', $idoszakTipusok = '') {
+ // dátum ellenőrzés
+ if (strtotime($tolDt) > strtotime($igDt)) {
+ $_SESSION['alert'][] = 'message:wrong_data:dt:'.str_replace(':', '.', $tolDt.' - '.$igDt);
+ return false;
+ }
+ // típus ellenőrzés
+ if (!is_array($idoszakTipusok)) $idoszakTipusok = getIdoszakTipusok();
+ if (!in_array($tipus, $idoszakTipusok)) {
+ $_SESSION['alert'][] = 'message:wrong_data:idoszak.tipus:'.$tipus;
+ return false;
+ }
+ // tanev/szemeszter beállítás
+ if ($tanev == '' || $szemeszter == '') {
+ $q = "SELECT tanev, szemeszter FROM szemeszter WHERE kezdesDt <= '%s' AND '%s' <= zarasDt";
+ $v = array($igDt, $tolDt);
+ $ret = db_query($q, array('fv' => 'ujIdoszak', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v));
+ if (is_array($ret) && count($ret) == 1) {
+ $tanev = $ret[0]['tanev'];
+ $szemeszter = $ret[0]['szemeszter'];
+ } else {
+ return false;
+ }
+ }
+ // idoszak felvétele
+ $q = "INSERT INTO idoszak (tolDt, igDt, tipus, tanev, szemeszter) VALUES ('%s', '%s', '%s', %u, %u)";
+ $v = array($tolDt, $igDt, $tipus, $tanev, $szemeszter);
+ return db_query($q, array('fv' => 'ujIdoszak', 'modul' => 'naplo_intezmeny', 'values' => $v));
+ }
+
+ function getIdoszakTipusok() {
+ return getEnumField('naplo_intezmeny', 'idoszak', 'tipus');
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/admin/szuloiAzonositok.php b/mayor-orig/www/include/modules/naplo/admin/szuloiAzonositok.php
new file mode 100644
index 00000000..585292bf
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/admin/szuloiAzonositok.php
@@ -0,0 +1,14 @@
+<?php
+ require_once('include/modules/naplo/share/szulo.php');
+ function getOsztalyNevsorEsSzulo($osztalyId) {
+
+ $q = "SELECT diakId, TRIM(CONCAT_WS(' ',viseltNevElotag, ViseltCsaladiNev, viseltUtoNev)) AS diakNev, viseltCsaladinev, viseltUtonev, oId, anyaId, apaId
+ FROM diak LEFT JOIN osztalyDiak USING (diakId)
+ WHERE osztalyId=%u
+ AND beDt<=CURDATE() AND (kiDt >= CURDATE() OR kiDt IS NULL)
+ AND (statusz != 'jogviszonya lezárva' OR jogviszonyVege < CURDATE()) ORDER BY diakNev, oId";
+ return db_query($q, array('fv' => 'getOsztalyAzonositok', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => array($osztalyId)));
+
+ }
+
+?>
diff --git a/mayor-orig/www/include/modules/naplo/admin/tanevek.php b/mayor-orig/www/include/modules/naplo/admin/tanevek.php
new file mode 100644
index 00000000..cf2b32db
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/admin/tanevek.php
@@ -0,0 +1,390 @@
+<?php
+
+ function updateNaploSession($sessionID,$rovidnev='',$tanev=__TANEV) {
+ if ($tanev) {
+ $q = "UPDATE session SET intezmeny='%s',tanev=%u WHERE sessionID='%s'";
+ $v = array($rovidnev,$tanev,$sessionID);
+ } else {
+ $q = "UPDATE session SET intezmeny='%s' WHERE sessionID='%s'";
+ $v = array($rovidnev,$sessionID);
+ }
+ $r = db_query($q, array('fv' => 'updateNaploSession', 'modul' => 'naplo_base', 'values' => $v));
+ }
+
+ function szemeszterBejegyzes($szemeszterObj) {
+
+ global $mayorCache;
+ $mayorCache->delType('szemeszter');
+
+ $tanev = $szemeszterObj['tanev'];
+ $szemeszter = $szemeszterObj['szemeszter'];
+ $statusz = $szemeszterObj['statusz'];
+ $kDt = $szemeszterObj['kezdesDt'];
+ $zDt = $szemeszterObj['zarasDt'];
+
+ if ($tanev != '' && $szemeszter != '') {
+ $lr = db_connect('naplo_intezmeny', array('fv' => 'szemeszterBejegyzes'));
+
+ $q = "SELECT COUNT(*) FROM szemeszter WHERE szemeszter=%u AND tanev=%u";
+ $v = array($szemeszter, $tanev);
+ $num = db_query($q, array('fv' => 'szemeszterBejegyzes', 'modul' => 'naplo_intezmeny', 'result' => 'value', 'values' => $v), $lr);
+ if ($num == 0) {
+
+ $q = "INSERT INTO szemeszter (tanev,szemeszter, statusz, kezdesDt, zarasDt)
+ VALUES (%u, %u, '%s', '%s', '%s')";
+ $v = array($tanev, $szemeszter, $statusz, $kDt, $zDt);
+ $r = db_query($q, array('fv' => 'szemeszterBejegyzes', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr);
+
+ } else {
+ $_SESSION['alert'][] = 'message:letezo_szemeszter:'."$tanev:$szemeszter";
+ }
+ db_close($lr);
+ }
+ }
+
+ function szemeszterTorles($szemeszterId) {
+
+ global $mayorCache;
+ $mayorCache->delType('szemeszter');
+
+ $lr = db_connect('naplo_intezmeny', array('fv' => 'szemeszterTorles'));
+ if (!$lr) return false;
+
+ $q = 'DELETE FROM szemeszter WHERE szemeszterId IN ('.implode(',', array_fill(0, count($szemeszterId), '%u')).')';
+ $r = db_query($q, array('fv' => 'szemeszterTorles', 'modul' => 'naplo_intezmeny', 'values' => $szemeszterId), $lr);
+
+ db_close($lr);
+ return $r;
+
+ }
+
+
+ function activateTanev($tanev) {
+ setTanevStatus($tanev,'aktív');
+ }
+
+ function closeTanev($ADAT) {
+
+ global $ZaradekIndex;
+ global $mayorCache;
+ $mayorCache->delType('szemeszter');
+
+ $tanev = $ADAT['tanev'];
+
+ if (strtotime($ADAT['tanevAdat']['zarasDt']) >= time()) {
+ $_SESSION['alert'][] = "message:wrong_data:A tanév még nem ért véget!:$tanev tanév vége ".$ADAT['tanevAdat']['zarasDt'];
+ return false;
+ }
+ if (strtotime($ADAT['tanevAdat']['zarasDt']) >= strtotime($ADAT['dt'])) {
+ $_SESSION['alert'][] = "message:wrong_data:A tanév csak az utolsó tanítási nap utáni hatállyal zárható le!:$tanev tanév vége ".$ADAT['tanevAdat']['zarasDt'].': zárás dátuma '.$ADAT['dt'];
+ return false;
+ }
+ $Szemeszter = $ADAT['tanevAdat']['szemeszter'];
+ $vDiakok = getVegzoDiakok(array('tanev' => $tanev));
+ // A függvénynek nincs statusz paramétere // $vDiakok = getVegzoDiakok(array('tanev' => $tanev, 'statusz' => array('jogviszonyban van','magántanuló','jogviszonya felfüggesztve')));
+ //vegzoOsztalyok, vjlOsztalyok, vatOsztalyok
+
+ if (in_array('vegzosJogviszonyLezaras', $ADAT['step'])) {
+
+ // Azoknak a jogviszonyát kell csak lezárni, akik csak végzős osztálynak tagjai - és az osztályaik meg vannak jelölve (diak tábla)
+ $oDiakok = getDiakokByOsztalyId($ADAT['vjlOsztaly'], array('tanev' => $tanev, 'result' => '', 'statusz' => array('jogviszonyban van','magántanuló','jogviszonya felfüggesztve')));
+ $vjlDiakIds = array();
+ for ($i = 0; $i < count($oDiakok); $i++) {
+ $diakId = $oDiakok[$i]['diakId'];
+ if (!in_array($diakId, $vjlDiakIds)) { // Ha még nem választottuk ki (jöhet többször, mert lehet egy diák több osztályban)
+ if (in_array($diakId, $vDiakok)) {
+ $vjlDiakIds[] = $diakId;
+ // A jogviszony lezárás egyúttal:
+ // - tankörökből való kiléptetés
+ // - osztályokból való kiléptetés
+ $D = array(
+ 'diakId' => $diakId, 'jogviszonyValtasDt' => $ADAT['dt'], 'ujStatusz' => 'jogviszonya lezárva', 'tanev' => $tanev,
+ 'lezarasZaradekIndex' => $ZaradekIndex['jogviszony']['lezárás']['tanulmányait befejezte']
+ );
+ diakJogviszonyValtas($D);
+ } else {
+ $_SESSION['alert'][] = "info:wrong_data:Nem végzős:$diakId (jogviszonyát nem zárjuk le)";
+ }
+ }
+ }
+// if (count($vjlDiakIds) > 0) diakJogviszonyLezaras($vjlDiakIds, $ADAT['dt'], $olr = '');
+
+ }
+
+ if (in_array('vegzosOsztalyokLezarasa', $ADAT['step'])) {
+ // A megjelölt végzős osztályokból kiléptetjük a diákokat (osztaly-Diak tábla)
+ $osztalyIds = array();
+ for ($i = 0; $i < count($ADAT['vegzoOsztalyok']); $i++) $osztalyIds[] = $ADAT['vegzoOsztalyok'][$i]['osztalyId'];
+ osztalyLezaras($osztalyIds, $ADAT['dt']);
+ }
+ if (in_array('vegzosAzonositokTorlese', $ADAT['step'])) {
+
+ require_once('include/modules/session/search/searchAccount.php');
+ // Végzősök azonosítóinak törlése (mayor_private.accounts - lezárt jogviszonyúak)
+
+ $q = "SELECT oId FROM diak WHERE statusz='jogviszonya lezárva' AND oId IS NOT NULL";
+ $oIds = db_query($q, array('fv' => 'closeTanev/azonosítók lekérdezése', 'modul' => 'naplo_intezmeny', 'result' => 'idonly'));
+ foreach ($oIds as $index => $oId) {
+ $ret = searchAccount('studyId', $oId, array('userAccount'), 'private');
+ if ($ret['count'] == 1) deleteAccount($ret[0]['userAccount'][0], 'private');
+ else $_SESSION['alert'][] = "info:wrong_data:nincs diák account:oId=$oId";
+ }
+ }
+
+ if (in_array('vegzosSzuloAzonositokTorlese', $ADAT['step'])) {
+
+ require_once('include/modules/session/search/searchAccount.php');
+ // Végzősök szülői azonosítóinak törlése (mayor_parent.accounts - pontosabban: lezárt jogviszonyúak userAccount=NULL)
+ $q = "SELECT szulo.userAccount
+ FROM diak LEFT JOIN szulo ON szuloId IN (apaId,anyaId,gondviseloId)
+ WHERE szulo.userAccount IS NOT NULL GROUP BY szulo.userAccount
+ HAVING SUM(IF(diak.statusz IN ('jogviszonyban van','magántanuló','vendégtanuló','jogviszonya felfüggesztve'), 1, 0)) = 0
+ AND SUM(IF(diak.statusz IN ('jogviszonya lezárva','felvételt nyert'),1,0)) > 0";
+
+ $userAccounts = db_query($q, array('fv' => 'closeTanev/azonosítók lekérdezése', 'modul' => 'naplo_intezmeny', 'result' => 'idonly'));
+ foreach ($userAccounts as $index => $userAccount) {
+ $ret = searchAccount('userAccount', $userAccount, array('userAccount'), 'parent');
+ if ($ret['count'] == 1)
+ deleteAccount($ret[0]['userAccount'][0], 'parent');
+ else
+ $_SESSION['alert'][] = "message:wrong_data:nincs szülő account:userAccount=$userAccount";
+
+ $q = "UPDATE szulo SET userAccount=NULL WHERE userAccount IN ('".implode("','", array_fill(0, count($userAccounts), '%s'))."')";
+
+ db_query($q, array('fv' => 'closeTanev', 'modul' => 'naplo_intezmeny', 'values' => $userAccounts));
+ }
+
+ }
+
+ if (in_array('tanevLezaras', $ADAT['step'])) {
+
+ // A tanév lezárása
+ setTanevStatus($tanev,'lezárt');
+
+ $Wnemszamit = defWnemszamit();
+ // A tanévhez tartozó hiányzási adatok lekérdezése és rögzítése
+ $tanevDb = tanevDbNev(__INTEZMENY, $tanev);
+ foreach ($Szemeszter as $i => $szAdat) {
+ if ($szAdat['statusz'] == 'aktív') { // tervezett és lezárt szemeszter nem zárható le...
+ // replace - ha megnyitunk és újra lezárunk egy tanévet...
+ $q = "REPLACE INTO ".__INTEZMENYDBNEV.".hianyzasOsszesites
+ SELECT diakId, %u AS tanev, %u AS szemeszter,
+ 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,
+
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolt' AND tankorTipus.jelleg='gyakorlat',1,NULL)) AS gyakorlatIgazolt,
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolatlan' AND tankorTipus.jelleg='gyakorlat',1,NULL)) AS gyakorlatIgazolatlan,
+ SUM(IF(tipus='késés' AND statusz='igazolatlan' AND tankorTipus.jelleg='gyakorlat',perc,NULL)) AS gyakorlatKesesPercOsszeg,
+
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolt' AND tankorTipus.jelleg='elmélet',1,NULL)) AS elmeletIgazolt,
+ COUNT(IF(tipus='hianyzas' AND statusz='igazolatlan' AND tankorTipus.jelleg='elmélet',1,NULL)) AS elmeletIgazolatlan,
+ SUM(IF(tipus='késés' AND statusz='igazolatlan' AND tankorTipus.jelleg='elmélet',perc,NULL)) AS elmeletKesesPercOsszeg
+
+ 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'
+ ".$Wnemszamit['nemszamit']."
+ GROUP BY diakId";
+ $v = array($tanev, $szAdat['szemeszter'], $tanevDb, $szAdat['zarasDt']);
+ $r = db_query($q, array('fv' => 'closeTanev/hianyzasOsszesites', 'modul' => 'naplo_intezmeny', 'values' => $v));
+ // A hozott hiányzások hozzáadása
+ $q = "UPDATE ".__INTEZMENYDBNEV.".hianyzasOsszesites SET
+ igazolt = igazolt + (
+ SELECT IFNULL(SUM(dbHianyzas),0) FROM `%s`.hianyzasHozott AS `hh`
+ WHERE hh.diakId = hianyzasOsszesites.diakId AND hh.statusz='igazolt' AND hh.dt<='%s'
+ ),
+ igazolatlan = igazolatlan + (
+ SELECT IFNULL(SUM(dbHianyzas),0) FROM `%s`.hianyzasHozott AS `hh`
+ WHERE hh.diakId = hianyzasOsszesites.diakId AND hh.statusz='igazolatlan' AND hh.dt<='%s'
+ )
+ WHERE tanev=%u AND szemeszter=%u";
+ $v = array($tanevDb, $szAdat['zarasDt'], $tanevDb, $szAdat['zarasDt'], $tanev, $szAdat['szemeszter']);
+ $r = db_query($q, array('fv' => 'closeTanev/hianyzasOsszesites/hozott', 'modul' => 'naplo_intezmeny', 'values' => $v));
+ }
+ }
+ }
+
+ return true;
+
+ }
+
+ function setTanevStatus($tanev,$statusz) {
+ global $mayorCache;
+ $mayorCache->delType('szemeszter');
+
+ $q = "UPDATE szemeszter SET statusz='%s' WHERE tanev=%u";
+ $v = array($statusz, $tanev);
+ return db_query($q, array('fv' => 'setTanevStatus', 'modul' => 'naplo_intezmeny', 'values' => $v));
+ }
+
+
+ function refreshOsztalyNaplo($dbNev, $tanev) {
+
+ global $mayorCache;
+ $mayorCache->flushdb();
+
+ $lr = db_connect('naplo_intezmeny', array('priv' => 'Write', 'fv' => 'refreshOsztalyNaplo'));
+ if (!$lr) return false;
+
+ $q = "SELECT `osztalyId`,"._osztalyJel($tanev)." AS `osztalyJel`,"._evfolyam($tanev)." AS evfolyam,"._evfolyamJel($tanev)." AS evfolyamJel
+ FROM `osztaly` LEFT JOIN mayor_naplo.osztalyJelleg USING (osztalyJellegId)
+ WHERE kezdoTanev<=%u AND vegzoTanev>=%u
+ ORDER BY evfolyam, evfolyamJel, kezdoTanev, jel";
+
+ $v = array($tanev, $tanev);
+ $ret = db_query($q, array('fv' => 'refreshOsztalyNaplo', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v), $lr);
+ if (!is_array($ret)) return false;
+ foreach ($ret as $key => $sor) {
+ $q = "REPLACE INTO `%s`.osztalyNaplo (osztalyId,osztalyJel,evfolyam,evfolyamJel) VALUES (%u,'%s',%u,'%s')";
+ $v = array($dbNev, $sor['osztalyId'], $sor['osztalyJel'], $sor['evfolyam'], $sor['evfolyamJel']);
+ db_query($q, array('fv' => 'refreshOsztalyNaplo', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr);
+ }
+
+ db_close($lr);
+ return true;
+
+
+ }
+
+ function szemeszterModositasOrig($ADAT) {
+
+
+ for ($i = 0; $i < count($ADAT); $i++) {
+
+ $kezdesDt = $ADAT[$i]['kezdesDt']; $zarasDt = $ADAT[$i]['zarasDt'];
+ $tanev = $ADAT[$i]['tanev']; $szemeszter = $ADAT[$i]['szemeszter'];
+
+ $q = "SELECT zarasDt FROM szemeszter WHERE tanev=%u AND szemeszter=%u";
+ $v = array($tanev, $szemeszter);
+ $zDt = db_query($q, array('fv' => 'szemeszterModositas', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result'=>'value'));
+
+ $q = "SELECT count(*) FROM zaroJegy WHERE hivatalosDt='%s'";
+ $v = array($zDt);
+ $db = db_query($q, array('fv' => 'szemeszterModositas', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result'=>'value'));
+
+ if ($db==0) {
+
+ $q = "UPDATE szemeszter SET kezdesDt='%s',zarasDt='%s' WHERE tanev=%u AND szemeszter=%u";
+ $v = array($kezdesDt, $zarasDt, $tanev, $szemeszter);
+ db_query($q, array('fv' => 'szemeszterModositas', 'modul' => 'naplo_intezmeny', 'values' => $v));
+
+ } else {
+ $_SESSION['alert'][] = 'error:wrong_data:van már a '.$zDt.'-hez rögzített zárójegy!';
+ return false;
+ }
+ }
+
+ }
+
+ /*
+ * A szemeszter dátumhatárainak módosítása több dolgot is érint.
+ * 1. A zárójegyek hivatalos dátuma a szemszter záró dátuma - kivéve a vizsgajegyket.
+ * - megoldás: módosítsuk a zárójegy dátumát
+ * 2. A tanév nap táblája a tanév kezdetétől a végéig tartalmaz napokat.
+ * - vegyük fel, illetve töröljük a hiányzó napokat (??)
+ * 3. Elképzelhető, hogy a már beírt órákat, és ezen keresztül hiányzásokat és jegyeket is érinti a módosítás (ora tábla)
+ * - Ha órák törlésével járna, akkor egyszerűbb nem megengedni a módosítást. Ha kell, akkor előre törölje az órákat külön!
+ */
+ function szemeszterModositas($ADAT) {
+
+ global $mayorCache;
+ $mayorCache->flushdb();
+
+ $success = true;
+ for ($i = 0; $i < count($ADAT); $i++) {
+
+ unset($tolDt); unset($igDt);
+ $kezdesDt = $ADAT[$i]['kezdesDt']; $zarasDt = $ADAT[$i]['zarasDt'];
+ $tanev = $ADAT[$i]['tanev']; $szemeszter = $ADAT[$i]['szemeszter'];
+ $tanevDb = tanevDbNev(__INTEZMENY, $tanev);
+
+ $lr = db_connect('naplo_intezmeny', array('fv' => 'szemeszterModositas'));
+ db_start_trans($lr);
+
+ // a korábbi szemeszter zárás dátumának és státuszának lekérdezése
+ $q = "SELECT statusz, kezdesDt, zarasDt FROM szemeszter WHERE tanev=%u AND szemeszter=%u";
+ $v = array($tanev, $szemeszter);
+ $ret = db_query($q, array('fv' => 'szemeszterModositas/select', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result'=>'record'));
+ $kDt = $ret['kezdesDt']; $zDt = $ret['zarasDt'];
+ if ($ret['statusz'] == 'lezárt') {
+ // lezárt szemeszter adatait ne változtassuk
+ $_SESSION['alert'][] = 'message:wrong_data:lezárt szemeszter! (szemeszter='.$tanev.'/'.$szemeszter.')';
+ db_rollback($lr); db_close($lr); $success = false; continue;
+ }
+ if (($szemeszter == 1 && $kezdesDt != $kDt) || ($szemeszter == 2 && $zarasDt != $zDt)) {
+ // tanév kezdő vagy záró dátumának módosítása
+ if ($ret['statusz'] == 'aktív') {
+ // A tanév adatbázisát is érintik a változások
+ if ($szemeszter == 1 && $kezdesDt > $kDt) {
+ // Ha az év elejéből el kellene venni napokat, akkor ellenőrizzük, hogy vannak-e órák ezekre a napokra már beírva
+ $q = "SELECT COUNT(*) FROM `$tanevDb`.`ora` WHERE `dt` < '%s'";
+ $v = array($kezdesDt);
+ $db = db_query($q, array('fv' => 'szemeszterModositas/ora - kezdés', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result' => 'value'), $lr);
+ if ($db === "0") {
+ // Ha nincs betöltött óra, akkor módosíthatók a nap tábla megfelelő rekordjai; munkanapok --> szorgalmi időszakon kívüli munkanap
+ $q = "UPDATE `$tanevDb`.`nap` SET tipus='szorgalmi időszakon kívüli munkanap', orarendiHet=0
+ WHERE `dt` < '%s' AND tipus IN ('tanítási nap','speciális tanítási nap','tanítás nélküli munkanap')";
+ $v = array($kezdesDt);
+ $db = db_query($q, array('fv' => 'szemeszterModositas/delete nap', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result' => 'value'), $lr);
+ } else {
+ // Ha van, akkor hibát üzenünk és nem hajtjuk végre a módosítást
+ $_SESSION['alert'][] = 'message:insufficient_access:szemeszterMododitas/tanév később kezdés:A dátumváltoztatás már betöltött órákat érintene!';
+ db_rollback($lr, 'szemeszterModositas/van betöltött óra!'); db_close($lr); $success = false; continue;
+ }
+ } elseif ($szemeszter == 2 && $zarasDt < $zDt) {
+ // Ha az év végéből kell elvenni napokat, akkor ellenőrizzük, hogy vannak-e _lekötött_ órák ezekre a napokra már beírva
+ $q = "SELECT COUNT(*) FROM `$tanevDb`.`ora` WHERE `dt` > '%s' AND munkaido='lekötött'";
+ $v = array($zarasDt);
+ $db = db_query($q, array('fv' => 'szemeszterModositas/ora - zárás', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result' => 'value'), $lr);
+ if ($db === "0") {
+ // Ha nincs betöltött óra, akkor módosíthatók a nap tábla megfelelő rekordjai; munkanapok --> szorgalmi időszakon kívüli munkanap
+ $q = "UPDATE `$tanevDb`.`nap` SET tipus='szorgalmi időszakon kívüli munkanap', orarendiHet=0
+ WHERE `dt` > '%s' AND tipus IN ('tanítási nap','speciális tanítási nap','tanítás nélküli munkanap')";
+ $v = array($zarasDt);
+ $db = db_query($q, array('fv' => 'szemeszterModositas/delete nap', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result' => 'value'), $lr);
+ } else {
+ // Ha van, akkor hibát üzenünk és nem hajtjuk végre a módosítást
+ $_SESSION['alert'][] = 'message:insufficient_access:szemeszterMododitas/tanév rövidítés:A dátumváltoztatás már betöltött órákat érintene!';
+ db_rollback($lr, 'szemeszterModositas/van betöltött óra!'); db_close($lr); $success = false; continue;
+ }
+ } elseif ($szemeszter == 1 && $kezdesDt < $kDt) {
+ // éves munkaterv (nap tábla) bővítése
+ $tolDt = $kezdesDt; $igDt = date('Y-m-d', strtotime('-1 day', strtotime($kDt)));
+ } elseif ($szemeszter == 2 && $zarasDt > $zDt) {
+ // éves munkaterv (nap tábla) bővítése
+ $tolDt = date('Y-m-d', strtotime('+1 day', strtotime($zDt))); $igDt = $zarasDt;
+ }
+ if (isset($tolDt) && isset($igDt)) {
+ $Hetek = array(1);
+ $r = napokHozzaadasa($tanev, $tolDt, $igDt, $ADAT[$i], $lr);
+ unset($tolDt); unset($igDt);
+ if (!$r) { db_rollback($lr, 'szemeszterModositas/nap felvétel'); db_close($lr); $success = false; continue; }
+ /*orarendiHetekHozzarendelese($tolDt, $igDt, $Hetek, $lr);*/
+ }
+ } // aktív tanév
+ } // tanév hossza változik
+ // Az érintett, vizsgához nem kapcsolódó zárójegyek hivatalos dátumának módosítása
+ $q = "UPDATE zaroJegy LEFT JOIN vizsga USING (zaroJegyId) SET hivatalosDt='%s' WHERE hivatalosDt='%s' AND vizsgaId IS NULL";
+ $v = array($zarasDt, $zDt);
+ $r = db_query($q, array('fv' => 'szemeszterModositas', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result'=>'value'));
+ if ($r === false) { db_rollback($lr, 'szemeszterModositas/zarójegyek'); db_close($lr); $success = false; continue; }
+ // A szemeszter kezdés és zárás dátumának módosítása
+ $q = "UPDATE szemeszter SET kezdesDt='%s',zarasDt='%s' WHERE tanev=%u AND szemeszter=%u";
+ $v = array($kezdesDt, $zarasDt, $tanev, $szemeszter);
+ $r = db_query($q, array('fv' => 'szemeszterModositas', 'modul' => 'naplo_intezmeny', 'values' => $v));
+ if ($r === false) { db_rollback($lr, 'szemeszterModositas/dátum módosítás'); db_close($lr); $success = false; continue; }
+
+ db_commit($lr);
+ db_close($lr);
+
+ $_SESSION['alert'][] = 'info:success:tanev='.$tanev.', szemeszter='.$szemeszter;
+
+ }
+ return $success;
+
+ }
+
+?> \ No newline at end of file
diff --git a/mayor-orig/www/include/modules/naplo/admin/tankorok.php b/mayor-orig/www/include/modules/naplo/admin/tankorok.php
new file mode 100644
index 00000000..23887dbd
--- /dev/null
+++ b/mayor-orig/www/include/modules/naplo/admin/tankorok.php
@@ -0,0 +1,133 @@
+<?php
+
+ function updateTankor($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 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' => 'updateTankor'));
+ if (!$lr) {
+ fclose($fp);
+ return false;
+ }
+
+ // Az első sor kihagyása
+ if ($rovatfej) $sor = fgets($fp,1024);
+
+ // TárgyId-k átváltása
+ $keyNev = array_search('targyNev',$MEZO_LISTA);
+ if (!$keyNev && $keyNev !== 0) $keyNev = false;
+ if ($keyNev) {
+ $keyId = array_search('targyId',$MEZO_LISTA);
+ if (!$keyId && $keyId !== 0) { // Ha nincs targyId, akkor felvezzük a mező listába
+ $keyId = count($MEZO_LISTA);
+ $MEZO_LISTA[] = 'targyId';
+ }
+ $MEZO_LISTA[$keyNev] = ''; // A targyNev nem játszik szerepet többet, csak a targyId
+ $targyak = array(); // $targyNev --> $targyId átalakítás tárolása
+ $attrList = array_values(array_filter($MEZO_LISTA)); // az attrList újragenerálása (targyNev helyett targyId)
+ if (in_array($keyNev,$KULCS_MEZOK)) { // Ha a targyNev kulcs lenne, akkor legyen helyette a tagyId a kulcs (ha már eleve benne volt a targyId, akkor most kétszer lesz benne - nem baj!)
+ $k = array_search($keyNev,$KULCS_MEZOK);
+ $KULCS_MEZOK[$k] = $keyId;
+ }
+ }
+
+ while ($sor = fgets($fp,1024)) {
+
+ $adatSor = explode($mezo_elvalaszto,chop($sor));
+ $update = $hianyzoTargyId = false;
+
+ // targyId megállapítása a targyNev alapján
+ if (
+ $keyNev !== false // Ha van targyNev mező
+ && $adatSor[$keyNev] != '' // és nem üres
+ && $adatSor[$keyId] == '' // de nincs megadva targyId
+
+ ) {
+ if (!isset($targyak[$adatSor[$keyNev]])) { // Ha még nem kérdeztük le a targyId-t
+ $q = "SELECT targyId FROM targy WHERE targyNev='%s'";
+ $v = array($adatSor[$keyNev]);
+ $targyak[$adatSor[$keyNev]] = db_query($q, array(
+ 'fv' => 'updateTankor', 'modul' => 'naplo_intezmeny', 'result' => 'value', 'values' => $v
+ ), $lr);
+ if (!$targyak[$adatSor[$keyNev]]) {
+ $_SESSION['alert'][] = 'message:wrong_data:tárgyNév:'.$adatSor[$keyNev].':'.$num.':'.$sor;
+ $hianyzoTargyId = true;
+ }
+ }
+ $adatSor[$keyId] = $targyak[$adatSor[$keyNev]];
+ }
+ // Innentől ha lehetett, akkor a targyNev le lett cserélve targyId-re - minden megy a sima frissítés szerint
+
+ // keresési feltétel összerakása
+ $where = '';
+ for ($i=0; $i<count($KULCS_MEZOK); $i++) {
+ if ($adatSor[$KULCS_MEZOK[$i]] != '') {
+ $where .= ' AND '.$MEZO_LISTA[$KULCS_MEZOK[$i]]."='".$adatSor[$KULCS_MEZOK[$i]]."' ";
+ }
+ }
+ if ($where != '') {
+ $where = substr($where,5);
+ $q = 'SELECT COUNT(*) FROM tankor WHERE '.$where;
+ $num = db_query($q, array('fv' => 'updateTankor', 'modul' => 'naplo_intezmeny', 'result' => 'value'), $lr);
+ $update = ($num > 0);
+ }
+ if ($update) {
+ $UPDATE = array();
+ for ($i = 0; $i < count($MEZO_LISTA); $i++) {
+ if (
+ $MEZO_LISTA[$i] != ''
+ and $adatSor[$i] != ''
+ and !in_array($i,$KULCS_MEZOK)
+ ) {
+ $UPDATE[] = $MEZO_LISTA[$i]."='".$adatSor[$i]."'";
+ }
+ }
+ if (count($UPDATE) > 0) {
+ $q = 'UPDATE tankor SET '.implode(',',$UPDATE).' WHERE '.$where;
+ $r = db_query($q, array('fv' => 'updateTankor', 'modul' => 'naplo_intezmeny'), $lr);
+ }
+ } elseif (!$hianyzoTargyId) {
+ $value = array();
+ for ($i=0; $i<count($MEZO_LISTA); $i++) {
+ if ($MEZO_LISTA[$i] != '') $value[] .= $adatSor[$i];
+ }
+ $VALUES[] = "('".implode("','",$value)."')";
+ }
+
+ } // while
+ if (count($VALUES) > 0) {
+ $q = 'INSERT INTO tankor ('.implode(",",$attrList).') VALUES '.implode(",\n",$VALUES);
+ $r = db_query($q, array('fv' => 'updateTankor', 'modul' => 'naplo_intezmeny'), $lr);
+ }
+
+ db_close($lr);
+
+ fclose($fp);
+
+ }
+
+
+?>