View file upload/src/addons/XenCentral/Feedback/Listener.php

File size: 4.61Kb
<?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);
        }

    }

}