Skip to content

Commit

Permalink
Merge pull request #3141 from ExpressionEngine/bug/6.x/entry-manager-…
Browse files Browse the repository at this point in the history
…available-columns

Resolved #3135, #3047 where the columns in Entry Manager did not dynamically update if some column is not available
  • Loading branch information
intoeetive committed Apr 3, 2023
2 parents 3937df0 + 310c427 commit 071c0a7
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
Expand Up @@ -66,10 +66,15 @@ public static function getColumn($identifier)
*/
public static function getAvailableColumns($channel = false)
{
return array_merge(
self::getStandardColumns(),
self::getChannelFieldColumns($channel)
$columns = array_merge(
static::getStandardColumns(),
static::getCustomFieldColumns($channel)
);
$availableColumns = [];
foreach ($columns as $column) {
$availableColumns[$column->getTableColumnIdentifier()] = $column;
}
return $availableColumns;
}

/**
Expand All @@ -79,17 +84,24 @@ public static function getAvailableColumns($channel = false)
*/
private static function getStandardColumns()
{
return array_map(function ($identifier, $column) {
return self::getColumn($identifier);
}, array_keys(self::$standard_columns), self::$standard_columns);
return array_filter(
array_map(function ($identifier, $column) {
if ($identifier != 'comments' || bool_config_item('enable_comments')) {
return static::getColumn($identifier);
}
}, array_keys(static::$standard_columns), static::$standard_columns),
function ($column) {
return (! empty($column));
}
);
}

/**
* Returns Column objects for all custom field columns
*
* @return array[Column]
*/
private static function getChannelFieldColumns($channel = false)
protected static function getCustomFieldColumns($channel = false)
{
// Grab all the applicable fields based on the channel if there is one.
if (! empty($channel)) {
Expand Down
Expand Up @@ -24,7 +24,13 @@ class ColumnRenderer
*/
public function __construct(array $columns)
{
$this->columns = $columns;
$availableColumnKeys = array_keys(ColumnFactory::getAvailableColumns());
foreach ($columns as $key => $column) {
if (!in_array($key, $availableColumnKeys)) {
continue;
}
$this->columns[$key] = $column;
}
}

/**
Expand Down

0 comments on commit 071c0a7

Please sign in to comment.