|
|
<?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 Addons\Attachment\Model;
|
|
|
use Think\Model;
|
|
|
|
|
|
/**
|
|
|
* 分类模型
|
|
|
*/
|
|
|
class AttachmentModel extends Model{
|
|
|
/**
|
|
|
* 附件模型自动完成
|
|
|
* @var array
|
|
|
*/
|
|
|
protected $_auto = array(
|
|
|
array('uid', 'session', self::MODEL_INSERT, 'function', 'user_auth.uid'),
|
|
|
array('download', 0, self::MODEL_INSERT),
|
|
|
array('sort', 0, self::MODEL_INSERT),
|
|
|
array('create_time', NOW_TIME, self::MODEL_INSERT),
|
|
|
array('update_time', NOW_TIME, self::MODEL_BOTH),
|
|
|
array('status', 1, self::MODEL_BOTH),
|
|
|
);
|
|
|
|
|
|
protected function _after_find(&$result,$options) {
|
|
|
$result['update_time_text'] = date('Y-m-d H:i:s', $result['update_time']);
|
|
|
$result['document_title'] = D('Document')->getFieldById($result['record_id'], 'title');
|
|
|
$result['size'] = format_bytes($result['size']);
|
|
|
}
|
|
|
|
|
|
protected function _after_select(&$result,$options){
|
|
|
foreach($result as &$record){
|
|
|
$this->_after_find($record,$options);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 保存文件附件到数据库
|
|
|
* @param string $title 附件标题
|
|
|
* @param array $file 文件数据
|
|
|
* @param number $record 关联记录ID
|
|
|
* @param integer $dir 是否为目录
|
|
|
* @return boolean
|
|
|
*/
|
|
|
public function saveFile($title, $file, $record, $dir = 0){
|
|
|
$data = array(
|
|
|
'title' => $title,
|
|
|
'type' => 2,
|
|
|
'source' => $file['id'],
|
|
|
'record_id' => $record,
|
|
|
'dir' => $dir,
|
|
|
'size' => $file['size'],
|
|
|
);
|
|
|
|
|
|
/* 保存附件 */
|
|
|
if($this->create($data) && $this->add()){
|
|
|
return true;
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public function saveDir(){
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 下载附件
|
|
|
* @param number $id 附件ID
|
|
|
* @return boolean 下载失败返回false
|
|
|
*/
|
|
|
public function download($id){
|
|
|
$info = $this->field(true)->find($id);
|
|
|
if($info && $info['status'] == 1){
|
|
|
/* 下载附件 */
|
|
|
$this->downloadId = $id;
|
|
|
switch($info['type']){
|
|
|
case 0:
|
|
|
//TODO: 下载目录?
|
|
|
break;
|
|
|
case 1:
|
|
|
//TODO: 下载外部附件
|
|
|
break;
|
|
|
case 2:
|
|
|
$File = D('File');
|
|
|
$root = C('ATTACHMENT_UPLOAD.rootPath');
|
|
|
$call = array($this, 'setDownload');
|
|
|
if(false === $File->download($root, $info['source'], $call, $id)){
|
|
|
$this->error = $File->getError();
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
$this->error = '无效附件类型!';
|
|
|
}
|
|
|
} else {
|
|
|
$this->error = '附件已删除或被禁用!';
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 新增下载次数(File模型回调方法)
|
|
|
*/
|
|
|
public function setDownload($id){
|
|
|
$map = array('id' => $id);
|
|
|
$this->where($map)->setInc('download');
|
|
|
}
|
|
|
|
|
|
} |