og_workflow_ng.inc in Organic groups 5.8
Same filename and directory in other branches
workflow_ng integration for og module.
File
og_workflow_ng.incView source
<?php
/**
* @file
* workflow_ng integration for og module.
*/
/**
* Implementation of hook_event_info().
*/
function og_event_info() {
return array(
'og_user_insert' => array(
'#label' => t('User joins group'),
'#module' => t('OG'),
'#arguments' => og_workflow_ng_events_hook_og_arguments(),
),
'og_user_approved' => array(
'#label' => t('User approved to group by admin'),
'#module' => t('OG'),
'#description' => t('A pending member is approved by a group administrator.'),
'#arguments' => og_workflow_ng_events_hook_og_arguments(),
),
'og_user_delete' => array(
'#label' => t('User leaves group'),
'#module' => t('OG'),
'#arguments' => og_workflow_ng_events_hook_og_arguments(),
),
);
}
/**
* Describes the arguments available for the og hook.
*
* We pass uid and gid to workflow-ng so that the argument handlers can load the full entities.
* As an affect uid and gid must be mentioned here too.
*/
function og_workflow_ng_events_hook_og_arguments() {
return array(
'uid' => NULL,
'gid' => NULL,
'account' => array(
'#entity' => 'user',
'#label' => t('User, who joins group'),
'#handler' => 'og_workflow_ng_events_argument_og_user',
),
'group' => array(
'#entity' => 'node',
'#label' => t('Group'),
'#handler' => 'og_workflow_ng_events_argument_og_node',
),
) + workflow_ng_events_global_user_argument();
}
/**
* handler to get user.
*/
function og_workflow_ng_events_argument_og_user($uid, $gid) {
return user_load(array(
'uid' => $uid,
));
}
/**
* handler to get node.
*/
function og_workflow_ng_events_argument_og_node($uid, $gid) {
return node_load($gid);
}
/**
* Implementation of hook_og().
*/
function og_og($op, $gid, $uid, $args) {
if (in_array($op, array(
'user insert',
'user delete',
))) {
$op = str_replace(' ', '_', $op);
workflow_ng_invoke_event('og_' . $op, $uid, $gid);
}
elseif ($op = 'user update' && $args['is_active']) {
workflow_ng_invoke_event('og_user_approved', $uid, $gid);
}
}
/**
* Implementation of hook_action_info().
*/
function og_action_info() {
return array(
'og_workflow_ng_action_subscribe_user' => array(
'#label' => t('Subscribe user to group'),
'#arguments' => array(
'user' => array(
'#entity' => 'user',
'#label' => t('User who will be subscribed'),
),
'group' => array(
'#entity' => 'node',
'#label' => t('Group that user will be subscribed to'),
),
),
'#description' => t('Subscribe a user to a group.'),
'#module' => 'OG',
),
'og_workflow_ng_action_remove_user' => array(
'#label' => t('Unsubscribe user from group'),
'#arguments' => array(
'user' => array(
'#entity' => 'user',
'#label' => t('User who will be unsubscribed'),
),
'group' => array(
'#entity' => 'node',
'#label' => t('Group that user will be unsubscribed from'),
),
),
'#description' => t('Unsubscribe a user from a group.'),
'#module' => 'OG',
),
);
}
/**
* Action: Subscribe user to group.
*/
function og_workflow_ng_action_subscribe_user($user, $node, $settings) {
if (!og_is_group_member($node->nid, $user)) {
og_save_subscription($node->nid, $user->uid, array(
'is_active' => (int) $settings['is_active'],
));
}
}
/**
* Subscribe user to group form.
*
* @ingroup forms.
* @see og_workflow_ng_action_subscribe_user_submit.
*/
function og_workflow_ng_action_subscribe_user_form($settings = array(), $argument_info) {
$form = array();
$form['is_active'] = array(
'#type' => 'checkbox',
'#title' => t('Subscription is approved'),
'#description' => t('When enabled, the user will automatically be approved. When disabled user will be a pending member.'),
'#default_value' => $settings['is_active'],
);
return $form;
}
function og_workflow_ng_action_subscribe_user_submit($form_id, $form_values) {
$settings = array(
'is_active' => $form_values['is_active'],
);
return $settings;
}
/**
* Action: Unsubscribe user from group.
*/
function og_workflow_ng_action_remove_user($user, $node, $settings) {
og_delete_subscription($node->nid, $user->uid);
}
/**
* Implementation of hook_condition_info().
*/
function og_condition_info() {
return array(
'og_workflow_ng_condition_user_in_group' => array(
'#label' => t('User is group member'),
'#arguments' => array(
'user' => array(
'#entity' => 'user',
'#label' => t('User'),
),
'group' => array(
'#entity' => 'node',
'#label' => t('Group'),
),
),
'#description' => t('Evaluates to TRUE if the user is an approved member of the group. If the user is a pending member, this condition will return FALSE.'),
'#module' => 'OG',
),
'og_workflow_ng_condition_content_is_group' => array(
'#label' => t('Content is a group'),
'#arguments' => array(
'group' => array(
'#entity' => 'node',
'#label' => t('Group'),
),
),
'#description' => t('Evaluates to TRUE if the content is a group.'),
'#module' => 'OG',
),
);
return $info;
}
/**
* Condition: User is group member.
*/
function og_workflow_ng_condition_user_in_group($user, $node, $settings) {
return og_is_group_member($node->nid, $user);
}
/**
* Condition: Content is a group.
*/
function og_workflow_ng_condition_content_is_group($node, $settings) {
return og_is_group_type($node->type);
}
Functions
Name | Description |
---|---|
og_action_info | Implementation of hook_action_info(). |
og_condition_info | Implementation of hook_condition_info(). |
og_event_info | Implementation of hook_event_info(). |
og_og | Implementation of hook_og(). |
og_workflow_ng_action_remove_user | Action: Unsubscribe user from group. |
og_workflow_ng_action_subscribe_user | Action: Subscribe user to group. |
og_workflow_ng_action_subscribe_user_form | Subscribe user to group form. |
og_workflow_ng_action_subscribe_user_submit | |
og_workflow_ng_condition_content_is_group | Condition: Content is a group. |
og_workflow_ng_condition_user_in_group | Condition: User is group member. |
og_workflow_ng_events_argument_og_node | handler to get node. |
og_workflow_ng_events_argument_og_user | handler to get user. |
og_workflow_ng_events_hook_og_arguments | Describes the arguments available for the og hook. |