protected static function buildResponseElement($feedbackItem, $response) { global $wgLang, $wgUser; $responseElements = ''; $id = $feedbackItem->getProperty('id'); $showResponseBox = true; //Do not show response box if there is a response already if (isset($response[$id])) { $response_detail = $response[$id]; $responder = User::newFromRow($response_detail); if ($responder && !$responder->isAnon()) { $responsetime = MoodBarUtil::formatTimeSince(wfTimestamp(TS_UNIX, $response_detail->mbfr_timestamp)); $permalinkTitle = $feedbackItem->getProperty('user')->getTalkPage()->getFullText(); $individual_response = wfMsgExt('moodbar-feedback-response-summary', array('parse'), $responder->getUserPage()->getFullText(), $responder->getName(), $permalinkTitle . '#feedback-dashboard-response-' . $response_detail->mbfr_id, $responsetime); $showResponseBox = false; $responseElements = <<<HTML \t\t\t\t\t\t\t\t<div class="fbd-item-response"> \t\t\t\t\t\t\t\t\t{$individual_response} \t\t\t\t\t\t\t\t</div> HTML; } } elseif ($showResponseBox && $feedbackItem->getProperty('hidden-state') == false && !$wgUser->isAnon()) { //$respondToThis = "<span>".wfMessage('moodbar-respond-collapsed')->escaped().'</span> '.wfMessage("moodbar-respond-text")->escaped(); $respondToThis = '<span class="fbd-item-response-collapsed"></span> ' . wfMessage("moodbar-respond-text")->escaped(); $responseElements = <<<HTML \t\t\t\t<div class="fbd-item-response"> \t\t\t\t\t<a class="fbd-respond-link">{$respondToThis}</a> \t\t\t\t</div> HTML; } return $responseElements; }
/** * Get the latest response summary for a set of feedback * @param $res Iterator of Db row with index mbf_latest_response for feedback * @return array */ public static function getResponseSummary($res) { $dbr = wfGetDB(DB_SLAVE); $mbfrIds = array(); foreach ($res as $row) { if ($row->mbf_latest_response != 0) { $mbfrIds[] = $row->mbf_latest_response; } } $response = array(); if (count($mbfrIds) > 0) { $table = array('user', 'moodbar_feedback_response'); $select = array('mbfr_id', 'mbfr_mbf_id', 'mbfr_timestamp', 'user_id', 'user_name', 'user_real_name'); $conds = array('mbfr_id' => $mbfrIds, 'mbfr_user_id = user_id'); $tableJoin = array(); // Adding markashelpful data if the extension is enabled if (MoodBarUtil::isMarkAsHelpfulEnabled()) { $table[] = 'moodbar_feedback'; $table[] = 'mark_as_helpful'; // Is there a workaround that does not specify INNER JOIN explicitly? $tableJoin['moodbar_feedback'] = array('INNER JOIN', 'mbfr_mbf_id = mbf_id'); $tableJoin['mark_as_helpful'] = array('LEFT JOIN', "mah_type = 'mbresponse' AND mah_item = mbfr_id AND mah_user_id = mbf_user_id"); $select[] = 'mah_id'; } $res = $dbr->select($table, $select, $conds, __METHOD__, array(), $tableJoin); foreach ($res as $row) { $response[$row->mbfr_mbf_id] = $row; } } return $response; }