diff --git a/contrib/score/main.php b/contrib/score/main.php
index 3867690f..b16828da 100644
--- a/contrib/score/main.php
+++ b/contrib/score/main.php
@@ -8,124 +8,77 @@
*/
class Score extends Extension {
-// event handler {{{
+ var $theme;
+
public function receive_event($event) {
+ if(is_null($this->theme)) $this->theme = get_theme_object("score", "ScoreTheme");
+
if(is_a($event, 'InitExtEvent')) {
global $config;
- if($config->get_int("ext_ratings_version") < 1) {
+ if($config->get_int("ext_score_version", 0) < 1) {
$this->install();
}
+
+ global $config;
+ $config->set_default_string("ext_rating_anon_privs", 'sq');
+ $config->set_default_string("ext_rating_user_privs", 'sq');
}
-/*
- if(is_a($event, 'ImageDeletionEvent')) {
- $this->delete_comments($event->image->id);
- }
- if(is_a($event, 'CommentDeletionEvent')) {
- $this->delete_comment($event->comment_id);
+ if(is_a($event, 'PageRequestEvent') && $event->page_name == "score" &&
+ $event->get_arg(0) == "set" && $event->user->is_admin() &&
+ isset($_POST['score']) && isset($_POST['image_id'])) {
+ $i_score = int_escape($_POST['score']);
+ $i_image_id = int_escape($_POST['image_id']);
+
+ if($i_score >= -2 || $i_score <= 2) {
+ $this->add_vote($i_image_id, $event->user->id, $i_score);
+ }
+
+ $event->page->set_mode("redirect");
+ $event->page->set_redirect(make_link("post/view/$i_image_id"));
}
+ if(is_a($event, 'DisplayingImageEvent')) {
+ $this->theme->display_rater($event->page, $event->image->id, $event->image->score);
+ }
+
if(is_a($event, 'SetupBuildingEvent')) {
- $sb = new SetupBlock("Comment Options");
- $sb->add_label("Allow anonymous comments ");
- $sb->add_bool_option("comment_anon");
- $sb->add_label("
Limit to ");
- $sb->add_int_option("comment_limit", 1, 60);
- $sb->add_label(" comments per ");
- $sb->add_int_option("comment_window", 1, 60);
- $sb->add_label(" minutes");
- $sb->add_label("
Show ");
- $sb->add_int_option("comment_count", 0, 100);
- $sb->add_label(" recent comments on the index");
- $event->panel->add_block($sb);
+ /*
+ TODO: disable anon voting
+ */
}
-*/
}
- private function can_comment() {
- global $config, $user;
- return $config->get_bool("rate_anon") || ($user->id != $config->get_int("anon_id"));
- }
-// }}}
-// installer {{{
- protected function install() {
+ private function install() {
global $database;
global $config;
- $database->Execute("CREATE TABLE `image_voters` (
- `image_id` int(11) NOT NULL,
- `user_id` int(11) NOT NULL,
- `vote` tinyint(4) NOT NULL,
- `voted` datetime NOT NULL,
- PRIMARY KEY (`image_id`,`user_id`)
- )");
- $config->set_int("ext_ratings_version", 1);
- }
-// }}}
-// page building {{{
- private function build_image_rating($image_id) {
- global $config;
- $i_image_id = int_escape($image_id);
- return $this->query_to_html("
- SELECT
- users.id as user_id, users.name as user_name,
- comments.comment as comment, comments.id as comment_id,
- comments.image_id as image_id, comments.owner_ip as poster_ip
- FROM comments
- LEFT JOIN users ON comments.owner_id=users.id
- WHERE comments.image_id=?
- ORDER BY comments.id ASC
- LIMIT ?
- ", array($i_image_id, $config->get_int('recent_count')));
- }
-
- private function build_rater($image_id) {
- if($this->can_comment()) {
- $i_image_id = int_escape($image_id);
- return "
-