aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--egyéb/nextcloud/mayor-nextcloud.cfg.php94
-rw-r--r--egyéb/nextcloud/mayor-nextcloud.php273
2 files changed, 313 insertions, 54 deletions
diff --git a/egyéb/nextcloud/mayor-nextcloud.cfg.php b/egyéb/nextcloud/mayor-nextcloud.cfg.php
index 2441c2aa..6115492c 100644
--- a/egyéb/nextcloud/mayor-nextcloud.cfg.php
+++ b/egyéb/nextcloud/mayor-nextcloud.cfg.php
@@ -25,11 +25,13 @@ $m2n['csoport_prefix'] = "(tk) ";
$m2n['default_email'] = "indulo@iskola.hu";
$m2n['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ";
$m2n['default_quota'] = "10GB";
-$m2n['diak_quota'] = "2GB";
+$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['groupdir_prefix'] = "Iskolai Távoktatás";
$m2n['mindenki_csop'] = "naplós_felhasználók";
$m2n['mindenki_tanar'] = "naplós_tanárok";
$m2n['mindenki_diak'] = "naplós_diákok";
@@ -38,12 +40,58 @@ $m2n['megfigyelo_user'] = "naplo_robot";
$m2n['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att')
$m2n['verbose'] = 3 ;
-$occ_path = "/var/www/nextcloud/";
+$occ_path = "/var/www/nextcloud/";
$occ_user = "www-data";
+$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.
+
+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 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.
+
+
+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.
+
+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.
+
+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.
+
+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.
+
+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". )
+
+
+*** Tipp:
+Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, a tanár által, az összes diáknak 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.
+
+EOT;
+
+
/*
Nextcloud(13+) - Mayor script
@@ -134,7 +182,12 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés)
$m2n['default_passw'] = "EHYmGktzrdfS7wxJR6DF11jJ"; //Az induló jelszó a Nextcloud-ban a felhasználóknak. (érdemes erőset/hosszút megadni, a botnet-ek/hackerek miatt)
- $m2n['default_quota'] = "10GB"; //Az indulási fájl-kvóta a Nextcloud-ban. (Rendszergazda később átállíthatja kézzel.)
+ $m2n['default_quota'] = "10GB"; //Az általános indulási fájl-kvóta a Nextcloud-ban. (A wbes felületen később módosítható.)
+ // Amikor új felhasználót ad hozzá, akkor az itt megadott méretre állítja a qvótáját.
+ // Midel a diákoknak külön qvótát lehet beállítani, ezért ez értelemszerűen már csak a tanárokra vonatkozik.
+
+ $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.
$m2n['default_lang'] = "hu"; //Az alapértelmezett nyelv (később minden felhasználó átállíthatja magának)
@@ -148,16 +201,20 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés)
$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['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.
+ // 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_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.
+ $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.
$m2n['zaras_tartas'] = "2018-06-19"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig)
- // Ha már nem kell, akkor állítsd "1970-01-01"-ra !;
+ // Ha már nem kell, akkor állítsd "1970-01-01"-ra !;
+
+ $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_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,
@@ -183,16 +240,27 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés)
// Ez alapértelmezetten a maxor-nextcloud.php -val kell egy könyvtárba legyen.
- FONTOS!!
- A Nextcloud szerver "occ" parancsa elérhető kell legyen a script számára!
- 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!
+
+ FONTOS!!
+ A Nextcloud szerver "occ" parancsa elérhető kell legyen a script számára!
+ 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
+
+ --create-groupdir <username>: A távoktatást segítő könyvtárstruktúrát csak az <username> felhasználónak hozza létre.
+
+
+
+
További Információk:
-
- Lehetőség van a scriptet a "--loglevel xx" kapcsolóval is indítani. (>>> php mayor-nextcloud.php --loglevel 3 )
Esetleg érdemes lehet a scriptet betenni a "cron"-ba (éjszakára), így naponta lefut, és követi napló változásait.
(Ez esetben figyelni kell arra, hogy mayorban a tankör-diák, tankör-tanár összerendelések az év végén lejárhatnak, (pl. júni. 15-én)
diff --git a/egyéb/nextcloud/mayor-nextcloud.php b/egyéb/nextcloud/mayor-nextcloud.php
index 7daabd95..4ee23a17 100644
--- a/egyéb/nextcloud/mayor-nextcloud.php
+++ b/egyéb/nextcloud/mayor-nextcloud.php
@@ -22,13 +22,15 @@ $m2n['csoport_prefix'] = "(tk) ";
$m2n['default_email'] = "indulo@iskola.hu";
$m2n['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ";
$m2n['default_quota'] = "10GB";
-$m2n['diak_quota'] = "2GB";
+$m2n['diak_quota'] = "2GB";
$m2n['min_osztalyok'] = array(); //pl: array('9.a','11.a');
$m2n['csoportnev_hossz'] = 40;
$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['groupdir_prefix'] = "tavsuli";
$m2n['mindenki_csop'] = "naplós_felhasználók";
$m2n['mindenki_tanar'] = "naplós_tanárok";
$m2n['mindenki_diak'] = "naplós_diákok";
@@ -37,7 +39,8 @@ $m2n['verbose'] = 3 ;
$occ_path = "/var/www/nextcloud/";
$occ_user = "www-data";
-
+$ALWAYS_SET_DIAK_QUOTA = false;
+$groupdir_user = "naploadmin";
$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); }
@@ -50,9 +53,12 @@ $replace = array( 'aa', 'ae', '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'] = $argv[$i+1]; $i++;}
- if(@$argv[$i] == "--set-diak-quota" and is_numeric($argv[$i+1])){ $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( $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!
@@ -273,18 +279,21 @@ 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']))
+ if(isset($params['quota'])){
$e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount files quota \"".$params['quota']."\"'";
if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; }
shell_exec( $e );
- if(isset($params['email']))
+ }
+ if(isset($params['email'])){
$e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount settings email \"".$params['email']."\"'";
if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; }
shell_exec( $e );
- if(isset($params['lang']))
+ }
+ if(isset($params['lang'])){
$e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount core lang \"".$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
@@ -302,7 +311,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
shell_exec($e);
}
}
- }
+ }
function group_del($groupName){ // Csoport törlése a Nextcloud-ból
global $occ_user,$occ_path,$db,$link,$log,$m2n;
@@ -342,6 +351,144 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
shell_exec($e);
}
+
+ 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/".$path)){ // Ha Még mindig nen könyvtár
+ $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"; }
+ }
+ return $ret;
+ }
+
+
+ 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+');
+ $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"; }
+ }
+ return $ret;
+ }
+
+ function files_scan($user, $path ){ // Nextcloud files:scan
+ global $occ_user, $occ_path,$log;
+ $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" files:scan --path=\"".$user."/files/".$path."\" '";
+ if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; }
+ shell_exec($e);
+ }
+
+ function user_notify($user, $msg, $title ){ // Nextcloud files:scan
+ global $occ_user, $occ_path, $log;
+ $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" notification:generate -l \"".$msg."\" -- ".$user." \"".$title."\" '";
+ if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; }
+ shell_exec($e);
+ }
+
+ function scan_dir($user, $path ){ // Nextcloud files:scan
+ global $occ_user, $occ_path,$log;
+ $ret = array();
+ if(is_dir($occ_path."/data/".$user."/files/".$path)){
+ $ret = scandir($occ_path."/data/".$user."/files/".$path);
+ if($ret[0] == "." && $ret[1] == ".."){
+ unset($ret[0]);
+ unset($ret[1]);
+ }
+ }
+ return $ret;
+ }
+
+ function clean_dir($user, $path, $tankorei){
+ 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(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");
+ $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"; }
+ } 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 );
+ }
+ }
+ } else {
+ $ret[2][] = $val;
+ }
+ }
+ 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;
+ $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(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!");
+ }
+ }
+
+ $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
+ }
+ 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_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){
+ if(isset($tankorei)) {
+ $ret = clean_dir($user, $path, $tankorei);
+ }
+ files_scan($user, $path); // Tankörmappa gyökér létrehozása
+ $ret[3] = true;
+ }
+ return $ret;
+ }
+
+
+
+
function add_tk_to_users($list, $user, $tankorname){ //Naplón kívüli csoportokat adhatunk a felhasználókhoz
$curr = "";
foreach($list as $key => $val){ // Csak rendezett tömbökön!
@@ -372,9 +519,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
return $list;
}
- function add_param_to_user($list, $user, $paramname, $param){ //Naplón kívüli csoportokat adhatunk a felhasználókhoz
- foreach($list as $key => $val){ // Csak rendezett tömbökön!
- if($user === null or ($user !== null && $val['userAccount'] == $user )){ //Vagy mindenki vagy adott user + rendezett lista
+ function add_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
$list[$key][$paramname] = $param; // A paraméter
}
@@ -386,7 +533,6 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
return strcmp($a['userAccount'], $b['userAccount']);
}
-
function po($inp,$ll,$dir){ // Szép kimenetet gyárt
while(grapheme_strlen($inp) < $ll){
if($dir == 0){
@@ -632,17 +778,20 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
if ($log['verbose'] > 0 ){ echo "\n***\tFelhasználók egyeztetése.\n";}
$mayor_tanar = get_mayor_tanar($link2); //Rendezve jön
- $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $m2n['mindenki_tanar']); //tanár tankörök lekérdezése + minden tanár csoport
+ $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 );
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']); //diák tankörök lekérdezése + minden diák csoport
- usort($mayor_diak, "mayor_userlistcmp");
+ $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 );
+ 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']); //mindenki csoport
+ $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");
if(isset($m2n['megfigyelo_user']) && $m2n['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére
@@ -650,16 +799,18 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
$mayor_user = array_merge($mayor_user, array(
array( 'userAccount' => $m2n['megfigyelo_user'],
'email' => $m2n['default_email'],
- 'tanarId' => 0,
+ 'tanarId' => 1,
'diakId' => 0,
'tankorId' => $val['tankorId'],
'fullName' => "Napló Admin",
'tankorNev' => $val['tankorNev'],
)));
+ //if($val['tankorNev'] == "(tk) 10.b kémia" ){ break; }
+
}
}
- // usort($mayor_user, "mayor_userlistcmp"); // előbb rendezzük
- $mayor_user = array_merge($mayor_user, array(array('userAccount' => null, 'fullName' => null, 'tankorNev' => null,)) ); //strázsa a lista végére
+ // usort($mayor_user, "mayor_userlistcmp"); //ha a megfigyelo helyesen van egy rendezett lista végén, nem kell ismét rendezni
+ $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);
@@ -690,44 +841,85 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
catalog_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi,
user_ena($curr); // ha a script tiltotta le.
}
- } else { //Nincs a katalógusban, nincs tiltva, felvesszük
+ } else { //Nincs a katalógusban, nincs tiltva, felvesszük
catalog_useradd($link, $curr);
if ($log['verbose'] > 1 ){ echo "-\t\tA felhasználó:".po("\t$curr",$m2n['felhasznalo_hossz'],1)."-\tnyilvántartásba véve.\n";}
}
-
- foreach($nxt_group as $key3 => $val3){ //A tankörök egyeztetése
- if(in_array($key3, $tankorei) /*or $key3 == $m2n['mindenki_csop']*/){ //szerepel-e a felhasználó tankörei között a csoport, vagy a "mindenki" csoport?
- if( in_array($curr, $val3)){ //Igen, és már benne is van +++
+ //--------------------------------------- QUOTA -----------------------------------//
+ if($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";}
+ }
+ //------------------------- Tankörmappa györkér + info.txt ------------------------//
+ $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']);
+ if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix'],$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";}
+ if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";}
+
+ //------------------------------------------ Tankörök egyeztetése -------------------------------------------//
+ foreach($nxt_group as $key3 => $val3){ //A tankörök egyeztetése
+ if(in_array($key3, $tankorei) /*or $key3 == $m2n['mindenki_csop']*/){ //szerepel-e a felhasználó tankörei között a csoport, vagy a "mindenki" csoport?
+ if( in_array($curr, $val3)){ //Igen, és már benne is van +++
if ($log['verbose'] > 3 ){ echo " -\t\tBenne van a:".po("\t$key3",$m2n['csoportnev_hossz'],1)."\tcsoportban.\n";}
- } else { //Nincs, most kell beletenni
+ } else { //Nincs, most kell beletenni
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
+ 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";}
}
- } else { //Nem szerepel a tankörei között
- if(in_array($curr, $val3) and (substr($key3, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix']) ){
- // korábban benne volt egy tankörben, de már nincs, vagy a hozzátartozó tankörben már nem tanít => kiveszi
+
+ //------------------------------------- Tankör (Csoportból) törlés -------------------------//
+ } else { //Nem szerepel a tankörei között
+ if(in_array($curr, $val3) and (substr($key3, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix']) ){ // korábban benne volt egy tankörben, de már nincs, vagy a hozzátartozó tankörben már nem tanít => kiveszi
if ($log['verbose'] > 1 ){if($log['curr'] !== ""){echo "*".$log['curr'];$log['curr'] = "";} echo "* -\t\tTörölve a:".po("\t$key3",$m2n['csoportnev_hossz'],1)."\tcsoportból.\n";}
- group_user_del($key3, $curr); //egy korábbi tankör lehetett...
+ group_user_del($key3, $curr); //egy korábbi tankör lehetett...
}
}
- }
+ }
+ //------------------------------------- Tankörmappa törlés + NXT-rescan ----------------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár
+
+ $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], $tankorei);
+ if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}}
+ if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}}
+ if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}}
+ 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";}
+
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ó
user_add($curr, $curr_n); //Akkor hozzá kell adni
catalog_useradd($link, $curr);
if ($log['verbose'] > 2 ){ echo "**-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tlétrehozva.\n";}
-
+
+ $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']);
+ if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix'],$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";}
+ if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";}
+
foreach($tankorei as $key3 => $val3){ //Hozzáadja a (tankör)csoportokhoz is egyből,
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);
+ group_user_add($val3, $curr);
if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; }
+ 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']."/ mappa\n";}
+ }
}
- }
- $params['quota'] = $m2n['default_quota']; // Alapértelmezett kvóta
+ }
+ $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";}
+
+
+ if($curr_diakId > 0) { //Ennyi is elég // Diákról van szó /// if($curr_tanarId < 0 && $curr_diakId > 0)
+ $params['quota'] = $m2n['diak_quota']; // Alapértelmezett kvóta
+ } else {
+ $params['quota'] = $m2n['default_quota']; // Alapértelmezett kvóta
+ }
$params['lang'] = $m2n['default_lang']; // Nyelv
if($curr_e == ""){
$params['email'] = $m2n['default_email']; // e-mail beállítása
@@ -742,13 +934,15 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
$tankorei = array(); // új ciklus kezdődik
$curr = $val['userAccount']; //
$curr_n = $val['fullName']; //
+ $curr_tanarId = $val['tanarId'];
+ $curr_diakId = $val['diakId'];
$curr_e = @$val['email']; //
}
$tankorei[] = $val['tankorNev']; // Másodszor/Egyébként a csoportok (tankörök) gyűjtése
}
-// A megszűnő felhasználónevek egyeztetése
+// A (maradék) megszűnő felhasználónevek egyeztetése
if ($log['verbose'] > 0 ){ echo "\n***\tTörlendő/Letiltandó felhasználók egyeztetése.\n";}
$m2n_catalog = catalog_userlist($link);
foreach($nxt_user as $key => $val){ //Benne van a nyilvántartásban,
@@ -768,7 +962,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
// - akkor vagy új user, vagy már meglévő,
// - ezért őt kihúzza az $nxt_user listáról, --> megtartja
// ezután ha valaki még rajta van az $nxt_user listán, az
- // - vagy más, mayor_naplón kívüli user (rendszergazda vette föl) --> nem nyúl hozzá
+ // - vagy más, mayor_naplón kívüli user (rendszergazda vette föl) --> nem törli, ha kellene
// - vagy megszűnő, korábbi mayor_napló-s user --> törli (vagy letiltja)
// ha rajta van a $catalog listán is, és nincs rajta $mayor_user listán
// - akkor őt a script hozta létre régen --> megszűnő, törli (vagy letiltja)
@@ -813,6 +1007,3 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
?>
-
-
-