]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
more upgrade-friendly scores
authorEvan Prodromou <evan@status.net>
Fri, 2 Mar 2012 16:20:01 +0000 (10:20 -0600)
committerEvan Prodromou <evan@status.net>
Fri, 2 Mar 2012 16:20:01 +0000 (10:20 -0600)
ActivitySpamPlugin.php
Spam_score.php

index 5fe5360fde65d0095e8fd84344e3628c35398a7f..62cfbda22f23d2886f47d14ae951b1209f97f978 100644 (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)
@@ -135,9 +139,12 @@ class ActivitySpamPlugin extends Plugin
 
         $score = new Spam_score();
 
-        $score->notice_id = $notice->id;
-        $score->score     = $result->probability;
-        $score->created   = common_sql_now();
+        $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();
 
index fde2876d0c24555b73683d3c8ef07caa68862bfb..440edb6b7fcfee80106344385165d8fca2dbcb67 100644 (file)
@@ -1,32 +1,32 @@
 <?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2011, StatusNet, Inc.
- *
- * Score of a notice by activity spam service
- * 
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * @category  Spam
- * @package   StatusNet
- * @author    Evan Prodromou <evan@status.net>
- * @copyright 2011 StatusNet, Inc.
- * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link      http://status.net/
- */
+  /**
  * StatusNet - the distributed open-source microblogging tool
  * Copyright (C) 2011, StatusNet, Inc.
  *
  * Score of a notice by activity spam service
  
  * PHP version 5
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Affero General Public License for more details.
  *
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * @category  Spam
  * @package   StatusNet
  * @author    Evan Prodromou <evan@status.net>
  * @copyright 2011 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
 
 if (!defined('STATUSNET')) {
     exit(1);
@@ -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'),
             ),
         );
     }