Hello!
2006-04-05 - the special formula was corrected (mawenzi)
2006-04-05 - the mistake in realization of the formula is corrected (Eld)
Excuse for my bad English, but I would like to share with you a little change in gallery.
I did not accept rating system (TOP 10) in gallery, becouse they a not correct.
Because in top of a rating table there were voices as which it is impossible to consider correct.
eg.
rating: 5, votes: 1
rating: 5, votes: 1
rating: 5, votes: 2
rating: 4.8, votes: 20
rating: 4.5, votes: 15
IT'S NOT CORRECT!
Must be:
rating: 4.8, votes: 20
rating: 4.5, votes: 15
rating: 5, votes: 2
rating: 5, votes: 1
rating: 5, votes: 1
Having reflected, I have thought up other variant of an estimation of a rating of photos.
The estimation of a rating is made under the special formula on the basis of standard data about votings for a photo.
This special formula: rating = (POW((i.image_votes/15),(1/3))) * (i.image_rating-3)
Where 15 - a number of poll when voting can be considered taken place.
The formula correctly considers influence of negative voices on voting.
All possible variants of votings have been counted up and checked up in Excel and is found out, that the formula is true.
And
For change of your TOP-rating make following changes:
------------------------------------------------------------------------------
Step 1
Open /top.php
Find code:
$sql = "SELECT i.image_id, i.user_id, i.cat_id, i.image_name, i.image_rating, i.image_votes, c.cat_name".get_user_table_field(", u.", "user_name")."
FROM ".IMAGES_TABLE." i, ".CATEGORIES_TABLE." c
LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = i.user_id)
WHERE i.image_active = 1 AND i.cat_id NOT IN ($cat_id_sql) AND i.cat_id = c.cat_id
$cat_match_sql
ORDER BY i.image_rating DESC, i.image_votes DESC, i.image_name ASC
LIMIT 10";
and REPLACE WITH:
$sql = "SELECT i.image_id, i.user_id, i.cat_id, i.image_name, i.image_rating, i.image_votes, c.cat_name".get_user_table_field(", u.", "user_name")."
FROM ".IMAGES_TABLE." i, ".CATEGORIES_TABLE." c
LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = i.user_id)
WHERE i.image_active = 1 AND i.cat_id NOT IN ($cat_id_sql) AND i.cat_id = c.cat_id
$cat_match_sql
ORDER BY (POW((i.image_votes/15),(1/3))) * (i.image_rating-3) DESC
LIMIT 10";
Or if you want that it was the RATING of WEEK (as it was made by me for myself)
AND if you wish to deduce in a rating of photos preview:
REPLACE WITH
------------------------------------------
$new_time = time() - 60 * 60 * 24 * 7;
// $new_time - for what term to deduce photos (for example for last week)
$sql = "SELECT i.image_id, i.user_id, i.cat_id, i.image_name, i.image_thumb_file, i.image_rating, i.image_votes, c.cat_name".get_user_table_field(", u.", "user_name")."
FROM ".IMAGES_TABLE." i, ".CATEGORIES_TABLE." c
LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = i.user_id)
WHERE i.image_date >= $new_time AND i.image_active = 1 AND i.cat_id NOT IN ($cat_id_sql) AND i.cat_id = c.cat_id
$cat_match_sql
ORDER BY (POW((i.image_votes/15),(1/3))) * (i.image_rating-3) DESC
LIMIT 10";
Step 2
Open: your_template_path/top.html[/b]
find block of code, where your TOP rating is displaying:
<tr>
<td class="head1" valign="top" colspan="5">{lang_top_image_rating}</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>1</b></td>
<td valign="top" class="row1">{image_rating_1}</td>
<td valign="top" class="row1">{image_rating_user_1}</td>
<td valign="top" class="row1">{image_rating_cat_1}</td>
<td valign="top" class="row1" nowrap>{image_rating_number_1}</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>2</b></td>
<td valign="top" class="row2">{image_rating_2}</td>
<td valign="top" class="row2">{image_rating_user_2}</td>
<td valign="top" class="row2">{image_rating_cat_2}</td>
<td valign="top" class="row2" nowrap>{image_rating_number_2}</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>3</b></td>
<td valign="top" class="row1">{image_rating_3}</td>
<td valign="top" class="row1">{image_rating_user_3}</td>
<td valign="top" class="row1">{image_rating_cat_3}</td>
<td valign="top" class="row1" nowrap>{image_rating_number_3}</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>4</b></td>
<td valign="top" class="row2">{image_rating_4}</td>
<td valign="top" class="row2">{image_rating_user_4}</td>
<td valign="top" class="row2">{image_rating_cat_4}</td>
<td valign="top" class="row2" nowrap>{image_rating_number_4}</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>5</b></td>
<td valign="top" class="row1">{image_rating_5}</td>
<td valign="top" class="row1">{image_rating_user_5}</td>
<td valign="top" class="row1">{image_rating_cat_5}</td>
<td valign="top" class="row1" nowrap>{image_rating_number_5}</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>6</b></td>
<td valign="top" class="row2">{image_rating_6}</td>
<td valign="top" class="row2">{image_rating_user_6}</td>
<td valign="top" class="row2">{image_rating_cat_6}</td>
<td valign="top" class="row2" nowrap>{image_rating_number_6}</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>7</b></td>
<td valign="top" class="row1">{image_rating_7}</td>
<td valign="top" class="row1">{image_rating_user_7}</td>
<td valign="top" class="row1">{image_rating_cat_7}</td>
<td valign="top" class="row1" nowrap>{image_rating_number_7}</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>8</b></td>
<td valign="top" class="row2">{image_rating_8}</td>
<td valign="top" class="row2">{image_rating_user_8}</td>
<td valign="top" class="row2">{image_rating_cat_8}</td>
<td valign="top" class="row2" nowrap>{image_rating_number_8}</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>9</b></td>
<td valign="top" class="row1">{image_rating_9}</td>
<td valign="top" class="row1">{image_rating_user_9}</td>
<td valign="top" class="row1">{image_rating_cat_9}</td>
<td valign="top" class="row1" nowrap>{image_rating_number_9}</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>10</b></td>
<td valign="top" class="row2">{image_rating_10}</td>
<td valign="top" class="row2">{image_rating_user_10}</td>
<td valign="top" class="row2">{image_rating_cat_10}</td>
<td valign="top" class="row2" nowrap>{image_rating_number_10}</td>
</tr>
and REPLACE WITH:
<tr>
<td class="head1" valign="top" colspan="5">{lang_top_image_rating}</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>1</b></td>
<td valign="top" class="row1" align="left">{image_rating_image_1}</td>
<td valign="top" colspan=3 class="row1" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_1}</td></tr>
<tr><td>author:</td><td>{image_rating_user_1}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_1}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_1}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>2</b></td>
<td valign="top" class="row2" align="left">{image_rating_image_2}</td>
<td valign="top" colspan=3 class="row2" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_2}</td></tr>
<tr><td>author:</td><td>{image_rating_user_2}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_2}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_2}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>3</b></td>
<td valign="top" class="row1" align="left">{image_rating_image_3}</td>
<td valign="top" colspan=3 class="row1" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_3}</td></tr>
<tr><td>author:</td><td>{image_rating_user_3}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_3}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_3}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>4</b></td>
<td valign="top" class="row2" align="left">{image_rating_image_4}</td>
<td valign="top" colspan=3 class="row2" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_4}</td></tr>
<tr><td>author:</td><td>{image_rating_user_4}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_4}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_4}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>5</b></td>
<td valign="top" class="row1" align="left">{image_rating_image_5}</td>
<td valign="top" colspan=3 class="row1" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_5}</td></tr>
<tr><td>author:</td><td>{image_rating_user_5}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_5}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_5}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>6</b></td>
<td valign="top" class="row2" align="left">{image_rating_image_6}</td>
<td valign="top" colspan=3 class="row2" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_6}</td></tr>
<tr><td>author:</td><td>{image_rating_user_6}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_6}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_6}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>7</b></td>
<td valign="top" class="row1" align="left">{image_rating_image_7}</td>
<td valign="top" colspan=3 class="row1" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_7}</td></tr>
<tr><td>author:</td><td>{image_rating_user_7}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_7}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_7}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>8</b></td>
<td valign="top" class="row2" align="left">{image_rating_image_8}</td>
<td valign="top" colspan=3 class="row2" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_8}</td></tr>
<tr><td>author:</td><td>{image_rating_user_8}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_8}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_8}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row1" align="center"><b>9</b></td>
<td valign="top" class="row1" align="left">{image_rating_image_9}</td>
<td valign="top" colspan=3 class="row1" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_9}</td></tr>
<tr><td>author:</td><td>{image_rating_user_9}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_9}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_9}</td></tr>
</table>
</td>
</tr>
<tr>
<td valign="top" class="row2" align="center"><b>10</b></td>
<td valign="top" class="row2" align="left">{image_rating_image_10}</td>
<td valign="top" colspan=3 class="row2" width=100%><table border=0>
<tr><td>image:</td><td>{image_rating_openwindow_10}</td></tr>
<tr><td>author:</td><td>{image_rating_user_10}</td></tr>
<tr><td>category:</td><td>{image_rating_cat_10}</td></tr>
<tr><td>rating:</td><td>{image_rating_number_10}</td></tr>
</table>
</td>
</tr>
EXAMPLE: