1.添加专题:
/**
* 添加专题
*/
public function add() {
//添加专题
if (isset($_POST['dosubmit']) && !empty($_POST['dosubmit'])) {
//添加专题页面表单数组
$special = $this->check($_POST['special']);
//插入专题,返回专题id
$id = $this->db->insert($special, true);
//如果插入专题成功
if ($id) {
$this->special_api->_update_type($id, $_POST['type']);
if ($special['siteid']>1) {
$site = pc_base::load_app_class('sites', 'admin');
$site_info = $site->get_by_id($special['siteid']);
if ($special['ishtml']) {
$url = $site_info['domain'].'special/'.$special['filename'].'/';
} else {
$url = $site_info['domain'].'index.php?m=special&c=index&id='.$id;
}
} else {
//专题的url路径,$special['filename']-代表专题生成的目录
$url = $special['ishtml'] ? APP_PATH.substr(pc_base::load_config('system', 'html_root'), 1).'/special/'.$special['filename'].'/' : APP_PATH.'index.php?m=special&c=index&id='.$id;
}
//更新专题的url
$this->db->update(array('url'=>$url), array('id'=>$id, 'siteid'=>$this->get_siteid()));
//是否生成静态,调用生成静态类
if ($special['ishtml']) {
$html = pc_base::load_app_class('html', 'special'); //专用于生成静态的类库文件
//生成专题首页:参数1-专题id 参数2-每页的个数 参数3-最大更新个数 成功后返回生成文件的大小
$html->_index($id, 20, 5);
}
//更新附件状态
if(pc_base::load_config('system','attachment_stat')) {
$this->attachment_db = pc_base::load_model('attachment_model');//附件表
//更新附件表
$this->attachment_db->api_update(array($special['thumb'], $special['banner']),'special-'.$id, 1);
}
//专题缓存,缓存所有开放中的专题到缓存目录
$this->special_cache();
}
//添加专题成功的提示信息
showmessage(L('add_special_success'), HTTP_REFERER);
} else {
//获取站点模板信息
pc_base::load_app_func('global', 'admin');
//站点id
$siteid = $this->get_siteid();
$template_list = template_list($siteid, 0);
$site = pc_base::load_app_class('sites','admin');
$info = $site->get_by_id($siteid);
foreach ($template_list as $k=>$v) {
$template_list[$v['dirname']] = $v['name'] ? $v['name'] : $v['dirname'];
unset($template_list[$k]);
}
include $this->admin_tpl('special_add');
}
}
2.对从添加专题页面提交过来的表单数据进行验证:
/**
* 表单验证
* @param array $data 表单传递的值
* @param string $a add/edit添加操作时,自动加上默认值
*/
private function check($data, $a = 'add') {
// 专题名称不能为空
if(!$data['title']) showmessage(L('title_cannot_empty'), HTTP_REFERER);
//专题横幅不能为空
if(!$data['banner']) showmessage(L('banner_no_empty'), HTTP_REFERER);
//专题缩略图不能为空
if(!$data['thumb']) showmessage(L('thumb_no_empty'), HTTP_REFERER);
//一般为空
if(is_array($data['catids']) && !empty($data['catids'])) {
$data['catids'] = ','.implode(',', $data['catids']).',';
}
if($a=='add') {
//专题首页模板
if(!$data['index_template']) $data['index_template'] = 'index';
//站点
$data['siteid'] = $this->get_siteid();
//创建时间
$data['createtime'] = SYS_TIME;
//用户名
$data['username'] = param::get_cookie('admin_username');
//用户id
$data['userid'] = $_SESSION['userid'];
}
//投票标题
if ($data['voteid']) {
//选择已有投票
if (strpos($data['voteid'], '|')===false) {
$vote_db = pc_base::load_model('vote_subject_model');//属于专题的投票表
//根据投票标题获取当前专题的投票记录
$r = $vote_db->get_one(array('subject'=>$data['voteid'], 'siteid'=>$this->get_siteid()), 'subjectid, subject', 'addtime DESC');
if ($r) {
//格式如下:vote|投票id|投票标题
$data['voteid'] = 'vote|'.$r['subjectid'].'|'.$r['subject'];
}
}
}
return $data;
}
}