Ejemplo n.º 1
0
 public function viewtopic_get_post_data(phpbbEvent $event)
 {
     global $template;
     $data = $event->get_data();
     $template->assign_var('TOPIC_TRADER_TYPE', $data['topic_data']['topic_trader_type']);
     // Set view feedback permission
     $template->assign_var('TRADER_HAS_VIEW_FEEDBACK_PERMISSION', $this->manager->hasViewFeedbackPermission());
 }
Ejemplo n.º 2
0
 public function viewUserFeedbackAction()
 {
     // Trigger an error if user does not have view feedback permissions
     if (!$this->manager->hasViewFeedbackPermission()) {
         trigger_error($this->user->lang('E_CANNOT_VIEW_FEEDBACK'));
     }
     $user_id = $this->request->variable('u', 0);
     $tab = $this->request->variable('tab', 'all');
     $start = $this->request->variable('start', 0);
     $is_edit_mod = $this->isEditMod();
     $action = $this->request->variable('action', 'list');
     if ($action == 'list') {
         $valid_tabs = array('all' => RatingsManager::TAB_TYPE_ALL, 'buy' => RatingsManager::TOPIC_TYPE_BUY, 'sell' => RatingsManager::TOPIC_TYPE_SELL, 'trade' => RatingsManager::TOPIC_TYPE_TRADE, 'left' => RatingsManager::TAB_TYPE_LEFT);
         if (!isset($valid_tabs[$tab])) {
             $tab = 'all';
         }
         if (!$user_id) {
             trigger_error("No user provided - cannot display Trader Feedback");
         }
         $user_page_row = $this->fetch_user_row($this->db, $user_id);
         if (!$user_page_row) {
             trigger_error("Could not find specified user!");
         }
         $trader_stats = $this->manager->getUserFeedbackStats($user_id, true);
         if (!$trader_stats) {
             trigger_error("Feedback Statistics could not be retrieved");
         }
         if ($tab == 'buy') {
             $filter = $valid_tabs['sell'];
         } else {
             if ($tab == 'sell') {
                 $filter = $valid_tabs['buy'];
             } else {
                 $filter = $valid_tabs[$tab];
             }
         }
         // stores the number of total feedbacks that are filtered on a given tab - for pagination purposes
         // this number is updated by reference by the call to the manager
         $num_feedbacks = 0;
         $feedbacks = $this->manager->get_users_feedback($start, self::NUM_PER_PAGE, $user_id, $filter, $is_edit_mod, $num_feedbacks);
         if ($this->user->data['user_timezone']) {
             $timezone = new \DateTimeZone($this->user->data['user_timezone']);
         } else {
             $timezone = new \DateTimeZone($this->config['board_timezone']);
         }
         foreach ($feedbacks as $key => $feedback) {
             // fetch the appropriate user's information based on the selected tab
             // if the tab is 'Left for Others' we need to use the to_user_id (the recipient)
             if ($tab == "left") {
                 $user_row = $this->fetch_user_row($this->db, $feedback['to_user_id']);
                 $view_feedback_url = $this->helper->route('rfd_trader_view', array('u' => $feedback['to_user_id']));
             } else {
                 $user_row = $this->fetch_user_row($this->db, $feedback['from_user_id']);
                 $view_feedback_url = $this->helper->route('rfd_trader_view', array('u' => $feedback['from_user_id']));
             }
             $feedback['U_VIEW_FEEDBACK'] = $view_feedback_url;
             $feedback['table_username'] = $user_row['username'];
             $feedback['table_user_trader_rating'] = $user_row['user_trader_positive'] - $user_row['user_trader_negative'];
             $feedback['show_left_for_others'] = $tab == "left";
             $comments = $this->manager->getLatestFeedbackComment($feedback['feedback_id']);
             if ($comments) {
                 $feedback['short_comment'] = $comments['short_comment'];
                 if ($is_edit_mod || $feedback['from_user_id'] == $this->user->data['user_id'] || $feedback['to_user_id'] == $this->user->data['user_id']) {
                     $feedback['long_comment'] = $comments['long_comment'];
                 }
             }
             if ($is_edit_mod || $this->canEditFeedback($feedback['date_created'], $feedback['from_user_id'])) {
                 $edit_feedback_url = $this->helper->route('rfd_trader_edit_feedback', array('feedback_id' => $feedback['feedback_id'], 'u' => $user_id));
                 $feedback['U_EDIT_FEEDBACK'] = $edit_feedback_url;
             }
             if ($this->canReplyToFeedback($feedback['from_user_id'], $feedback['to_user_id'], $feedback['topic_id'])) {
                 $feedback['U_REPLY_FEEDBACK'] = $this->helper->route('rfd_trader_feedback', array('reply_id' => $feedback['feedback_id'], 'u' => $user_id));
             }
             $has_open_report = $this->manager->has_open_report($feedback['feedback_id']);
             // Show report button if the feedback is for the current user viewing the page
             if ($feedback['to_user_id'] == $this->user->data['user_id'] && !$has_open_report) {
                 $feedback['U_REPORT_FEEDBACK'] = append_sid(generate_board_url() . '/trader/view-feedback/?action=report&id=' . $feedback['feedback_id']);
             }
             $feedback['topic_url'] = append_sid(generate_board_url() . "/viewtopic.php?t=" . $feedback['topic_id']);
             $feedback['date_created'] = new \DateTime('@' . $feedback['date_created']);
             $feedback['date_created']->setTimezone($timezone);
             $feedbacks[$key] = $feedback;
         }
         $trader_username_full = get_username_string('full', $user_page_row['user_id'], $user_page_row['username'], $user_page_row['user_colour']);
         $this->template->assign_vars(array('TRADER_USERNAME_FULL' => $trader_username_full, 'TRADER_USERNAME' => $user_page_row['username'], 'U_TRADER_PROFILE' => append_sid("{$this->phpbb_root_path}memberlist.{$this->phpEx}", 'mode=viewprofile&u=' . $user_page_row['user_id']), 'trader_stats' => $trader_stats, 'recent_feedback' => $this->manager->getRecentUserFeedbackCounts($user_id), 'U_ACTION_TAB_ALL' => $this->helper->route("rfd_trader_view", array('u' => $user_id, 'tab' => 'all')), 'U_ACTION_TAB_BUY' => $this->helper->route("rfd_trader_view", array('u' => $user_id, 'tab' => 'buy')), 'U_ACTION_TAB_SELL' => $this->helper->route("rfd_trader_view", array('u' => $user_id, 'tab' => 'sell')), 'U_ACTION_TAB_TRADE' => $this->helper->route("rfd_trader_view", array('u' => $user_id, 'tab' => 'trade')), 'U_ACTION_TAB_LEFT' => $this->helper->route("rfd_trader_view", array('u' => $user_id, 'tab' => 'left')), 'CURRENT_TAB' => $tab, 'feedbacks' => $feedbacks, 'TOTAL_FEEDBACKS' => $num_feedbacks));
         $base_url = $this->helper->route('rfd_trader_view', array('u' => $user_id));
         $this->pagination->generate_template_pagination($base_url, 'pagination', 'start', $num_feedbacks, self::NUM_PER_PAGE, $start);
     } else {
         if ($action == 'report') {
             $this->report_feedback_action($this->request, $this->user);
         } else {
             trigger_error("Unknown Action!");
         }
     }
     return $this->helper->render('view_user_feedback.html', $this->user->lang['TRADER_FEEDBACK_FOR'] . ' ' . $user_page_row['username']);
 }