72 lines
1.0 KiB
PHP
72 lines
1.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
function sanitize(string $value): string
|
|
{
|
|
return htmlspecialchars(
|
|
trim($value),
|
|
ENT_QUOTES,
|
|
'UTF-8'
|
|
);
|
|
}
|
|
|
|
function usernameToFolder(
|
|
string $username
|
|
): string {
|
|
|
|
return preg_replace(
|
|
'/[^a-zA-Z0-9_-]/',
|
|
'',
|
|
strtolower($username)
|
|
);
|
|
}
|
|
|
|
function userPath(
|
|
string $username
|
|
): string {
|
|
|
|
return USERS_PATH .
|
|
'/' .
|
|
usernameToFolder($username);
|
|
}
|
|
|
|
function slug(string $value): string
|
|
{
|
|
$value = strtolower(trim($value));
|
|
|
|
$value = preg_replace(
|
|
'/[^a-z0-9]+/',
|
|
'_',
|
|
$value
|
|
);
|
|
|
|
return trim($value, '_');
|
|
}
|
|
|
|
function languagePath(
|
|
string $user,
|
|
string $language
|
|
): string {
|
|
|
|
return userPath($user)
|
|
. '/languages/'
|
|
. slug($language);
|
|
}
|
|
|
|
function listPath(
|
|
string $user,
|
|
string $language,
|
|
string $list
|
|
): string {
|
|
|
|
return languagePath(
|
|
$user,
|
|
$language
|
|
)
|
|
. '/lists/'
|
|
. slug($list)
|
|
. '.json';
|
|
}
|
|
|