1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
<?php
namespace MvcCore\Ext\Forms\Validators\Files\Validations;
trait NameAndExtension {
protected function validateNameAndExtension (& $file) {
$allowedFileNameCharsPattern = '#[^'
. addcslashes($this->allowedFileNameChars, "#[](){}<>?!=^$.+|:")
. ']#';
$file->name = preg_replace(
$allowedFileNameCharsPattern, '', $file->name
);
$file->name = str_replace('..', '', $file->name);
$pathInfo = pathinfo($file->name);
$file->name = $pathInfo['basename'];
$extension = mb_strtolower($pathInfo['extension']);
$file->extension = $extension;
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$winReservedFileNames = explode(',', static::WIN_RESERVED_FILENAMES);
if (in_array(mb_strtoupper($file->name), $winReservedFileNames, TRUE))
return $this->handleUploadError(
static::UPLOAD_ERR_RESERVED_NAME, [$file->name]
);
if (in_array(mb_strtoupper($pathInfo['filename']), $winReservedFileNames, TRUE))
return $this->handleUploadError(
static::UPLOAD_ERR_RESERVED_NAME, [$pathInfo['filename']]
);
}
if (mb_strlen($file->name) > 255) {
$extensionLength = mb_strlen($extension);
if ($extensionLength > 0) {
$fileName = basename($file->name, '.' . $extension);
$file->name = mb_substr($fileName, 0, 255 - 1 - $extensionLength) . '.' . $extension;
} else {
$file->name = mb_substr($file->name, 0, 255);
}
}
}
}