--=REKLAMA=--

Własne grupy użytkowników

Z Joomla!WikiPL

Używam własnych grup użytkowników (role użytkowników) w Joomla 1.5. Na przykład do grupy użytkowników zarejestrowanych dodałem kilka podgrup:

myproject
 customers
  customer A admin
 product manager
  product manager admin
 etc....

Korzystam z tych podgrup w moim rozszerzeniu, aby ustawić prawa dostępu.

Mimo że dodaję grupy do tabeli jos_core_acl_aro_groups i poprawnie ustalam grupom relacje, nie są one poprawnie wyświetlane na stronie menedżera użytkowników. Aby wyświetlić grupy poprawnie, konieczna jest zmiana kodu w pliku /administrator/components/com_users/admin.users.php około linii 285:

(Nie jestem pewien, w której wersji zostało to zmienione - ale w Joomla! 1.5.14 zmiany tej nie dokonujemy w pliku administrator/components/com_users/admin.users.php. Zmiany tej musimy dokonać w administrator/components/com_users/views/user/view.html.php w linii 113.)

if ( $userGroupName == $myGroupName && $myGroupName == 'administrator' )
   {
      // administrators can't change each other
      $lists['gid'] = '<input type="hidden" name="gid" value="'. $user->get('gid') .'" /><strong>'. JText::_( 'Administrator' ) .'</strong>';
   }
   else
   {
      $gtree = $acl->get_group_children_tree( null, 'USERS', false );

na następujący kod:

if ( $userGroupName == $myGroupName && $myGroupName == 'administrator' )
   {
      // administrators can't change each other
      $lists['gid'] = '<input type="hidden" name="gid" value="'. $user->get('gid') .'" /><strong>'. JText::_( 'Administrator' ) .'</strong>';
   }
   else
   {
      $gtree = $acl->get_group_children_tree( null, 'USERS', true);

Jeśli chcesz dodać swoje własne grupy użytkowników, zrób co następuje:

Wyedytuj tabelę jos_core_acl_aro_groups (np. za pomocą phpmyadmin) i dodaj swoje własne grupy. Upewnij się, że każdej grupie przypisujesz poprawnie grupę obejmującą (rodzica). Na przykład grupa zarejestrowanych użytkowników Joomla ma ID 19. Dodając własną grupę upewnij się, że w polu parent_id umieściłeś tę właśnie wartość – 19. Nie przypisuje jeszcze pól lft and rght, ale użyj poniższego kodu, by przebudować poprawnie drzewo (strukturę) grup.


<?php
// Edytuj zmienne ponizej, by dostosowac do swojej
// konfiguracji. Pozostaw localhost, chyba ze WIESZ
// ze trzeba podac inna nazwe serwera bazy danych niz localhost.
 
$user=UZYTKOWNIK ;
$password=HASLO ;
$db=BAZA_DANYCH ;
 
$host=localhost ;
 
    mysql_connect("$host", "$user", "$password") or
        die("Could not connect: " . mysql_error());
       mysql_select_db("$db");
 
    // 0-> parent_id in Joomla this is the value of the parent_id field of the Root record
    // 1-> start the left tree at 1
    rebuild_tree ( 0 , 1);
 
 
    function rebuild_tree($parent_id, $left) {
 
 
    // the right value of this node is the left value + 1
       $right = $left+1;
 
       // get all children of this node
       $result = mysql_query('SELECT id FROM jos_core_acl_aro_groups '.'WHERE parent_id="'.$parent_id.'";')
          or die(mysql_error());
 
       while ($row = mysql_fetch_array($result)) {
           // recursive execution of this function for each
           // child of this node
           // $right is the current right value, which is
           // incremented by the rebuild_tree function
           $right = rebuild_tree($row['id'], $right);
         }
 
       // we've got the left value, and now that we've processed
       // the children of this node we also know the right value
       mysql_query('UPDATE jos_core_acl_aro_groups SET lft='.$left.', rgt='.
                    $right.' WHERE id="'.$parent_id.'";');
 
       // return the right value of this node + 1
       return $right+1;
    }
echo 'Complete! Go check your Joomla User Admin!'
    ?>

Jeśli chcesz skorzystać ze swoich własnych grup użytkowników, na przykład by przypisać je do artykułów, żeby określone artykuły mogli przeglądać tylko klienci, musisz dodać te grupy do tabeli jos_groups, dokładnie przypisać ID + name grupy tak, aby name odpowiadało nazwom grup, które dodałeś do tabeli jos_core_acl_aro_groups.

© Ten materiał jest dokładnym albo swobodnym tłumaczeniem artykułu http://docs.joomla.org/Custom_user_groups udostępnionego na licencji JEDL na witrynie: Joomla! Official Documentation Wiki

Dziękujemy za wkład

» Stefan Wajda [zwiastun],