首页 > CMS > PhpCMS > 正文

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

2024-09-10 07:15:48
字体:
来源:转载
供稿:网友

1.添加专题:

  1. /**  
  2.      * 添加专题  
  3.      */   
  4.     public function add() {   
  5.         //添加专题   
  6.         if (isset($_POST['dosubmit']) && !emptyempty($_POST['dosubmit'])) {   
  7.             //添加专题页面表单数组   
  8.             $special = $this->check($_POST['special']);   
  9.             //插入专题,返回专题id   
  10.             $id = $this->db->insert($special, true);   
  11.             //如果插入专题成功   
  12.             if ($id) {   
  13.                 $this->special_api->_update_type($id$_POST['type']);   
  14.                 if ($special['siteid']>1) {   
  15.                     $site = pc_base::load_app_class('sites''admin');   
  16.                     $site_info = $site->get_by_id($special['siteid']);   
  17.                     if ($special['ishtml']) {   
  18.                         $url =  $site_info['domain'].'special/'.$special['filename'].'/';   
  19.                     } else {   
  20.                         $url = $site_info['domain'].'index.php?m=special&c=index&id='.$id;   
  21.                     }   
  22.                 } else {   
  23.                     //专题的url路径,$special['filename']-代表专题生成的目录   
  24.                     $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;   
  25.                 }   
  26.                 //更新专题的url   
  27.                 $this->db->update(array('url'=>$url), array('id'=>$id'siteid'=>$this->get_siteid()));   
  28.                    
  29.                 //是否生成静态,调用生成静态类   
  30.                 if ($special['ishtml']) {   
  31.                     $html = pc_base::load_app_class('html''special'); //专用于生成静态的类库文件   
  32.                     //生成专题首页:参数1-专题id    参数2-每页的个数            参数3-最大更新个数         成功后返回生成文件的大小   
  33.                     $html->_index($id, 20, 5);   
  34.                 }   
  35.                 //更新附件状态   
  36.                 if(pc_base::load_config('system','attachment_stat')) {   
  37.                     $this->attachment_db = pc_base::load_model('attachment_model');//附件表   
  38.                     //更新附件表   
  39.                     $this->attachment_db->api_update(array($special['thumb'], $special['banner']),'special-'.$id, 1);   
  40.                 }   
  41.                 //专题缓存,缓存所有开放中的专题到缓存目录   
  42.                 $this->special_cache();   
  43.             }   
  44.             //添加专题成功的提示信息   
  45.             showmessage(L('add_special_success'), HTTP_REFERER);   
  46.         } else {   
  47.             //获取站点模板信息   
  48.             pc_base::load_app_func('global''admin');   
  49.             //站点id   
  50.             $siteid = $this->get_siteid();   
  51.             $template_list = template_list($siteid, 0);   
  52.             $site = pc_base::load_app_class('sites','admin');   
  53.             $info = $site->get_by_id($siteid);   
  54.             foreach ($template_list as $k=>$v) {   
  55.                 $template_list[$v['dirname']] = $v['name'] ? $v['name'] : $v['dirname'];   
  56.                 unset($template_list[$k]);   
  57.             }   
  58.             include $this->admin_tpl('special_add');   
  59.         }   
  60.     }  

2.对从添加专题页面提交过来的表单数据进行验证:

  1. /**  
  2.      * 表单验证  
  3.      * @param array $data 表单传递的值  
  4.      * @param string $a add/edit添加操作时,自动加上默认值  
  5.      */   
  6.     private function check($data$a = 'add') {   
  7.         // 专题名称不能为空   
  8.         if(!$data['title']) showmessage(L('title_cannot_empty'), HTTP_REFERER);   
  9.         //专题横幅不能为空   
  10.         if(!$data['banner']) showmessage(L('banner_no_empty'), HTTP_REFERER);   
  11.         //专题缩略图不能为空   
  12.         if(!$data['thumb']) showmessage(L('thumb_no_empty'), HTTP_REFERER);  
  13.         //一般为空   
  14.         if(is_array($data['catids']) && !emptyempty($data['catids'])) {   
  15.             $data['catids'] = ','.implode(','$data['catids']).',';   
  16.         }   
  17.         if($a=='add') {   
  18.             //专题首页模板   
  19.             if(!$data['index_template']) $data['index_template'] = 'index';  
  20.             //站点   
  21.             $data['siteid'] = $this->get_siteid();   
  22.             //创建时间   
  23.             $data['createtime'] = SYS_TIME;   
  24.             //用户名   
  25.             $data['username'] = param::get_cookie('admin_username');   
  26.             //用户id   
  27.             $data['userid'] = $_SESSION['userid'];   
  28.         }   
  29.         //投票标题   
  30.         if ($data['voteid']) {   
  31.             //选择已有投票   
  32.             if (strpos($data['voteid'], '|')===false) {   
  33.                 $vote_db = pc_base::load_model('vote_subject_model');//属于专题的投票表   
  34.                 //根据投票标题获取当前专题的投票记录   
  35.                 $r = $vote_db->get_one(array('subject'=>$data['voteid'], 'siteid'=>$this->get_siteid()), 'subjectid, subject''addtime DESC');   
  36.                 if ($r) { //开源软件:Vevb.com
  37.                     //格式如下:vote|投票id|投票标题   
  38.                     $data['voteid'] = 'vote|'.$r['subjectid'].'|'.$r['subject'];   
  39.                 }   
  40.             }   
  41.         }   
  42.         return $data;   
  43.     }   
  44. }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表