/** * HasSuffix validator: has file specified suffix? * @param FileUpload * @param string suffix(es) separated by comma [comma and space] * @return bool */ public static function validateHasSuffix(FileUpload $control, $allowedSuffixes) { $file = $control->getValue(); if ($file instanceof HttpUploadedFile) { $allowedSuffixes = preg_split('/,\\s*/', $allowedSuffixes); foreach ($allowedSuffixes as $v) { if (preg_match("/.*\\.{$v}\$/i", $file->name)) { return TRUE; } } } return FALSE; }
/** * MimeType validator: has file specified mime type? * @param FileUpload * @param array|string mime type * @return bool */ public static function validateMimeType(FileUpload $control, $mimeType) { $file = $control->getValue(); if ($file instanceof HttpUploadedFile) { $type = $file->getContentType(); $type = strtolower(preg_replace('#\\s*;.*$#', '', $type)); if (!$type) { return FALSE; // cannot verify :-( } $mimeTypes = is_array($mimeType) ? $mimeType : explode(',', $mimeType); if (in_array($type, $mimeTypes, TRUE)) { return TRUE; } if (in_array(preg_replace('#/.*#', '/*', $type), $mimeTypes, TRUE)) { return TRUE; } } return FALSE; }
/** * Image validator: is file image? * @param FileUpload * @return bool */ public static function validateImage(FileUpload $control) { $file = $control->getValue(); return $file instanceof HttpUploadedFile && $file->isImage(); }