<?php
/**
 * FileUploadUtil
 * ファイルアップロードの処理、そこで得られる配列のデータ化
 * $Id: FileUploadUtil.inc,v 1.1 2015/10/08 11:18:56 wanggb Exp $
 * @author iimuro
 * @access public
 * @package jp.aimslib2.io
 */

class FileUploadUtil {
	
	
	/**
	 * 指定された名前のリクエストに対するUploadFileを作成します。
	 * @param $name リクエスト中の名前。
	 * @return mixed 一つ、又は配列のUploadFile
	 */
	public static function getFileRequest($name) {
		$data = $_FILES[$name];
		
		return FileUploadUtil::getFile($data);
	}
	
	/**
	 * 指定された名前のリクエストに対するUploadFileを作成します。
	 * @param $data $_FILESに含まれるデータ要素
	 * @return mixed 一つ、又は配列のUploadFile
	 */
	public static function getFile($data) {
		
		if (is_array($data["name"])) {
			// 配列型のデータの場合
			return getScalarFile($data);
		} else {
			// 単体のデータの場合
			return getArrayFile($data);
		}
		
	}
	
	/**
	 * 単体のデータである場合のFileUpload処理を行います。
	 * @param $data $_FILESに含まれるデータ要素
	 */
	public static function getScalarFile($data) {
		
		$file = new UploadFile();
		$file->name = $data["name"];
		$file->type = $data["type"];
		$file->size = $data["size"];
		$file->tmp_name = $data["tmp_name"];
		$file->error = $data["error"];
		
		return $file;
	}
	
	/**
	 * 配列のデータである場合のFileUpload処理を行います。
	 * @param $data $_FILESに含まれるデータ要素
	 */
	public static function getArrayFile($data) {
		
		$result = array();
		
		for($x = 0; $x < count($data["name"]); $x++) {
			$tmp = new UploadFile();
			$tmp->name = $data["name"][$x];
			$tmp->type = $data["type"][$x];
			$tmp->size = $data["size"][$x];
			$tmp->tmp_name = $data["tmp_name"][$x];
			$tmp->error = $data["error"][$x];
			
			array_push($result, $tmp);
		}
		return $result;
	}
}


?>