<?php
/**
  * @method 文件中心(上传、删除...)
  * @author soul
  * @copyright 2017/6/15
  */
class OthFileCenter
{
	public $shop_warter = null;
	/**
	  * @method 上传文件到文件中心
	  * @param  $dataArr [
				//如 'file'=> $_FILES['file']
				'file'=>[
					'name'=>'Hydrangeas.jpg',
					'data'=>'文件内容',  data | tmp_name 二选一
					'tmp_name'=>'C:\Windows\Temp\phpC18B.tmp',
				],
				//类别
				'cate'=>'logo',
				//自定义名称
				'filename'=>'my.jpg',
				//自定义路径
				'path'=>/='shop/1214/'
			]
	  * @param  $toSite 文件中心标识 b2c:跑街的[默认] ；yp:宜配网 
	  * @author soul
	  * @copyright 2017/6/15
	  * @return 
		 成功：["status"=>true, "data"=>["size"=>595284, "path"=>"45/163/", "ext"=>"jpg", "name"=>"f8345bdef23fd7f4", "crc32"=>"462F6303", "etime"=>1497518727]]
		 失败：["status"=>false, "data"=>'错误原因', 'code'=>110]
	  */
	public function upload($dataArr, $toSite = 'b2c', $errorStop = true)
	{
		if(empty($dataArr) || empty($dataArr['file']) || empty($dataArr['cate']) || empty(mvc::$cfg['FILE_CENTER'][$toSite]))
			return LibFc::ReturnData(false, 'OthFileCenter=>upload 提供的参数不正确');
		if(empty($dataArr['file']['data']))
		{
			if (!file_exists($dataArr['file']['tmp_name']))
				return LibFc::ReturnData(false, 'OthFileCenter=>upload 找不到临时文件');

			/*if(!is_uploaded_file($dataArr['file']['tmp_name']))
				return LibFc::ReturnData(false, 'OthFileCenter=>upload 临时文件错误');*/
		}
		$cfg = mvc::$cfg['FILE_CENTER'][$toSite];
		$dataArr['token'] = $cfg['token'];
		$dataArr['site'] = $toSite;
		$dataArr['error_lang'] = 'cn';
		if($shop_warter === null && $dataArr['site'] == 'b2c' && $dataArr['cate'] == 'product' && preg_match('/shop(\d+)\//', $dataArr['path'], $match))
		{
			$B2cBase = new B2cBase();
			$res = $B2cBase->get('sh_shop', ['shop_warter'], sprintf(" and shop_id = %d", $match[1]), true);
			$dataArr['shop_warter'] = $res['data']['shop_warter'];
		}
		$LibHttp = new LibHttp(false,false);
		$res = $LibHttp->upload($cfg['url_put'], $dataArr);
		if($res['status'])
		{
			$res['data']['small'] = !empty($res['data']['small']) > 0? $res['data']['small'].'/': ''; 
			$res['data']['sfile'] = $res['data']['path'].$res['data']['small'].$res['data']['name'].'.'.$res['data']['ext'];
			$res['data']['url'] = $cfg['url_get'].'&c='.$dataArr['cate'].'&f='.$res['data']['path'];
			$res['data']['url'] .= $res['data']['small'];
			$res['data']['url'] .= $res['data']['name'].'.'.$res['data']['ext'].$cfg['get_uri'];
		}
		else if(!$errorStop) 
		{
			return $res;
		}
		return LibFc::ReturnData($res['status'], $res['data'], $res['code']);
	}

	/**
	  * @method 将文件中心中某些文件重新初始化一次
	  * @param  $dataArr [
					//类别
					'cate'=>'product',
					//防止失败，一次最多5张 如果删除的图片有缩略图，地址必须含有某个缩略图文件夹名,
					'files'=>['shop172999/product/800/140024bbdca29000.jpg', ...]
					//缩略图文件夹名
					'smallname'=>'800'
			]
	  * @param  $toSite 文件中心标识 b2c:跑街的[默认] ；yp:宜配网 
	  * @author soul
	  * @copyright 2021/6/16
	  * @return 
		 成功：{"status":true,"data":["成功的文件列表","shop149894/product/800/4112dd42aac12ecf.jpg","shop149894/product/800/a2cd449965d61929.jpg"]}
		 失败：["status"=>false, "data"=>'错误原因', 'code'=>110]
		
		$t = [
			'cate'=>'product',
			'files'=>['shop149894/product/800/4112dd42aac12ecf.jpg', 'shop149894/product/800/a2cd449965d61929.jpg'],
			'smallpath'=>'/800/'
		];
		$OthFileCenter->resetHasfile($t, 'b2c');
	  */
	public function resetHasfile($dataArr, $toSite = 'b2c')
	{
		if(empty($dataArr) || empty($dataArr['files']) || empty($dataArr['cate']) || empty(mvc::$cfg['FILE_CENTER'][$toSite]))
			return LibFc::ReturnData(false, 'OthFileCenter=>resetHasfile 提供的参数不正确');

		$cfg = mvc::$cfg['FILE_CENTER'][$toSite];
		$url = str_replace('write.php', 'resetHasfile.php', $cfg['url_put']);
		$dataArr['token'] = $cfg['token'];
		$dataArr['site'] = $toSite;
		$dataArr['error_lang'] = 'cn';
		$LibHttp = new LibHttp(false,false);
		$res = $LibHttp->resetHasfile($url, $dataArr);
		return LibFc::ReturnData($res['status'], $res['data'], $res['code']);
	}


	/**
	  * @method 从文件中心删除文件
	  * @param  $dataArr [
				//类别
				'cate'=>'logo',
				'files'=>['shop/100/1.jpg', 'shop/100/xxx.jpg', ....] 
				如果删除的图片有缩略图，地址必须含有某个缩略图文件夹名
			]
	  * @param  $toSite 文件中心标识 b2c:跑街的[默认] ；yp:宜配网 
	  * @author soul
	  * @copyright 2017/6/15
	  * @return 
		 成功：["status"=>true, "data"=>'']
		 失败：["status"=>false, "data"=>'错误原因', 'code'=>110]
	  */
	public function del($dataArr, $toSite = 'b2c')
	{
		if(empty($dataArr) || empty($dataArr['files']) || empty($dataArr['cate']) || empty(mvc::$cfg['FILE_CENTER'][$toSite]))
			return LibFc::ReturnData(false, 'OthFileCenter=>del 提供的参数不正确');

		$cfg = mvc::$cfg['FILE_CENTER'][$toSite];
		$dataArr['token'] = $cfg['token'];
		$dataArr['site'] = $toSite;
		$dataArr['error_lang'] = 'cn';
		$LibHttp = new LibHttp(false,false);
		$res = $LibHttp->delete_file($cfg['url_del'], $dataArr);
		return LibFc::ReturnData($res['status'], $res['data'], $res['code']);
	}
}
?>