Bedingt auf Teil eines Moduls zugreifen?
am 27.12.2009 - 11:54 Uhr in
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?
- Anmelden oder Registrieren um Kommentare zu schreiben

Ja sind ja keine
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.
access_callback
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!
Ah jetz versteh ich das,
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!
Attribute
am 28.12.2009 - 11:55 Uhr
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!