Skip to content

Commit 0893b56

Browse files
committed
removed: no longer calculate total view counts on plugin settings page
On large sites with a lot of history these counts take increasingly more time to calculate, resulting in time outs.
1 parent 88b5dc3 commit 0893b56

File tree

3 files changed

+12
-48
lines changed

3 files changed

+12
-48
lines changed

languages/en.php

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
'entity_view_counter:settings:description' => "In order to track the views of an entity type, please check it below. If you enable a new plugin you may have to check back here, because by default the entity type will NOT be tracked.",
77
'entity_view_counter:settings:entity_type' => "Entity type to be tracked",
8-
'entity_view_counter:settings:num_views' => "Total number of views",
98
'entity_view_counter:settings:delete' => "Remove all tracked views",
109

1110
'entity_view_counter:stats:title' => "Statistics",

languages/nl.php

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
'entity_view_counter:stats:lastyear' => 'Vorig jaar',
2121
'entity_view_counter:stats:chart:recent' => 'Recente weergaven',
2222
'entity_view_counter:stats:chart:years' => 'Jaar totalen',
23-
'entity_view_counter:settings:num_views' => 'Totaal aantal weergaven',
2423
'entity_view_counter:settings:delete' => 'Verwijder alle gevolgde weergaven',
2524
'entity_view_counter:action:admin:reset_counter:success' => 'Alle gevolgde weergaven zijn verwijderd',
2625
'entity_view_counter:entity:menu:views' => '%s weergaven',

views/default/plugins/entity_view_counter/settings.php

+12-46
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,12 @@
11
<?php
22

3-
use Elgg\Database\Select;
4-
5-
$object_types = elgg_extract('object', elgg_entity_types_with_capability('searchable'), []);
6-
73
echo elgg_view('output/longtext', [
84
'value' => elgg_echo('entity_view_counter:settings:description'),
95
]);
106

11-
// get counts for all subtypes
12-
// this could take a while
13-
set_time_limit(0);
14-
15-
$select = Select::fromTable('annotations', 'a');
16-
$e = $select->joinEntitiesTable('a', 'entity_guid');
17-
$select->select('count(*) as total')
18-
->addSelect("{$e}.type")
19-
->addSelect("{$e}.subtype")
20-
->where($select->compare("{$e}.type", '=', 'object', ELGG_VALUE_STRING))
21-
->andWhere($select->compare("{$e}.subtype", 'in', $object_types, ELGG_VALUE_STRING))
22-
->andWhere($select->compare('a.name', '=', ENTITY_VIEW_COUNTER_ANNOTATION_NAME, ELGG_VALUE_STRING))
23-
->groupBy("{$e}.type")
24-
->addGroupBy("{$e}.subtype");
25-
26-
$counts = elgg()->db->getData($select, function ($row) {
27-
return (array) $row;
28-
});
29-
// order counts into easier format
30-
$ordered_counts = [];
31-
foreach ($counts as $count) {
32-
$ordered_counts[$count['subtype']] = (int) $count['total'];
33-
}
34-
357
// listing
368
$row = [
379
elgg_format_element('th', [], elgg_echo('entity_view_counter:settings:entity_type')),
38-
elgg_format_element('th', ['class' => 'center'], elgg_echo('entity_view_counter:settings:num_views')),
3910
elgg_format_element('th', ['class' => 'center'], elgg_echo('entity_view_counter:settings:delete')),
4011
];
4112

@@ -48,6 +19,8 @@
4819
]);
4920

5021
$rows = [];
22+
23+
$object_types = elgg_extract('object', elgg_entity_types_with_capability('searchable'), []);
5124
foreach ($object_types as $subtype) {
5225
$row = [];
5326

@@ -60,23 +33,16 @@
6033
'switch' => true,
6134
]));
6235

63-
$count = elgg_extract($subtype, $ordered_counts, 0);
64-
$row[] = elgg_format_element('td', ['class' => 'center'], $count);
65-
66-
if ($count > 0) {
67-
$row[] = elgg_format_element('td', ['class' => 'center'], elgg_view('output/url', [
68-
'text' => false,
69-
'href' => elgg_generate_action_url('entity_view_counter/admin/reset_counter', [
70-
'subtype' => $subtype,
71-
]),
72-
'icon' => 'delete',
73-
'title' => elgg_echo('delete'),
74-
'confirm' => elgg_echo('deleteconfirm:plural'),
75-
'class' => 'entity-view-counter-reset',
76-
]));
77-
} else {
78-
$row[] = elgg_format_element('td', [], '&nbsp;');
79-
}
36+
$row[] = elgg_format_element('td', ['class' => 'center'], elgg_view('output/url', [
37+
'text' => false,
38+
'href' => elgg_generate_action_url('entity_view_counter/admin/reset_counter', [
39+
'subtype' => $subtype,
40+
]),
41+
'icon' => 'delete',
42+
'title' => elgg_echo('delete'),
43+
'confirm' => elgg_echo('deleteconfirm:plural'),
44+
'class' => 'entity-view-counter-reset',
45+
]));
8046

8147
$rows[] = elgg_format_element('tr', [], implode(PHP_EOL, $row));
8248
}

0 commit comments

Comments
 (0)