The model XenForo_Model_ThreadWatch has the method getThreadsWatchedByUser. However, I can't find an equivalent within the Forum models. The closest I seem to get is XenForo_Model_Forum which has some useful methods once you have the forums (eg getUnreadThreadCountInForum is helpful for what I'm doing) but you first need the forum list. I have temporarily gotten around it with a manual SQL query:
But I'm not sure that is the best approach. Can anyone suggest the best way to retrieve a list of all Forums that a User is subscribed to? Or failing that can anyone advise if there's at least a better way of hitting the above query?
return $this->fetchAllKeyed( 'SELECT forum.*,node.title FROM xf_forum_watch AS forum_watch INNER JOIN xf_forum AS forum ON (forum.node_id = forum_watch.node_id) LEFT JOIN xf_node AS node ON (forum.node_id = node.node_id) WHERE forum_watch.user_id = ?' , 'node_id', $userId);