CategoriesManager::build_children_id_list
Méthode à vérifier !
Support Général
Gsgsd Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Gsgsd
- Inscrit le : 07/12/2007
- Site internet
Voici mes catégories :
Code PHP :
$NEWS_CAT[1] = array ( 'id_parent' => 0, 'order' => 1, 'name' => 'Catégorie de test', 'desc' => 'Catégorie de test !', 'visible' => true, 'image' => '/news/news.png', 'description' => 'Catégorie de test !', 'auth' => array ( 'r-1' => 1, 'r0' => 1, 'r1' => 13, ), ); $NEWS_CAT[2] = array ( 'id_parent' => 0, 'order' => 2, 'name' => 'Test', 'desc' => 'Test', 'visible' => true, 'image' => '/faq/faq.png', 'description' => 'Test', 'auth' => array ( 'r1' => 13, ), );
J'ai fait un :
Code PHP :
$news_cat->build_children_id_list(0, $array_cat, RECURSIVE_EXPLORATION, DO_NOT_ADD_THIS_CATEGORY_IN_LIST, AUTH_NEWS_READ);
Et je devrais avoir en visiteur :
Code PHP :
Array ( [0] => 1 )
Et j'ai en réalité :
Code PHP :
Array ( [0] => 1, [1] => 2 )
Ce que je pense c'est qu'on ajoute la catégorie sans vérifier le
$num_auth, tout ce qu'on fait c'est vérifier la récursion des sous-catégorie.
Édité par Gsgsd Le 25/08/2009 à 20h46
Vous souhaitez que vos membres contribuent ou ajoutent du contenu sur votre site ?
La solution => le module contribution !
La solution => le module contribution !
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Gsgsd Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Gsgsd
- Inscrit le : 07/12/2007
- Site internet
Code PHP :
function build_children_id_list($category_id, &$list, $recursive_exploration = RECURSIVE_EXPLORATION, $add_this = DO_NOT_ADD_THIS_CATEGORY_IN_LIST, $num_auth = 0) { global $User; //Boolean variable which is true when we can stop the loop : optimization $end_of_category = false; if ($add_this && ($category_id == 0 || (($num_auth > 0 && $User->check_auth($this->cache_var[$category_id], $num_auth) || $num_auth == 0)))) $list[] = $category_id; $id_categories = array_keys($this->cache_var); $num_cats =count($id_categories); // Browsing categories for ($i = 0; $i < $num_cats; $i++) { $id = $id_categories[$i]; $value =& $this->cache_var[$id]; if ($id != 0 && $value['id_parent'] == $category_id && ($num_auth > 0 && $User->check_auth($this->cache_var[$id]['auth'], $num_auth) || $num_auth == 0)) { $list[] = $id; if ($recursive_exploration) $this->build_children_id_list($id, $list, RECURSIVE_EXPLORATION, DO_NOT_ADD_THIS_CATEGORY_IN_LIST, $num_auth); if (!$end_of_category) $end_of_category = true; } elseif ($end_of_category) break; } }
J'ai pas changé grand chose, j'ai juste déplacé un peu de code !
Édité par Gsgsd Le 26/08/2009 à 15h52
Vous souhaitez que vos membres contribuent ou ajoutent du contenu sur votre site ?
La solution => le module contribution !
La solution => le module contribution !
Gsgsd Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Gsgsd
- Inscrit le : 07/12/2007
- Site internet
Code PHP :
function build_children_id_list($category_id, &$list, $recursive_exploration = RECURSIVE_EXPLORATION, $add_this = DO_NOT_ADD_THIS_CATEGORY_IN_LIST, $num_auth = 0) { global $User; //Boolean variable which is true when we can stop the loop : optimization $end_of_category = false; if ($add_this && ($category_id == 0 || (($num_auth > 0 && $User->check_auth($this->cache_var[$category_id], $num_auth) || $num_auth == 0)))) $list[] = $category_id; // Browsing categories for ($i = 0; $i < $num_cats; $i++) { $id = $id_categories[$i]; $value =& $this->cache_var[$id]; if ($id != 0 && $value['id_parent'] == $category_id && ($num_auth > 0 && $User->check_auth($value['auth'], $num_auth) || $num_auth == 0)) { $list[] = $id; if ($recursive_exploration) $this->build_children_id_list($id, $list, RECURSIVE_EXPLORATION, DO_NOT_ADD_THIS_CATEGORY_IN_LIST, $num_auth); if (!$end_of_category) $end_of_category = true; } elseif ($end_of_category) break; } }
Par contre j'ai un effet secondaire ne sachant pas s'il est souhaité ou pas. Lorsque une catégorie fille est autorisé en lecture et pas sa catégorie mère. La catégorie Fille apparaît tout de même.
En admin :
-- Catégorie de test
---- Test3
---- Test4
-- Test
---- Test2
-- texte " ' ' " & é
---- Test3
---- Test4
-- Test
---- Test2
-- texte " ' ' " & é
En visiteur :
-- Catégorie de test
---- Test4
---- Test2
-- texte " ' ' " & é
---- Test4
---- Test2
-- texte " ' ' " & é
Toutes les catégories qui doivent disparaître disparaisse mais les catégories filles reste, Voir la catégorie fille "Test2". Est ce attendu ou pas ?
Édité par Gsgsd Le 26/08/2009 à 18h13
Vous souhaitez que vos membres contribuent ou ajoutent du contenu sur votre site ?
La solution => le module contribution !
La solution => le module contribution !
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
PS : pour les catégories filles, normalement elles ne devraient pas apparaître, je pense l'avoir corrigé (en fait c'est pas sûr).
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Visiteur
Boosteur Inactif
y a pas moyen de soit forcer les droit parent, ou les droits de descendance ?
si en mère tu donne pas accès, ne pas pouvoir donner accès au descendant ...
je suis pas sur d'être clair, ni capable de donner le code qui vas avec, mais l'idée est la ...
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Il y a effectivement encore un problème je pense malgré la correction que j'ai faite, mais je n'ai pas pu tester, donc il faudra que j'y passe à nouveau du temps.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Gsgsd Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Gsgsd
- Inscrit le : 07/12/2007
- Site internet
ben.popeye :
J'ai essayé de corriger le problème mais je n'ai pas encore testé. Regarde si ça fait ton affaire.
PS : pour les catégories filles, normalement elles ne devraient pas apparaître, je pense l'avoir corrigé (en fait c'est pas sûr).
PS : pour les catégories filles, normalement elles ne devraient pas apparaître, je pense l'avoir corrigé (en fait c'est pas sûr).
J'ai pas bien compris où puis je voir la modif ?
Vous souhaitez que vos membres contribuent ou ajoutent du contenu sur votre site ?
La solution => le module contribution !
La solution => le module contribution !
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie