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> </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; }