1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-12 17:54:44 +02:00

Add a session cache for column options, optimization in ProcessPageLister

This commit is contained in:
Ryan Cramer
2023-02-09 13:55:23 -05:00
parent 792eff6d41
commit 0f6cd3c148

View File

@@ -630,9 +630,14 @@ class ProcessPageLister extends Process implements ConfigurableModule {
$value = $input->post('columns'); $value = $input->post('columns');
if($value !== null && $value !== 'ignore' && !in_array('disableColumns', $this->toggles)) { if($value !== null && $value !== 'ignore' && !in_array('disableColumns', $this->toggles)) {
$columns = array(); $columns = array();
$columnOptions = $this->sessionGet('columnOptions');
if(empty($columnOptions)) {
$columnOptions = $this->buildColumnsField()->getOptions();
$this->sessionSet('columnOptions', $columnOptions);
}
foreach($sanitizer->array($value) as $name) { foreach($sanitizer->array($value) as $name) {
$name = $sanitizer->name($name); $name = $sanitizer->name($name);
if(strlen($name)) $columns[] = $name; if(strlen($name) && isset($columnOptions[$name])) $columns[] = $name;
} }
if(count($columns)) { if(count($columns)) {
$this->sessionSet('columns', $columns); $this->sessionSet('columns', $columns);