og.api.php in Organic groups 7.2
Same filename and directory in other branches
Hooks provided by the Organic groups module.
File
og.api.phpView source
<?php
/**
* @file
* Hooks provided by the Organic groups module.
*/
/**
* @addtogroup hooks
* @{
*/
/**
* Define permissions specific to organic groups.
*
* This hook can supply permissions that the module defines, so that they can be
* selected on the group permissions page and used to grant or restrict access
* to actions pertaining to groups.
*
* Permissions are checked using og_user_access().
*
* @return array
* An array whose keys are permission names and whose corresponding values are
* arrays containg the following key-value pairs:
* - title: The human-readable name of the permission, to be shown on group
* permissions pages. This should be wrapped in the t() function so it can
* be translated.
* - description: (optional) A description of what the permission does. This
* should be wrapped in the t() function so it can be translated.
* - roles: (optional) An array of OG roles to which it is possible to assign
* this permission. The default value is an array containg OG_ANONYMOUS_ROLE
* and OG_AUTHENTICATED_ROLE.
* - default role: (optional) An array of OG roles that should be assigned
* this permission by default. If omitted then no role will receive the
* permission by default.
*/
function hook_og_permission() {
return array(
'subscribe' => array(
'title' => t('Subscribe user to group'),
'description' => t("Allow user to be a member of a group (approval required)."),
// Determine to which role to limit the permission. For example the
// "subscribe" can't be assigned only to a non-member, as a member doesn't
// need it.
'roles' => array(
OG_ANONYMOUS_ROLE,
),
// Determine to which roles the permissions will be enabled by default.
'default role' => array(
OG_ANONYMOUS_ROLE,
),
),
);
}
/**
* Alter the organic groups permissions.
*
* @param $perms
* The permissions passed by reference.
*/
function hook_og_permission_alter(&$perms) {
}
/**
* Set a default role that will be used as a global role.
*
* A global role, is a role that is assigned by default to all new groups.
*/
function hook_og_default_roles() {
return array(
'super admin',
);
}
/**
* Alter the default roles.
*
* The anonymous and authenticated member roles are not alterable.
*
* @param $roles
* Array with the default roles name.
*/
function hook_og_default_roles_alter(&$roles) {
// Remove a default role.
unset($roles['super admin']);
}
/**
* Allow modules to act upon new group role.
*
* @param $role
* The group role object.
*/
function hook_og_role_insert($role) {
}
/**
* Allow modules to act upon existing group role update.
*
* @param $role
* The group role object.
*/
function hook_og_role_update($role) {
}
/**
* Allow modules to act upon existing group role deletion.
*
* @param $role
* The deleted group role object. The object is actually a dummy, as the data
* is already deleted from the database. However, we pass the object to allow
* implementing modules to properly identify the deleted role.
*/
function hook_og_role_delete($role) {
}
/**
* Allow modules to react upon a role being granted.
*
* @param $entity_type
* The entity type of the group in which a role has been granted.
* @param $gid
* The group id of the group in which a role has been granted.
* @param $uid
* The user id of the user to whom a role has been granted.
* @param $rid
* The OG role id being granted to the user.
*/
function hook_og_role_grant($entity_type, $gid, $uid, $rid) {
}
/**
* Allow modules to react upon a role being revoked.
*
* @param $entity_type
* The entity type of the group in which a role has been revoked.
* @param $gid
* The group id of the group in which a role has been revoked.
* @param $uid
* The user id of the user to whom a role has been revoked.
* @param $rid
* The OG role id being revoked from the user.
*/
function hook_og_role_revoke($entity_type, $gid, $uid, $rid) {
}
/**
* Give a notification about OG role permissions change.
*
* @param $role
* The role object of the changed role.
* @param $grant
* A list of granted permission names.
* @param $revoke
* A list of revoked permission names.
*/
function hook_og_role_change_permissions($role, $grant, $revoke) {
if (!$role->gid) {
drupal_set_message(t('Global group permissions granted for @role users: @permissions', array(
'@role' => $role->name,
'@permissions' => implode(', ', $grant),
)));
}
}
/**
* Provide information about fields that are related to Organic groups.
*
* Using this info, Organic groups is aware of the fields, and allows adding
* them to the correct bundle.
*
* - type: Array with the values "group" and/ or "group content". To define to
* which bundles the field may be attached.
* - Description: The description of the field.
* - field: The field info array as will be passed to field_create_field().
* - instance: The field instance array as will be passed to
* field_info_instance().
* - entity type: Optional; Array of the entity types this field can be attached
* to. The field will not be attachable to other entity types. Defaults to
* empty array.
*/
function hook_og_fields_info() {
$items = array();
$items[OG_GROUP_FIELD] = array(
'type' => array(
'group',
),
'description' => t('Determine if this should be a group.'),
'field' => array(
'field_name' => OG_GROUP_FIELD,
'no_ui' => TRUE,
'type' => 'list_boolean',
'cardinality' => 1,
'settings' => array(
'allowed_values' => array(
0 => 'Not a group type',
1 => 'Group type',
),
'allowed_values_function' => '',
),
),
'instance' => array(
'label' => t('Group type'),
'widget_type' => 'options_select',
'required' => TRUE,
// Make the group type default.
'default_value' => array(
0 => array(
'value' => 1,
),
),
'view modes' => array(
'full' => array(
'label' => t('Full'),
'type' => 'og_group_subscribe',
'custom settings' => FALSE,
),
'teaser' => array(
'label' => t('Teaser'),
'type' => 'og_group_subscribe',
'custom settings' => FALSE,
),
),
),
);
return $items;
}
/**
* TODO
*/
function hook_og_fields_info_alter(&$fields_info) {
}
/**
* Act upon organic groups cache clearing.
*
* This can be used by implementing modules, that need to clear the cache
* as-well.
*/
function hook_og_invalidate_cache($gids = array()) {
$caches = array(
'og_foo',
'og_bar',
);
foreach ($caches as $cache) {
drupal_static_reset($cache);
}
}
/**
* Alter the permissions of a user in a group.
*
* @param $perm
* The permissions of a user, passed by reference.
* @param $context
* Array with:
* - string: The permission asked for the user.
* - group_type: The entity type of the group.
* - group: The group object.
* - account: The user account.
*/
function hook_og_user_access_alter(&$perm, $context) {
// If user ID 2 doesn't already have a permission then enable it.
if (empty($perm['foo']) && ($context['account']->uid = 2)) {
$perm['foo'] = TRUE;
}
}
/**
* Acts on OG membership types being loaded from the database.
*
* This hook is invoked during OG membership type loading, which is handled by
* entity_load(), via the EntityCRUDController.
*
* @param array $og_membership_types
* An array of OG membership type entities being loaded, keyed by id.
*
* @see hook_entity_load()
*/
function hook_og_membership_type_load(array $og_membership_types) {
$result = db_query('SELECT pid, foo FROM {mytable} WHERE pid IN(:ids)', array(
':ids' => array_keys($entities),
));
foreach ($result as $record) {
$entities[$record->pid]->foo = $record->foo;
}
}
/**
* Responds when a OG membership type is inserted.
*
* This hook is invoked after the OG membership type is inserted into the database.
*
* @param OgMembershipType $og_membership
* The OG membership type that is being inserted.
*
* @see hook_entity_insert()
*/
function hook_og_membership_type_insert(OgMembershipType $og_membership) {
db_insert('mytable')
->fields(array(
'id' => entity_id('og_membership_type', $og_membership),
'extra' => print_r($og_membership, TRUE),
))
->execute();
}
/**
* Acts on a OG membership type being inserted or updated.
*
* This hook is invoked before the OG membership type is saved to the database.
*
* @param OgMembershipType $og_membership
* The OG membership type that is being inserted or updated.
*
* @see hook_entity_presave()
*/
function hook_og_membership_type_presave(OgMembershipType $og_membership) {
$og_membership->name = 'foo';
}
/**
* Responds to a OG membership type being updated.
*
* This hook is invoked after the OG membership type has been updated in the database.
*
* @param OgMembershipType $og_membership
* The OG membership type that is being updated.
*
* @see hook_entity_update()
*/
function hook_og_membership_type_update(OgMembershipType $og_membership) {
db_update('mytable')
->fields(array(
'extra' => print_r($og_membership, TRUE),
))
->condition('id', entity_id('og_membership_type', $og_membership))
->execute();
}
/**
* Responds to OG membership type deletion.
*
* This hook is invoked after the OG membership type has been removed from the database.
*
* @param OgMembershipType $og_membership
* The OG membership type that is being deleted.
*
* @see hook_entity_delete()
*/
function hook_og_membership_type_delete(OgMembershipType $og_membership) {
db_delete('mytable')
->condition('pid', entity_id('og_membership_type', $og_membership))
->execute();
}
/**
* Define default OG membership type configurations.
*
* @return
* An array of default OG membership types, keyed by machine names.
*
* @see hook_default_og_membership_type_alter()
*/
function hook_default_og_membership_type() {
$defaults['main'] = entity_create('og_membership_type', array());
return $defaults;
}
/**
* Alter default OG membership type configurations.
*
* @param array $defaults
* An array of default OG membership types, keyed by machine names.
*
* @see hook_default_og_membership_type()
*/
function hook_default_og_membership_type_alter(array &$defaults) {
$defaults['main']->name = 'custom name';
}
/**
* Acts on OG memberships being loaded from the database.
*
* This hook is invoked during OG membership loading, which is handled by
* entity_load(), via the EntityCRUDController.
*
* @param array $og_memberships
* An array of OG membership entities being loaded, keyed by id.
*
* @see hook_entity_load()
*/
function hook_og_membership_load(array $og_memberships) {
$result = db_query('SELECT pid, foo FROM {mytable} WHERE pid IN(:ids)', array(
':ids' => array_keys($og_memberships),
));
foreach ($result as $record) {
$og_memberships[$record->pid]->foo = $record->foo;
}
}
/**
* Responds when a OG membership is inserted.
*
* This hook is invoked after the OG membership is inserted into the database.
*
* @param OgMembership $og_membership
* The OG membership that is being inserted.
*
* @see hook_entity_insert()
*/
function hook_og_membership_insert(OgMembership $og_membership) {
db_insert('mytable')
->fields(array(
'id' => entity_id('og_membership', $og_membership),
'extra' => print_r($og_membership, TRUE),
))
->execute();
}
/**
* Acts on a OG membership being inserted or updated.
*
* This hook is invoked before the OG membership is saved to the database.
*
* @param OgMembership $og_membership
* The OG membership that is being inserted or updated.
*
* @see hook_entity_presave()
*/
function hook_og_membership_presave(OgMembership $og_membership) {
$og_membership->name = 'foo';
}
/**
* Responds to a OG membership being updated.
*
* This hook is invoked after the OG membership has been updated in the database.
*
* @param OgMembership $og_membership
* The OG membership that is being updated.
*
* @see hook_entity_update()
*/
function hook_og_membership_update(OgMembership $og_membership) {
db_update('mytable')
->fields(array(
'extra' => print_r($og_membership, TRUE),
))
->condition('id', entity_id('og_membership', $og_membership))
->execute();
}
/**
* Responds to OG membership deletion.
*
* This hook is invoked after the OG membership has been removed from the database.
*
* @param OgMembership $og_membership
* The OG membership that is being deleted.
*
* @see hook_entity_delete()
*/
function hook_og_membership_delete(OgMembership $og_membership) {
db_delete('mytable')
->condition('pid', entity_id('og_membership', $og_membership))
->execute();
}
/**
* @} End of "addtogroup hooks".
*/
Functions
Name | Description |
---|---|
hook_default_og_membership_type | Define default OG membership type configurations. |
hook_default_og_membership_type_alter | Alter default OG membership type configurations. |
hook_og_default_roles | Set a default role that will be used as a global role. |
hook_og_default_roles_alter | Alter the default roles. |
hook_og_fields_info | Provide information about fields that are related to Organic groups. |
hook_og_fields_info_alter | TODO |
hook_og_invalidate_cache | Act upon organic groups cache clearing. |
hook_og_membership_delete | Responds to OG membership deletion. |
hook_og_membership_insert | Responds when a OG membership is inserted. |
hook_og_membership_load | Acts on OG memberships being loaded from the database. |
hook_og_membership_presave | Acts on a OG membership being inserted or updated. |
hook_og_membership_type_delete | Responds to OG membership type deletion. |
hook_og_membership_type_insert | Responds when a OG membership type is inserted. |
hook_og_membership_type_load | Acts on OG membership types being loaded from the database. |
hook_og_membership_type_presave | Acts on a OG membership type being inserted or updated. |
hook_og_membership_type_update | Responds to a OG membership type being updated. |
hook_og_membership_update | Responds to a OG membership being updated. |
hook_og_permission | Define permissions specific to organic groups. |
hook_og_permission_alter | Alter the organic groups permissions. |
hook_og_role_change_permissions | Give a notification about OG role permissions change. |
hook_og_role_delete | Allow modules to act upon existing group role deletion. |
hook_og_role_grant | Allow modules to react upon a role being granted. |
hook_og_role_insert | Allow modules to act upon new group role. |
hook_og_role_revoke | Allow modules to react upon a role being revoked. |
hook_og_role_update | Allow modules to act upon existing group role update. |
hook_og_user_access_alter | Alter the permissions of a user in a group. |