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
/**
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2011, StatusNet, Inc.
* Copyright (C) 2011,2012, StatusNet, Inc.
*
* ActivitySpam Plugin
*
@ -23,7 +23,7 @@
* @category Spam
* @package StatusNet
* @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
* @link http://status.net/
*/
@ -40,7 +40,7 @@ if (!defined('STATUSNET')) {
* @category Spam
* @package StatusNet
* @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
* @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)
@ -137,7 +141,10 @@ class ActivitySpamPlugin extends Plugin
$score->notice_id = $notice->id;
$score->score = $result->probability;
$score->is_spam = $result->isSpam;
$score->scaled = (int) ($result->probability * Spam_score::MAX_SCALED);
$score->created = common_sql_now();
$score->notice_created = $notice->created;
$score->insert();

View File

@ -46,6 +46,7 @@ if (!defined('STATUSNET')) {
class Spam_score extends Managed_DataObject
{
const MAX_SCALED = 1000000;
public $__table = 'spam_score'; // table name
public $notice_id; // int
@ -80,9 +81,15 @@ class Spam_score extends Managed_DataObject
'score' => array('type' => 'double',
'not null' => true,
'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',
'not null' => true,
'description' => 'date this record was created'),
'notice_created' => array('type' => 'datetime',
'description' => 'date the notice was created'),
),
'primary key' => array('notice_id'),
'foreign keys' => array(
@ -90,6 +97,7 @@ class Spam_score extends Managed_DataObject
),
'indexes' => array(
'spam_score_created_idx' => array('created'),
'spam_score_scaled_idx' => array('scaled'),
),
);
}