From 4a3407aa8279013b780d4f7e3adaf1a54dfbc7a7 Mon Sep 17 00:00:00 2001 From: Alexandre Janniaux Date: Mon, 1 May 2023 16:00:58 +0200 Subject: [PATCH] FIX #24653 modulebuilder: replace /myobject/ in includes The templates view, like myobject_card.php are including the following files: dol_include_once('/mymodule/class/myobject.class.php'); dol_include_once('/mymodule/lib/mymodule_myobject.lib.php'); The mymodule value was replaced correctly, but the myobject value wasn't, leading to another classfile beind included when, for instance, creating new `myobject` objects (whatever myobject actually was, except myobject of course), and resulting in PHP errors like: Fatal error: Uncaught Error: Class "DemoObject" not found in /var/www/html/custom/demobug/demoobject_card.php:105 Stack trace: #0 {main} thrown in /var/www/html/custom/demobug/demoobject_card.php on line 105 Fixes #24653 --- htdocs/modulebuilder/index.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index d5a7a7079b2..20a78a21ab9 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -1,6 +1,7 @@ * Copyright (C) 2018-2019 Nicolas ZABOURI + * Copyright (C) 2023 Alexandre Janniaux * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -1334,6 +1335,11 @@ if ($dirins && $action == 'initobject' && $module && $objectname) { setEventMessages($langs->trans("FileAlreadyExists", $destfile), null, 'warnings'); } } + $arrayreplacement = array( + '/myobject\.class\.php/' => strtolower($objectname).'.class.php', + '/myobject\.lib\.php/' => strtolower($objectname).'.lib.php', + ); + dolReplaceInFile($destdir.'/'.$destfile, $arrayreplacement, '', 0, 0, 1); } }