You are here

function og_notifications_user_subscribe in Organic groups 6

Same name and namespace in other branches
  1. 5.8 og_notifications/og_notifications.module \og_notifications_user_subscribe()
  2. 5 og_notifications/og_notifications.module \og_notifications_user_subscribe()
  3. 5.3 og_notifications/og_notifications.module \og_notifications_user_subscribe()
  4. 5.7 og_notifications/og_notifications.module \og_notifications_user_subscribe()
  5. 6.2 modules/og_notifications/og_notifications.module \og_notifications_user_subscribe()

Subscribe a user to a group or to be more precise, to all subscribe-able content types within the group. This method is also called during the upgrade process in .install.

Parameters

Object $account: The user account object.

Integer $gid: The node ID of the group being subscribed to.

2 calls to og_notifications_user_subscribe()
og_notifications_og_upgrade in modules/og_notifications/og_notifications.install
Notifications upgrade: Based on the upgrade flag, move existing subscriptions to the notifications module.
og_notifications_user_autosubscribe in modules/og_notifications/og_notifications.module
Handle autosubscriptions for users when they join a group.

File

modules/og_notifications/og_notifications.module, line 618
Provide notifications and messaging support for organic groups.

Code

function og_notifications_user_subscribe($account, $gid) {

  // Remove all existing user->group subscriptions.
  og_notifications_user_unsubscribe($account, $gid);
  $subscription_default = _notifications_subscription_defaults($account);
  $subscription_default['uid'] = $account->uid;
  $subscription_default['type'] = 'grouptype';
  $subscription_default['event_type'] = 'node';

  // Only subscribe the user to enabled types.
  $content_types = array_filter(variable_get('og_notifications_content_types', array()));

  // If the types array is empty, subscribe to all group types. This is mainly
  // only valid during the upgrade.
  if (empty($content_types)) {
    $content_types = og_get_types('group_post');
  }
  foreach ($content_types as $type) {

    // Reset $subscription as notifications_save_subscription casts the input
    // array into an object.
    $subscription = $subscription_default;

    // String cast due to notifications requiring it (as the value field is
    // a varchar).
    $subscription['fields'] = array(
      'group' => (string) $gid,
      'type' => $type,
    );
    notifications_save_subscription($subscription);
  }
}