2010-10-10 9 views
0

Je souhaite afficher un lien d'abonnement/désabonnement sur une page de liste de sujets de forum, ainsi que chacun des sujets de la liste. J'ai toutes les informations pour la souscription lien dans la variable $ topic en mytheme_preprocess_forum_topic_list():Module Drupal Notifications - comment obtenir un ID d'abonnement (SID)?

foreach ($variables['topics'] as $id => $topic) { 

En supposant que je veux appeler notifications_get_link() pour obtenir le lien de désabonnement, comment puis-je obtenir l'identifiant d'abonnement (SID) pour tout abonnement existant pour le noeud sujet?

Je suppose que je devrais appeler notifications_user_get_subscriptions(), mais la documentation est un peu mince. Un exemple serait génial.

Répondre

0

Ma solution trouve exactement un abonnement pour le noeud courant si l'on existe et compose soit un susbcribe ou lien de désabonnement qui est mis à la disposition du modèle:

// find subscription 
$subs = notifications_user_get_subscriptions(
     $user->uid, 
     'node', 
     $topic->nid, 
     $topic,  
     FALSE); 

// compose link 
$destination = "?destination=forum/idea-exchange"; 
if ($subs) { 
    foreach ($subs as $key => $sub) { 
     $link = notifications_get_link('unsubscribe', array(
       'sid' => $sub->sid, 
       'confirm' => FALSE)); 
     $variables['topics'][$id]->subscribe_link = 
     '<a class="unsubscribe" href="/'.$link['href']. 
       $destination.'">'.t('Stop tracking this topic').'</a>'; 
     break; 
    } 
} 
else { 
    $link = notifications_get_link(
     'subscribe', 
     array('uid' => $user->uid, 
       'type' => 'thread', 
       'fields' => array('nid' => $topic->nid), 
       'confirm' => FALSE)); 
    $variables['topics'][$id]->subscribe_link = 
     '<a class="subscribe" href="/'. 
     $link['href'].$destination.'">'.t('Track this topic').'</a>'; 
} 

je me suis retrouvé à l'aide d'une CCK calculée de terrain pour ce afin que je puisse l'inclure dans une vue. Voir this pour plus de contexte.

Questions connexes