/** * Discussion view counter. * * @param $Sender * @param $Args */ public function gdn_statistics_tick_handler($Sender, $Args) { $Path = Gdn::request()->post('Path'); $Args = Gdn::request()->post('Args'); parse_str($Args, $Args); $ResolvedPath = trim(Gdn::request()->post('ResolvedPath'), '/'); $ResolvedArgs = Gdn::request()->post('ResolvedArgs'); $DiscussionID = null; $DiscussionModel = new DiscussionModel(); // Comment permalink if ($ResolvedPath == 'vanilla/discussion/comment') { $CommentID = val('CommentID', $ResolvedArgs); $CommentModel = new CommentModel(); $Comment = $CommentModel->getID($CommentID); $DiscussionID = val('DiscussionID', $Comment); } elseif ($ResolvedPath == 'vanilla/discussion/index') { $DiscussionID = val('DiscussionID', $ResolvedArgs, null); } elseif ($ResolvedPath == 'vanilla/discussion/embed') { $ForeignID = val('vanilla_identifier', $Args); if ($ForeignID) { // This will be hit a lot so let's try caching it... $Key = "DiscussionID.ForeignID.page.{$ForeignID}"; $DiscussionID = Gdn::cache()->get($Key); if (!$DiscussionID) { $Discussion = $DiscussionModel->getForeignID($ForeignID, 'page'); $DiscussionID = val('DiscussionID', $Discussion); Gdn::cache()->store($Key, $DiscussionID, array(Gdn_Cache::FEATURE_EXPIRY, 1800)); } } } if ($DiscussionID) { $DiscussionModel->addView($DiscussionID); } }