Skip to content

Commit

Permalink
Merge pull request #4293 from ExpressionEngine/bug/7.x/member-listing…
Browse files Browse the repository at this point in the history
…-pagination

Resolved #4286 and #4287 where member listings had pagination issues
  • Loading branch information
bryannielsen committed Jun 13, 2024
2 parents bd6302a + aac701a commit 0a94c37
Showing 1 changed file with 19 additions and 15 deletions.
34 changes: 19 additions & 15 deletions system/ee/ExpressionEngine/Controller/Members/Members.php
Original file line number Diff line number Diff line change
Expand Up @@ -1111,8 +1111,7 @@ protected function listingsPage($primaryRole = null)

$base_url = ee('CP/URL')->make('members');

$members = ee('Model')->get('Member')
->with('PrimaryRole', 'Roles');
$members = ee('Model')->get('Member');

$filters = ee('CP/Filter');
$roleFilter = $this->createRoleFilter($primaryRole);
Expand Down Expand Up @@ -1222,18 +1221,6 @@ function ($key) {
}
$columns = array_filter($columns);

foreach ($columns as $column) {
if (!empty($column)) {
if (!empty($column->getEntryManagerColumnModels())) {
foreach ($column->getEntryManagerColumnModels() as $with) {
if (!empty($with)) {
$members->with($with);
}
}
}
}
}

$column_renderer = new ColumnRenderer($columns);
$table_columns = $column_renderer->getTableColumnsConfig();
$table->setColumns($table_columns);
Expand Down Expand Up @@ -1309,9 +1296,26 @@ function ($key) {
->offset($offset)
->all();

// Re-query the members with relationship data eager loaded for display
$memberData = ee('Model')->get('Member')->filter('member_id', 'IN', $members->pluck('member_id'))
->with('PrimaryRole', 'Roles');

// Apply eager loads for columns
foreach ($columns as $column) {
if (!empty($column) && !empty($column->getEntryManagerColumnModels())) {
foreach ($column->getEntryManagerColumnModels() as $with) {
if (!empty($with)) {
$memberData->with($with);
}
}
}
}

$data = array();
$memberData = $memberData->all()->indexBy('member_id');

foreach ($members as $member) {
foreach ($members->pluck('member_id') as $member_id) {
$member = $memberData[$member_id];
$attrs = [
'member_id' => $member->member_id,
'title' => $member->screen_name,
Expand Down

0 comments on commit 0a94c37

Please sign in to comment.