diff --git a/core/config.class.inc.php b/core/config.class.inc.php index 6220a53e6..4f6b67e2f 100644 --- a/core/config.class.inc.php +++ b/core/config.class.inc.php @@ -1456,6 +1456,14 @@ class Config 'source_of_value' => '', 'show_in_conf_sample' => false, ], + 'use_legacy_dbsearch' => [ + 'type' => 'bool', + 'description' => 'If set, DBSearch will use legacy SQL query generation', + 'default' => false, + 'value' => false, + 'source_of_value' => '', + 'show_in_conf_sample' => false, + ], 'query_cache_enabled' => [ 'type' => 'bool', 'description' => 'If set, DBSearch will use cache for query generation', diff --git a/core/dbsearch.class.php b/core/dbsearch.class.php index 4ab981b22..849f2a56f 100644 --- a/core/dbsearch.class.php +++ b/core/dbsearch.class.php @@ -16,10 +16,24 @@ * * You should have received a copy of the GNU Affero General Public License */ + + +$bUseLegacyDBSearch = utils::GetConfig()->Get('use_legacy_dbsearch'); + +if ($bUseLegacyDBSearch) +{ + // excluded from autoload + require_once (APPROOT.'core/legacy/querybuilderexpressionslegacy.class.inc.php'); + require_once (APPROOT.'core/legacy/querybuildercontextlegacy.class.inc.php'); + require_once(APPROOT.'core/legacy/dbobjectsearchlegacy.class.php'); +} +else +{ // excluded from autoload require_once (APPROOT.'core/querybuilderexpressions.class.inc.php'); require_once (APPROOT.'core/querybuildercontext.class.inc.php'); require_once(APPROOT.'core/dbobjectsearch.class.php'); +} /** * An object search diff --git a/pages/run_query.php b/pages/run_query.php index 19b294507..e930ceeb6 100644 --- a/pages/run_query.php +++ b/pages/run_query.php @@ -265,7 +265,7 @@ EOF $aOrderBy = MetaModel::GetOrderByDefault($sMainClass); - if (($oFilter instanceof DBObjectSearch)) { + if (($oFilter instanceof DBObjectSearch) && !MetaModel::GetConfig()->Get('use_legacy_dbsearch')) { // OQL Developed for Count $oSQLObjectQueryBuilder = new SQLObjectQueryBuilder($oFilter); $oBuild = new QueryBuilderContext($oFilter, $aModifierProperties, null, null, null, $aCountAttToLoad); @@ -280,7 +280,7 @@ EOF $oCountResultQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode($sSQL)); $aMoreInfoBlocks[] = $oCountResultQuerySet; - if (($oFilter instanceof DBObjectSearch)) { + if (($oFilter instanceof DBObjectSearch) && !MetaModel::GetConfig()->Get('use_legacy_dbsearch')) { // OQL Developed $oSQLObjectQueryBuilder = new SQLObjectQueryBuilder($oFilter); $oBuild = new QueryBuilderContext($oFilter, $aModifierProperties);