</a> <?php } ?> </td> <td class="last-reply"><?php print $forum->last_reply; ?> </td> <?php if (user_access('subscribe to taxonomy terms')) { ?> <td class="subscribe-link"> <?php $subscription = notifications_get_subscriptions(array('uid' => $user->uid, 'type' => "taxonomy", 'module' => 'notifications'), array('tid' => $child_id), TRUE); if (!empty($subscription)) { $key = array_keys($subscription); print l('Unsubscribe from: This forum', 'notifications/unsubscribe/sid/' . $key[0], array("query" => array("destination" => $_GET['q']))); } else { print l('Subscribe to: This forum', 'notifications/subscribe/' . $user->uid . '/taxonomy/tid/' . $child_id, array("query" => array("destination" => $_GET['q']))); } ?> </td> <?php } ?> </tr> <?php }
/** * Get active subscriptions for a given user to some object * * This is a shorthand function to quickly check some types of subscriptions. * * @param $account * User id or user account object to check subscriptions for * @param $type * Object type * @param $field * Field type for the subscription. I.e. for a node it will be nid * @param $value * Field value to check subscriptions to. I.e. $node * * @return * Array of subscriptions for this user and object indexed by sid */ function notifications_user_get_subscriptions($account, $type, $object, $refresh = FALSE) { $subscriptions =& drupal_static(__FUNCTION__); $uid = messaging_user_uid($account); // No subscriptions for anonymous users if (!$uid) { return array(); } // Check the object exists, is loaded and we've got a key field $object = notifications_object_load($type, $object); $key = notifications_object_type($type, 'key_field'); if (!$object || !$key || empty($object->{$key})) { return array(); } // Now we've got the key fields for caching, try the cache or find subscriptions if ($refresh || !isset($subscriptions[$uid][$type][$object->{$key}])) { // Collect subscription types for this object and this account // Get allowed subscription options for this account to this object $user_subscriptions = array(); $subscribe_options = notifications_object_subscribe_options($type, $object, messaging_user_object($account)); foreach ($subscribe_options as $template) { $type_subscriptions = notifications_get_subscriptions(array('uid' => $uid, 'type' => $template['type'], 'status' => Notifications_Subscription::STATUS_ACTIVE), $template['fields'], TRUE); if ($type_subscriptions) { $user_subscriptions += $type_subscriptions; //array_merge($user_subscriptions, $type_subscriptions); } } $subscriptions[$uid][$type][$object->{$key}] = $user_subscriptions; } return $subscriptions[$uid][$type][$object->{$key}]; }