Optimize ExtraField recollection to avoid error on big portals -refs BT#16893

pull/3140/head
NicoDucou 6 years ago
parent b4211a4280
commit baef263cc4
  1. 24
      main/inc/lib/sessionmanager.lib.php

@ -7611,23 +7611,15 @@ class SessionManager
// Get session field values
$extra = new ExtraFieldValue('session');
$sessionFieldValueList = $extra->get_all(
[
"field_id IN ( ".implode(", ", $variablePlaceHolders)." )" => array_keys($fields),
]
);
foreach ($sessionFieldValueList as $sessionFieldValue) {
// Match session field values to session
if ($sessionFieldValue['item_id'] != $sessionId) {
continue;
$sessionFieldValueList = [];
foreach (array_keys($fields) as $fieldId) {
$sessionFieldValue = $extra->get_values_by_handler_and_field_id($sessionId, $fieldId);
if ($sessionFieldValue != false) {
$sessionFieldValueList[$fieldId] = $sessionFieldValue;
}
// Check if session field value is set in session field list
if (!isset($fields[$sessionFieldValue['field_id']])) {
continue;
}
}
foreach ($sessionFieldValueList as $sessionFieldValue) {
$extrafieldVariable = $fields[$sessionFieldValue['field_id']];
$extrafieldValue = $sessionFieldValue['value'];

Loading…
Cancel
Save