At last I understood how hook_node_grants works; it has to return an array containing: $grants['realm'] = array(gid) On Mon, Mar 23, 2009 at 1:30 PM, Lluís <enboig@gmail.com> wrote:
I am developing a module to enable private sections inside any organic group. The idea is to be able to create a group and define areas like "paper administration", "human resources", etc...
I have created a module to create and a block to choose be able to define "staff roles" inside a OG, so now when a user create a node and have a "staff role" activated, that role should only be visible for users inside this group and with the "staff role" activated. I supose I can achieve this using hook_node_grants and hook_node_access_records, but I don't get how, could anybody give me a hint?
My nodes are saved with: realm= 'staff1' gid=4 view=1 update=1 delete=1
function ogsubroles_node_grants($account, $op) { $grup=og_get_group_context(); if ($_SESSION['ogsubrole_active_'.$grup->nid]) { $grants[$_SESSION['ogsubrole_active_'.$grup->nid]] = array(1); return $grants; //sempre hem de retornar alguna cosa per fer que els no valids no es mostrin } $grants['staff1']=array(1); $grants['4']=array(1); $grants['view']=array(1); return $grants; }
function ogsubroles_node_access_records($node) { $result = db_query('SELECT * FROM {ogsubroles_nodes} WHERE vid = %d', $node->vid); while ($grant = db_fetch_object($result)) { $grants[] = array( 'realm' => $grant->subrole_code, 'gid' => $grant->gid, 'grant_view' => 1, //$grant->grant_view, 'grant_update' => 1, // $grant->grant_update, 'grant_delete' => 1, //$grant->grant_delete, ); } return $grants; }
-- *La vida és com una taronja, que esperes a exprimir-la? *Si creus que l'educació és cara, prova la ignorància. *La vida és com una moneda, la pots gastar en el que vulguis però només una vegada. *Abans d'imprimir aquest missatge, pensa en el medi ambient.
-- *La vida és com una taronja, que esperes a exprimir-la? *Si creus que l'educació és cara, prova la ignorància. *La vida és com una moneda, la pots gastar en el que vulguis però només una vegada. *Abans d'imprimir aquest missatge, pensa en el medi ambient.