diff --git a/content_access.admin.inc b/content_access.admin.inc index 0827cac..5d15b73 100644 --- a/content_access.admin.inc +++ b/content_access.admin.inc @@ -86,15 +86,16 @@ function content_access_page_submit($form, &$form_state) { if (module_exists('acl')) { foreach (array('view', 'update', 'delete') as $op) { + $ids_before = acl_get_uids($form_state['values']['acl'][$op]['acl_id']); acl_save_form($form_state['values']['acl'][$op]); - module_invoke_all('user_acl', $settings); + module_invoke_all('user_acl', $node, $op, $ids_before, acl_get_uids($form_state['values']['acl'][$op]['acl_id'])); } } // Apply new settings. node_access_acquire_grants($node); - module_invoke_all('per_node', $settings); + module_invoke_all('per_node', $node, $settings); drupal_set_message(t('Your changes have been saved.')); } @@ -344,4 +345,4 @@ function content_access_user_admin_perm_submit($form, $form_state) { array('@types' => implode(', ', $types)) )); } -} \ No newline at end of file +} diff --git a/content_access_rules/content_access_rules.module b/content_access_rules/content_access_rules.module index e63631d..6ad29a7 100644 --- a/content_access_rules/content_access_rules.module +++ b/content_access_rules/content_access_rules.module @@ -9,19 +9,19 @@ * Implements hook_content_type_access(). */ function content_access_rules_content_type_access($settings) { - rules_invoke_event('content_access_content_type'); + rules_invoke_event('content_access_content_type', $settings); } /** * Implements hook_user_acl(). */ -function content_access_rules_user_acl($settings) { - rules_invoke_event('content_access_user_acl'); +function content_access_rules_user_acl($node, $op, $uids_before, $uids) { + rules_invoke_event('content_access_user_acl', $node, $op, $uids_before, $uids); } /** * Implements hook_per_node(). */ -function content_access_rules_per_node($settings) { - rules_invoke_event('content_access_per_node'); -} \ No newline at end of file +function content_access_rules_per_node($node, $settings) { + rules_invoke_event('content_access_per_node', $node, $settings); +} diff --git a/content_access_rules/content_access_rules.rules.inc b/content_access_rules/content_access_rules.rules.inc index ae2b902..6321101 100644 --- a/content_access_rules/content_access_rules.rules.inc +++ b/content_access_rules/content_access_rules.rules.inc @@ -16,22 +16,53 @@ * @ingroup rules */ function content_access_rules_rules_event_info() { + // @todo This event needs meaningful variables, but what are they? $events['content_access_content_type'] = array('label' => t('Content type access control was changed')); - $events['content_access_per_node'] = array('label' => t('Per node access control was changed')); + $events['content_access_per_node'] = array( + 'label' => t('Per node access control was changed'), + 'variables' => array( + 'node' => array( + 'label' => t('Node'), + 'type' => 'node', + 'skip save' => TRUE, + ), + 'settings' => array( + 'label' => t('Per-node access control settings'), + 'type' => 'struct', + ), + ), + ); if (module_exists('acl')) { - $events['content_access_user_acl'] = array('label' => t('User was added to ACL')); + $events['content_access_user_acl'] = array( + 'label' => t('ACL saved for node'), + 'variables' => array( + 'node' => array( + 'label' => t('Node'), + 'type' => 'node', + 'skip save' => TRUE, + ), + 'op' => array( + 'label' => t('Operation'), + 'type' => 'text', + ), + 'uids_before' => array( + 'label' => t('ACL User IDs before operation'), + 'type' => 'list', + ), + 'uids_after' => array( + 'label' => t('ACL User IDs after operation'), + 'type' => 'list', + ), + ), + ); } - $items = array(); - foreach ($events as $name => $event) { - $items[$name] = array( - 'label' => $event['label'], - 'group' => t('Content Access'), - ); + foreach ($events as &$event) { + $event['group'] = t('Content Access'); } - return $items; + return $events; } /** @@ -393,4 +424,4 @@ function content_access_action_aquire_grants($node) { (isset($node->op) && $node->op != 'Save')) { node_access_acquire_grants($node); } -} \ No newline at end of file +}