</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 
    }
Example #2
0
/**
 * 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}];
}