Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Bedingt auf Teil eines Moduls zugreifen?

Eingetragen von MaWe4585 (41)
am 27.12.2009 - 11:54 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo,

ich hab bei meinem Testmodul vier Bereiche, auf die übers Menü drauf zugegriffen werden kann:

<?php


function testmodule_menu(){
   
$items = array();
   
$items['testlink00']=array(
       
'title' => t('Testlink 0-0'),
       
'page callback' => 'testlink00_all',
       
'access arguments' => array('access testlink content'),
       
'type' => MENU_CALLBACK
   
);
   
$items['testlink01']=array(
       
'title' => t('Testlink 0-1'),
       
'page callback' => 'testlink01_all',
       
'access arguments' => array('access testlink content'),
       
'type' => MENU_CALLBACK
   
);
   
$items['testlink10']=array(
       
'title' => t('Testlink 1-0'),
       
'page callback' => 'testlink10_all',
       
'access arguments' => array('access testlink content'),
       
'type' => MENU_CALLBACK
   
);
   
$items['testlink11']=array(
       
'title' => t('Testlink 1-1'),
       
'page callback' => 'testlink11_all',
       
'access arguments' => array('access testlink content'),
       
'type' => MENU_CALLBACK
   
);
    return
$items;
}
?>

Im .install hab ich folgende Tabelle definiert:

<?php

function testmodule_schema() {
$schema['testmodule_access'] = array(
   
'description' => t('Table for the testmodule_access.'),
   
'fields' => array(
     
'access_id' => array(
       
'description' => t('The primary identifier for the access.'),
       
'type' => 'serial',
       
'size' => 'medium',
       
'unsigned' => TRUE,
       
'not null' => TRUE
       
),
     
'uid' => array(
       
'description' => t('users-access.'),
       
'type' => 'int',
       
'size' => 'medium',
       
'unsigned' => TRUE,
       
'not null' => TRUE
         
),
     
'access_expired' => array(
       
'description' => t('users-access expired.'),
       
'type' => 'int',
       
'size' => 'tiny',
       
'unsigned' => TRUE,
       
'not null' => TRUE,
       
'default'=>0
         
),
      ),
   
'primary key' => array('access_id'),
    );
    return
$schema;
}
?>

Nun soll jeder user dessen uid im Ergebnis der Abfrage drin ist, die Bereiche 2-4, die User die nicht da drin sind, Bereich 1 anzeigen lassen können:
select * from {testmodule_access} where access_expired='0'

Wenn ich das richtig verstanden habe, muss ich den hook_node_grants vewenden, oder?
Was muss dann aber genau in die Funktion rein? Ich hab keine Ahnung was zurückgegeben werden muss.
ein array mit true/false?
Also sowas:

<?php

$grants
['testmodule00']=1;
$grants['testmodule01']=0;
$grants['testmodule10']=0;
$grants['testmodule11']=0;
return
$grants;
?>

Oder was muss ich da machen?

Ist echt bissl schwierig sich da reinzulesen, da es wenig Codebeispiele gibt :(

Edit: huch wurd das hier verschoben?

‹ Anzeigen von Inhalten für anonymous User... Node und Taxonomy ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja sind ja keine

Eingetragen von Tobias Bähr (4019)
am 27.12.2009 - 13:41 Uhr

Ja sind ja keine Anfängerfragen sondern gehört zur Modulentwicklung.

----------------------------------------
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.

  • Anmelden oder Registrieren um Kommentare zu schreiben

access_callback

Eingetragen von stBorchert (6003)
am 27.12.2009 - 13:45 Uhr

Hallo.
Verwende in Deiner Implementierung von hook_menu noch das Attribut 'access callback'.
Dort gibst Du den Namen einen eigenen Funktion zur Überprüfung der Zugriffsrechte an.
Beispiel:

<?php
function testmodule_menu(){
 
$items = array();
 
$items['testlink00']=array(
   
'title' => t('Testlink 0-0'),
   
'page callback' => 'testlink00_all',
   
'access callback' => 'testmodule_access_granted',
   
'access arguments' => array('1'),
   
'type' => MENU_CALLBACK
 
);
} 
 
/**
* Helper module to determine access on pages defined by testmodule.
*/
function testmodule_access_granted($section) {
  global
$user;
  if (!
user_access('access testmodule content')) {
    return
FALSE;
  }
 
$result = db_query("SELECT uid FROM {testmodule_access} WHERE access_expired = %d", 0);
  while (
$item = db_fetch_object($result)) {
   
// ...
 
}
  return
FALSE;
}
?>

hth,

 Stefan

--
Sei nett zu Deinem Themer!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ah jetz versteh ich das,

Eingetragen von MaWe4585 (41)
am 28.12.2009 - 10:29 Uhr

Ah jetz versteh ich das, access callback ist die Methode und access arguments sind die Parameter/Argumente die der Methode übergeben werden.
Danke!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Attribute

Eingetragen von stBorchert (6003)
am 28.12.2009 - 11:55 Uhr
MaWe4585 schrieb

Ah jetz versteh ich das, access callback ist die Methode und access arguments sind die Parameter/Argumente die der Methode übergeben werden.

Genau. So, wie auch "page callback" und "page arguments".
Die Standardfunktion für "access callback" ist übrigens user_access.

hth,

 Stefan

--
Sei nett zu Deinem Themer!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
Weiter

Neue Kommentare

  • Keiner der mir weiterhelfen
    vor 5 Stunden 48 Minuten
  • Rollen
    vor 6 Tagen 8 Stunden
  • Inzwischen sind wir bei
    vor 2 Wochen 3 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Wochen 3 Tagen
  • melde mich mal wieder, da ich
    vor 10 Wochen 22 Stunden
  • Hey danke
    vor 10 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 10 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 10 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 11 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250239
Registrierte User: 20467

Neue User:

  • StevenEness
  • ocvk2810
  • marouane.blel

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 28 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association