<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Home\Controller;

/**
 * 文件控制器
 * 主要用于下载模型的文件上传和下载
 */
class FileController extends HomeController {
	/* 文件上传 */
	public function upload() {
		set_time_limit(0);
		$return = array (
				'status' => 1,
				'info' => '上传成功',
				'data' => '' 
		);
		/* 调用文件上传组件上传文件 */
		$File = D ( 'File' );
		$file_driver = C ( 'DOWNLOAD_UPLOAD_DRIVER' );
		$info = $File->upload ( $_FILES, C ( 'DOWNLOAD_UPLOAD' ), C ( 'DOWNLOAD_UPLOAD_DRIVER' ), C ( "UPLOAD_{$file_driver}_CONFIG" ) );
		
		/* 记录附件信息 */
		if ($info) {
			$return ['data'] = think_encrypt ( json_encode ( $info ['download'] ) );
			$return ["name"] =  $info ['download']["name"];
			if(strtolower($info['download']['ext']) == 'stl'){
				$return['volume'] = $this->getVolume(".".$info['download']['path']);
			}
		} else {
			$return ['status'] = 0;
			$return ['info'] = $File->getError ();
		}
		
		/* 返回JSON数据 */
		$this->ajaxReturn ($return);
	}
	
	/**
	 * @abstract 获得模型的体积
	 * @param string $path
	 */
	private function getVolume($path){
		$stlvmc = ".".C("TMPL_PARSE_STRING")['__STATIC__']."/exe/stlvolume";
		$command2 = realpath($stlvmc)." ".realpath($path);
		$admesh_r = my_exec($command2);
		$volume_str = $admesh_r["stdout"];
		$vr = preg_match('/Volume\s+:\s+(\d+\.\d+)?/', $volume_str, $volumes);
		if($vr){
			$size = round(floatval($volumes[1])/1000,2);
		}
		else{
			$size = 0;
		}
		return  $size;
	}

	
	/* 下载文件 */
	public function download($id = null) {
		if (empty ( $id ) || ! is_numeric ( $id )) {
			$this->error ( '参数错误！' );
		}
		
		$logic = D ( 'Download', 'Logic' );
		if (! $logic->download ( $id )) {
			$this->error ( $logic->getError () );
		}
	}
	
	/* 下载stl文件 */
	public function downloadmodel($id = null) {
		if (empty ( $id ) || ! is_numeric ( $id )) {
			$this->error ( '参数错误！' );
		}
		$logic = D ( 'Model', 'Logic' );
		if (! $logic->download ( $id )) {
			$this->error ( $logic->getError () );
		} else {
		}
	}
	
	/**
	 * 上传图片
	 * 
	 * @author huajie <banhuajie@163.com>
	 */
	public function uploadPicture() {
		// TODO: 用户登录检测
		
		/* 返回标准数据 */
		$return = array (
				'status' => 1,
				'info' => '上传成功',
				'data' => '' 
		);
		//判断是否添加水印
		if(strpos($_SERVER['REQUEST_URI'],"water") !== 0) 
			$water = 0;
		else 
			$water = 1;
		//$water = isset(I('water'))?0:1;
		/* 调用文件上传组件上传文件 */
		$Picture = D ( 'Picture' );
		$pic_driver = C ( 'PICTURE_UPLOAD_DRIVER' );
		$info = $Picture->upload ( $_FILES, C ( 'PICTURE_UPLOAD' ), C ( 'PICTURE_UPLOAD_DRIVER' ), C ( "UPLOAD_{$pic_driver}_CONFIG" ),$water ); // TODO:上传到远程服务器
		
		/* 记录图片信息 */
		if ($info) {
			$return ['status'] = 1;
			$return = array_merge ( $info ['download'], $return );
		} else {
			$return ['status'] = 0;
			$return ['info'] = $Picture->getError ();
		}
		
		/* 返回JSON数据 */
		$this->ajaxReturn ( $return );
	}
	
	
	
}
