Kom ihåg mig?
Home Menu

Menu


Rekursiv funktion, grupper med arv

Ämnesverktyg Visningsalternativ
Oläst 2013-08-09, 17:57 #1
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Standard Rekursiv funktion, grupper med arv

Hallå!
Jag måste ha hjälp med detta nu. Suttit fast ett tag. Det handlar om en rekursiv funktion.

Jag har valt att skapa ett gruppsystem med hjälp av YAML. Såhär ser konfigurationen ut nu. http://pastebin.com/2v01wV14

Och efter att ha laddat in detta med PHP får jag en array som ser ut såhär: http://pastebin.com/6qnKAYka

Allting funkar hittills! Nu måste jag bara hämta alla behörigheter hos en viss grupp. Jag måste också räkna med arven som varje grupp har. Med arv menar jag behörigheter som gruppen ärver från en annan grupp.

Såhär ser det ut förtillfället och jag får bara massa felmeddelanden. Jag lyckas bara inte pussla ihop detta. Hjälp en som har huvudvärk.
PHP-kod:
function LoadPermissions($gid) {
        include(
'Spyc.php');
        
$groups Spyc::YAMLLoad('groups.yml');
        foreach(
$groups["groups"] as $key => $group
        {
            if(
$gid == $group["id"]) 
            {                
                if(
$group["inheritance"] != "") {
                    
$inherited_permissions LoadInheritedPermissions($group["inheritance"], $groups);
                    
$group["permissions"] = array_merge($group["permissions"], $inherited_permissions);
                }
                
var_dump($group["permissions"]);
                return 
$group;
            }
        }
    }
    
    
// Den fantastiska rekursiva funktionen
    
function LoadInheritedPermissions($inherited$groups
    {
        
// En variabel för att spara alla permissions
        
$tmp_permissions = array();
        
        
// Loopa igenom alla grupper för att hitta arvet
        
foreach($groups["groups"] as $key => $group)
        {
            
// Här hittar vi vårt arv
            
if($key == $inherited
            {
                
// Spara ner dessa permissions
                
$tmp_permissions array_merge($tmp_permissions$group["permissions"]);
                
                
// Kolla om detta arv har ett arv
                
if($group["inheritance"] != ""
                {
                    
// Då kör vi denna funktion igen
                    
$tmp_permissions array_merge($tmp_permissionsLoadInheritedPermissions($group["inheritance"], $groups));
                }
                return 
$tmp_permissions;
            }
        }
    } 
Anaxa är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:27.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017