View source
<?php
function flag_abuse_menu() {
$items = array();
$items[FLAG_ADMIN_PATH . '/abuse'] = array(
'title' => 'Abuse Flags',
'description' => 'Configure Flag Abuse',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'flag_abuse_settings_form',
),
'access arguments' => array(
'administer flags',
),
'file' => 'includes/flag_abuse.admin.inc',
'type' => MENU_LOCAL_TASK,
'weight' => 10,
);
return $items;
}
function flag_abuse_flag_default_flags() {
$flags = array();
module_load_include('inc', 'flag_abuse', 'includes/flag_abuse.flag_default');
_flag_abuse_abuse_node_flags($flags);
_flag_abuse_abuse_comment_flags($flags);
_flag_abuse_abuse_user_flags($flags);
return $flags;
}
function flag_abuse_views_api() {
return array(
'api' => 3.0,
'path' => drupal_get_path('module', 'flag_abuse') . '/includes',
);
}
function flag_abuse_features_pipe_flag_alter(&$pipe, $data, $export) {
foreach ($data as $flag_name) {
if (flag_abuse_is_abuse_flag($flag_name)) {
$pipe['dependencies'][] = 'flag_abuse';
break;
}
}
}
function flag_abuse_is_abuse_flag($flag_name) {
return in_array($flag_name, flag_abuse_get_abuse_flags(), TRUE);
}
function flag_abuse_get_abuse_flags() {
return variable_get('flag_abuse_flags', array(
'abuse_node',
'abuse_comment',
'abuse_user',
));
}
function flag_abuse_get_api_type() {
if (FLAG_API_VERSION == 2) {
$type = 'content_type';
}
elseif (FLAG_API_VERSION == 3) {
$type = 'entity_type';
}
return $type;
}
function flag_abuse_flag_access($flag, $entity_id, $action, $account) {
$type = flag_abuse_get_api_type();
$content_flags = flag_get_counts($flag->{$type}, $entity_id);
if (flag_abuse_is_abuse_flag($flag->name)) {
if (isset($content_flags['abuse_whitelist_' . $flag->{$type}]) && $content_flags['abuse_whitelist_' . $flag->{$type}] == 1) {
flag_reset_flag($flag, $entity_id);
return FALSE;
}
}
}