more upgrade-friendly scores

This commit is contained in:
Evan Prodromou 2012-03-02 10:20:01 -06:00
parent 24feeefcc3
commit 77ab07920f
2 changed files with 50 additions and 35 deletions

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* StatusNet - the distributed open-source microblogging tool * StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2011, StatusNet, Inc. * Copyright (C) 2011,2012, StatusNet, Inc.
* *
* ActivitySpam Plugin * ActivitySpam Plugin
* *
@ -23,7 +23,7 @@
* @category Spam * @category Spam
* @package StatusNet * @package StatusNet
* @author Evan Prodromou <evan@status.net> * @author Evan Prodromou <evan@status.net>
* @copyright 2011 StatusNet, Inc. * @copyright 2011,2012 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/ * @link http://status.net/
*/ */
@ -40,7 +40,7 @@ if (!defined('STATUSNET')) {
* @category Spam * @category Spam
* @package StatusNet * @package StatusNet
* @author Evan Prodromou <evan@status.net> * @author Evan Prodromou <evan@status.net>
* @copyright 2011 StatusNet, Inc. * @copyright 2011,2012 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/ * @link http://status.net/
*/ */
@ -107,7 +107,11 @@ class ActivitySpamPlugin extends Plugin
} }
/** /**
* This should probably be done in its own queue handler * When a notice is saved, check its spam score
*
* @param Notice $notice Notice that was just saved
*
* @return boolean hook value; true means continue processing, false means stop.
*/ */
function onEndNoticeSave($notice) function onEndNoticeSave($notice)
@ -137,7 +141,10 @@ class ActivitySpamPlugin extends Plugin
$score->notice_id = $notice->id; $score->notice_id = $notice->id;
$score->score = $result->probability; $score->score = $result->probability;
$score->is_spam = $result->isSpam;
$score->scaled = (int) ($result->probability * Spam_score::MAX_SCALED);
$score->created = common_sql_now(); $score->created = common_sql_now();
$score->notice_created = $notice->created;
$score->insert(); $score->insert();

View File

@ -1,5 +1,5 @@
<?php <?php
/** /**
* StatusNet - the distributed open-source microblogging tool * StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2011, StatusNet, Inc. * Copyright (C) 2011, StatusNet, Inc.
* *
@ -46,6 +46,7 @@ if (!defined('STATUSNET')) {
class Spam_score extends Managed_DataObject class Spam_score extends Managed_DataObject
{ {
const MAX_SCALED = 1000000;
public $__table = 'spam_score'; // table name public $__table = 'spam_score'; // table name
public $notice_id; // int public $notice_id; // int
@ -80,9 +81,15 @@ class Spam_score extends Managed_DataObject
'score' => array('type' => 'double', 'score' => array('type' => 'double',
'not null' => true, 'not null' => true,
'description' => 'score for the notice (0.0, 1.0)'), 'description' => 'score for the notice (0.0, 1.0)'),
'scaled' => array('type' => 'int',
'description' => 'scaled score for the notice (0, 1000000)'),
'is_spam' => array('type' => 'tinyint',
'description' => 'flag for spamosity'),
'created' => array('type' => 'datetime', 'created' => array('type' => 'datetime',
'not null' => true, 'not null' => true,
'description' => 'date this record was created'), 'description' => 'date this record was created'),
'notice_created' => array('type' => 'datetime',
'description' => 'date the notice was created'),
), ),
'primary key' => array('notice_id'), 'primary key' => array('notice_id'),
'foreign keys' => array( 'foreign keys' => array(
@ -90,6 +97,7 @@ class Spam_score extends Managed_DataObject
), ),
'indexes' => array( 'indexes' => array(
'spam_score_created_idx' => array('created'), 'spam_score_created_idx' => array('created'),
'spam_score_scaled_idx' => array('scaled'),
), ),
); );
} }