|
|
|
|
<?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 Media\Logic;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 文档模型子模型 - 下载模型
|
|
|
|
|
*/
|
|
|
|
|
class DownloadLogic extends BaseLogic{
|
|
|
|
|
|
|
|
|
|
/* 自动验证规则 */
|
|
|
|
|
protected $_validate = array(
|
|
|
|
|
array('content', 'require', '内容不能为空!', self::MUST_VALIDATE , 'regex', self::MODEL_BOTH),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/* 自动完成规则 */
|
|
|
|
|
protected $_auto = array();
|
|
|
|
|
|
|
|
|
|
public function update($id){
|
|
|
|
|
/* 获取下载数据 */ //TODO: 根据不同用户获取允许更改或添加的字段
|
|
|
|
|
$data = $this->field('download', true)->create();
|
|
|
|
|
if(!$data){
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$file = json_decode(think_decrypt(I('post.file')), true);
|
|
|
|
|
if(!empty($file)){
|
|
|
|
|
$data['file_id'] = $file['id'];
|
|
|
|
|
$data['size'] = $file['size'];
|
|
|
|
|
} else {
|
|
|
|
|
$this->error = '获取上传文件信息失败!';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 添加或更新数据 */
|
|
|
|
|
if(empty($data['id'])){//新增数据
|
|
|
|
|
$data['id'] = $id;
|
|
|
|
|
$id = $this->add($data);
|
|
|
|
|
if(!$id){
|
|
|
|
|
$this->error = '新增详细内容失败!';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
} else { //更新数据
|
|
|
|
|
$status = $this->save($data);
|
|
|
|
|
if(false === $status){
|
|
|
|
|
$this->error = '更新详细内容失败!';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 下载文件
|
|
|
|
|
* @param number $id 文档ID
|
|
|
|
|
* @return boolean 下载失败返回false
|
|
|
|
|
*/
|
|
|
|
|
public function download($id){
|
|
|
|
|
$info = $this->find($id);
|
|
|
|
|
if(empty($info)){
|
|
|
|
|
$this->error = "不存在的文档ID:{$id}";
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$File = D('File');
|
|
|
|
|
$root = C('DOWNLOAD_UPLOAD.rootPath');
|
|
|
|
|
$call = array($this, 'setDownload');
|
|
|
|
|
if(false === $File->download($root, $info['file_id'], $call, $info['id'])){
|
|
|
|
|
$this->error = $File->getError();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增下载次数(File模型回调方法)
|
|
|
|
|
*/
|
|
|
|
|
public function setDownload($id){
|
|
|
|
|
$map = array('id' => $id);
|
|
|
|
|
$this->where($map)->setInc('download');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|