ForumCała strona

Nawigacja

Aktualnie online

Gości online: 4

Użytkowników online: 0

Łącznie użytkowników: 25,393
Najnowszy użytkownik: Assassin

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

JazOOn
06.12.2024 23:45:46
Amen

Zbigniew@
17.11.2024 11:33:24
Nie ten grzeszy kto pije, ale ten, kto się nie upije.

JazOOn
16.11.2024 20:46:18
tja

Zbigniew@
15.11.2024 18:58:17
Kto pije, ten nie bije.

JazOOn
31.10.2024 20:49:47
Kto pije?

Pobierz nową wersję
Pobierz podręcznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Zobacz temat

Czy możliwość tworzenia MultiGrup przydała by się wam?
Tak Tak 20%[1 głos]
Tak, ale radze sobie bez Tak, ale radze sobie bez 20%[1 głos]
Nie Nie 60%[3 głosów]
Głosów ogółem : 5
 Drukuj temat
MultiGrupy - Grupy złożone z kilku grup
Kikiro
Witam,

wiele razy już od czasu swojej rejestracji na tym forum, poszukiwałem informacji właśnie apropo multigrup. Nie wiem czy brak znalezienia jakiejkolwiek wzmianki na ten temat świadczy o moim braku umiejętności wyszukiwania (wątpię) czy też nie interesuje was ten temat. Postanowiłem się więc sam z nim zmierzyć.

tabelę user_groups rozszerzyłem o 1 kolumnę: group_multi i tam postanowiłem dodawać - póki co ręcznie - grupy powiązane w przypadku takiej konieczności. Czyli idea jest taka że jeśli to pole pozostaje puste to grupa jest traktowana jak normalna grupa jednak gdy zostanie wypełnione o wartości, którymi są ID grup podrzędnych, wtedy jest traktowana jako MultiGrupa. Przykładowa wartość pola group_multi: 1.2.3 - świadczyła by o powiązaniu grupy 1,2 i 3.

dodatkowo zmieniłem oczywiście funkcję: checkgroup() w pliku maincore.php
zmodyfikowany kod funkcji checkgroup()
Pobierz kod źródłowy  GeSHi: PHP
  1. function checkgroup($group) {
  2. global $userdata, $groups_cache;
  3. $user_groups = explode(".", $userdata['user_groups']);
  4. $n = count($user_groups);
  5. if (!$groups_cache) { cache_groups(); }
  6. for ($i=1;$i<$n; $i++) {
  7. $ug = $user_groups&#91;$i&#93;;
  8. if ($groups_cache&#91;$ug-1&#93;&#91;'group_multi'&#93; != "") {
  9. $groups_cache_array = explode(".", $groups_cache&#91;$ug-1&#93;&#91;'group_multi'&#93;);
  10. } else {
  11. $groups_cache_array = $groups_cache&#91;$ug-1&#93;&#91;'group_id'&#93;;
  12. }
  13. $m = count($groups_cache_array);
  14. $warunek = "";
  15. for ($j=0;$j<$m; $j++) {
  16. if ($groups_cache_array&#91;$j&#93; == $group) {
  17. if ($j+1 == $n) {
  18. $warunek .= "in_array($group, explode(".", ".$groups_cache_array&#91;$i&#93;&#91;'group_multi'&#93;."))";
  19. } else {
  20. $warunek .= "in_array($group, explode(".", ".$groups_cache_array&#91;$i&#93;&#91;'group_multi'&#93;.")) || ";
  21. }
  22. }
  23. }
  24. }
  25. if (iSUPERADMIN) { return true; }
  26. elseif (iADMIN && ($group == "0" || $group == "101" || $group == "102")) { return true;
  27. } elseif (iMEMBER && ($group == "0" || $group == "101")) { return true;
  28. } elseif (iGUEST && $group == "0") { return true;
  29. } elseif (iMEMBER && ($warunek)) {
  30. return true;
  31. } else {
  32. return false;
  33. }
  34. }
Zinterpretowano w sekund: 0.044, wykorzystano GeSHi 1.0.8.10

Jednak kod ten wymaga sporo zapytań do bazy dlatego moje pytannie do was czy macie jakieś inne propozycje rozwiązania tego problemu?

(testowane na PHP-Fusion v7.02.01)

Edit:

w sumie dziś na spokojnie wykonując testy, dochodzi praktycznie 1 zapytanie i nie ma żadnych przesłanek oby czas ładowania strony się wydłużył. Zatem polecam testować i dawać znać mimo wszystko czy macie jakieś lepsze rozwiązanie..
Edytowane przez Kikiro dnia 03.05.2011 08:30:45
 
Wścibski Gość
Dodany dnia 23.12.2024 18:21:07
Pan Kontekstualny

Postów: n^x
Data rejestracji: Zawsze

Polecamy hosting SferaHost.pl
IP: localhost  
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl