You are here

function oa_notifications_save_notifications in Open Atrium Notifications 7.2

Saves notifications.

Parameters

array $values: The values to save.

2 calls to oa_notifications_save_notifications()
oa_notifications_ajax_callback in ./oa_notifications.module
AJAX callback saves the quick reply notification configuration.
oa_notifications_node_insert in ./oa_notifications.module
Implements hook_node_insert().

File

./oa_notifications.module, line 308

Code

function oa_notifications_save_notifications(&$values, $notifications = NULL) {
  if (isset($values['skip_notify'])) {
    oa_notification_skip($values['skip_notify']);
  }
  if (isset($values['source_id']) && isset($values['source_type'])) {
    drupal_alter('oa_notifications_save', $values);
    $source_type = $values['source_type'];
    $source_id = $values['source_id'];
    if (!$source_id) {

      // Node add form, so just update the form values.
      oa_notification_parse($values['notify_list']['combined'], $source_type, $source_id, $notifications);
      $values['notify_list']['combined'] = '';
      return $notifications;
    }

    // Otherwise, update the database directly.
    if (isset($values['override'])) {
      oa_notifications_save_override($source_type, $source_id, $values['override']);
    }
    if (!isset($values['override']) || $values['override']) {

      // Only adding a single notification.
      if (!empty($values['notify_list']['combined'])) {
        $notifications = oa_notifications_load_multiple($source_id, $source_type);
        oa_notification_parse($values['notify_list']['combined'], $source_type, $source_id, $notifications, TRUE);
        $values['notify_list']['combined'] = '';
        return $notifications;
      }
      else {

        // Adding/overwriting all notifications.
        foreach ($notifications as $type => $list) {
          foreach ($list as $id => $item) {

            // Basically updating source_id here
            $n = oa_notifications_make($type, $id, $source_type, $source_id);
            $notifications[$type][$id] = $n;
          }
        }
        oa_notifications_save_for_source($source_id, $source_type, $notifications);
      }
    }
  }
  return $notifications;
}