<?php
/**
* @package XenCentral Feedback System
* @author DNF Technology
* @copyright Drnoyan & Nalyan LDA, Portugal, EU
* @license http://dnf.technology/terms/
* @link http://customers.dnf.technology
* @version 2.0.0 Beta 10
* @revision 12
*/
namespace XenCentral\Feedback;
class Listener
{
public static function preRender(\XF\Template\Templater $templater, &$type, &$template, &$name, array &$arguments, array &$globalVars)
{
if ($arguments['group']->group_id == 'xcfs')
{
// Override template name
$template = 'xcfs_option_list';
}
}
public static function preRenderMacro(\XF\Template\Templater $templater, &$type, &$template, &$name, array &$arguments, array &$globalVars)
{
$user_id = $arguments['user']['user_id'];
$allFeedbackForVisitor = \XF::repository('XenCentral\Feedback:Feedback')
->getFilteredFeedbackList(\XF::visitor()->user_id, 5);
if(isset($user_id)) {
$user = \XF::repository('XenCentral\Feedback:User')->getTrader($user_id);
$threadId = $globalVars['thread']['thread_id'];
$nodeId = $globalVars['thread']['node_id'];
$with = [];
$xf_user = \XF::em()->find('XF:User', $user_id, $with);
$canSubmitFeedback = \XF::visitor()->canGiveFeedback() && (\XF::visitor()->user_id != $arguments['user']['user_id'] && \XF::visitor()->feedbackRestricted(\XF::visitor()) && \XF::repository('XenCentral\Feedback:Options')->getRateFromPostbit() !== 'hide') && ($xf_user->canReceiveFeedback()) &&((\XF::repository('XenCentral\Feedback:Options')->getFeedbackRestricted() && !empty($allFeedbackForVisitor) || !(\XF::repository('XenCentral\Feedback:Options')->getFeedbackRestricted())));;
$feedback['feedback'] = [
'user' => $user,
'canSubmitFeedback' => $canSubmitFeedback,
'threadId' => $threadId,
'nodeId'=>$nodeId,
'showStats' => \XF::repository('XenCentral\Feedback:Options')->getShowPostbitDetailedStats(),
'noRedirect' => true];
$templater->addDefaultParams($feedback);
}
if(isset($user_id) && isset($globalVars['userConv'])) {
$user = \XF::repository('XenCentral\Feedback:User')->getTrader($user_id);
$with = [];
$xf_user = \XF::em()->find('XF:User', $user_id, $with);
$canSubmitFeedback = \XF::visitor()->canGiveFeedback() && (\XF::visitor()->user_id != $arguments['user']['user_id'] && \XF::visitor()->feedbackRestricted(\XF::visitor()) && \XF::repository('XenCentral\Feedback:Options')->getRateFromPostbit() !== 'hide') && ($xf_user->canReceiveFeedback()) && ((\XF::repository('XenCentral\Feedback:Options')->getFeedbackRestricted() && !empty($allFeedbackForVisitor) || !(\XF::repository('XenCentral\Feedback:Options')->getFeedbackRestricted())));;
$feedback['feedback'] = [
'user' => $user,
'onConversations'=> true,
'canSubmitFeedback' => $canSubmitFeedback,
'showStats' => \XF::repository('XenCentral\Feedback:Options')->getShowPostbitDetailedStats(),
'noRedirect' => true];
$templater->addDefaultParams($feedback);
}
}
public static function preview(\XF\Mvc\Controller $controller, $action, \XF\Mvc\ParameterBag $params)
{
if ($params['group_id'] == 'xcfs') {
$controller->setSectionContext('xcfs_general_options');
}
}
public static function postview(\XF\Mvc\Controller $controller, $action, \XF\Mvc\ParameterBag $params, \XF\Mvc\Reply\AbstractReply &$reply)
{
$controller->repository('XenCentral\Feedback:Activity')->save();
}
public static function accountVisitorMenu(\XF\Template\Templater $templater, &$type, &$template, &$name, array &$arguments, array &$globalVars)
{
$user_id = $globalVars['xf']['visitor']['user_id'];
if(isset($user_id)) {
$user = \XF::repository('XenCentral\Feedback:User')->getTrader($user_id);
$feedback['feedback'] = [
'user' => $user];
$templater->addDefaultParams($feedback);
}
}
public static function memberMacros(\XF\Template\Templater $templater, &$type, &$template, &$name, array &$arguments, array &$globalVars)
{
$user_id = $arguments['user']['user_id'];
if(isset($user_id)) {
$user = \XF::repository('XenCentral\Feedback:User')->getTrader($user_id);
$feedback['feedback'] = [
'user' => $user];
$templater->addDefaultParams($feedback);
}
}
}