function og_notifications_user_page_submit in Organic groups 5.8
Same name and namespace in other branches
- 5 og_notifications/og_notifications.module \og_notifications_user_page_submit()
- 5.7 og_notifications/og_notifications.module \og_notifications_user_page_submit()
- 6 modules/og_notifications/og_notifications.module \og_notifications_user_page_submit()
Process og_notifications_user_page form submission.
@todo Decide on whether to allow contenttype and "all" subscriptions for the same group.
File
- og_notifications/
og_notifications.module, line 424 - Provide notifications and messaging support for organic groups.
Code
function og_notifications_user_page_submit($form, $form_values) {
$groups = $grouptypes = array();
$current = $form_values['grouptype_current'];
foreach ($form_values['groups'] as $gid => $values) {
$groups['checkbox'][$gid] = $values['checkbox']['all'];
$groups['send_interval'][$gid] = $values['send_interval']['all'];
$groups['send_method'][$gid] = $values['send_method']['all'];
unset($form_values['groups'][$gid]['checkbox']['all'], $form_values['groups'][$gid]['send_interval']['all'], $form_values['groups'][$gid]['send_method']['all']);
// Save grouptype subscriptions directly as notifications_user_form_submit
// does not handle multiple-field notifications very well.
foreach ($form_values['groups'][$gid]['checkbox'] as $type => $check) {
$subscription = NULL;
if ($check == 1) {
if (!isset($current[$gid]) || !isset($current[$gid][$type])) {
$subscription = $form_values['grouptype_defaults'] + array(
'uid' => $form_values['account']->uid,
);
}
elseif ($current[$gid][$type]->send_interval != $values['send_interval'][$type] || $current[$gid][$type]->send_method != $values['send_method'][$type]) {
$subscription = (array) $current[$gid][$type];
}
if ($subscription) {
$subscription['send_interval'] = $values['send_interval'][$type];
$subscription['send_method'] = $values['send_method'][$type];
$subscription['fields'] = array(
'group' => $gid,
'type' => $type,
);
notifications_save_subscription($subscription);
}
}
elseif (isset($current[$gid]) && isset($current[$gid][$type])) {
notifications_delete_subscription($current[$gid][$type]->sid);
}
}
}
// Save group changes.
$group_submit = array(
'account' => $form_values['account'],
'current' => $form_values['group_current'],
'defaults' => $form_values['group_defaults'],
'subscription_fields' => $form_values['group_subscription_fields'],
'subscriptions' => $groups,
);
notifications_user_form_submit('og_notifications_user_page', $group_submit);
}