Exemple #1
0
function entity_view_counter_entity_menu_hook($hook, $type, $returnvalue, $params)
{
    $result = $returnvalue;
    if (empty($params) | !is_array($params)) {
        return $result;
    }
    $entity = elgg_extract("entity", $params);
    if (empty($entity)) {
        return $result;
    }
    if (!entity_view_counter_is_configured_entity_type($entity->getType(), $entity->getSubtype())) {
        return $result;
    }
    $count = entity_view_counter_count_views($entity);
    $text = "<span title='" . htmlspecialchars(elgg_echo("entity_view_counter:entity:menu:views", array($count)), ENT_QUOTES, "UTF-8", false) . "'>";
    $text .= elgg_view_icon("eye") . $count;
    $text .= "</span>";
    $result[] = ElggMenuItem::factory(array("name" => "view_counter", "text" => $text, "href" => false, "priority" => 300));
    return $result;
}
     if (!empty($subtypes) && is_array($subtypes)) {
         foreach ($subtypes as $subtype) {
             $options = array("name" => "params[entity_types][" . $type . "][" . $subtype . "]", "value" => 1, "default" => false);
             if (entity_view_counter_is_configured_entity_type($type, $subtype)) {
                 $options["checked"] = "checked";
             }
             $content .= "<tr>";
             $content .= "<td class='entity-view-couter-settings-checkbox'>";
             $content .= elgg_view("input/checkbox", $options);
             $content .= "</td>";
             $content .= "<td>" . elgg_echo("item:" . $type . ":" . $subtype) . "</td>";
             $content .= "</tr>";
         }
     } else {
         $options = array("name" => "params[entity_types][" . $type . "]", "value" => 1, "default" => false);
         if (entity_view_counter_is_configured_entity_type($type)) {
             $options["checked"] = "checked";
         }
         $content .= "<tr>";
         $content .= "<td class='entity-view-couter-settings-checkbox'>";
         $content .= elgg_view("input/checkbox", $options);
         $content .= "</td>";
         $content .= "<td>" . elgg_echo("item:" . $type) . "</td>";
         $content .= "</tr>";
     }
 }
 if (!empty($content)) {
     echo "<table class='elgg-table-alt mbm'>";
     echo "<tr>";
     echo "<th>&nbsp;</th>";
     echo "<th>" . elgg_echo("entity_view_counter:settings:entity_type") . "</th>";
function entity_view_counter_is_counted(ElggEntity $entity)
{
    if (php_sapi_name() === 'cli') {
        return true;
    }
    if (!entity_view_counter_is_configured_entity_type($entity->getType(), $entity->getSubtype())) {
        return true;
    }
    if (isset($_SERVER["HTTP_USER_AGENT"]) && preg_match('/bot|crawl|slurp|spider/i', $_SERVER["HTTP_USER_AGENT"])) {
        return true;
    }
    $user = elgg_get_logged_in_user_entity();
    if ($user && $user->getGUID() == $entity->getOwnerGUID()) {
        return true;
    }
    if (is_memcache_available()) {
        $cache = new ElggMemcache('entity_view_counter');
        $key = "view_" . session_id() . "_" . $entity->guid;
        if ($cache->load($key)) {
            return true;
        }
    }
    if (entity_view_counter_ignore_ip()) {
        return true;
    }
    return false;
}