diff --git a/functions/functions.php b/functions/functions.php index 3e33238..88c9976 100644 --- a/functions/functions.php +++ b/functions/functions.php @@ -27,15 +27,20 @@ require_once __DIR__ . '/../vendor/autoload.php'; */ function mdCsvxmlAutoloader(string $className):void { - $classDirs = AUTOLOAD_DIRS; + // Try using class map as defined through /scripts/buildClassMap.php - foreach ($classDirs as $classDir) { + if (isset(AUTOLOAD_CLASS_MAP[$className])) { + include AUTOLOAD_CLASS_MAP[$className]; + return; + } + // Fallback: Load classes by autoload directories + + foreach (AUTOLOAD_DIRS as $classDir) { if (\file_exists("$classDir/$className.php")) { include "$classDir/$className.php"; return; } - } } @@ -309,7 +314,8 @@ function rrmdir(string $dir):void { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { - if (filetype($dir . "/" . $object) == "dir") rrmdir($dir . "/" . $object); else unlink($dir . "/" . $object); + if (filetype($dir . "/" . $object) == "dir") rrmdir($dir . "/" . $object); + else unlink($dir . "/" . $object); } } reset($objects); diff --git a/inc/constants.php b/inc/constants.php index 301718f..53a2b9f 100644 --- a/inc/constants.php +++ b/inc/constants.php @@ -30,3 +30,69 @@ const AUTOLOAD_DIRS = [ __DIR__ . "/../classes/MDErrorReporter/exceptions/updates", __DIR__ . "/../classes/MDTlLoader/exceptions", ]; + +const AUTOLOAD_CLASS_MAP = [ + 'CsvxmlAvailableFields' => __DIR__ . '/../classes/CsvxmlAvailableFields.php', + 'MDTlLoader' => __DIR__ . '/../classes/MDTlLoader/src/MDTlLoader.php', + 'MD_JAIL' => __DIR__ . '/../classes/MD_STD/MD_JAIL.php', + 'MD_STD' => __DIR__ . '/../classes/MD_STD/MD_STD.php', + 'MD_STD_CACHE' => __DIR__ . '/../classes/MD_STD/MD_STD_CACHE.php', + 'MD_STD_IN' => __DIR__ . '/../classes/MD_STD/MD_STD_IN.php', + 'MD_STD_SEC' => __DIR__ . '/../classes/MD_STD/MD_STD_SEC.php', + 'MDAppointmentRecordingSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDAppointmentRecordingSet.php', + 'MDConservationReportTypeSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDConservationReportTypeSet.php', + 'MDCurrenciesSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDCurrenciesSet.php', + 'MDEntryTypesSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDEntryTypesSet.php', + 'MDEventsSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDEventsSet.php', + 'MDLanguagesSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDLanguagesSet.php', + 'MDLicensesSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDLicensesSet.php', + 'MDMarkingTypesSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDMarkingTypesSet.php', + 'MDObjectPositionsSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDObjectPositionsSet.php', + 'MDObjectPublicationBackgrounds' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDObjectPublicationBackgrounds.php', + 'MDPlacetypesSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDPlacetypesSet.php', + 'MDPodcastContributorsSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDPodcastContributorsSet.php', + 'MDSourceTypeSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDSourceTypeSet.php', + 'MDTitleTypesSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDTitleTypesSet.php', + 'MDUnitsSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDUnitsSet.php', + 'MDValueSet' => __DIR__ . '/../classes/MDAllowedValueSets/src/MDValueSet.php', + 'MDErrorReporter' => __DIR__ . '/../classes/MDErrorReporter/MDErrorReporter.php', + 'MDMailFormat' => __DIR__ . '/../classes/MDMailer/src/MDMailFormat.php', + 'MDMailerHelper' => __DIR__ . '/../classes/MDMailer/src/MDMailerHelper.php', + 'MD_CONF_EMAIL' => __DIR__ . '/../conf/MD_CONF_EMAIL.php', + 'MDAccessDeniedException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDAccessDeniedException.php', + 'MDConfigCannotBeLoadedException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDConfigCannotBeLoadedException.php', + 'MDExpectedException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDExpectedException.php', + 'MDFileDoesNotExist' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDFileDoesNotExist.php', + 'MDFileIsNotReadable' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDFileIsNotReadable.php', + 'MDInaccessiblePropertyException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDInaccessiblePropertyException.php', + 'MDInvalidColorCode' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDInvalidColorCode.php', + 'MDInvalidEmail' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDInvalidEmail.php', + 'MDInvalidUrl' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDInvalidUrl.php', + 'MDOutputBufferNotStarted' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDOutputBufferNotStarted.php', + 'MDRequiredConfigNotSet' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDRequiredConfigNotSet.php', + 'MDWrongCsrfTokenException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDWrongCsrfTokenException.php', + 'MDgenericInvalidInputsException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDgenericInvalidInputsException.php', + 'MDhttpFailedException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDhttpFailedException.php', + 'MDmainEntityNotExistentException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDmainEntityNotExistentException.php', + 'MDpageParameterNotFromListException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/generic/MDpageParameterNotFromListException.php', + 'MDPageNotInAggregatedException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/page/MDPageNotInAggregatedException.php', + 'MDmainEntityNotPublicException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/page/MDmainEntityNotPublicException.php', + 'MDpageParameterMissingException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/page/MDpageParameterMissingException.php', + 'MDpageParameterNotNumericException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/page/MDpageParameterNotNumericException.php', + 'MDDuplicateLinkException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDDuplicateLinkException.php', + 'MDFileUploadNotAcceptedException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDFileUploadNotAcceptedException.php', + 'MDInvalidCurrency' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDInvalidCurrency.php', + 'MDInvalidInputDate' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDInvalidInputDate.php', + 'MDInvalidLengthUnit' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDInvalidLengthUnit.php', + 'MDInvalidLicense' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDInvalidLicense.php', + 'MDInvalidObjectPublicationBackground' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDInvalidObjectPublicationBackground.php', + 'MDInvalidWeightUnit' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDInvalidWeightUnit.php', + 'MDNoUpdateVarSetException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDNoUpdateVarSetException.php', + 'MDTooManyFilesUploadException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDTooManyFilesUploadException.php', + 'MDWrongFileType' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDWrongFileType.php', + 'MDcouldNotSaveException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDcouldNotSaveException.php', + 'MDcouldNotSetPublic' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDcouldNotSetPublic.php', + 'MDwriteAccessDeniedException' => __DIR__ . '/../classes/MDErrorReporter/exceptions/updates/MDwriteAccessDeniedException.php', + 'MDMissingFileException' => __DIR__ . '/../classes/MDTlLoader/exceptions/MDMissingFileException.php', + 'MDMissingTranslationException' => __DIR__ . '/../classes/MDTlLoader/exceptions/MDMissingTranslationException.php', +]; diff --git a/scripts/buildClassMap.php b/scripts/buildClassMap.php new file mode 100644 index 0000000..6f4aa17 --- /dev/null +++ b/scripts/buildClassMap.php @@ -0,0 +1,39 @@ + + */ +declare(strict_types = 1); + +require_once __DIR__ . '/../inc/constants.php'; + +$classesToAutoload = []; + +// Load list of classes + +foreach (AUTOLOAD_DIRS as $dir) { + + $dir = str_replace(realpath(__DIR__ . "/../") . "/inc/../", "", $dir); + foreach (glob($dir . "/*.php") as $file) { + $classesToAutoload[pathinfo(__DIR__ . '/../' . $file, PATHINFO_FILENAME)] = $file; + } + +} + +// Output + +$output = []; + +foreach ($classesToAutoload as $key => $value) { + + $output[] = ' \'' . $key . '\' => __DIR__ . \'/../' . $value . '\','; + +} + +$toWrite = '