diff --git a/application/displayblock.class.inc.php b/application/displayblock.class.inc.php index f6d4513e26..10df7c912e 100644 --- a/application/displayblock.class.inc.php +++ b/application/displayblock.class.inc.php @@ -1411,7 +1411,10 @@ class MenuBlock extends DisplayBlock // Stimuli $aStates = MetaModel::EnumStates($sClass); - if (count($aStates) > 0) + // Do not perform time consuming computations if there are too may objects in the list + $iLimit = MetaModel::GetConfig()->Get('complex_actions_limit'); + + if ((count($aStates) > 0) && (($iLimit == 0) || ($oSet->Count() < $iLimit))) { // Life cycle actions may be available... if all objects are in the same state $oSet->Rewind(); diff --git a/core/config.class.inc.php b/core/config.class.inc.php index 63d544d202..678eb7dc3a 100644 --- a/core/config.class.inc.php +++ b/core/config.class.inc.php @@ -536,6 +536,15 @@ class Config 'source_of_value' => '', 'show_in_conf_sample' => true, ), + 'complex_actions_limit' => array( + 'type' => 'integer', + 'description' => 'Display the "actions" menu items that require long computation only if the list of objects is contains less objects than this number (0 means no limit)', + // examples... not used + 'default' => 50, + 'value' => 50, + 'source_of_value' => '', + 'show_in_conf_sample' => false, + ), 'synchro_prevent_delete_all' => array( 'type' => 'bool', 'description' => 'Stop the synchro if all the replicas of a data source become obsolete at the same time.',