Ejemplo n.º 1
0
/**
 * 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'])));
}