file_put_contents(RSYNC_DIR . 'nyk_ekstern', $knetshadowfile_content); // skriv ny smbpasswd fil gem_kolon_separeret_fil(SMBPASSWD, $smbpasswd); // indlæs group fil $unix_grupper = trimlower_array_keys(hent_kolon_separeret_fil(UNIXFILE_GROUP)); // find næste group id $next_gid = 0; foreach ($unix_grupper as $gruppe) { if ($gruppe[2] > $next_gid && $gruppe[2] < 40000) { $next_gid = $gruppe[2] + 1; } } // hent grupper fra database, og opdater unix grupper $db_grupper = backend_hent_grupper(); foreach ($db_grupper as $gruppe) { $db_gruppemedlemmer = backend_hent_gruppe_medlemmer($gruppe['gruppenavn']); $lookup_gruppenavn = strtolower(trim($gruppe['gruppenavn'])); $medlemmer_brugernavne = array(); foreach ($db_gruppemedlemmer as $m) { $medlemmer_brugernavne[] = $m['brugernavn']; } if (isset($unix_grupper[$lookup_gruppenavn])) { $unix_gruppemedlemmer = explode(',', $unix_grupper[$lookup_gruppenavn][3]); // tilføj de nykbrugere der er blevet medlem foreach ($medlemmer_brugernavne as $dbmedlem) { if (!in_array($dbmedlem, $unix_gruppemedlemmer)) { $unix_gruppemedlemmer[] = $dbmedlem; } } // fjern de nykbrugere der ikke længere er medlem $unix_gruppemedlemmer_fjern = array();
mkdir_ne(MINIMALIST_DIR); $aliases_linjer = explode("\n", trim(file_get_contents(UNIXFILE_ALIASES))); $mail_liste_navne = array(); $grupper = backend_hent_grupper(); foreach ($grupper as $gruppe) { $liste_navn = preg_replace('/[^A-Za-z._-]/', '', $gruppe['mail_liste_navn']); if (!$liste_navn) { continue; } $mail_liste_navne[] = $liste_navn; // lav mappe til mailliste navne, og lav fil med mail addresser mkdir_ne(MINIMALIST_DIR . '/' . $liste_navn); $liste = ''; $medlemmer = array_merge(backend_hent_gruppe_medlemmer($gruppe['gruppenavn']), backend_hent_gruppe_medlemmer_eksterne($gruppe['gruppenavn'])); if ($gruppe['gruppenavn'] == 'nyk_alle_beboere') { file_put_contents('/tmp/mailtest', print_r(backend_hent_gruppe_medlemmer('nyk_alle_beboere'), true)); } foreach ($medlemmer as $medlem) { if (!$medlem['email']) { continue; } $liste .= $medlem['email'] . lav_options($medlem) . "\n"; } $liste_sti = MINIMALIST_DIR . '/' . $liste_navn . '/list'; if (@file_get_contents($liste_sti) !== $liste) { file_put_contents($liste_sti, $liste, LOCK_EX); } // skriv footer-fil hvis der er angivet footer $footer_sti = MINIMALIST_DIR . '/' . $liste_navn . '/footer'; if ($gruppe['mail_footer']) { $footer = wordwrap(iconv('UTF-8', 'ISO-8859-1', $gruppe['mail_footer']), 78);
try { backend_set_gruppemedlemskab($_POST['addmember'], $gruppenavn); $messages[] = 'Membership for user <i>' . $_POST['addmember'] . '</i> added.'; } catch (forkert_input_exception $e) { $errors[] = 'Membership for user <i>' . $_POST['addmember'] . '</i> could not be added.'; } } if (!empty($_POST['removemember'])) { $opdateret = true; backend_slet_gruppemedlemskab($_POST['removemember'], $gruppenavn); $messages[] = 'Membership for user <i>' . $_POST['removemember'] . '</i> removed.'; } // hvis noget som helst er opdateret if ($opdateret) { backend_opdater_datafiler(); // hent de opdaterede gruppemedlmemmer $gruppemedlemmer = backend_hent_gruppe_medlemmer($gruppenavn); } } $smarty->assign('gruppe', $gruppe); $smarty->assign('gruppemedlemmer', $gruppemedlemmer); $smarty->assign('gruppemedlemmer_eksterne', $gruppemedlemmer_eksterne); $smarty->assign('messages', $messages); $smarty->assign('errors', $errors); $smarty->assign('include_autocomplete', true); $smarty->assign('contenttemplate', 'admin-groups-members.tpl'); } } catch (Exception $e) { fatal_error($e); } $smarty->display(WEBFRONTEND_MAINTEMPLATE);
function hent_gruppe_medlemmer_test() { echo "Tester hent_gruppe_medlemmer: "; setup_testdata1(); $r = backend_hent_gruppe_medlemmer('testgruppe'); if (count($r) != 0) { fejl(__LINE__); } backend_set_gruppemedlemskab('nyktte', 'testgruppe'); $r = backend_hent_gruppe_medlemmer('testgruppe'); if (count($r) != 1) { fejl(__LINE__); } if ($r[0]['brugernavn'] != 'nyktte') { fejl(__LINE__); } backend_slet_gruppemedlemskab('nyktte', 'testgruppe'); teardown_testdata1(); echo "ok\n"; }