diff options
Diffstat (limited to 'kohana/helpers/upload.php')
-rw-r--r-- | kohana/helpers/upload.php | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/kohana/helpers/upload.php b/kohana/helpers/upload.php deleted file mode 100644 index 15839640..00000000 --- a/kohana/helpers/upload.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php defined('SYSPATH') or die('No direct script access.'); -/** - * Upload helper class for working with the global $_FILES - * array and Validation library. - * - * $Id$ - * - * @package Core - * @author Kohana Team - * @copyright (c) 2007-2008 Kohana Team - * @license http://kohanaphp.com/license.html - */ -class upload_Core { - - /** - * Save an uploaded file to a new location. - * - * @param mixed name of $_FILE input or array of upload data - * @param string new filename - * @param string new directory - * @param integer chmod mask - * @return string full path to new file - */ - public static function save($file, $filename = NULL, $directory = NULL, $chmod = 0644) - { - // Load file data from FILES if not passed as array - $file = is_array($file) ? $file : $_FILES[$file]; - - if ($filename === NULL) - { - // Use the default filename, with a timestamp pre-pended - $filename = time().$file['name']; - } - - if (Kohana::config('upload.remove_spaces') === TRUE) - { - // Remove spaces from the filename - $filename = preg_replace('/\s+/', '_', $filename); - } - - if ($directory === NULL) - { - // Use the pre-configured upload directory - $directory = Kohana::config('upload.directory', TRUE); - } - - // Make sure the directory ends with a slash - $directory = rtrim($directory, '/').'/'; - - if ( ! is_dir($directory) AND Kohana::config('upload.create_directories') === TRUE) - { - // Create the upload directory - mkdir($directory, 0777, TRUE); - } - - if ( ! is_writable($directory)) - throw new Kohana_Exception('upload.not_writable', $directory); - - if (is_uploaded_file($file['tmp_name']) AND move_uploaded_file($file['tmp_name'], $filename = $directory.$filename)) - { - if ($chmod !== FALSE) - { - // Set permissions on filename - chmod($filename, $chmod); - } - - // Return new file path - return $filename; - } - - return FALSE; - } - - /* Validation Rules */ - - /** - * Tests if input data is valid file type, even if no upload is present. - * - * @param array $_FILES item - * @return bool - */ - public static function valid($file) - { - return (is_array($file) - AND isset($file['error']) - AND isset($file['name']) - AND isset($file['type']) - AND isset($file['tmp_name']) - AND isset($file['size'])); - } - - /** - * Tests if input data has valid upload data. - * - * @param array $_FILES item - * @return bool - */ - public static function required(array $file) - { - return (isset($file['tmp_name']) - AND isset($file['error']) - AND is_uploaded_file($file['tmp_name']) - AND (int) $file['error'] === UPLOAD_ERR_OK); - } - - /** - * Validation rule to test if an uploaded file is allowed by extension. - * - * @param array $_FILES item - * @param array allowed file extensions - * @return bool - */ - public static function type(array $file, array $allowed_types) - { - if ((int) $file['error'] !== UPLOAD_ERR_OK) - return TRUE; - - // Get the default extension of the file - $extension = strtolower(substr(strrchr($file['name'], '.'), 1)); - - // Get the mime types for the extension - $mime_types = Kohana::config('mimes.'.$extension); - - // Make sure there is an extension, that the extension is allowed, and that mime types exist - return ( ! empty($extension) AND in_array($extension, $allowed_types) AND is_array($mime_types)); - } - - /** - * Validation rule to test if an uploaded file is allowed by file size. - * File sizes are defined as: SB, where S is the size (1, 15, 300, etc) and - * B is the byte modifier: (B)ytes, (K)ilobytes, (M)egabytes, (G)igabytes. - * Eg: to limit the size to 1MB or less, you would use "1M". - * - * @param array $_FILES item - * @param array maximum file size - * @return bool - */ - public static function size(array $file, array $size) - { - if ((int) $file['error'] !== UPLOAD_ERR_OK) - return TRUE; - - // Only one size is allowed - $size = strtoupper($size[0]); - - if ( ! preg_match('/[0-9]++[BKMG]/', $size)) - return FALSE; - - // Make the size into a power of 1024 - switch (substr($size, -1)) - { - case 'G': $size = intval($size) * pow(1024, 3); break; - case 'M': $size = intval($size) * pow(1024, 2); break; - case 'K': $size = intval($size) * pow(1024, 1); break; - default: $size = intval($size); break; - } - - // Test that the file is under or equal to the max size - return ($file['size'] <= $size); - } - -} // End upload
\ No newline at end of file |