SetupHandler
extends FileSystem
in package
Implement setup abstraction handler
This class provides interfaces for setup handling. Fileaccess objects depend on files, this class provides the abstraction layer for configuration data access
Tags
Table of Contents
- $affected : array<string|int, mixed>
- List of affected files and directories in recursion
- $log_template : string
- The template for log messages in ::Log()
- $size_unit : array<string|int, mixed>
- Available file size short codes
- CalculateFolderSize() : array<string|int, mixed>
- Calculate size of a specific folder use a recursive working function to calculate a folder size
- CallExecutable() : Result
- Execute a system command Uses installed executable to perform a system call
- Chmod() : bool
- Change the permissions of a file
- ConfigGetPreset() : Result
- Load a config preset Fetch a preset from default system storage location and return it decoded
- CopyFile() : Result
- Copy file Copy a single file with obtaining lock on index before
- CopyFolder() : Result
- Copy folder contents
- Debug() : bool
- log debug object writs a formatted log message including back trace to the global log file
- DecodeJson() : Result
- Parse json from string to object or assoc
- DecodeJsonFile() : Result
- Parse json from file to object or assoc
- DeleteFile() : bool
- Deletes single file This method deletes a single file, it will wait when the system is in git lock mode
- DropFolder() : array<string|int, mixed>
- Delete a full folder
- EncodeJson() : Result
- Serialize a given input to json representation
- ExtractExtension() : bool|string
- Extract file extension
- ExtractFileName() : string
- Extract file name
- ExtractFolder() : string
- Extract folder path from root
- ExtractFolderName() : string
- Extract folder name from root
- FileExists() : bool|string
- Check if file exists
- FilterFolderFilesByModificationTime() : Result
- Get a list of files that are either older or newer a certain time point
- GetConfigFilePath() : null|string
- Get path to configuration file
- GetFormPreset() : Result
- Get form preset by file name
- GetLock() : Result
- Obtain lock try to obtain the lock indicated by lock file in var
- GetObjectLock() : bool
- Get lock on certain object
- GetSettingData() : Result
- Fetch settings data from file
- GetSettingDataVersion() : Result
- Fetch settings data from repository
- IsEmptyDir() : bool|null
- Is empty folder
- ListFiles() : array<string|int, mixed>
- list files Iterate over directory and list the found files
- ListFolders() : array<string|int, mixed>
- List folder names in certain root folder
- ListIdFiles() : array<string|int, mixed>
- Find file ids
- ListSettingData() : Result
- LoadLocalSettings() : Result
- Load settings as object to result container.
- Log() : bool
- log object writs a formatted log message including back trace to the global log file
- MemoryBytesReadable() : string
- Memory readable Convert size of bytes in human-readable units
- MkFolder() : string|null
- Create folder path
- ReadCsv() : Result
- Read a CSV file to local storage
- ReadFile() : Result
- Read a single file
- ReadFixedColumnFile() : Result
- Read file with fixed column width
- ReadFolder() : array<string|int, File>
- Read folder
- RenameFolderOrFile() : Result
- Rename folder or file
- RevokeLock() : Result
- release lock try to release the lock indicated by lock file in var
- RevokeObjectLock() : Result
- Revoke dedicated object lock
- SelfLockedOrOpen() : bool
- StoreData() : Result
- Save the changed setup data When a storage target in local.config is used, the file will be stored there and added to git
- StoreEncodedJson() : Result
- Serialize a given input and store it
- StripQueryAndAnchor() : string
- Extract file name
- SysLog() : bool
- Log message
- TryGetLock() : bool
- Obtain lock with retry
- VersionStringToNumber() : string
- Convert version number Converts the given number to a unified string e.g. 'v1.234.33' will become 102340033
- Warn() : bool
- warn level log object writs a formatted log message including back trace to the global log file
- WriteCsv() : Result
- Write an array of entries to csv file
- WriteFile() : bool
- Write string to file
- CalculateFolderSizeRecurse() : bool
- Helper function to calculate size Recursively calculate size of a specific folder
- decrypt() : string
- Decrypt data
- DropFolderRecurse() : bool
- Delete a folder completely this method is the recursion helper for DropFolder()
- encrypt() : string
- Encrypt data
- parseKeyFile() : string|array<string|int, mixed>|null
Properties
$affected
List of affected files and directories in recursion
private
static array<string|int, mixed>
$affected
= array()
The list of paths
$log_template
The template for log messages in ::Log()
private
static string
$log_template
= "Called from LINE %s IN Script: %s\n"
The template
$size_unit
Available file size short codes
private
static array<string|int, mixed>
$size_unit
= array('b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb')
Used in the readable form
Methods
CalculateFolderSize()
Calculate size of a specific folder use a recursive working function to calculate a folder size
public
static CalculateFolderSize(string $folder) : array<string|int, mixed>
Parameters
- $folder : string
-
The path to calculate the size of
Return values
array<string|int, mixed> —An assoc structure holding the folder information
CallExecutable()
Execute a system command Uses installed executable to perform a system call
public
static CallExecutable(string $cmd[, string $folder = '' ][, string $outfile = '' ]) : Result
Parameters
- $cmd : string
-
The command to execute
- $folder : string = ''
-
The working directory
- $outfile : string = ''
-
Optional output file of the call result
Return values
Result —A system result object
Chmod()
Change the permissions of a file
public
static Chmod(string $file, int $octal) : bool
Parameters
- $file : string
- $octal : int
Return values
bool —ConfigGetPreset()
Load a config preset Fetch a preset from default system storage location and return it decoded
public
static ConfigGetPreset(string $name[, bool $mode = true ]) : Result
Parameters
- $name : string
-
The preset name
- $mode : bool = true
-
Decode to assoc or boolean
Return values
Result —A system result object
CopyFile()
Copy file Copy a single file with obtaining lock on index before
public
static CopyFile(string $source, string $target[, bool $override = true ]) : Result
Parameters
- $source : string
-
Absolute path to source
- $target : string
-
Absolute path to target
- $override : bool = true
-
Override forced even if file names are equal
Return values
Result —A system result object
CopyFolder()
Copy folder contents
public
static CopyFolder(string $source, string $target[, bool $override = true ]) : Result
This method copies the source folder to the target folder path. The folder itself is not copied but all of its contents. This method creates the target folder if it is not present.
Parameters
- $source : string
-
The source folder destination
- $target : string
-
The target folder name
- $override : bool = true
-
Override forced even if file names are equal
Return values
Result —A system result object
Debug()
log debug object writs a formatted log message including back trace to the global log file
public
static Debug(mixed $object) : bool
Parameters
- $object : mixed
-
The object to be logged
Return values
bool —DecodeJson()
Parse json from string to object or assoc
public
static DecodeJson(string $data[, bool $mode = true ][, array<string|int, mixed>|string|null $crypt = null ]) : Result
Use the json parse function to decode a string to assoc or object It will use the given code in crypt to decrypt or fall back to system key
Parameters
- $data : string
-
The payload to decode
- $mode : bool = true
-
Parse as assoc or object, default is true and therefor assoc array
- $crypt : array<string|int, mixed>|string|null = null
-
The key or, an array with cipher, key and the iv
Return values
Result —A default system result object
DecodeJsonFile()
Parse json from file to object or assoc
public
static DecodeJsonFile(string $path[, bool $mode = true ][, string|null $crypt = null ]) : Result
Use the json parse to fetch text data from a given path and return it as object with assoc or object payload
Parameters
- $path : string
-
The absolute path to a certain storage file
- $mode : bool = true
-
Parse as assoc or object, default assoc
- $crypt : string|null = null
-
Decrypt string before parsing
Return values
Result —A default system result object
DeleteFile()
Deletes single file This method deletes a single file, it will wait when the system is in git lock mode
public
static DeleteFile(string $path) : bool
Parameters
- $path : string
-
The target file path
Return values
bool —True on success otherwise false
DropFolder()
Delete a full folder
public
static DropFolder(string $folder[, bool $full = false ]) : array<string|int, mixed>
this method clears or delete a folder recursively, side effect will fill list of delete folders and files
Parameters
- $folder : string
-
The path to delete
- $full : bool = false
-
Also remove the root folder
Return values
array<string|int, mixed> —List of deleted folders and files
EncodeJson()
Serialize a given input to json representation
public
static EncodeJson(mixed $data[, int $mode = JSON_PRETTY_PRINT ][, array<string|int, mixed>|string|null $crypt = null ]) : Result
use the json parse function to decode an assoc or object
Parameters
- $data : mixed
-
The payload to encode
- $mode : int = JSON_PRETTY_PRINT
-
Serialize readable or not formatted
- $crypt : array<string|int, mixed>|string|null = null
-
Encrypt key or, array with key cipher and iv
Return values
Result —A default system result object
ExtractExtension()
Extract file extension
public
static ExtractExtension(string $path) : bool|string
May return false if no extension could be found
Parameters
- $path : string
-
A complete file path
Return values
bool|string —The file extension or, false if not matched
ExtractFileName()
Extract file name
public
static ExtractFileName(string $path[, bool $without_extension = false ]) : string
Parameters
- $path : string
-
A complete file path
- $without_extension : bool = false
Return values
string —The file name
ExtractFolder()
Extract folder path from root
public
static ExtractFolder(string $path) : string
With input /var/www/school/test.json will result in /var/www/school/
Parameters
- $path : string
-
A complete file path
Return values
string —The file root folder
ExtractFolderName()
Extract folder name from root
public
static ExtractFolderName(string $path) : string
Parameters
- $path : string
-
A complete file path
Return values
string —The file root folder
FileExists()
Check if file exists
public
static FileExists(string $fileName[, bool $caseSensitive = true ]) : bool|string
Does check if a file is existing, will also check if the file exists as lower case by glob as fallback.
Parameters
- $fileName : string
-
The path to the file
- $caseSensitive : bool = true
-
Use case-sensitive path, defaults to true
Return values
bool|string —File exists
FilterFolderFilesByModificationTime()
Get a list of files that are either older or newer a certain time point
public
static FilterFolderFilesByModificationTime(string $root, int $timestamp[, bool $older = true ]) : Result
Parameters
- $root : string
-
The start point for the recursion
- $timestamp : int
-
The time point to flip
- $older : bool = true
-
When true result list files are older than the time stamp otherwise newer
Return values
Result —A system result object containing the files
GetConfigFilePath()
Get path to configuration file
public
static GetConfigFilePath(string $file_name[, bool $new = false ]) : null|string
In old version some configuration files where stored inside the cfg directory. This changed with 3.20.0 and all local configurations are now part of the config repository.
Supports without .json extension in path as well.
Parameters
- $file_name : string
-
Relative file path to config folder
- $new : bool = false
-
When true, the local repository file path is returned
Return values
null|string —Path to the file
GetFormPreset()
Get form preset by file name
public
static GetFormPreset(string $preset_file) : Result
Parameters
- $preset_file : string
Return values
Result —GetLock()
Obtain lock try to obtain the lock indicated by lock file in var
public
static GetLock() : Result
Return values
Result —A default system result object
GetObjectLock()
Get lock on certain object
public
static GetObjectLock(BaseContent $content) : bool
Lock could be obtained, it will return true otherwise false. Uses the system default method "in memory"
Parameters
- $content : BaseContent
-
A system content
Tags
Return values
bool —GetSettingData()
Fetch settings data from file
public
static GetSettingData(string $file[, bool $mode = false ][, bool $no_decode = false ]) : Result
This method is cached. The result contains the settings as parsed object instead of an assoc array.
Parameters
- $file : string
-
The relative file name
- $mode : bool = false
-
When set to true return settings as assoc array
- $no_decode : bool = false
Return values
Result —A system result object
GetSettingDataVersion()
Fetch settings data from repository
public
static GetSettingDataVersion(string $file, string $hash) : Result
Open a certain version of the settings data in our new config repository. This method is cached. The result contains the settings as parsed object instead of an assoc array.
Parameters
- $file : string
-
The relative file name
- $hash : string
-
The git hash
Return values
Result —A system result object
IsEmptyDir()
Is empty folder
public
static IsEmptyDir(string $dir) : bool|null
Parameters
- $dir : string
-
Path to folder
Return values
bool|null —ListFiles()
list files Iterate over directory and list the found files
public
static ListFiles(string $dir[, string $ext = '/^json$/' ][, bool $full = false ]) : array<string|int, mixed>
Parameters
- $dir : string
-
The root folder path to search in
- $ext : string = '/^json$/'
-
Filter by extension (can be empty, a string or a regex)
- $full : bool = false
-
Check the full name of the file or just the extension when false
Return values
array<string|int, mixed> —A list containing the found files
ListFolders()
List folder names in certain root folder
public
static ListFolders(string $path) : array<string|int, mixed>
Parameters
- $path : string
-
The absolute path to the folder
Return values
array<string|int, mixed> —The found folder names that are children of the given folder
ListIdFiles()
Find file ids
public
static ListIdFiles(string $dir[, string $ext = 'json' ][, bool $to_int = true ]) : array<string|int, mixed>
Fetch a list of file ids inside a folder and its subdirectories
Parameters
- $dir : string
-
The root folder path to search in
- $ext : string = 'json'
-
Filter by extension
- $to_int : bool = true
-
Convert to integer when set to true
Return values
array<string|int, mixed> —A list containing the found id's
ListSettingData()
public
static ListSettingData(string $dir[, bool $mode = false ][, bool $no_decode = false ]) : Result
Parameters
- $dir : string
- $mode : bool = false
- $no_decode : bool = false
Return values
Result —LoadLocalSettings()
Load settings as object to result container.
public
static LoadLocalSettings(string $file) : Result
This method is cached
Parameters
- $file : string
-
Either an absolute path or a file name. Can be without .json extension
Return values
Result —A system result object
Log()
log object writs a formatted log message including back trace to the global log file
public
static Log(mixed $object[, string|null $msg = null ]) : bool
Parameters
- $object : mixed
-
The object to be logged
- $msg : string|null = null
-
Additional message
Return values
bool —MemoryBytesReadable()
Memory readable Convert size of bytes in human-readable units
public
static MemoryBytesReadable(int|float $size) : string
Parameters
- $size : int|float
-
The size in bytes
Return values
string —The calculated size
MkFolder()
Create folder path
public
static MkFolder(string $root, array<string|int, mixed> $components[, bool $make = true ]) : string|null
When the make argument set to true this function will try to create the folder Return the folder components without root part
Parameters
- $root : string
-
The path to the base folder
- $components : array<string|int, mixed>
-
The list of folder components
- $make : bool = true
-
Try to create the folder
Return values
string|null —The combined relative path as string, includes tailing /
ReadCsv()
Read a CSV file to local storage
public
static ReadCsv(string $path[, string $delimiter = ';' ][, string $enclosure = "'" ][, int $length = 100000 ][, string $escape = "\" ][, bool $check_head = true ]) : Result
Fetch the file and add it to a local result object file is parsed with php function to get csv from file, arguments of this method align with official one
Parameters
- $path : string
-
The absolute path to file to open
- $delimiter : string = ';'
-
Have a look at http://php.net/manual/de/function.fgetcsv.php delimiter
- $enclosure : string = "'"
-
Have a look at http://php.net/manual/de/function.fgetcsv.php enclosure
- $length : int = 100000
-
Have a look at http://php.net/manual/de/function.fgetcsv.php length
- $escape : string = "\"
-
Have a look at http://php.net/manual/de/function.fgetcsv.php escape
- $check_head : bool = true
-
When set, check the first line as head and validate following line lengths
Return values
Result —A system result object
ReadFile()
Read a single file
public
static ReadFile(string $path) : Result
Parameters
- $path : string
-
The absolute path to a certain storage file
Return values
Result —A default system result object
ReadFixedColumnFile()
Read file with fixed column width
public
static ReadFixedColumnFile(string $path[, int $length = 10000 ]) : Result
Automatic file parser based on the heads and assuming a " " space is used to make the cols equal
Parameters
- $path : string
-
Absolute link to the file to open
- $length : int = 10000
-
Limiter for line length
Return values
Result —A system result object
ReadFolder()
Read folder
public
static ReadFolder(string $dir) : array<string|int, File>
Will list all files and folders of a folder
Parameters
- $dir : string
-
Path to root folder
Return values
array<string|int, File> —An array of file objects
RenameFolderOrFile()
Rename folder or file
public
static RenameFolderOrFile(string $source, string $target[, bool $skip_existing = true ]) : Result
Parameters
- $source : string
-
Absolute path to source
- $target : string
-
Absolute path to target
- $skip_existing : bool = true
Return values
Result —A system result object
RevokeLock()
release lock try to release the lock indicated by lock file in var
public
static RevokeLock([string|null $lockfile = null ][, bool $in_memory = true ]) : Result
Parameters
- $lockfile : string|null = null
- $in_memory : bool = true
Return values
Result —A default system result object
RevokeObjectLock()
Revoke dedicated object lock
public
static RevokeObjectLock(BaseContent $content) : Result
Parameters
- $content : BaseContent
Tags
Return values
Result —SelfLockedOrOpen()
public
static SelfLockedOrOpen( $pid[, $path = null ]) : bool
Parameters
Return values
bool —StoreData()
Save the changed setup data When a storage target in local.config is used, the file will be stored there and added to git
public
static StoreData(string $file, array<string|int, mixed>|object $values) : Result
Parameters
- $file : string
-
The absolute or relative file path
- $values : array<string|int, mixed>|object
-
The content to store in the file as json
Return values
Result —A system result object
StoreEncodedJson()
Serialize a given input and store it
public
static StoreEncodedJson(string $path, mixed $data[, int $mode = JSON_PRETTY_PRINT ][, bool|null $crypt = false ]) : Result
use the json parse function to create json representation and store it in a certain file this method does an encryption also on demand, the .key file must exist for this to happen
Parameters
- $path : string
-
The target file path
- $data : mixed
-
The payload to encode
- $mode : int = JSON_PRETTY_PRINT
-
Serialize readable or not formatted
- $crypt : bool|null = false
-
Encrypt the result after serialisation
Return values
Result —A default system result object
StripQueryAndAnchor()
Extract file name
public
static StripQueryAndAnchor(string $path) : string
Parameters
- $path : string
-
A complete file path
Return values
string —The file name without additional parts
SysLog()
Log message
public
static SysLog(string $level, mixed $object[, string|null $prefix = null ][, bool $stack = true ]) : bool
Writs a formatted log message including back trace on severe levels to the global log file
Parameters
- $level : string
-
Name of the log level
- $object : mixed
-
The object to be logged
- $prefix : string|null = null
-
Extra prefix
- $stack : bool = true
-
Print with stack trace on demand
Return values
bool —Status if write to log worked
TryGetLock()
Obtain lock with retry
public
static TryGetLock([string|null $path = null ][, string|int|null $pid = null ][, int $try_count = FAA_WRITE_RETRY ][, float $seconds = 0.25 ][, bool $in_memory = true ]) : bool
Try to obtain the lock indicated by lock file in var Additional lock level reliability with process id
Parameters
- $path : string|null = null
-
The lock file path or null for default
- $pid : string|int|null = null
-
The current process id locking the file
- $try_count : int = FAA_WRITE_RETRY
-
Retry counter
- $seconds : float = 0.25
-
Retry wait
- $in_memory : bool = true
-
Instead of file system use redis as lock file storage
Tags
Return values
bool —VersionStringToNumber()
Convert version number Converts the given number to a unified string e.g. 'v1.234.33' will become 102340033
public
static VersionStringToNumber(string $number[, string $regex = '/[^0-9\.]/i' ][, string $replace = '' ][, int $pads = 4 ]) : string
Parameters
- $number : string
-
The version number to calculate
- $regex : string = '/[^0-9\.]/i'
-
Replacement expression to clear the number upfront
- $replace : string = ''
-
Replacement string for regex_replace
- $pads : int = 4
-
Add this amount of zeros to the left
Return values
string —The cleared version number
Warn()
warn level log object writs a formatted log message including back trace to the global log file
public
static Warn(mixed $object[, bool $stack = true ]) : bool
Parameters
- $object : mixed
-
The object to be logged
- $stack : bool = true
Return values
bool —WriteCsv()
Write an array of entries to csv file
public
static WriteCsv(string|null $path, array<string|int, mixed> $list[, string $delimiter = ';' ][, string $enclosure = "'" ][, string $escape = "\" ]) : Result
Parameters
- $path : string|null
-
The absolute path to file to open
- $list : array<string|int, mixed>
-
The source to write
- $delimiter : string = ';'
-
Have a look at http://php.net/manual/de/function.fgetcsv.php delimiter
- $enclosure : string = "'"
-
Have a look at http://php.net/manual/de/function.fgetcsv.php enclosure
- $escape : string = "\"
-
Have a look at http://php.net/manual/de/function.fgetcsv.php escape
Return values
Result —The result
WriteFile()
Write string to file
public
static WriteFile(string $path, scalar $data, int $flags) : bool
This method writes the given data to the defined file, it will wait when the system is in git lock mode. This method returns valid result also for writing empty strings unlike file put contents default behavior
Parameters
- $path : string
-
The target file path
- $data : scalar
-
The payload to store in the target file
- $flags : int
-
File put content flags (http://php.net/manual/de/function.file-put-contents.php)
Return values
bool —True on success
CalculateFolderSizeRecurse()
Helper function to calculate size Recursively calculate size of a specific folder
private
static CalculateFolderSizeRecurse(string $folder, int &$file_count, int &$directory_count, int &$size) : bool
Parameters
- $folder : string
-
The path to calculate the size of
- $file_count : int
-
Pointer to file count
- $directory_count : int
-
Pointer to folder count
- $size : int
-
Pointer to file size
Return values
bool —The iteration result status
decrypt()
Decrypt data
private
static decrypt(string $encrypted[, string|array<string|int, mixed> $mc_key = FAA_CODE ]) : string
will try to decrypt the given data with the system encryption code or a customer defined one The function does a blowfish decryption and a base64 conversion on demand
Parameters
- $encrypted : string
-
The string to decrypt (must be base64 encoded)
- $mc_key : string|array<string|int, mixed> = FAA_CODE
-
The key or, an array with cipher, key and the iv
Tags
Return values
string —The decrypted string
DropFolderRecurse()
Delete a folder completely this method is the recursion helper for DropFolder()
private
static DropFolderRecurse(string $folder[, bool $full = false ]) : bool
Parameters
- $folder : string
-
The path to delete
- $full : bool = false
-
Also remove the root folder
Return values
bool —The delete status
encrypt()
Encrypt data
private
static encrypt(string $plain[, string|array<string|int, mixed> $mc_key = FAA_CODE ][, mixed &$tag = null ]) : string
Method will try to encrypt the given data with the system encryption code or a customer defined one The function does a blowfish encryption and a base64 conversion
Parameters
- $plain : string
-
The string to encrypt
- $mc_key : string|array<string|int, mixed> = FAA_CODE
-
The key or, an array with cipher, key and the iv
- $tag : mixed = null
Tags
Return values
string —The encrypted string base64 encoded
parseKeyFile()
private
static parseKeyFile(string $path) : string|array<string|int, mixed>|null
Parameters
- $path : string