/** * generate the rating widget */ function GetRatingWidget() { global $modSettings, $user_info, $context, $txt; if ($user_info['is_guest']) { AjaxErrorMsg($txt['no_like_for_guests']); } $xml = isset($_REQUEST['xml']); $content_id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0; $ctype = isset($_REQUEST['c']) ? (int) $_REQUEST['c'] : 0; if (0 == $ctype || 0 == $content_id) { AjaxErrorMsg($txt['rating_invalid_params']); } if ($xml) { EoS_Smarty::loadTemplate('xml_blocks'); $context['template_functions'] = 'ratingwidget'; } else { EoS_Smarty::loadTemplate('ratings/widget'); } // todo: allow rating without ajax / js $request = smf_db_query('SELECT m.id_msg, m.id_topic, m.id_board FROM {db_prefix}messages AS m WHERE m.id_msg = {int:id} LIMIT 1', array('id' => $content_id)); list($id_msg, $id_topic, $id_board) = mysql_fetch_row($request); mysql_free_result($request); $context['result_count'] = 0; $uniques = array(true, false); foreach ($uniques as $uniqueness) { foreach ($modSettings['ratings'] as $key => $rating) { if ($rating['unique'] != $uniqueness) { continue; } if (Ratings::isAllowed($key, $id_board)) { $context['result_count']++; $context['ratings'][] = array('rtype' => (int) $key, 'label' => $rating['text'], 'unique' => $rating['unique']); } } } $context['content_id'] = $content_id; $context['json_data'] = htmlspecialchars(json_encode(array('id' => $content_id, 'error_text' => $txt['ratingwidget_error']))); }