• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Drupal Rollenüberprüfung

cucube2001

Jonagold
Registriert
20.08.07
Beiträge
20
Hallo,

Ich schlage mich momentan mit der Drupalmodulprogrammierung herum. Ich bin selbst noch Anfänger und arbeite mich ein, hab aber das Grundsystem verstanden. Momentan möchte ich eine Rollenüberprüfung in mein Modul einbauen. Im Adminbereich soll man die Möglichkeit haben das Modul nur bestimmten Rollen zu zuweisen.

die modulname.admin.inc sieht dementsprechen so aus:

Code:
function send_admin_settings() {
  global $user;
 
  $options = node_get_types('names');
  $roles = user_roles($membersonly = FALSE, $permission = NULL);

  $form['send_node_types'] = array( 
      '#type' => 'checkboxes', 
    '#title' => t('Choose the content types'), 
    '#options' => $options, 
    '#default_value' => variable_get('send_node_types', array('page')), 
    '#description' => t('The App will be available on these content types to send messages.'), 
  ); 
  
  $form['send_role_types'] = array(
  '#type' => 'checkboxes', 
    '#title' => t('Choose the Roles'), 
    '#options' => $roles, 
    '#default_value' => variable_get('send_role_types', array('authenticated user')), 
    '#description' => t('Choose the roles this module is supposed to be available for'), 
  );

  return system_settings_form($form); 

}

die modulname.module hook_nodeapi:
Code:
function send_nodeapi(&$node, $op, $teaser, $page) {
  global $user;
  switch ($op) {
 
    case 'view':
        if ($user->uid == 0 || !$page) {
        break;
      }
      
      $roles = variable_get('send_role_types', array('authenticated user'));
      
      if (!in_array($user->role, $roles, TRUE)){
      	break;
      }
                 
      
      // Find out which node types we should send.
      $types_to_send = variable_get('send_node_types', array('page'));
      
      // Abort if this node is not one of the types we should send.
      if (!in_array($node->type, $types_to_send, TRUE)) {
        break;
      }
      ...

Im Administrationsbereich werden die Rollen sowie die node types angezeigt. Der Part mit den node types funktioniert auch. Bei den Rollen habe ich noch Probleme.
Der defaultwert wird nicht als angehakte Checkbox angezeigt und die Überprüfung auf die Rolle funktioniert leider auch nicht.
Ich bin momentan mit meinem Latein am Ende. Hat jmd von euch evtl. Ahnung und könnte mir helfen. Danke.
cucube2001