diff options
Diffstat (limited to 'egyéb')
-rw-r--r-- | egyéb/nextcloud/mayor-nextcloud.cfg.php | 243 | ||||
-rw-r--r-- | egyéb/nextcloud/mayor-nextcloud.php | 289 |
2 files changed, 362 insertions, 170 deletions
diff --git a/egyéb/nextcloud/mayor-nextcloud.cfg.php b/egyéb/nextcloud/mayor-nextcloud.cfg.php index 205f6714..35ac1619 100644 --- a/egyéb/nextcloud/mayor-nextcloud.cfg.php +++ b/egyéb/nextcloud/mayor-nextcloud.cfg.php @@ -24,13 +24,15 @@ $m2n['isk_rovidnev'] = "rovid"; $m2n['csoport_prefix'] = "(tk) "; $m2n['default_email'] = "indulo@iskola.hu"; $m2n['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; +$m2n['always_set_diak_quota'] = false; $m2n['default_quota'] = "10GB"; $m2n['diak_quota'] = "2GB"; $m2n['min_osztalyok'] = array(); //pl: array('9.a','11.a'); $m2n['csoportnev_hossz'] = 40; $m2n['felhasznalo_hossz'] = 45; $m2n['default_lang'] = "hu"; -$m2n['manage_groupdirs'] = false; +$m2n['manage_groupdirs'] = false; //Foglalkozzon-e a script a tankörmappákkal +$m2n['groupdir_users'] = array("naplo_robot","123abcd"); //Ha a tömb üres, akkor az összes tanárral dolgozik. $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; $m2n['mindenki_csop'] = "naplós_felhasználók"; $m2n['mindenki_tanar'] = "naplós_tanárok"; @@ -50,54 +52,204 @@ $m2n['infotxt_szöveg'] = <<<EOT FONTOS INFORMÁCIÓK! -Ez a mappa, és a benne lévő mappák, a távoktatás segítésére, egyszerűsítésére szolgálnak. +Ez a mappa, és a benne lévő mappák, a távoktatás segítésére, +egyszerűsítésére szolgálnak. -Fontos tudni, hogy ha megosztunk egy, a mi mappánkon belüli fájlt, vagy mappát, egy másik felhasználóval a felhőben, akkor a megosztott fájl, vagy mappa, a másik felhasználónak a kezdőoldalán jelenik meg, a fájlok között. -Egy idő után, ha az illető, már nagyon sok megosztást fogadott, a rengeteg fájl már számára egy átláthatatlan mappa-tengert fog képezni, és nagyon nehéz lesz benne eligazodnia. +Fontos tudni, hogy ha megosztunk egy, a mi mappánkon belüli fájlt, +vagy mappát, egy másik felhasználóval a felhőben, akkor a megosztott +fájl, vagy mappa, a másik felhasználónak a kezdőoldalán jelenik meg, +a fájlok között. + +Egy idő után, ha az illető, már nagyon sok megosztást fogadott, +a rengeteg fájl már számára egy átláthatatlan mappa-tengert fog képezni, +és nagyon nehéz lesz benne eligazodnia. Ezen probléma kivédésére született ez, az alábbi megoldás: -A tanátoknak a szerver automatikusan létrehoz egy, a távoktatásra használatos gyűjtőmappát, ebbe a mappába létrehozza a tanár által tanított (e-napló szerint) tanköröknek megfelelő mappákat automatikusan. +A tanátoknak a szerver automatikusan létrehoz egy, a távoktatásra +használatos gyűjtőmappát, utána ebbe a mappába létrehozza a tanár által +tanított (e-napló szerint) tanköröknek megfelelő mappákat automatikusan. + + +A működési szabályok: + +1) A tanár ezekbe a mappákba helyezheti el a diákoknak szánt fájlokat. + (Ha akarja, ez nem kötelező, csak segítség.) -A használati szabályok: -1) A tanár ezekbe a mappákba helyezi/helyezheti el a diákoknak szánt fájlokat. 2) A tanár ezeket a mappákat osztja meg a diákcsoportokkal. -3) A diák ezekben a mappákban helyezi el a nyilvánosan visszaküldendő fájlokat, képeket. (Ezt a mappát, a tankör összes tagja látja, amelyik tankörrel megosztottuk.) -4) A diák, a privát módon visszaküldendő fájlokat, a tanárral való megegyezés szerint, lehetőleg ne ebbe a mappába helyezze el, azt egyszerűen ossza meg a tanárával. -5) A Tankörmappákban a fájlok rendjét a tanár határozza/határozhatja meg. -6) A tankörmappák gyűjtőmappájában a rendet a szerver tartja, oda egyéb fájl, nem helyezhető. Ha mégis kerülne oda egyéb fájl akkor, arról a szerver, a tanárt először értesíti, majd később a fájt automatikusan törli. + +3) A diák ezekben a mappákban helyezi el a nyilvánosan visszaküldendő + fájlokat, képeket. (Ezt a mappát, a tankör összes tagja látja, + amelyik tankörrel, vagy csoporttal megosztottuk. + A megosztást nekünk, kézzel kell elvégezni, az nem történik + meg automatikusan.) + +4) A diák, a privát módon visszaküldendő fájlokat, a tanárral való + megegyezés szerint, lehetőleg ne ebbe a mappába helyezze el, + hanem azt egyszerűen ossza meg a tanárával, vagy valamilyen + más módon juttassa vissza. + +5) A Tankörmappákban, a fájlok rendjét a tanár határozhatja meg, + viszont, amelyik mappára engedélyezve van a diák(ok) részére a + feltöltés/szerkesztés/törlés, ott már értelemszerűen nem csak a + tanár dönt a fájlok sorsáról. + +6) A tankörmappák gyűjtőmappájában a rendet a szerver tartja, + oda egyéb fájl, mappa nem helyezhető. + Ha mégis kerülne oda egyéb fájl akkor, azt a szerver, átnevezi, + és a tanárnak értesítést küld, egészen addig, amíg az "idegen" + fájlok tekintetében helyre nem áll a rend. + Az átnevezéskor, a szerver, a fájl nevét kiegészíti egy + "számsorozat.please-remove" utótaggal. Ezt az utótagot, a fájl, + a gyűjtőmappából történő áthelyezése után már kézzel eltávolíthatjuk, + így visszakapjuk az eredeti fájlunkat, mappáinkat. + (Az "Átnevezés" gomb segítségével. (Jobb-Egér kattintással.)) + +7) A szerver, a tankörök egyeztetését, a naplóval, minden nap egyszer, + éjfél és hajnali 5 óra között végzi el. Tehát, az iskolatitkárok + által elvégzett módosítások, így a tankör-csoportok összerendezése, + a tankörök, valamint a tanárok és diákok jogviszonyában beálló + változás, csak másnap reggelre lép érvénybe. + Legyen egy gyakorlati példa: -A tanár mappalistájában létrejön a gyűjtőmappa mondjuk: "Iskolai Távoktatás" névvel. -Ezen, a "Iskolai Távoktatás" nevű mappán belül létrejön mondjuk, egy "(tk) 10.b fizika" és egy "(tk) 10.b osztályfőnöki" mappa. -A tanár szabadon használhatja a "(tk) 10.b fizika" és a "(tk) 10.b osztályfőnöki" mappákat, azokat szabadon megoszthatja, bele fájlokat helyezhet, belőlük fájlokat törölhet, ha engedélyezi a szerkesztést, akkor a diák is helyezhet bele fájlokat, vagy szerkesztheti*** a fájlokat. -Ha a tankörmappát megosztja a diákkal/tankörrel, akkor a diáknak nem egy csomó fájl, és nem is az "Iskolai Távoktatás" mappa fog megjelenni a kezdőoldalán, hanem az adott tankörmappa. Tehát, ha a tanár a "(tk) 10.b fizika" mappát osztja meg, akkor a diák, a kezdőoldalán a "(tk) 10.b fizika" mappát fogja találni, és benne a tanár által hozzáadott fájlokat. +A tanár mappalistájában létrejön a gyűjtőmappa mondjuk: +"Iskolai Távoktatás" névvel. +Ezen, a mappán belül létrejön mondjuk, egy "(tk) 10.b fizika" +és egy "(tk) 10.b osztályfőnöki" tankörmappa. +(Vagyis, a tanár, az e-naplóban ezen tankörök tagja.) + +Ezen mappák mellé létrejön még a "(tk) 10.b fizika_beadás" és a +"(tk) 10.b osztályfőnöki_beadás" mappa is. Ezek a mappák a diákok +által visszaküldendő fájlok gyűjtésére szolgálhatnak. -Viszont a "Iskolai Távoktatás" nevű mappában csak! a "(tk) 10.b fizika" és a "(tk) 10.b osztályfőnöki" mappák lehetnek, más fájl, vagy mappa, nem! -Ha mégis kerülne oda egyéb fájl, vagy mappa, akkor arról először értesíti a tanárt, majd a 3. értesítést követően, a nem odaillő fájlokat, vagy mappákat automatikusan törli. +A tanár szabadon használhatja a "(tk) 10.b fizika" és a +"(tk) 10.b osztályfőnöki" mappákat, azokat szabadon megoszthatja, +bele fájlokat helyezhet, belőlük fájlokat törölhet, stb., +ha engedélyezi a szerkesztést, akkor a diák is helyezhet bele +fájlokat, vagy szerkesztheti*** a benne lévő fájlokat. -Ez szintén vonatkozik a korábban itt levő, de átnevezett mappákra is, tehát, ha a "(tk) 10.b fizika" mappát a tanár véletlenül átnevezné, akkor onnantól azt is "idegen" mappának fogja tekinteni. +Ha a tankörmappát megosztja a diákkal/ egész tankörrel, +akkor a diáknak így már nem egy csomó fájl, rendezetlenül, +és nem is az "Iskolai Távoktatás" nevű mappa fog megjelenni +a kezdőoldalán, hanem az adott tankörmappa. -Ugyanez történik akkor is, ha a tanár, (a naplóban) kikerül a tankörből, tehát nem tanítja tovább, vagy a tankör ugrik egyet évkezdéskor, és a "(tk) 10.b fizika"-ból "(tk) 11.b fizika" lesz, ekkor a, még ottmaradó "(tk) 10.b fizika" mappát szintén idegennek fogja tekinteni. +Tehát, ha a tanár a "(tk) 10.b fizika" mappát osztja meg, +akkor a diák, a kezdőoldalán a "(tk) 10.b fizika" mappát fogja +találni, és benne a tanár által hozzáadott fájlokat. -Természetesen a tanárnak lehetősége van az idegennek minősített mappákat, és azok tartalmát a "Iskolai Távoktatás" mappán kívülre, a saját mappái közé áthelyezni, vagy az idegennek minősített mappák tartalmát egy másik, már "elfogadott" tankörmappába tenni. -(Ez utóbbit kell tenni, vagyis a tanárnak kézzel áthelyezni a fájlokat az egyik tankörmappából, az új tankörmappába, amikor évváltás van, és a tankör ugrik egyet "(tk) 10.b fizika" --> "(tk) 11.b fizika". ) +Viszont az "Iskolai Távoktatás" nevű mappában csak(!!) a +"(tk) 10.b fizika" és a "(tk) 10.b osztályfőnöki" mappák lehetnek, +valamint a beadásra szolgáló társmappák, illetve az INFO.txt. +Más fájl, vagy mappa, nem! + + +Ha mégis kerülne oda egyéb fájl, vagy mappa, akkor arról először +értesíti a tanárt, majd, a nem odaillő fájlokat, vagy mappákat +automatikusan eltávolításra megjelöli. + +Ez szintén vonatkozik a korábban itt levő, de átnevezett mappákra is, +tehát, ha a "(tk) 10.b fizika" mappát a tanár véletlenül átnevezné, +valami másra, akkor onnantól azt is "idegen" mappának fogja tekinteni. + +Ugyanez történik akkor is, ha a tanár, (a napló szerint) kikerül a +tankörből, tehát nem tanítja tovább, vagy a tankör ugrik egyet +évkezdéskor, és a "(tk) 10.b fizika"-ból "(tk) 11.b fizika" lesz, +ekkor, a, még ottmaradó "(tk) 10.b fizika" mappát szintén +idegennek fogja tekinteni. + +Ilyenkor a tanárnak szükséges, kézzel, az idegennek minősített mappákat +kiüríteni, és az egész mappát, vagy csak azok tartalmát +az "Iskolai Távoktatás" mappán kívülre, a saját mappái közé áthelyezni, +vagy az idegennek minősített mappák tartalmát egy másik, az "elfogadott" +tankörmappák valamelyikébe átrakni. +Majd a kiürült, előző mappát kézzel kell törölnie! + +(Ez utóbbit kell tenni, vagyis a tanárnak, kézzel áthelyezni a +fájlokat az egyik tankörmappából, az új tankörmappába, amikor +évváltás van, és a tankör ugrik egyet: +"(tk) 10.b fizika" --> "(tk) 11.b fizika". ) -*** Tipp: + + +*** Tippek/Megjegyzések: + 1) -Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, a tanár által, az egész tankörnek küldött fájlokba véletlenül beleszerkesszen, hozzunk létre egy egy "beadás", vagy hasonló nevű mappát a tankörmappán belül, és csak erre a "beadás" mappára adjuk meg a jogot a diáknak/diákcsoportnak/tankörnek szerkesztésre/módosításra. +Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, +a tanár által, az egész tankörnek küldött fájlokba véletlenül +beleszerkesszen, vagy esetleg töröljön belőlük, akkor vonjuk meg a +szerkesztési/létrehozási/törlési jogokat, és ezt ellenőrizzük is +minden megosztáskor, hogy valóban a megfelelő jogok vannak-e beállítva +a megosztott mappán! + +A szerver létrehoz egy "_beadás", végződésű mappát is, a tankörmappák +mellé, hogy ezeket használhassuk a visszaküldendő fájlok gyűjtésére, így +csak erre a "_beadás" mappára kell jogot adnunk a diáknak/tankörnek +a szerkesztésre/módosításra/törlésre/stb.. + + 2) -Ha videófájlokat szeretnénk feltölteni nagy mennyiségben, akkor hozzunk létre az adott tankörhöz tartozó tankörmappában egy "Videók" nevű mappát, és abba helyezzük el a videófájlokat. A könnyebb megkülönböztethetőség végett nevezzük át a videófájlokat dátum szerinti, fájlnévre, vagy sorszámozzuk őket, és a sorszámot tüntessük föl a fájl nevében! +Ha videó fájlokat szeretnénk feltölteni nagy mennyiségben, +akkor hozzunk létre az adott tankörhöz tartozó tankörmappában egy +"Videók" nevű mappát, és abba helyezzük el a videó fájlokat. +A könnyebb megkülönböztethetőség végett nevezzük át a videó fájlokat +dátum szerinti fájlnévre, vagy sorszámozzuk őket, +és a sorszámot tüntessük föl a fájl nevében! + + +3) A létrejövő mappák megosztási beállításait nekünk kell +finomhangolnunk, mert nem jönnek automatikusan létre a +feltöltési/szerkesztési/törlési/stb. engedélyek. +A megosztás pillanatában, a fogadó félnek, csak az olvasási +jogosultsága jön létre automatikusan. + +Tehát, minután megosztottuk egy tankörrel, kattintsunk rá a +fektetett "V" betűhöz hasonlító ikonra, és a megosztási beállításoknál, +a "..."-ra kattintva engedélyezzük a +feltöltést/szerkesztést/törlést/továbbadást/stb. a csoport tagjainak, +igényünknek megfelelően! + +(Magát a megosztást is nekünk, kézzel kell megtennünk, +mert azt sem állítja be a szerver automatikusan.) + +Alapesetben, gyakorlatilag csak annyi a dolgunk, hogy például, +a "(tk) 10.b fizika" mappát megosszuk a "(tk) 10.b fizika" tankörrel. +Ha a beadást is szeretnénk itt összegyűjteni, akkor +a "(tk) 10.b fizika_beadás" mappát is meg kell osszuk +a "(tk) 10.b fizika" tankörrel, ügyelve arra, hogy csak +a "(tk) 10.b fizika_beadás" mappára kerüljön a diákok számára +létrehozási/szerkesztési/törlési jogosultság. + + + +4) +Ha egy rossz helyen lévő fájl miatt értesítést kapunk, akkor a +legfontosabb, hogy a fájl onnan, a távoktatás gyűjtőmappájából, +elkerüljön, tehát ne másoljuk, hanem helyezzük át, a saját, egyéb +mappáinkba / egyéb fájlaink közé! + +Utána, ha ez megtörtént, nevezzük vissza, az eredeti nevére, +vagyis töröljük ki a nevéből a szerver által odarakott: +"számsorozat.please-remove" utótagot, a "Átnevezés" gomb segítségével! + + +5) +Az INFO.txt, vagyis, ez a leírás, minden éjjel frissítődik, illetve újra +létrehozódik a szerveren, hogy mindig a legfrissebb információkat +tartalmazza, tehát nem szükséges törölni. Ám erre is igaz, hogy +ha véletlenül átnevezzük, akkor már idegennek fogja tekinteni +a rendszer. Ekkor, az "idegen" változatát már törölnünk szükséges! + EOT; @@ -198,6 +350,8 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['diak_quota'] = "2GB"; //A diákok! indulási kvótája // amikor új diákot ad hozzá, ezt a qvótát állítja be a számára. + //Lehetőség van az összes diák kvótáját egyszerre, az itt beállított értékre állítani, + // de ez nem fut automatikusan éjjelente, ezt kézzel kell, --set-diak-qupta kapcsoló kiadásával. $m2n['default_lang'] = "hu"; //Az alapértelmezett nyelv (később minden felhasználó átállíthatja magának) @@ -206,16 +360,18 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) // Tehát ha beállítunk egy minimális évfolyamot, a listában felsorolt osztályok akkor is importálódnak, // ha a min_évfolyam-nál kisebbek. //pl: array('9.a','11.a'); - $m2n['csoportnev_hossz'] = 40; // Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a csoport neve. (csak a script kinézete/átláthatósága végett) + $m2n['csoportnev_hossz'] = 40; //Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a csoport neve. + // (csak a script kinézete/átláthatósága végett) - $m2n['felhasznalo_hossz'] = 45; // Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a felhasználó valódi neve. (csak a script kinézete/átláthatósága végett) + $m2n['felhasznalo_hossz'] = 45; //Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a felhasználó valódi neve. + // (Ssak a script szép kinézete, átláthatósága végett.) $m2n['mindenki_csop'] = "naplós_felhasználók"; //Legyen egy olyan csoport, amiben "mindenki benne van". // ebbe a "mindenki" csoportba minden, a script által létrehozott felhasználó bekerül. - + $m2n['mindenki_tanar'] = "naplós_tanárok"; //Legyen egy olyan csoport, amiben minden tanár benne van // ebbe a "minden_tanár" csoportba a naplóbeli tanárok kerülnek. - + $m2n['mindenki_diak'] = "naplós_diákok"; //Legyen egy olyan csoport, amiben "minden diák" benne van. // ebbe a "minden_diák" csoportba a naplóbeli diákok kerülnek. @@ -224,8 +380,11 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['manage_groupdirs'] = false; //Ha szerenénk, hogy a script létrehozza a távoktatást segítő tankörmappákat, állítsuk "true"-re! + $m2n['groupdir_users'] = array("123abcd", ); //Ha csak egyes tanároknak szeretnénk bekapcsolni a tankörmappákat, + // ha minden tanárnak, akkor állítsuk üresre a tömböt! / = array();/ + $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; //A távoktatást segítő mappák gyüjtőmappája/gyökérkönyvtára. - + $m2n['verbose'] = 3 //Log bőbeszédűség (A leg informatívabb(tömörebb), talán a 3-mas fokozat.) // 0: csak fatális hibák, 1: fontosabbak, 2: csop./felh. elvétel, 3: csop./felh. hozzáadás, // 4: csop./felh. állapot, 5: részletesebben, 6: sql query + bash parancsok kiírása is @@ -238,14 +397,16 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['kihagy'] = array(); //Lehetőség van egy-egy felhasználó kezelésének letiltására, ezt felsorolásként tehetjük meg. // Ekkor a script nem fog foglalkozni, az adott felhasználóval a továbbiakban. - //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') - - $m2n['megfigyelo_user'] = "naplo_robot"; //Lehetőség van egy úgymond "megfigyelő" felhasználó létrehozására. - // ez a felhasználó be lesz léptetve az összes csoportba, így az összes üzenetet megkapja, + //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') + + $m2n['megfigyelo_user'] = "naplo_robot"; //Lehetőség van egy úgymond "megfigyelő" felhasználó létrehozására. + // ez a felhasználó be lesz léptetve az összes csoportba, így az összes üzenetet megkapja, // és az összes tankörben megosztott fájlt látja, amit a csoportokkal/tankörökkel megosztottak. + //EZ a felhasználó nem egyezik meg a MaYor "mayoradmin" felhasználójával (nem lesz automatikusan rendszergazda)! + // de megadható ugyanazon felhasználónév, és lejszó, mint a MaYor "mayoradmin"-nak - CONFIG FILE: "mayor-nextcloud.cfg.php"; //Lehetőség van a konfig exportálására egy külön fájlba, + CONFIG FILE: "mayor-nextcloud.cfg.php"; //Lehetőség van a konfig exportálására egy külön fájlba, // így a mayor-nextcloud scriptet nem kell szerkeszteni, ha frissítés érkezik hozzá. // Ez alapértelmezetten a maxor-nextcloud.php -val kell egy könyvtárba legyen. @@ -256,14 +417,16 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) Az "occ" parancs működését pl. az: (>>> sudo -u www-data php /var/www/nextcloud/occ ) kiadásával ellenőrizzük! - - További Paraméterek / Kapcsolók: - - --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. - --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre + További Paraméterek / Kapcsolók: + + --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. + + --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, + csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. - --create-groupdir <username>: A távoktatást segítő könyvtárstruktúrát csak az <username> felhasználónak hozza létre. + --create-groupdir <username>: A távoktatást segítő könyvtárstruktúrát csak az <username> felhasználónak hozza létre, + illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre. diff --git a/egyéb/nextcloud/mayor-nextcloud.php b/egyéb/nextcloud/mayor-nextcloud.php index e08e4e50..9629ab35 100644 --- a/egyéb/nextcloud/mayor-nextcloud.php +++ b/egyéb/nextcloud/mayor-nextcloud.php @@ -2,6 +2,7 @@ <?php $db = array(); $m2n = array(); +$m2l = array(); ////////////////////////////////////////////// Figyelem! az alábbi konfig automatikusan külön fájból töltődik, ha létezik a "mayor-nextcloud.cfg.php" fájl!! ///////////////////////////////// $db['host'] = "localhost"; $db['port'] = "3306"; @@ -15,12 +16,13 @@ $db['nxt_prefix'] = "oc_"; //$db['mayor_port'] = ""; //$db['mayor_user'] = ""; //$db['mayor_pass'] = ""; - + $m2n['min_evfolyam'] = 1; $m2n['isk_rovidnev'] = "rovid"; $m2n['csoport_prefix'] = "(tk) "; $m2n['default_email'] = "indulo@iskola.hu"; $m2n['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; +$m2n['always_set_diak_quota'] = false; $m2n['default_quota'] = "10GB"; $m2n['diak_quota'] = "2GB"; $m2n['min_osztalyok'] = array(); //pl: array('9.a','11.a'); @@ -29,8 +31,9 @@ $m2n['felhasznalo_hossz'] = 45; $m2n['megfigyelo_user'] = "naplo_robot"; //ha nem kell, akkor állítsd üres stringre. $m2n['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') $m2n['default_lang'] = "hu"; -$m2n['manage_groupdirs'] = false; +$m2n['manage_groupdirs'] = false; // Foglalkozzon-e a script a tankörmappákkal $m2n['groupdir_prefix'] = "tavsuli"; +$m2n['groupdir_users'] = array("naplo_robot","123abcd"); //Ha mindenkire -> =array(); //(legyen üres) $m2n['mindenki_csop'] = "naplós_felhasználók"; $m2n['mindenki_tanar'] = "naplós_tanárok"; $m2n['mindenki_diak'] = "naplós_diákok"; @@ -39,27 +42,21 @@ $m2n['verbose'] = 3 ; $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; -$ALWAYS_SET_DIAK_QUOTA = false; -$groupdir_user = ""; + $cfgfile = realpath(pathinfo($argv[0])['dirname'])."/"."mayor-nextcloud.cfg.php"; // A fenti konfig behívható config fájlból is, így a nextcloud-betöltő (ez a php) szerkesztés nélkül frissíthető. if( file_exists($cfgfile)===TRUE ){ include($cfgfile); } - - - - // Le kell cserélni az ékezetes betűket, mert a Vezetéknév.Keresztnév nem POSIX kompatibilis. $search = array( 'á', 'ä', 'é', 'í', 'ó', 'ö', 'ő', 'ú', 'ü', 'ű', 'Á', 'Ä', 'É', 'Í', 'Ó', 'Ö', 'Ő', 'Ú', 'Ü', 'Ű'); // egyelőre csak a magyar betűket ismeri $replace = array( 'aa', 'ae', 'ee', 'ii', 'oo', 'oe', 'ooe', 'uu', 'ue', 'uue', 'Aa', 'Aae', 'Ee', 'Ii', 'Oo', 'Oe', 'Ooe', 'Uu', 'Ue', 'Uue'); -$log['verbose'] = $m2n['verbose']; for($i = 1; $i<$argc; $i++){ - if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$log['verbose'] = intval($argv[$i+1]); $i++;} - if($argv[$i] == "--set-diak-quota" ){ $ALWAYS_SET_DIAK_QUOTA = true; } - if($argv[$i] == "--create-groupdir"){ $groupdir_user = $argv[$i+1]; $i++;} + if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$m2l['log_verbose'] = intval($argv[$i+1]); $i++;} + if($argv[$i] == "--set-diak-quota" ){ $m2l['always_set_diak_quota'] = true; } + if($argv[$i] == "--create-groupdir"){ $m2l['groupdir_users'] = array($argv[$i+1]); $i++;} } -if( $ALWAYS_SET_DIAK_QUOTA === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } + if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Improved) és php7 kell! function db_connect(array $db){ @@ -91,7 +88,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } return $l; } - } + } // bezár: mysqli_close($link); function script_install($link){ @@ -113,10 +110,26 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } + function rmnp($str){ //Remove non-printable + return preg_replace('/[\x00-\x1F\x7F-\xA0\xAD]/u', '', $str); + } + + function escp($str){ //Escape strings + $str = str_replace(array("\\","`", "\'", "\"" ),array("\\\\", "\`", "\\\'", "\\\""), $str); + return escapeshellarg($str); + } + + function rnescp($str){ //Escape strings + $str = rmnp($str); + $str = escapeshellarg($str); + $str = str_replace(array("\\", "`", "'", "\"", "\ ", ), array("", "", "", "", "_", ), $str); + return $str; + } + function nxt_get_version(){ global $occ_path,$occ_user,$m2n,$log; // sudo -u honlap-felho php /home/honlap-felho/web/occ status --output=json - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" status --output=json'" ; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." status --output=json \"" ; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return explode(".", json_decode(shell_exec($e),true)['version'])[0]; echo "\n\n\n".explode(".", json_decode(shell_exec($e),true)['version'])[0]."\n\n\n"; @@ -163,7 +176,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function catalog_useradd($link, $account){ // feljegyzi az általa létrehozott felhasználókat global $log,$db; - $q = "INSERT INTO ".$db['m2n_db'].".".$db['m2n_prefix']."register (account) VALUES ('".$account."')"; + $q = "INSERT INTO ".$db['m2n_db'].".".$db['m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-hozzáadás, m2n nyilvántartásba vétele.\n"; } @@ -172,7 +185,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function catalog_userena($link, $account){ // az engedélyezetteket global $db,$log; - $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='active' WHERE account='".$account."'"; + $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-engedélyezés, m2n nyilvántartásba vétele.\n" ;} @@ -181,7 +194,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function catalog_userdel($link, $account){ // a törölteket global $db,$log; - $q = "DELETE FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE account='".$account."' "; + $q = "DELETE FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-törlés, m2n nyilvántartásba vétele.\n"; } @@ -190,7 +203,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function catalog_userdis($link, $account){ // a letiltottakat global $m2n,$db,$log; - $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='disabled' WHERE account='".$account."'"; + $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-letiltás, m2n nyilvántartásba vétele.\n"; } @@ -201,10 +214,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im global $occ_path,$occ_user,$m2n,$log; // export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c 'php web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' if(strlen($userAccount) > 64 or strlen($fullName) > 64){ - echo "\n******** Hiba: A felahsználónév, vagy a \"teljes név\" hosszabb, mint 64 karakter! ********\n"; + echo "\n******** Hiba: A felahsználónév, vagy a \"teljes név\" hosszabb, mint 64 karakter! NEM hozható létre!! ********\n"; } else { - $e = "export OC_PASS=".$m2n['default_passw']."; su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:add \ - --password-from-env --display-name=\"$fullName\" --group=\"".$m2n['mindenki_csop']."\" $userAccount'" ; + $e = "export OC_PASS=".escp($m2n['default_passw'])."; su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($m2n['mindenki_csop'])." ".escp($userAccount)." \"" ; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -212,15 +224,15 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:info $userAccount --output=json'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $last_login = json_decode(shell_exec($e),true)['last_seen'] ; if($last_login == "1970-01-01T00:00:00+00:00" ){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:delete $userAccount'"; // Ha még soha nem lépett be + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); // akkor törölhető } else { - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:disable $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); // különben csak letiltja } @@ -229,7 +241,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function user_info($userAccount){ // User állpot a Nextcloudban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:info $userAccount --output=json '"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return (array)json_decode(shell_exec($e),true); } @@ -237,14 +249,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function user_dis($userAccount){ // letiltja a felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:disable $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } function user_ena($userAccount){ // engedélyezi global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:enable $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -252,26 +264,26 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function nxt_group_list() { // Csoportok listázása a Nextcloud-ból global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:list --limit=1000000 --output=json'"; //* Jó nagy limittel dolgozzunk + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return (array)json_decode(shell_exec($e),true); } function nxt_user_list() { // Felhasználók listázása a Nextcloud-ból global $occ_path,$occ_user,$log; - // $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:report | grep \"total\" | sed -e \"s/[^0-9]//g\" | tr -d \"[:blank:]\n\" '"; + // $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; // if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } // $num = shell_exec($e); $num = 1000000; //inkább kézi limit! // $num = $num + 100; // Biztos-ami-biztos, a nextcloud rejtett hibái miatt... - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:list --limit $num --output=json'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return (array)json_decode(shell_exec($e),true); } function nxt_user_lastlogin($userAccount){ // legutóbbi belépés lekérdezése global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:info $userAccount --output=json'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return json_decode(shell_exec($e),true)['last_seen'] ; } @@ -280,33 +292,36 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function user_set($userAccount, array $params){ //beállítja az e-mailt, quota-t, nyelvet a kapott értékekre global $occ_path,$occ_user,$log; if(isset($params['quota'])){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount files quota \"".$params['quota']."\"'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec( $e ); } if(isset($params['email'])){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount settings email \"".$params['email']."\"'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec( $e ); } if(isset($params['lang'])){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount core lang \"".$params['lang']."\"'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } - } + } + + function group_add($groupName){ //Új csoport létrehozása a Nextcloud-ban global $occ_user,$occ_path,$link,$db,$log; + $groupName = rmnp($groupName); if(strlen($groupName) > 64){ //mivel (egyelőre) nics erre 'occ' parancs, ezért közvetlenül kell... echo "\n****** Hiba: a csoportnév nagyobb, mint 64 karakter!! ******\n"; } else { if(nxt_get_version() < 14) { - $q = "INSERT IGNORE INTO ".$db['nxt_dbname'].".".$db['nxt_prefix']."groups (gid) VALUES ('".$groupName."'); "; + $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link, $db['nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; } else { - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:add \"$groupName\" '"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -316,21 +331,22 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function group_del($groupName){ // Csoport törlése a Nextcloud-ból global $occ_user,$occ_path,$db,$link,$log,$m2n; $grp = nxt_group_list(); + $groupName = rmnp($groupName); if(isset($grp[$groupName])){ - if(nxt_get_version() < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... + if(nxt_get_version() < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... foreach($grp[$groupName] as $key => $user){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:removeuser \"$groupName\" $user'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$m2n['csoportnev_hossz']+5,1)."\t csoportból.\n"; } } - $q = "DELETE FROM ".$db['nxt_dbname'].".".$db['nxt_prefix']."groups WHERE gid='".$groupName."'; " ; + $q = "DELETE FROM ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link,$db['nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\n NXT -> \t****** csoport törlési hiba. (adatbázis) ******\n"; } else { - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:delete \"$groupName\" '"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -339,14 +355,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function group_user_add($groupName, $userAccount){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:adduser \"$groupName\" $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } function group_user_del($groupName, $userAccount){ // Kitöröl egy felhasználót egy Nextcoud csoportból global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:removeuser \"$groupName\" $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -354,56 +370,48 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function create_dir($user, $path){ // Készít egy mappát a: data/$user/files/$path alá global $occ_user, $occ_path,$log; - $ret = false; - if(!file_exists($occ_path."/data/".$user."/files/")){ // Ha Még nincs home könyvtára sem - $ret = mkdir($occ_path."/data/".$user."/files/", 0755, true); // Akkor létrehozza - chown($occ_path."/data/".$user, $occ_user); - chgrp($occ_path."/data/".$user, $occ_user); - chown($occ_path."/data/".$user."/files/", $occ_user); - chgrp($occ_path."/data/".$user."/files/", $occ_user); - if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/"."\" \t created.\n"; } - } - if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még mindig nen könyvtár - $ret = mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza + $ret = null; + if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még nem létezik + $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? } return $ret; } - function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát + function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát global $occ_user, $occ_path,$log; $ret = 0; - if(is_dir(pathinfo($occ_path."/data/".$user."/files/".$path)['dirname'] )){ - $h = fopen($occ_path."/data/".$user."/files/".$path, 'w+'); + if( ($h = @fopen($occ_path."/data/".$user."/files/".$path, 'w+')) !== false ){ $ret = fwrite($h, $msg ); fclose($h); chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); if($log['verbose'] > 5) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } else { - if($log['verbose'] > 5) { echo "php ->\tERROR: \"".pathinfo($occ_path."/data/".$user."/files/".$path)['dirname']."\" \t dir not found.\n"; } + if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } } return $ret; } - function files_scan($user, $path ){ // Nextcloud files:scan + function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" files:scan --path=\"".$user."/files/".$path."\" '"; // -v + $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } - function user_notify($user, $msg, $title ){ // Nextcloud files:scan + function user_notify($user, $msg, $title ){ // Nextcloud értesítés global $occ_user, $occ_path, $log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" notification:generate -l \"".$msg."\" -- ".$user." \"".$title."\" '"; + $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } - function scan_dir($user, $path ){ // Nextcloud files:scan + function scan_dir($user, $path ){ // PHP mappa listázása global $occ_user, $occ_path,$log; $ret = array(); if(is_dir($occ_path."/data/".$user."/files/".$path)){ @@ -416,32 +424,29 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im return $ret; } - function clean_dir($user, $path, $tankorei){ + function clean_dir($user, $path, $tankorei){ //Tankörmappák kitisztítása (path: mappagyökér) global $occ_user, $occ_path, $log, $m2n; $listdir = scan_dir($user, $path); $ret[0] = array(); $ret[1] = array(); $ret[2] = array(); foreach($listdir as $key => $val) { - if((!in_array($val, $tankorei) || !is_dir($occ_path."/data/".$user."/files/".$path."/".$val)) && $val != "INFO.txt"){ //Nincs a tanköreiben, akkor törölni kell (de csak ha üres) + if((!in_array($val, $tankorei) && !in_array(basename($val,"_beadás"), $tankorei) || !is_dir($occ_path."/data/".$user."/files/".$path."/".$val)) && $val != "INFO.txt"){ //Nincs a tanköreiben, akkor törölni kell (de csak ha üres) if(is_dir($occ_path."/data/".$user."/files/".$path."/".$val) && empty(scan_dir($user, $path."/".$val))){ // Ha mappa, és üres -> törlés rmdir($occ_path."/data/".$user."/files/".$path."/".$val); $ret[0][] = $val; if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } + } else { //Nem mappa, vagy nem üres - //if( @unlink($occ_path."/data/".$user."/files/".$path."/".$val.time().".please-remove") === true && $log['verbose'] > 0 ){ // Már "xxxx.please-remove" is volt... - // echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."/".$val.time()."\" deleted!!!\n"; - // user_notify($user,"Fájl: ".$path."/".$val.".please-remove Illegális helyen, volt. Automata által törölve.", "Fájl: ".$path."/".$val.".please-remove törölve!"); - //} if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él - rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".$user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove"); + rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; - user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Később automatikusan törlésre kerül! A fájl átnevezve, új neve --> ".basename($val, '.please-remove').".".time().".please-remove", "Fájl/Mappa rossz helyen! --> ".$path."/".basename($val, '.please-remove').".".time().".please-remove" ); - if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".basename($val, '.please-remove').".".time().".please-remove"."\n"; } + user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".rnescp(basename($val, '.please-remove').".".time().".please-remove"), "Fájl/Mappa rossz helyen! --> ".rnescp($path."/".basename($val, '.please-remove').".".time().".please-remove" )); + if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } } else { - // A Hanyagul otthagyottakért figyelmeztessen: - user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Később automatikusan törlésre kerül! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); + // A Hanyagul otthagyottakért csak figyelmeztessen: + user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjelölve! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); } } } else { @@ -450,46 +455,58 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } return $ret; } + - - function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja - global $groupdir_user, $m2n, $occ_path, $occ_user,$log; + function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja $path=tankörgyökér + global $m2n, $occ_path, $occ_user,$log; $ret = array(false, false); - if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl - if(@unlink( $occ_path."/data/".$user."/files/".$path."backup") && $log['verbose'] > 0 ){ //Helyet csinál a backupnak (sorry) - rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path."backup"); //Átnevezi, hogy azért mégse vasszen oda - echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t deleted!!!\n"; - user_notify($user,"Fájl: $val \nIllegális helyen, és útban volt. \nAutomata által törölve.", "Fájl: $val törölve!"); - } + rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda + echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; + user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); + files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli } - - $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása - $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // Információs fájlt is - } + $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása + $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // INFO.txt (Újra)Írása. + if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni + $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec($e); + files_scan($user, $path); + } + } return $ret; } - function groupdir_create_groupdir($user, $oktId, $path){ - global $groupdir_user, $m2n; - if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ - return create_dir($user, $path); // Tankörmappa gyökér létrehozása - } + function groupdir_create_groupdir($user, $oktId, $path){ // $path = tankörmappa + global $m2n; + $ret = false; + if( basename($path,"_beadás") != $m2n['mindenki_tanar'] and basename($path,"_beadás") != $m2n['mindenki_diak'] and basename($path,"_beadás") != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + $ret = create_dir($user, $path); // Tankörmappa létrehozása + if($ret === true){ + files_scan($user, $path); + } + } + return $ret; + } } - function groupdir_finish($user, $oktId, $path, $tankorei){ - global $groupdir_user, $m2n; - $ret[0] = array(); - $ret[1] = array(); - $ret[2] = array(); - $ret[3] = array(); - if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path=tankörgyökér + global $m2n; + $ret = array(array(),array(),array(),false,false); //return sekelton + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ if(isset($tankorei)) { $ret = clean_dir($user, $path, $tankorei); + $ret[3] = false; //mert felülírja a skeleton-t } - files_scan($user, $path); // Tankörmappa gyökér létrehozása - $ret[3] = true; + if(!empty($ret[0]) or !empty($ret[1]) ){ + files_scan($user, $path); // Nextcloud értesítése + $ret[3] = true; + } + files_scan($user, $path."/INFO.txt"); } return $ret; } @@ -527,7 +544,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im return $list; } - function add_param_to_user($list, $user, $paramname, $param){ // Paramétert állít be a felhasználónak. + function set_param_to_user($list, $user, $paramname, $param){ // Paramétert állít be a felhasználónak. foreach($list as $key => $val){ // Csak rendezett tömbökön! (vagy mégsem?) if($user === null or ($user !== null && $val['userAccount'] == $user )){ //Vagy mindenki vagy adott user @@ -576,7 +593,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )); "; */ //csak a megadott évfeolyamokhoz kötődő tankörök: - $qq = "SELECT tanev FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; + $qq = "SELECT tanev FROM intezmeny_".mysqli_real_escape_string($link, $m2n['isk_rovidnev']).".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$qq."\n"; } if( ($r = mysqli_query($link, $qq)) !== FALSE ){ $ev = mysqli_fetch_array($r, MYSQLI_ASSOC); @@ -705,7 +722,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } //------------------------------------------------------------------------------------------------------------------------------- - if($log['verbose'] > 0) { echo "\n\n######## Mayor-Nextcloud Script ########\n\n\n"; } + if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").")\n\n"; $t_start = microtime(true); } + if( file_exists($cfgfile)===TRUE ){ include($cfgfile); @@ -713,7 +731,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { if($log['verbose'] > 0) { echo "*** M2N Config betöltése: (".pathinfo($cfgfile)['dirname']."/mayor-nextcloud.php fejlécéből.) ***\n\n"; } } - + $log['verbose'] = $m2n['verbose']; + if(isset($m2l['always_set_diak_quota'])){ $m2n['always_set_diak_quota'] = $m2l['always_set_diak_quota']; } + if(isset($m2l['groupdir_users'])){ $m2n['groupdir_users'] = $m2l['groupdir_users']; } + if(isset($m2l['log_verbose'])){ $log['verbose'] = $m2l['log_verbose']; } + if( $m2n['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } if(($link = db_connect($db)) == FALSE){ //csatlakozás echo "\n******** MySQL (general) kapcsolat hiba. ********\n"; @@ -787,22 +809,25 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $mayor_tanar = get_mayor_tanar($link2); //Rendezve jön $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $m2n['mindenki_tanar']); //csak rendezett tömbökön! - $mayor_tanar = add_param_to_user($mayor_tanar, null, 'quota', $m2n['default_quota']); - $mayor_tanar = add_param_to_user($mayor_tanar, null, 'diakId', -1 ); + $mayor_tanar = set_param_to_user($mayor_tanar, null, 'quota', $m2n['default_quota']); + $mayor_tanar = set_param_to_user($mayor_tanar, null, 'diakId', -1 ); usort($mayor_tanar, "mayor_userlistcmp"); $mayor_diak = get_mayor_diak($link2); //mysql rendezi $mayor_diak = add_tk_to_users( $mayor_diak, null, $m2n['mindenki_diak']); //csak rendezett tömbökön! - $mayor_diak = add_param_to_user($mayor_diak, null, 'quota', $m2n['diak_quota']); - $mayor_diak = add_param_to_user($mayor_diak, null, 'tanarId', -1 ); + $mayor_diak = set_param_to_user($mayor_diak, null, 'quota', $m2n['diak_quota']); + $mayor_diak = set_param_to_user($mayor_diak, null, 'tanarId', -1 ); usort($mayor_diak, "mayor_userlistcmp"); $mayor_user = array(); - $mayor_user = array_merge($mayor_tanar, $mayor_diak); - $mayor_user = add_tk_to_users( $mayor_user, null, $m2n['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport - usort($mayor_user, "mayor_userlistcmp"); - + $mayor_user = array_merge($mayor_tanar, $mayor_diak); //Tanár, és diák lista együtt if(isset($m2n['megfigyelo_user']) && $m2n['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére + $mayor_user = array_merge($mayor_user, array( + array( 'userAccount' => $m2n['megfigyelo_user'], //A virtuális "naplo_admin" legyen egyben tanár is + 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin", + 'email' => $m2n['default_email'], + 'tankorNev' => $m2n['mindenki_tanar'], + ))); foreach(get_mayor_tankor($link2) as $key => $val){ $mayor_user = array_merge($mayor_user, array( array( 'userAccount' => $m2n['megfigyelo_user'], @@ -817,9 +842,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - - usort($mayor_user, "mayor_userlistcmp"); //ha a megfigyelo helyesen van egy rendezett lista végén, nem kell ismét rendezni + usort($mayor_user, "mayor_userlistcmp"); //rendezés + $mayor_user = add_tk_to_users( $mayor_user, null, $m2n['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport + usort($mayor_user, "mayor_userlistcmp"); //Végén ismét rendezzük az egészet $mayor_user = array_merge($mayor_user, array(array('userAccount' => null, 'fullName' => null, 'tankorNev' => null, 'diakId' => 0, 'tanarId' => 0,)) ); //strázsa a lista végére + $nxt_user = nxt_user_list(); $nxt_group = nxt_group_list(); $m2n_catalog = catalog_userlist($link); @@ -855,7 +882,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 1 ){ echo "-\t\tA felhasználó:".po("\t$curr",$m2n['felhasznalo_hossz'],1)."-\tnyilvántartásba véve.\n";} } //--------------------------------------- QUOTA -----------------------------------// - if($ALWAYS_SET_DIAK_QUOTA === true && $curr_tanarId < 0 && $curr_diakId > 0 ){ //Állítsunk-e erőből (diák) qvótát? + if($m2n['always_set_diak_quota'] === true && $curr_tanarId < 0 && $curr_diakId > 0 ){ //Állítsunk-e erőből (diák) qvótát? $params['quota'] = $m2n['diak_quota']; // Alapértelmezett diák kvóta user_set($curr,$params); if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\t\n";} @@ -874,11 +901,12 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tHozzáadva a:".po("\t$key3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n";} group_user_add($key3, $curr); //A "mindenki csoportot is ellenőrzi } + //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - if($key3 != $m2n['mindenki_tanar'] && $key3 != $m2n['mindenki_diak'] && $key3 != $m2n['mindenki_tanar']){ //Ezekre a csoportokra minek? - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} - } + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} //------------------------------------- Tankör (Csoportból) törlés -------------------------// } else { //Nem szerepel a tankörei között @@ -898,7 +926,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im break; } - } + } unset($nxt_user[$curr]); //Felhasználó Megvizsgálva, többször már nem kell dönteni róla. if($curr != $key2 and $curr != null){ //Nincs még ilyen felhasználó @@ -914,13 +942,13 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if(array_key_exists($val3, $nxt_group)) { // de, csak akkor, ha az a csoport a Nextcloud-ban is létezik. group_user_add($val3, $curr); if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } - if($val3 != $m2n['mindenki_tanar'] && $val3 != $m2n['mindenki_diak'] && $val3 != $m2n['mindenki_tanar']){ //Ezekre a csoportokra minek mappa? - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} - } + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} } } - $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); + $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} @@ -1006,8 +1034,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im @mysqli_close($link2); @mysqli_close($link); - if ($log['verbose'] > 0 ){echo "kész.\n";} //endline - + $t_run = round((microtime(true) - $t_start)/60, 3); + if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run." min.)\nkész.\n";} //endline + } else { echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; } |