/** * stars_content_load_sql * * @param array $pObject * @access public * @return SQL - using the following keys: * stars_load = content_id of the stars item belongs to * stars_rating_count = number of ratings this content has recieved so far * stars_rating = the actual rating normalised to 100 * stars_pixels = the number of pixels that should be displayed using the cool css method * stars_user_rating = the rating given by the user who rated is viewing the page * stars_user_pixels = the number of pixels that should be displayed using the cool css method * * all the version related stars keys are the same as the above - but relating to the currently active version as opposed to the overall rating */ function stars_content_load_sql(&$pObject) { global $gBitSystem, $gBitUser, $gBitSmarty; if (!method_exists($pObject, 'getContentType') || $gBitSystem->isFeatureActive('stars_rate_' . $pObject->getContentType())) { if ($gBitSystem->isFeatureActive('stars_use_ajax')) { $gBitSmarty->assign('loadAjax', TRUE); } $stars = $gBitSystem->getConfig('stars_used_in_display', 5); $pixels = $stars * $gBitSystem->getConfig('stars_icon_width', 22); stars_template_setup($stars); $ret['select_sql'] = ",\n\t\t\tlc.`content_id` AS `stars_load`,\n\t\t\tsts.`rating_count` AS stars_rating_count,\n\t\t\tsts.`rating` AS stars_rating,\n\t\t\t( sts.`rating` * {$pixels} / 100 ) AS stars_pixels,\n\t\t\t( sth.`rating` * {$stars} / 100 ) AS stars_user_rating,\n\t\t\t( sth.`rating` * {$pixels} / 100 ) AS stars_user_pixels "; $ret['join_sql'] = "\n\t\t\tLEFT JOIN `" . BIT_DB_PREFIX . "stars_version` sts ON\n\t\t\t\t( lc.`content_id`=sts.`content_id` AND sts.`version` = 0 )\n\t\t\tLEFT JOIN `" . BIT_DB_PREFIX . "stars_history` sth ON\n\t\t\t\t( lc.`content_id`=sth.`content_id` AND lc.`version`=sth.`version` AND sth.`user_id`='" . $gBitUser->mUserId . "' )"; $ret['select_sql'] .= ",\n\t\t\tlc.`content_id` AS `stars_version_load`,\n\t\t\tv_sts.`rating_count` AS stars_version_rating_count,\n\t\t\tv_sts.`rating` AS stars_version_rating,\n\t\t\t( v_sts.`rating` * {$pixels} / 100 ) AS stars_version_pixels,\n\t\t\t( v_sth.`rating` * {$stars} / 100 ) AS stars_version_user_rating,\n\t\t\t( v_sth.`rating` * {$pixels} / 100 ) AS stars_version_user_pixels "; $ret['join_sql'] .= "\n\t\t\tLEFT JOIN `" . BIT_DB_PREFIX . "stars_version` v_sts ON\n\t\t\t\t( lc.`content_id`=v_sts.`content_id` AND lc.`version`=v_sts.`version` )\n\t\t\tLEFT JOIN `" . BIT_DB_PREFIX . "stars_history` v_sth ON\n\t\t\t\t( lc.`content_id`=v_sth.`content_id` AND lc.`version`=v_sth.`version` AND v_sth.`user_id`='" . $gBitUser->mUserId . "' )"; if ($gBitSystem->isFeatureActive('stars_auto_hide_content')) { // need to take rating_count into the equation as well $ret['where_sql'] = " AND( sts.`rating`>? OR sts.`rating` IS NULL OR sts.`rating`=? )"; $ret['bind_vars'][] = $gBitSystem->getConfig('stars_auto_hide_content'); $ret['bind_vars'][] = 0; } return $ret; } }
<?php global $gBitSystem, $gBitSmarty, $gBitThemes; $registerHash = array('package_name' => 'stars', 'package_path' => dirname(__FILE__) . '/', 'service' => LIBERTY_SERVICE_RATING); $gBitSystem->registerPackage($registerHash); if ($gBitSystem->isPackageActive('stars')) { require_once STARS_PKG_PATH . 'LibertyStars.php'; // if we are using a text browser theme, make sure not to use ajax if ($gBitThemes->getStyle() == 'lynx') { $gBitSystem->setConfig('recommends_use_ajax', FALSE); } // unfortunately we have situations where we can't load stars initiation // from the sql service functions due to the way the center modules work. stars_template_setup(); $gLibertySystem->registerService(LIBERTY_SERVICE_RATING, STARS_PKG_NAME, array('content_load_sql_function' => 'stars_content_load_sql', 'content_list_sql_function' => 'stars_content_list_sql', 'content_expunge_function' => 'stars_content_expunge', 'content_body_tpl' => 'bitpackage:stars/stars_inline_service.tpl', 'content_comment_tpl' => 'bitpackage:stars/stars_inline_service.tpl', 'content_list_sort_tpl' => 'bitpackage:stars/stars_list_sort_service.tpl', 'content_list_actions_tpl' => 'bitpackage:stars/stars_list_actions_service.tpl', 'users_expunge_function' => 'contests_user_expunge')); // make sure all stars votes are removed function stars_user_expunge(&$pObject) { if (is_a($pObject, 'BitUser') && !empty($pObject->mUserId)) { $pObject->mDb->StartTrans(); $pObject->mDb->query("DELETE FROM `" . BIT_DB_PREFIX . "stars_history` WHERE user_id=?", array($pObject->mUserId)); $pObject->mDb->CompleteTrans(); } } }