Temat: Kontrola poprawności drzewa

Hej mam pytanko - jak kontrolujecie poprawnosc drzewa ACL. Zauwazylem ze jezeli tak sobie od czapy usuniemy jakis wezel z aro lub aco, Cake zaczyna sypac bledami o niezgodnosci nod'ow.

Pytania:
1) macie jakis behavior lub funkcje kontrolujaca czy w drzewie nie zaszla jakas zmiana lub nie wystapil blad, a gdy zaszla to naprawialo by to drzewo?

2) jezeli nie to czy jest takie narzedzie lub funkcja ktora mozna wywolywac raz na jakis czas -> naprawiajaca wszystkie wezly.

PS: nie musza to byc jakies wklejane kody -> mozecie podac tylko opisowy schemat dzialania lub hasła to wygoogluje tongue

Ostatnio edytowany przez duke_piotr (2009-04-02 10:29:16)

2

Odp: Kontrola poprawności drzewa

Mark Story napisał shell do zarządzania ACO.
http://mark-story.com/posts/view/genera … osyncshell
Jak poszperasz na tej stronie  to znajdziesz też dobry tutorial do Auth i ACL oraz komponent, który tworzy menu na podstawie ACL.
Mam nadzieję, że pomogłem.

Ostatnio edytowany przez alfabeta (2009-04-02 11:25:29)

3

Odp: Kontrola poprawności drzewa

Jezeli recznie usuniesz Aco alub Aro ... to faktycznie moze sie cos popieprzyc, ja mam parent_id , ktore zawiera id galezi do ktorej nalezy dany lisc lub pod galaz, i na postawie tego wyliczam wartosci wag lft i rght . tu masz troche informacji na tematam samego algorytmu pre order, ktory jest stosowany do ukladania drzewa :

http://en.wikipedia.org/wiki/Tree_traversal

4

Odp: Kontrola poprawności drzewa

takiego narzedzia szukalem ;] Dzieki ;] Obym go tylko nie musial uzywac big_smile

5

Odp: Kontrola poprawności drzewa

Poprzednio wspomniany przeze mnie shell do zarządzania ACO doczekał się aktualizacji. Poprawiony shell zmienił nazwę na AclExtras Shell
Wystarczy ściągnąć acl_extras.php z githuba i wrzucic do app/vendors/shells/. Teraz z katalogu cake/console możecie uruchomić shella.
Robi się to podobnie do pieczenia ciasteczka tylko zamiast "bake" wstawiamy nazwę shella.

Funkcje nowego shella:
- dodawanie do drzewa ACO nowych kontrolerów i akcji (nie usuwa nic z drzewa ACO)
cake acl_extras aco_update
- synchronizacji ACO z bieżącym stanem kontrolerów i akcji ("czyści" drzewo ACO)
cake acl_extras aco_sync
-odzyskiwanie drzew ARO i  ACO (nie sprawdzałem)
cake acl_extras recover aro lub cake acl_extras recover aco
-weryfikacja ARO i ACO (weryfikuje tylko poprawność drzewa a nie "aktualność")
cake acl_extras verify aro lub cake acl_extras verify aco