1

Drupal 6.xHook perm pour plus d'un type de contenu

J'ai ce module qui gère quatre types de contenu différents. D'ailleurs, comment puis-je définir la permission pour chaque contenu dans le même module? Est-ce que c'est possible? Je ne peux pas comprendre comment définir la permission pour chaque type de contenu cuz hook_perm doit être nommé avec le nom du module et il n'a pas d'argument (comme hook_access $ node) pour retourner la permission sur le type de contenu. Voici comment je voudrais faire -

function mymodule_perm() 
{ 
if(content1)  
return array(
    'create content1 node', 
    'edit content1 nodes', 
    'delete content1 nodes', 
); 
if(content2)  
return array(
    'create content2 node', 
    'edit content2 nodes', 
    'delete content2 nodes', 
); 
if(content3)  
return array(
    'create content3 node', 
    'edit content3 nodes', 
    'delete content3 nodes', 
); 
....... 
} 

Toute aide serait grandement appréciée.

Répondre

6

Normalement, vous n'avez pas besoin de créer vous-même des autorisations pour les types de contenu, car le module de noeud le fait pour vous dans node_perm(). Pour chaque type de contenu que vous déclarez dans hook_node_info(), le module de nœud crée automatiquement un ensemble fixe de permissions comme suit:

$perms[] = 'create '. $name .' content'; 
    $perms[] = 'delete own '. $name .' content'; 
    $perms[] = 'delete any '. $name .' content'; 
    $perms[] = 'edit own '. $name .' content'; 
    $perms[] = 'edit any '. $name .' content'; 

En outre, vous pouvez déclarer un certain nombre d'autorisations supplémentaires dans vos modules hook_perm() mise en œuvre (tant que ils sont uniques) et utilisent ceux de votre code comme vous le souhaitez. L'important ici est qu'une permission ne fait pas grand-chose - c'est juste un nom qui apparaîtra sur la page des permissions, lui permettant d'être attribué aux rôles. Ils ne deviennent 'significatifs' que par le code qui les utilise via les appels user_access(). Par exemple, si vous vouliez créer vous-même une nouvelle autorisation spéciale pour chacun de vos types de contenu, vous les déclareriez en hook_perm() en une fois (vous n'avez donc besoin d'aucun argument - il suffit de renvoyer une chaîne par permission que vous souhaitez créer).

+0

Comment ai-je manqué des chaînes d'autorisation pour chaque contenu peut être retourné comme des chaînes entières! Merci beaucoup. – Andrew

1

De manière générale, un module implémentant plusieurs types de contenu renvoie toutes les autorisations qu'il définit à partir de hook_perm(); il n'y a pas moyen de savoir pour quel type de contenu Drupal demande les permissions implémentées.
Drupal demande toujours aux modules la liste de toutes les permissions implémentées, qui ne peuvent même pas être liées aux nœuds; Certains modules implémentent uniquement des autorisations pour leurs pages de paramètres, par exemple.

+0

Ya il n'y a aucun moyen de savoir que cuz hook_perm n'a aucun argument comme les autres hooks à savoir pour quel nœud, l'autorisation est demandée. – Andrew