Example #1
0
/**
 * Is the user exempt from throttling?
 * 
 * @param \ElggUser $user
 * @return boolean
 */
function is_exempt($user)
{
    if (!$user instanceof \ElggUser) {
        return false;
    }
    if (elgg_is_admin_logged_in()) {
        return true;
    }
    // trusted users are exempt
    if (elgg_is_active_plugin('trusted_users') && is_callable('trusted_users_is_trusted')) {
        return trusted_users_is_trusted($user);
    }
    return false;
}
function tu_spam_report_river_menu($hook, $type, $return, $params)
{
    if ($params['item']->type == 'object' && elgg_is_logged_in() && !$params['item']->annotation_id) {
        $user = elgg_get_logged_in_user_entity();
        $object = $params['item']->getObjectEntity();
        if (trusted_users_is_trusted($user) && !tu_spam_report_is_marked($object, $user)) {
            // we're a trusted user, give us a spam link
            $text = elgg_view_icon('attention');
            $href = elgg_add_action_tokens_to_url('action/report_spam?guid=' . $object->guid);
            $item = new ElggMenuItem('report_spam', $text, $href);
            $item->setTooltip(elgg_echo('tu_spam_report:mark'));
            $return[] = $item;
        }
    }
    return $return;
}
function tu_spam_report_init()
{
    if (trusted_users_is_trusted(elgg_get_logged_in_user_entity())) {
        // add spam report buttons to entity menus
        elgg_register_plugin_hook_handler('register', 'menu:entity', 'tu_spam_report_entity_menu');
        // run last to create a specific menu for admin
        elgg_register_plugin_hook_handler('register', 'menu:entity', 'tu_spam_report_reported_spam_menu', 1000);
        elgg_register_plugin_hook_handler('register', 'menu:river', 'tu_spam_report_river_menu');
        elgg_register_plugin_hook_handler('register', 'menu:entity', 'tu_spam_report_spammer_menu');
        elgg_register_action('report_spam', dirname(__FILE__) . '/actions/report_spam.php');
        elgg_register_action('reported_spam/delete', dirname(__FILE__) . '/actions/delete.php', 'admin');
        elgg_register_action('reported_spam/notspam', dirname(__FILE__) . '/actions/notspam.php', 'admin');
        elgg_register_action('reported_spam/notspammer', dirname(__FILE__) . '/actions/notspammer.php', 'admin');
        elgg_register_admin_menu_item('administer', 'reported_spam', 'administer_utilities');
        elgg_register_admin_menu_item('administer', 'spammers', 'users');
    }
}
<?php

$user = elgg_get_logged_in_user_entity();
$object = get_entity(get_input('guid'));
$forward = REFERER;
if (!elgg_instanceof($object) || !trusted_users_is_trusted($user)) {
    register_error(elgg_echo('tu_spam_report:error:permissions'));
    forward(REFERER);
}
$owner = $object->getOwnerEntity();
if (tu_spam_report_is_marked($object, $user)) {
    register_error(elgg_echo('tu_spam_report:error:marked'));
    forward(REFERER);
}
$ia = elgg_set_ignore_access(true);
// all good, lets mark it as spam
$object->annotate('tu_spam_report', 1);
// count how many reports there have been
$markcount = elgg_get_annotations(array('guid' => $object->guid, 'annotation_names' => array('tu_spam_report'), 'annotation_values' => array('1'), 'count' => true));
$marklimit = elgg_get_plugin_setting('trusted_users_flag_count', 'trusted_user_spam_report');
$userlimit = elgg_get_plugin_setting('user_spam_count', 'trusted_user_spam_report');
$user_strtotime = elgg_get_plugin_setting('user_spam_strtotime', 'trusted_user_spam_report');
if ($marklimit && $markcount >= $marklimit) {
    // this is enough to call it spam
    $object->disable('reported spam');
    $forward = 'activity';
    // record that the user had content disabled
    // if the user has too much content disabled we'll auto-ban them
    $owner->annotate('content_marked_spam', 1);
    $time_lower = strtotime($user_strtotime);
    if ($time_lower && $userlimit) {