You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jy-sdk/Addons/Attachment/AttachmentAddon.class.php

113 lines
3.0 KiB
PHP

<?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;
use Common\Controller\Addon;
/**
* 附件插件
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class AttachmentAddon extends Addon{
public $info = array(
'name' => 'Attachment',
'title' => '附件',
'description' => '用于文档模型上传附件',
'status' => 1,
'author' => 'thinkphp',
'version' => '0.1'
);
public $admin_list = array(
'list_grid' => array(
'id:ID',
'title:文件名',
'size:大小',
'update_time_text:更新时间',
'document_title:文档标题'
),
'model'=>'Attachment',
'order'=>'id asc'
);
public $custom_adminlist = 'adminlist.html';
public function install(){
return true;
}
public function uninstall(){
return true;
}
/* 显示文档模型编辑页插件扩展信息表单 */
public function documentEditForm($param = array()){
$this->assign($param);
$this->display(T('Addons://Attachment@Article/edit'));
}
/* 文档末尾显示附件列表 */
public function documentDetailAfter($info = array()){
if(empty($info) || empty($info['id'])){ //数据不正确
return ;
}
/* 获取当前文档附件 */
$Attachment = D('Addons://Attachment/Attachment');
$map = array('record_id' => $info['id'], 'status' => 1);
$list = $Attachment->field(true)->where($map)->select();
if(!$list){ //不存在附件
return ;
}
/* 模板赋值并渲染模板 */
$this->assign('list', $list);
$this->display(T('Addons://Attachment@Article/detail'));
}
/**
* 文档保存成功后执行行为
* @param array $data 文档数据
* @param array $catecory 分类数据
*/
public function documentSaveComplete($param){
if (MODULE_NAME == 'Home') {
list($data, $category) = $param;
/* 附件默认配置项 */
$default = C('ATTACHMENT_DEFAULT');
/* 合并当前配置 */
$config = $category['extend']['attachment'];
$config = empty($config) ? $default : array_merge($default, $config);
$attach = I('post.attachment');
/* 该分类不允许上传附件 */
if(!$config['is_upload'] || !in_array($attach['type'], str2arr($config['allow_type']))){
return ;
}
switch ($attach['type']) {
case 1: //外链
# code...
break;
case 2: //文件
$info = json_decode(think_decrypt($attach['info']), true);
if(!empty($info)){
$Attachment = D('Addons://Attachment/Attachment');
$Attachment->saveFile($info['name'], $info, $data['id']);
} else {
return; //TODO:非法附件上传,可记录日志
}
break;
}
}
}
}