This is a comment on Plugins Directory, posted by WikiAdmin at 02/14/2024 10:41
View source for Re: Plugins Directory
Not sure why it needs ##$checkIfFileExists## at all, if it checks only for the path and not the file.
* ##explode()## consumes less resources.
* The function itself should be placed in Ut class, e.g. ##Ut::join_multi_path()##
* Perhaps it is better to mirror the folder structure by just set the ##'plugin'## folder as prefix in the function
* ##const PLUGIN_DIR = 'plugin'##,
* ##$paths = [PLUGIN_DIR . '/' . $path, $path]##
%%(php)
<?php
function BuildFullpathFromMultipath($filename, $pathlist, $checkIfFileExists = true): ?string
{
$paths = explode(':', $pathlist);
if(empty($paths[0])) return null;
if (!$checkIfFileExists)
{
// Just return first directory that exists
foreach ($paths as $path)
{
$path = trim($path);
if(file_exists($path)) // check for file
{
return Ut::join_path($path, $filename);
}
}
return null;
}
foreach ($paths as $path)
{
$path = trim($path);
$fqfn = Ut::join_path($path, $filename);
if (file_exists($fqfn))
{
return $fqfn;
}
}
return null;
}
%%