diff --git a/views/default/entity_view_counter/extends/counter.php b/views/default/entity_view_counter/extends/counter.php index 1dfb5c4..74afc7a 100644 --- a/views/default/entity_view_counter/extends/counter.php +++ b/views/default/entity_view_counter/extends/counter.php @@ -23,19 +23,23 @@ // check if we didn't already view this entity // views are locked by session id -$session_id = session_id(); +$session = elgg_get_session(); -$existing_annotations = elgg_get_entities_from_annotations([ - 'guid' => $entity->guid, - 'annotation_name' => ENTITY_VIEW_COUNTER_ANNOTATION_NAME, - 'annotation_value' => $session_id, - 'count' => true, -]); +$viewed_guids = $session->get('entity_view_counter', []); +if (!is_array($viewed_guids)) { + $viewed_guids = []; +} -if ($existing_annotations) { +if (in_array($entity->guid, $viewed_guids)) { return; } +// write to session, for speed +$viewed_guids[] = $entity->guid; +$session->set('entity_view_counter', $viewed_guids); + +$session_id = $session->getId(); + // log the user who is viewing // if no logged in user, log by entity $owner_guid = elgg_get_logged_in_user_guid() ?: $entity->guid;