<?php

namespace XF\Notifier\Post;

use XF\Finder\ThreadWatchFinder;

class ThreadWatch extends AbstractWatch
{
	protected function getApplicableActionTypes()
	{
		return ['reply'];
	}

	protected function getDefaultWatchNotifyData()
	{
		$post = $this->post;

		if ($post->isFirstPost())
		{
			return [];
		}

		$finder = $this->app()->finder(ThreadWatchFinder::class);

		$finder->where('thread_id', $post->thread_id)
			->where('User.user_state', '=', 'valid')
			->where('User.is_banned', '=', 0);

		$activeLimit = $this->app()->options()->watchAlertActiveOnly;
		if (!empty($activeLimit['enabled']))
		{
			$finder->where('User.last_activity', '>=', \XF::$time - 86400 * $activeLimit['days']);
		}

		$notifyData = [];
		foreach ($finder->fetchColumns(['user_id', 'email_subscribe']) AS $watch)
		{
			$notifyData[$watch['user_id']] = [
				'alert' => true,
				'email' => (bool) $watch['email_subscribe'],
			];
		}

		return $notifyData;
	}

	protected function getWatchEmailTemplateName()
	{
		return 'watched_thread_reply';
	}
}
