【phpcms-v9】专题模块后台控制器special.php文件分析-添加专题

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;
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值