代码之家  ›  专栏  ›  技术社区  ›  cdonner

Drupal通知模块-如何获取订阅ID(SID)?

  •  0
  • cdonner  · 技术社区  · 14 年前

    我想在论坛主题列表页面上显示订阅/取消订阅链接,以及列表中的每个主题。我有mytheme_preprocess_forum_topic_list()中$topic变量的subscribe链接的所有信息:

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

    假设我要调用notifications_get_link()来获取取消订阅链接,那么如何获取主题节点的任何现有订阅的订阅ID(sid)?

    我想我应该调用notifications_user_get_subscriptions(),但是文档有点薄。举个例子就太好了。

    1 回复  |  直到 14 年前
        1
  •  0
  •   cdonner    14 年前

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

    this