Модуль уведомлений Drupal - как получить идентификатор подписки (SID)? - PullRequest
0 голосов
/ 10 октября 2010

Я хочу показать ссылку подписки / отказа от подписки на странице списка тем форума вместе с каждой из тем в списке. У меня есть вся информация для ссылки подписки в переменной $ topic в mytheme_preprocess_forum_topic_list ():

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

Предполагая, что я хочу вызвать notifications_get_link (), чтобы получить ссылку для отмены подписки, как я могу получить идентификатор подписки (SID) для любой существующей подписки для узла темы?

Полагаю, мне следует вызвать notifications_user_get_subscription (), но документация немного тонкая. Пример был бы великолепен.

1 Ответ

0 голосов
/ 10 октября 2010

Мое решение находит ровно одну подписку для текущего узла, если таковой существует, и создает либо ссылку на подписку, либо на отмену подписки, которая становится доступной для шаблона:

// 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>';
}

В итоге я использовал вычисленное поле CCKэто так, чтобы я мог включить его в представление.См. this для получения дополнительной информации.

...