@@ -730,7 +730,7 @@ function makeBackend(array $backend, string|null $name = null, array $options =
730730 backendUrl: new Uri (ag ($ backend , 'url ' )),
731731 cache: $ cache ,
732732 userContext: $ userContext ?? Container::get (UserContext::class),
733- logger: ag ($ options , iLogger::class, fn () => Container::get (iLogger::class)),
733+ logger: ag ($ options , iLogger::class, fn () => Container::get (iLogger::class)),
734734 backendId: ag ($ backend , 'uuid ' , null ),
735735 backendToken: ag ($ backend , 'token ' , null ),
736736 backendUser: ag ($ backend , 'user ' , null ),
@@ -909,10 +909,6 @@ function getAppVersion(): string
909909 */
910910 function isValidName (string $ name ): bool
911911 {
912- if (true === ctype_digit ($ name [0 ])) {
913- return false ;
914- }
915-
916912 return 1 === preg_match ('/^[a-z_0-9]+$/ ' , $ name );
917913 }
918914}
@@ -949,7 +945,7 @@ function formatDuration(int|float $milliseconds): string
949945 */
950946 function array_keys_diff (array $ base , array $ list , bool $ has = true ): array
951947 {
952- return array_filter ($ base , fn ($ key ) => $ has === in_array ($ key , $ list ), ARRAY_FILTER_USE_KEY );
948+ return array_filter ($ base , fn ($ key ) => $ has === in_array ($ key , $ list ), ARRAY_FILTER_USE_KEY );
953949 }
954950}
955951
@@ -1354,7 +1350,7 @@ function getSystemMemoryInfo(string $memFile = '/proc/meminfo'): array
13541350 function parseConfigValue (mixed $ value , Closure |null $ callback = null ): mixed
13551351 {
13561352 if (is_string ($ value ) && preg_match ('#%{(.+?)}#s ' , $ value )) {
1357- $ val = preg_replace_callback ('#%{(.+?)}#s ' , fn ($ match ) => Config::get ($ match [1 ], $ match [1 ]), $ value );
1353+ $ val = preg_replace_callback ('#%{(.+?)}#s ' , fn ($ match ) => Config::get ($ match [1 ], $ match [1 ]), $ value );
13581354 return null !== $ callback && null !== $ val ? $ callback ($ val ) : $ val ;
13591355 }
13601356
@@ -1389,7 +1385,7 @@ function checkIgnoreRule(string $guid, UserContext|null $userContext = null): bo
13891385 if (false === in_array ('guid_ ' . $ db , $ sources )) {
13901386 throw new RuntimeException (r ("Invalid db source name '{db}' was given. Expected values are '{dbs}'. " , [
13911387 'db ' => $ db ,
1392- 'dbs ' => implode (', ' , array_map (fn ($ f ) => after ($ f , 'guid_ ' ), $ sources )),
1388+ 'dbs ' => implode (', ' , array_map (fn ($ f ) => after ($ f , 'guid_ ' ), $ sources )),
13931389 ]));
13941390 }
13951391
@@ -2112,8 +2108,8 @@ function registerEvents(bool $ignoreCache = false): void
21122108 /** @var array<ScannerItem> $list */
21132109 $ list = cacheableItem (
21142110 'event_listeners ' ,
2115- fn () => AttributesScanner::scan (Config::get ('events.listeners.locations ' , []))->for (EventListener::class),
2116- Config::get ('events.listeners.cache ' , fn () => new DateInterval ('PT1H ' )),
2111+ fn () => AttributesScanner::scan (Config::get ('events.listeners.locations ' , []))->for (EventListener::class),
2112+ Config::get ('events.listeners.cache ' , fn () => new DateInterval ('PT1H ' )),
21172113 $ ignoreCache
21182114 );
21192115
@@ -2147,7 +2143,7 @@ function registerEvents(bool $ignoreCache = false): void
21472143 */
21482144 function queueEvent (string $ event , array $ data = [], array $ opts = []): EventInfo
21492145 {
2150- $ repo = ag ($ opts , EventsRepository::class, fn () => Container::get (EventsRepository::class));
2146+ $ repo = ag ($ opts , EventsRepository::class, fn () => Container::get (EventsRepository::class));
21512147 assert ($ repo instanceof EventsRepository);
21522148
21532149 $ item = null ;
@@ -2428,7 +2424,7 @@ function perUserCacheAdapter(string $user): CacheInterface
24282424 }
24292425
24302426 $ ns = getAppVersion ();
2431- $ ns .= isValidName ($ user ) ? ' . ' . $ user : '. ' . md5 ($ user );
2427+ $ ns .= isValidName ($ user ) ? " . { $ user}" : '. ' . md5 ($ user );
24322428
24332429 try {
24342430 $ backend = new RedisAdapter (redis: Container::get (Redis::class), namespace: $ ns );
@@ -2731,13 +2727,28 @@ function deletePath(string $path, iLogger|null $logger = null, bool $dryRun = fa
27312727 * Normalize the name to be in [a-z_0-9] format.
27322728 *
27332729 * @param string $name The name to normalize.
2730+ * @param iLogger |null $logger (Optional) The logger instance.
27342731 *
27352732 * @return string The normalized name.
27362733 */
2737- function normalizeName (string $ name ): string
2734+ function normalizeName (string $ name, iLogger | null $ logger = null , array $ opts =[] ): string
27382735 {
2739- $ name = strtolower ($ name );
2740- $ name = preg_replace ('/[^a-z0-9_]/ ' , '_ ' , $ name );
2741- return trim ($ name );
2736+ if (true === ctype_digit ($ name )) {
2737+ $ newName = 'user_ ' . $ name ;
2738+ } else {
2739+ $ newName = strtolower ($ name );
2740+ $ newName = preg_replace ('/[^a-z0-9_]/ ' , '_ ' , $ newName );
2741+ $ newName = trim ($ newName );
2742+ }
2743+
2744+ if ($ newName !== $ name && null !== $ logger ) {
2745+ $ logger ->notice (ag ($ opts , 'log_message ' , "Normalized '{name}' to '{new_name}'. " ), [
2746+ 'name ' => $ name ,
2747+ 'new_name ' => $ newName ,
2748+ ...ag ($ opts ,'context ' ,[])
2749+ ]);
2750+ }
2751+
2752+ return $ newName ;
27422753 }
27432754}
0 commit comments