对于第二个问题,我想看看User Delete module (click) 的代码。
该模块还会禁用用户帐户并取消发布某个用户的所有节点/cmets。通过扩展代码,您可以轻松地创建另一种可能性来取消发布 + 删除某个用户的所有节点/cmets 并阻止该帐户。
在模块中取消发布代码之后,您应该只添加删除代码(如果模块是通过 sql 查询或使用 drupal 删除函数进行选择,则在 sql 中)。
另一种选择是让一个视图(使用视图模块)只供管理员查看,您可以在其中使用过滤器选择某个用户,然后列出他/她的帖子。然后在 node-contenttype.tpl.php 中放置一个按钮,该按钮调用一个删除所有节点/cmets 和用户的函数。
第一个问题(发布频率)
我一直在考虑评论帖子的限制。如果我没记错的话,Drupal 将 cmets 存储在一个单独的表中并具有特定于注释的功能。
我将创建一个新模块并使用comment_nodeapi function 我将在“插入”操作中检查当前用户在特定时间范围内已经完成了多少 cmets。
为了检查这一点,我将在数据库上编写一个自定义 sql 查询,该查询获取由 uid 生成的 alle cmets 的计数,其中 post_date 大于 NOW-1hour。如果该计数大于 10 或 15 或您想要的任何发布频率,那么您可以提供 a message back to the user。您可以使用全局 $user 变量检索用户 ID 和名称。
(例如:print $user->name;)
您必须自己检查 sql 查询,但是当您有金额时,这里有一些代码:
<?php
function comment_nodeapi(&$node, $op, $arg = 0) {
switch ($op) {
case 'insert':
//PLACE HERE THE SQL TO GET THE COUNT
if($count > 15){
$repeat = FALSE;
$type = 'status'
drupal_set_message("You have reached the comment limit for this time.", $type, $repeat);
break;
}else{
db_query('INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) VALUES (%d, %d, NULL, %d, 0)', $node->nid, $node->changed, $node->uid);
break;
}
}
}
?>
(此代码尚未经过测试,因此无法保证,但这应该会让您走上正轨)