$this->hideSpam = common_config('activityspam', 'hidespam');
+ // Let DB_DataObject find Spam_score
+
+ common_config_set('db', 'class_location',
+ common_config('db', 'class_location') .':'.dirname(__FILE__));
+
return true;
}
return true;
}
- /**
- * Load related modules when needed
- *
- * @param string $cls Name of the class to be loaded
- *
- * @return boolean hook value; true means continue processing, false means stop.
- */
-
- function onAutoload($cls)
- {
- $dir = dirname(__FILE__);
-
- switch ($cls)
- {
- case 'TrainAction':
- case 'SpamAction':
- include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
- return false;
- case 'Spam_score':
- include_once $dir . '/'.$cls.'.php';
- return false;
- case 'SpamFilter':
- case 'SpamNoticeStream':
- case 'TrainSpamForm':
- case 'TrainHamForm':
- include_once $dir . '/'.strtolower($cls).'.php';
- return false;
- default:
- return true;
- }
- }
-
/**
* When a notice is saved, check its spam score
*
}
function onNoticeDeleteRelated($notice) {
- $score = Spam_score::staticGet('notice_id', $notice->id);
+ $score = Spam_score::getKV('notice_id', $notice->id);
if (!empty($score)) {
$score->delete();
}
if (!empty($notice)) {
- $score = $this->getScore($notice);
+ $score = Spam_score::getKV('notice_id', $notice->id);
if (empty($score)) {
- $this->debug("No score for notice " . $notice->id);
- // XXX: show a question-mark or something
+ // If it's empty, we can train it.
+ $form = new TrainSpamForm($out, $notice);
+ $form->show();
} else if ($score->is_spam) {
$form = new TrainHamForm($out, $notice);
$form->show();
/**
* Map URLs to actions
*
- * @param Net_URL_Mapper $m path-to-action mapper
+ * @param URLMapper $m path-to-action mapper
*
* @return boolean hook value; true means continue processing, false means stop.
*/
- function onRouterInitialized($m)
+ public function onRouterInitialized(URLMapper $m)
{
$m->connect('main/train/spam',
array('action' => 'train', 'category' => 'spam'));
return true;
}
- function onPluginVersion(&$versions)
+ function onPluginVersion(array &$versions)
{
$versions[] = array('name' => 'ActivitySpam',
- 'version' => STATUSNET_VERSION,
+ 'version' => GNUSOCIAL_VERSION,
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:ActivitySpam',
'description' =>
return true;
}
- function getScore($notice)
- {
- $score = Spam_score::staticGet('notice_id', $notice->id);
-
- if (!empty($score)) {
- return $score;
- }
-
- try {
-
- $result = $this->filter->test($notice);
-
- $score = Spam_score::saveNew($notice, $result);
-
- $this->log(LOG_INFO, "Notice " . $notice->id . " has spam score " . $score->score);
-
- } catch (Exception $e) {
- // Log but continue
- $this->log(LOG_ERR, $e->getMessage());
- $score = null;
- }
-
- return $score;
- }
-
- function onStartReadWriteTables(&$alwaysRW, &$rwdb) {
- $alwaysRW[] = 'spam_score';
- return true;
- }
-
-
function onEndNoticeInScope($notice, $profile, &$bResult)
{
if ($this->hideSpam) {
if ($bResult) {
- $score = Spam_score::staticGet('notice_id', $notice->id);
+ $score = Spam_score::getKV('notice_id', $notice->id);
if (!empty($score) && $score->is_spam) {
if (empty($profile) ||
/**
* Pre-cache our spam scores if needed.
*/
- function onEndNoticeListPrefill(&$notices, &$profiles, $avatarSize) {
+ function onEndNoticeListPrefill(array &$notices, array &$profiles, array $notice_ids, Profile $scoped=null) {
if ($this->hideSpam) {
- foreach ($notices as $notice) {
- $ids[] = $notice->id;
- }
- Memcached_DataObject::multiGet('Spam_score', 'notice_id', $ids);
+ Spam_score::multiGet('notice_id', $notice_ids);
}
return true;
}