1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213 |
- <?php
- /**
- * 圈子首页
- *
- *
- *********************************/
- defined('InShopNC') or exit('Access Invalid!');
- class themeControl extends BaseCircleThemeControl{
- protected $c_id = 0; // 圈子id
- protected $identity = 0; // 身份 0游客 1圈主 2管理 3成员 4申请中 5申请失败
- protected $circle_info = array();
- public function __construct(){
- parent::__construct();
- $this->c_id = intval($_GET['c_id']);
- if($this->c_id <= 0){
- @header("location: ".CIRCLE_SITE_URL);
- }
- Tpl::output('c_id', $this->c_id);
- }
- /**
- * ajax获取话题详细信息 话题列表页使用
- */
- public function ajax_themeinfoOp(){
- // 话题信息
- $this->themeInfo();
- $data = $this->theme_info;
- $model = Model();
- // 话题商品
- $goods_list = $model->table('circle_thg')->where(array('theme_id'=>$this->t_id, 'reply_id'=>0))->select();
- $goods_list = tidyThemeGoods($goods_list, 'themegoods_id');
- $data['goods_list'] = $goods_list;
- // 附件
- $affix_list = $model->table('circle_affix')->where(array('affix_type'=>1, 'theme_id'=>$this->t_id))->select();
- if(!empty($affix_list)){
- foreach ($affix_list as $key=>$val){
- $affix_list[$key]['affix_filename'] = themeImageUrl($val['affix_filename']);
- $affix_list[$key]['affix_filethumb'] = themeImageUrl($val['affix_filethumb']);
- }
- }
- $data['affix_list'] = $affix_list;
- // 访问数增加
- $model->table('circle_theme')->update(array('theme_id'=>$this->t_id, 'theme_browsecount'=>array('exp', 'theme_browsecount+1')));
- $data['theme_content'] = ubb($data['theme_content']);
- if($data['theme_edittime'] != ''){
- $data['theme_edittime'] = @date('Y-m-d H:i', $data['theme_edittime']);
- }
- // 是否赞过话题
- $data['theme_nolike'] = 1;
- if (isset($_SESSION['member_id'])) {
- // 是否赞过话题
- $like_info = $model->table('circle_like')->where(array('theme_id'=>$this->t_id, 'member_id'=>$_SESSION['member_id']))->find();
- if(empty($like_info)){
- $data['theme_nolike'] = 1;
- }else{
- $data['theme_nolike'] = 0;
- }
- }
- if (strtoupper(CHARSET) == 'GBK'){
- $data = Language::getUTF8($data);
- }
- echo json_encode($data);exit;
- }
- /**
- * ajax获取回复相关信息 话题列表页使用
- */
- public function ajax_quickreplyOp(){
- // 话题信息
- $this->themeInfo();
- $data = array();
- $data['form_action'] = CIRCLE_SITE_URL.'/index.php?act=theme&op=save_reply&type=quick&c_id='.$this->c_id.'&t_id='.$this->t_id;
- $data['member_avatar'] = getMemberAvatarForID($_SESSION['member_id']); // 头像
- // 回复
- $reply_list = Model()->table('circle_threply')->where(array('theme_id'=>$this->t_id, 'circle_id'=>$this->c_id))->order('reply_id desc')->limit(5)->select();
- if(!empty($reply_list)){
- foreach($reply_list as $key=>$val){
- $reply_list[$key]['member_avatar'] = getMemberAvatarForID($val['member_id']);
- $reply_list[$key]['reply_addtime'] = date('Y-m-d H:i', $val['reply_addtime']);
- $reply_list[$key]['reply_content'] = removeUBBTag($val['reply_content']);
- }
- }
- $data['reply_list'] = $reply_list;
- $data['c_istalk'] = intval(C('circle_istalk'));
- $data['c_contentleast'] = intval(C('circle_contentleast'));
- if(intval(C('circle_contentleast')) > 0){
- $data['c_contentmsg'] = sprintf(L('nc_content_min_length'), intval(C('circle_contentleast')));
- }else{
- $data['c_contentmsg'] = L('nc_content_not_null');
- }
- if (strtoupper(CHARSET) == 'GBK'){
- $data = Language::getUTF8($data);
- }
- echo json_encode($data);exit;
- }
- /**
- * 保存话题
- */
- public function save_themeOp(){
- if(chksubmit()){
- // Reply function does close,throw error.
- if(!intval(C('circle_istalk'))){
- showDialog(L('circle_theme_cannot_be_published'));
- }
- // checked cookie of SEC
- if(cookie(circle_intervaltime)){
- showDialog(L('circle_operation_too_frequent'));
- }
- // 会员信息
- $this->memberInfo();
- // 圈子信息
- $this->circleInfo();
- // 不是圈子成员不能发帖
- if(!in_array($this->identity, array(1,2,3))){
- showDialog(L('circle_no_join_ban_release'));
- }
- $model = Model();
- // 主题分类
- $thclass_id = intval($_POST['thtype']);
- $thclass_name = '';
- if($thclass_id > 0){
- $thclass_info = $model->table('circle_thclass')->find($thclass_id);
- $thclass_name = $thclass_info['thclass_name'];
- }
- /**
- * 验证
- */
- $obj_validate = new Validator();
- $validate_arr[] = array("input"=>$_POST["name"], "require"=>"true","message"=>Language::get('nc_name_not_null'));
- $validate_arr[] = array("input"=>$_POST["name"], "validator"=>'Length',"min"=>4,"max"=>30,"message"=>Language::get('nc_name_min_max_length'));
- $validate_arr[] = array("input"=>$_POST["themecontent"], "require"=>"true","message"=>Language::get('nc_content_not_null'));
- if(intval(C('circle_contentleast')) > 0) $validate_arr[] = array("input"=>$_POST["themecontent"],"validator"=>'Length',"min"=>intval(C('circle_contentleast')),"message"=>Language::get('circle_contentleast'));
- $obj_validate -> validateparam = $validate_arr;
- $error = $obj_validate->validate();
- if ($error != ''){
- showDialog($error,'','error');
- }
- $insert = array();
- $insert['theme_name'] = circleCenterCensor($_POST['name']);
- $insert['theme_content']= circleCenterCensor($_POST['themecontent']);
- $insert['circle_id'] = $this->c_id;
- $insert['circle_name'] = $this->circle_info['circle_name'];
- $insert['thclass_id'] = $thclass_id;
- $insert['thclass_name'] = $thclass_name;
- $insert['member_id'] = $_SESSION['member_id'];
- $insert['member_name'] = $_SESSION['member_name'];
- $insert['is_identity'] = $this->identity;
- $insert['theme_addtime']= time();
- $insert['lastspeak_time']= time();
- $insert['theme_readperm']= intval($_POST['readperm']);
- $insert['theme_special']= intval($_GET['sp']);
- $themeid = $model->table('circle_theme')->insert($insert);
- if($themeid){
- $has_goods = 0; // 存在商品标记
- $has_affix = 0;// 存在附件标记
- // 插入话题商品
- if(!empty($_POST['goods'])){
- $goods_insert = array();
- foreach ($_POST['goods'] as $key=>$val){
- $p = array();
- $p['theme_id'] = $themeid;
- $p['reply_id'] = 0;
- $p['circle_id'] = $this->c_id;
- $p['goods_id'] = $val['id'];
- $p['goods_name'] = $val['name'];
- $p['goods_price'] = $val['price'];
- $p['goods_image'] = $val['image'];
- $p['store_id'] = $val['storeid'];
- $p['thg_type'] = $val['type'];
- $p['thg_url'] = ($val['type'] == 1)?$val['uri']:'';
- $goods_insert[] = $p;
- }
- $rs = $model->table('circle_thg')->insertAll($goods_insert);
- $has_goods = 1;
- }
- // 更新话题附件
- $model->table('circle_affix')->where(array('affix_type'=>1, 'member_id'=>$_SESSION['member_id'], 'theme_id'=>0))->update(array('theme_id'=>$themeid, 'circle_id'=>$this->c_id));
- // 更新话题信息
- $affixe_count = $model->table('circle_affix')->where(array('affix_type'=>1, 'member_id'=>$_SESSION['member_id'], 'theme_id'=>$themeid))->count();
- if($affixe_count > 0){
- $has_affix = 1;
- }
- if($has_goods || $has_affix){
- $update = array();
- $update['theme_id'] = $themeid;
- $update['has_goods'] = $has_goods;
- $update['has_affix'] = $has_affix;
- $model->table('circle_theme')->update($update);
- }
- // 更新圈子表话题数
- $update = array(
- 'circle_id'=>$this->c_id,
- 'circle_thcount'=>array('exp', 'circle_thcount+1')
- );
- $model->table('circle')->update($update);
- // 更新用户相关信息
- $update = array(
- 'cm_thcount'=>array('exp', 'cm_thcount+1'),
- 'cm_lastspeaktime'=>time()
- );
- $model->table('circle_member')->where(array('member_id'=>$_SESSION['member_id'], 'circle_id'=>$this->c_id))->update($update);
- // Special theme
- if($_GET['sp'] == 1){
- $insert = array();
- $insert['theme_id'] = $themeid;
- $insert['poll_multiple'] = intval($_POST['multiple']);
- $insert['poll_startime'] = time();
- $insert['poll_endtime'] = intval($_POST['days'])!=0?time()+intval($_POST['days'])*60*60*12:0;
- $insert['poll_days'] = intval($_POST['days']);
- $model->table('circle_thpoll')->insert($insert);
- if(!empty($_POST['polloption'])){
- $insert_array = array();
- foreach ($_POST['polloption'] as $val){
- if ($val == '') continue;
- $option = array();
- $option['theme_id'] = $themeid;
- $option['pollop_option']= $val;
- $insert_array[] = $option;
- }
- $model->table('circle_thpolloption')->insertAll($insert_array);
- }
- }
- // set cookie of SEC
- if(intval(C('circle_intervaltime')) > 0){
- setNcCookie('circle_intervaltime', true, intval(C('circle_intervaltime')));
- }
- // Experience
- $param = array();
- $param['member_id'] = $_SESSION['member_id'];
- $param['member_name'] = $_SESSION['member_name'];
- $param['circle_id'] = $this->c_id;
- $param['type'] = 'release';
- $param['itemid'] = $themeid;
- Model('circle_exp')->saveExp($param);
- showDialog(L('nc_release_op_succ'), CIRCLE_SITE_URL.'/index.php?act=theme&op=theme_detail&c_id='.$this->c_id.'&t_id='.$themeid, 'succ');
- }else{
- showDialog(L('nc_release_op_fail'));
- }
- }
- @header("location: ".CIRCLE_SITE_URL);
- }
- /**
- * Submit voting options
- */
- public function save_votepollOp(){
- if(chksubmit()){
- $model = Model();
- // check theme
- $this->themeInfo();
- // Verify the vote ended or not
- $poll_info = $model->table('circle_thpoll')->find($this->t_id);
- if(empty($poll_info)){
- showDialog(L('wrong_argument'));
- }
- if($poll_info['poll_endtime'] != 0 && time() > $poll_info['poll_endtime']){
- showDialog(L('circle_poll_has_end'));
- }
- $voter_info = $model->table('circle_thpollvoter')->where(array('theme_id'=>$this->t_id, 'member_id'=>$_SESSION['member_id']))->find();
- if(!empty($voter_info)){
- showDialog(L('circle_poll_has_join'));
- }
- $pollopid = $_POST['pollopid'];
- foreach ((array)$pollopid as $key=>$val){
- if(!is_numeric($val)) unset($pollopid[$key]);
- }
- if(empty($pollopid)){
- showDialog(L('circle_poll_choose_options'));
- }
- // Verify the voting options exist
- $option_list = $model->table('circle_thpolloption')->where(array('pollop_id'=>array('in', $pollopid), 'theme_id'=>$this->t_id))->select();
- if(empty($option_list)){
- showDialog(L('circle_poll_choose_options'));
- }
- $options = '';
- foreach ($option_list as $val){
- $options .= $val['pollop_option'].' ';
- $update = array();
- $update['pollop_id'] = $val['pollop_id'];
- $update['pollop_votes'] = array('exp', 'pollop_votes+1');
- $update['pollop_votername'] = array('exp', '"'.$_SESSION['member_name'].' '.$val['pollop_votername'].'"');
- $model->table('circle_thpolloption')->update($update); //
- }
- // Recorded personal information
- $insert = array();
- $insert['theme_id'] = $this->t_id;
- $insert['member_id'] = $_SESSION['member_id'];
- $insert['member_name'] = $_SESSION['member_name'];
- $insert['pollvo_options'] = $options;
- $insert['pollvo_time'] = time();
- $model->table('circle_thpollvoter')->insert($insert);
- // Update the total number of votes
- $update = array();
- $update['theme_id'] = $this->t_id;
- $update['poll_voters'] = array('exp', 'poll_voters+'.count($option_list));
- $model->table('circle_thpoll')->update($update);
- showDialog(L('circle_poll_success'), 'reload', 'succ');
- }
- }
- /**
- * 选择商品
- */
- public function choose_goodsOp(){
- $model = Model();
- // 三个月内 已购买的商品
- $order_goods = $model->table('order_goods,order')
- ->field('order_goods.goods_id,order_goods.goods_name,order_goods.goods_image,order_goods.goods_price,order.store_id as store_id')
- ->join('inner join')->on('order_goods.order_id=order.order_id')
- ->where(array('order.buyer_id'=>$_SESSION['member_id'], 'order.order_state'=>40, 'finnshed_time'=>array('gt',time()-60*60*24*30*3)))
- ->distinct(true)->select();
- // 收藏的商品
- $favorites_goods = $model->table('goods,favorites')
- ->field('goods.goods_id,goods.goods_name,goods.goods_image,goods.goods_price as goods_price,goods.store_id')
- ->join('inner join')->on('goods.goods_id=favorites.fav_id')
- ->where(array('favorites.fav_type'=>'goods', 'favorites.member_id'=>$_SESSION['member_id']))
- ->distinct(true)->select();
- Tpl::output('order_goods', $order_goods);
- Tpl::output('favorites_goods', $favorites_goods);
- Tpl::showpage('theme.choose_goods', 'null_layout');
- }
- /**
- * According to the product link to add goods
- */
- public function check_linkOp(){
- $url = html_entity_decode($_GET['link']);
- if(empty($url)) {
- echo 'false';exit;
- }
- $model_goods_info = Model('goods_info_by_url');
- $result = $model_goods_info->get_goods_info_by_url($url);
- if($result) {
- if ($result) {
- $result['type'] = ($result['type'] == 'taobao') ? 1 : 0;
- }
- echo json_encode($result);exit;
- }else{
- echo 'false';exit;
- }
- }
- // /**
- // * Get taobao product information
- // *
- // * @param string $link
- // */
- // private function getTaobaoGoodsInfo($link){
- // require(BASE_DATA_PATH.DS.'api'.DS.'taobao'.DS.'index.php');
- // $taobao_api = new taobao_item;
- // $taobao_goods_info = $taobao_api->fetch($link);
- // if(!$taobao_goods_info) return false;
- // $item_img = (array)$taobao_goods_info['item_imgs'];
- // $item_img = (array)$item_img['item_img'][0];
- // $item_img = $item_img['url'];
- // $url_array = explode('.',$item_img);
- // $ext = end($url_array);
- // $item_img = $item_img.'_40x40.'.$ext;
- // $return = array();
- // $return['id'] = 0;
- // $return['name'] = $taobao_goods_info['title'];
- // $return['price'] = $taobao_goods_info['price'];
- // $return['storeid'] = 0;
- // $return['img'] = $item_img;
- // $return['image'] = $item_img;
- // $return['uri'] = $link;
- // $return['type'] = 1;
- // return $return;
- // }
- // /**
- // * Get self product information
- // *
- // * @param string $link
- // */
- // private function getSelfGoodsInfo($link){
- // $array = parse_url($link);
- // if(isset($array['query'])){
- // // Not open the pseudo static
- // parse_str($array['query'],$arr);
- // $id = $arr['goods_id'];
- // }else{
- // // Open the pseudo static
- // $id = preg_replace('/\/item-(\d+)\.html/i', '$1', $array['path']);
- // }
- // if(!is_numeric($id)) return false;
- // $goods_info = Model()->table('goods')->field('goods_id,goods_name,goods_store_price,goods_image,store_id')->find($id);
- // if(empty($goods_info)) return false;
- // $return = array();
- // $return['id'] = $goods_info['goods_id'];
- // $return['name'] = $goods_info['goods_name'];
- // $return['price'] = $goods_info['goods_store_price'];
- // $return['storeid'] = $goods_info['store_id'];
- // $return['img'] = thumb($goods_info, 60);
- // $return['image'] = $goods_info['goods_image'];
- // $return['uri'] = $link;
- // $return['type'] = 0;
- // return $return;
- // }
- /**
- * Get link domain
- *
- * @param string $link
- */
- private function getDomain($link){
- $url = parse_url($link);
- if(!isset($url['host'])) return false;
- $domain = explode('.', $url['host'], 2);
- return $domain[1];
- }
- /**
- * 上传图片
- */
- public function choose_imageOp(){
- $model = Model();
- $where = array();
- if(intval($_GET['class_id']) > 0){
- $where['ac_id'] = intval($_GET['class_id']);
- }
- $where['member_id'] = $_SESSION['member_id'];
- $pic_list = $model->table('sns_albumpic')->where($where)->page(6)->select();
- Tpl::output('show_page', $model->showpage('2'));
- Tpl::output('pic_list', $pic_list);
- $class_list = $model->table('sns_albumclass')->where(array('member_id'=>$_SESSION['member_id']))->select();
- Tpl::output('class_list', $class_list);
- Tpl::showpage('theme.choose_image', 'null_layout');
- }
- /**
- * 附件批量上传 话题
- */
- public function image_uploadOp(){
- $data['msg'] = 'error';
- $data['origin_file_name'] = $_FILES['test_file']['name'];
- // 验证已上传附件数量 最大10个
- $where = array();
- $where['member_id'] = $_SESSION['member_id'];
- if($_GET['type'] == 'reply'){
- $where['affix_type']= 2;
- $where['reply_id'] = 0;
- }else{
- $where['affix_type']= 1;
- $where['theme_id'] = 0;
- }
- $count = Model()->table('circle_affix')->where($where)->count();
- if($count < 10){
- $partpath = themePartPath($_SESSION['member_id']);
- $upload = new UploadFile();
- $upload->set('default_dir', ATTACH_CIRCLE.'/theme/'.$partpath);
- $upload->set('thumb_width', 1024);
- $upload->set('thumb_height', 160);
- $upload->set('thumb_ext', '_160x160');
- $result = $upload->upfile('test_file'); // 暂时的名字
- if ($result){
- $insert = array();
- $insert['affix_filename'] = $partpath.'/'.$upload->file_name;
- $insert['affix_filethumb'] = $partpath.'/'.$upload->thumb_image;
- $insert['affix_filesize'] = intval($_FILES['test_file']['size']);
- $insert['affix_addtime'] = time();
- $insert['affix_type'] = ($_GET['type'] == 'reply')?2:1;
- $insert['member_id'] = $_SESSION['member_id'];
- $insert['theme_id'] = $this->t_id;
- $insert['reply_id'] = 0;
- $insert['circle_id'] = $this->c_id;
- $id = Model()->table('circle_affix')->insert($insert);
- if($id){
- $data['msg'] = 'success';
- $data['file_id'] = $id;
- $data['file_name'] = $upload->file_name;
- $data['file_url'] = themeImageUrl($partpath.'/'.$upload->thumb_image);
- $data['file_insert']= themeImageUrl($partpath.'/'.$upload->file_name);
- }
- }
- }
- echo json_encode($data);exit;
- }
- /**
- * 附件删除
- */
- public function delimgOp(){
- $id = intval($_GET['id']);
- if($id > 0){
- $affix_info = Model()->table('circle_affix')->where(array('member_id'=>$_SESSION['member_id'], 'affix_id'=>$id))->find();
- if(!empty($affix_info)){
- @unlink(themeImagePath($affix_info['affix_filename']));
- @unlink(themeImagePath($affix_info['affix_filethumb']));
- Model()->table('circle_affix')->delete($id);
- echo true;
- }
- }
- }
- /**
- * 获得未使用附件
- */
- public function unused_imgOp(){
- $affix_list = Model()->table('circle_affix')->field('affix_id,affix_filename,affix_filethumb')->where(array('member_id'=>$_SESSION['member_id'], 'affix_type'=>1, 'theme_id'=>0))->select();
- if(!empty($affix_list)){
- $affix_array = array();
- foreach($affix_list as $key=>$val){
- $affix_array[$key]['file_id'] = $val['affix_id'];
- $affix_array[$key]['file_url'] = themeImageUrl($val['affix_filethumb']);
- $affix_array[$key]['file_insert'] = themeImageUrl($val['affix_filename']);
- }
- }
- echo json_encode($affix_array);
- }
- /**
- * 话题详细页
- */
- public function theme_detailOp(){
- // 圈子信息
- $this->circleInfo();
- // 圈主和管理信息
- $this->manageList();
- // 会员信息
- $this->memberInfo();
- // sidebar相关
- $this->sidebar();
- // 话题信息
- $this->themeInfo();
- // Verify the read permissions
- $this->readPermissions($this->cm_info);
- if($this->m_readperm < $this->theme_info['theme_readperm']){
- showMessage(L('circle_Insufficient_permissions'), CIRCLE_SITE_URL, '', 'error');
- }
- $model = Model();
- // 话题被浏览数增加
- $model->table('circle_theme')->update(array('theme_id'=>$this->t_id, 'theme_browsecount'=>array('exp', 'theme_browsecount+1')));
- // 回复列表
- $where = array();
- $where['theme_id'] = $this->t_id;
- if($_GET['only_id'] != ''){
- $where['member_id'] = intval($_GET['only_id']);
- }
- $reply_info = $model->table('circle_threply')->where($where)->page(15)->order('reply_id asc')->select();
- Tpl::output('reply_info', $reply_info);
- Tpl::output('show_page', $model->showpage(2));
- $replyid_array = array();
- $memberid_array = array();
- if(!empty($reply_info)){
- foreach($reply_info as $val){
- $replyid_array[] = $val['reply_id'];
- $memberid_array[] = $val['member_id'];
- }
- }
- $replyid_array[] = 0;
- ksort($replyid_array);
- $memberid_array[] = $this->theme_info['member_id'];
- $memberid_array = array_unique($memberid_array);
- ksort($memberid_array);
- $where = array();
- $where['theme_id'] = $this->t_id;
- $where['reply_id'] = array('in', $replyid_array);
- // goods
- $goods_array = $model->table('circle_thg')->where($where)->select();
- $goods_array = tidyThemeGoods($goods_array, 'reply_id', 2);
- Tpl::output('goods_list', $goods_array[0]); unset($goods_array[0]);
- Tpl::output('reply_goods', $goods_array);
- // affix
- $affix_array = $model->table('circle_affix')->where($where)->select();
- if(!empty($affix_array)){
- $affix_list = array();
- $reply_affix = array();
- foreach($affix_array as $val){
- if($val['affix_type'] == 1){
- $affix_list[] = $val;
- }else{
- $reply_affix[$val['reply_id']][] = $val;
- }
- }
- Tpl::output('affix_list', $affix_list);
- Tpl::output('reply_affix', $reply_affix);
- }
- // member
- $member_list = $model->table('circle_member')->field('member_id,cm_level,cm_levelname')->where(array('circle_id'=>$this->c_id, 'member_id'=>array('in', $memberid_array)))->select();
- $member_list = array_under_reset($member_list, 'member_id');
- Tpl::output('member_list', $member_list);
- // 是否赞过话题
- $theme_nolike = 1;
- if (isset($_SESSION['member_id'])) {
- // 是否赞过话题
- $like_info = $model->table('circle_like')->where(array('theme_id'=>$this->t_id, 'member_id'=>$_SESSION['member_id']))->find();
- if(empty($like_info)){
- $theme_nolike = 1;
- }else{
- $theme_nolike = 0;
- }
- }
- Tpl::output('theme_onlike', $theme_nolike);
- $this->circleSEO($this->theme_info['theme_name']);
- // Special theme
- if($this->theme_info['theme_special'] == 1){
- $poll_info = $model->table('circle_thpoll')->find($this->t_id);
- Tpl::output('poll_info', $poll_info);
- $option_list = $model->table('circle_thpolloption')->where(array('theme_id'=>$this->t_id))->order('pollop_sort asc')->select();
- Tpl::output('option_list', $option_list);
- // Verify the vote ended or not
- if($poll_info['poll_endtime'] == 0 || $poll_info['poll_endtime'] > time()){
- Tpl::output('vote_end', false);
- // Whether members have had voted
- $voter_info = $model->table('circle_thpollvoter')->where(array('theme_id'=>$this->t_id, 'member_id'=>$_SESSION['member_id']))->find();
- if(!empty($voter_info)){
- Tpl::output('partake', true);
- }else{
- Tpl::output('partake', false);
- }
- }else {
- Tpl::output('vote_end', true);
- }
- }
- // breadcrumb navigation
- $this->breadcrumd();
- Tpl::showpage('theme.detail');
- }
- /**
- * 发布话题
- */
- public function new_themeOp(){
- // 圈子信息
- $this->circleInfo();
- // 圈主和管理信息
- $this->manageList();
- // 会员信息
- $this->memberInfo();
- // 不是圈子成员不能发帖
- if(!in_array($this->identity, array(1,2,3))){
- showDialog(L('circle_no_join_ban_release'));
- }
- // 话题分类
- $where = array();
- $where['circle_id'] = $this->c_id;
- $where['thclass_status']= 1;
- $thclass_list = Model()->table('circle_thclass')->where($where)->select();
- $thclass_list = array_under_reset($thclass_list, 'thclass_id');
- Tpl::output('thclass_list', $thclass_list);
- // Read Permission
- $readperm = $this->readPermissions($this->cm_info);
- Tpl::output('readperm', $readperm);
- $this->circleSEO(L('circle_release_theme'));
- if($_GET['sp'] == 1){
- // breadcrumb navigation
- $this->breadcrumd(L('circle_new_poll'));
- Tpl::showpage('theme.new_poll');
- }else{
- // breadcrumb navigation
- $this->breadcrumd(L('circle_new_theme'));
- Tpl::showpage('theme.new_theme');
- }
- }
- /**
- * 编辑话题
- */
- public function edit_themeOp(){
- $model = Model();
- // 验证话题
- $this->checkThemeSelf();
- if(chksubmit()){
- /**
- * 验证
- */
- $obj_validate = new Validator();
- $validate_arr[] = array("input"=>$_POST["name"], "require"=>"true","message"=>Language::get('nc_name_not_null'));
- $validate_arr[] = array("input"=>$_POST["name"], "validator"=>'Length',"min"=>4,"max"=>30,"message"=>Language::get('nc_name_min_max_length'));
- $validate_arr[] = array("input"=>$_POST["themecontent"], "require"=>"true","message"=>Language::get('nc_content_not_null'));
- if(intval(C('circle_contentleast')) > 0) $validate_arr[] = array("input"=>$_POST["themecontent"],"validator"=>'Length',"min"=>intval(C('circle_contentleast')),"message"=>Language::get('circle_contentleast'));
- $obj_validate -> validateparam = $validate_arr;
- $error = $obj_validate->validate();
- if ($error != ''){
- showDialog($error,'','error');
- }
- // 主题分类
- $thclass_id = intval($_POST['thtype']);
- $thclass_name = '';
- if($thclass_id > 0){
- $thclass_info = $model->table('circle_thclass')->find($thclass_id);
- $thclass_name = $thclass_info['thclass_name'];
- }
- $model = Model();
- $update = array();
- $update['theme_id'] = $this->t_id;
- $update['theme_name'] = circleCenterCensor($_POST['name']);
- $update['theme_content'] = circleCenterCensor($_POST['themecontent']);
- $update['thclass_id'] = $thclass_id;
- $update['thclass_name'] = $thclass_name;
- $update['theme_editname'] = $_SESSION['member_name'];
- $update['theme_edittime'] = time();
- $update['theme_readperm'] = intval($_POST['readperm']);
- $rs = $model->table('circle_theme')->update($update);
- if($rs){
- $has_goods = 0; // 存在商品标记
- $has_affix = 0;// 存在附件标记
- // 删除原有商品
- $goods_list = Model()->table('circle_thg')->where(array('theme_id'=>$this->t_id, 'reply_id'=>0))->delete();
- // 插入话题商品
- if(!empty($_POST['goods'])){
- $goods_insert = array();
- foreach ($_POST['goods'] as $key=>$val){
- $p = array();
- $p['theme_id'] = $this->t_id;
- $p['reply_id'] = 0;
- $p['circle_id'] = $this->c_id;
- $p['goods_id'] = $val['id'];
- $p['goods_name'] = $val['name'];
- $p['goods_price'] = $val['price'];
- $p['goods_image'] = $val['image'];
- $p['store_id'] = $val['storeid'];
- $p['thg_type'] = $val['type'];
- $p['thg_url'] = ($val['type'] == 1)?$val['uri']:'';
- $goods_insert[] = $p;
- }
- $rs = $model->table('circle_thg')->insertAll($goods_insert);
- $has_goods = 1;
- }
- // 更新话题附件
- $model->table('circle_affix')->where(array('affix_type'=>1, 'member_id'=>$_SESSION['member_id'], 'theme_id'=>0))->update(array('theme_id'=>$this->t_id, 'circle_id'=>$this->c_id));
- // 更新话题信息
- $affixe_count = $model->table('circle_affix')->where(array('affix_type'=>1, 'member_id'=>$_SESSION['member_id'], 'theme_id'=>$this->t_id))->count();
- if($affixe_count > 0){
- $has_affix = 1;
- }
- if($has_goods || $has_affix){
- $update = array();
- $update['theme_id'] = $this->t_id;
- $update['has_goods'] = $has_goods;
- $update['has_affix'] = $has_affix;
- $model->table('circle_theme')->update($update);
- }
- // Special theme
- if($_GET['sp'] == 1){
- // Update the vote
- $update = array();
- $update['theme_id'] = $this->t_id;
- $update['poll_multiple'] = intval($_POST['multiple']);
- $update['poll_startime'] = time();
- $update['poll_endtime'] = intval($_POST['days'])!=0?time()+intval($_POST['days'])*60*60*12:0;
- $update['poll_days'] = intval($_POST['days']);
- $model->table('circle_thpoll')->update($update);
- // Update the voting options
- if(!empty($_POST['polloption'])){
- $insert_array = array();
- foreach ($_POST['polloption'] as $key=>$val){
- $option_info = $model->table('circle_thpolloption')->where(array('pollop_id'=>$key, 'theme_id'=>$this->t_id))->find();
- if(!empty($option_info)){
- $update = array();
- $update['pollop_id'] = $key;
- $update['pollop_option']= $val;
- $update['pollop_sort'] = $_POST['pollsort'][$key];
- $model->table('circle_thpolloption')->update($update);
- }else{
- if ($val == '') continue;
- $i = array();
- $i['theme_id'] = $this->t_id;
- $i['pollop_option'] = $val;
- $i['pollop_sort'] = $_POST['pollsort'][$key];
- $insert_array[] = $i;
- }
- }
- if(!empty($insert_array)) $model->table('circle_thpolloption')->insertAll($insert_array);
- }
- }
- showDialog(L('nc_deit_op_succ'), CIRCLE_SITE_URL.'/index.php?act=theme&op=theme_detail&c_id='.$this->c_id.'&t_id='.$this->t_id, 'succ');
- }else{
- showDialog(L('nc_deit_op_fail'));
- }
- }
- // 圈子信息
- $this->circleInfo();
- // 圈主和管理信息
- $this->manageList();
- // 会员信息
- $this->memberInfo();
- // 话题商品
- $goods_list = $model->table('circle_thg')->where(array('theme_id'=>$this->t_id, 'reply_id'=>0))->select();
- $goods_list = tidyThemeGoods($goods_list, 'themegoods_id');
- Tpl::output('goods_list', $goods_list);
- // 话题附件
- $affix_list = $model->table('circle_affix')->where(array('affix_type'=>1, 'theme_id'=>$this->t_id))->select();
- Tpl::output('affix_list', $affix_list);
- // 话题分类
- $where = array();
- $where['circle_id'] = $this->c_id;
- $where['thclass_status']= 1;
- $thclass_list = $model->table('circle_thclass')->where($where)->select();
- $thclass_list = array_under_reset($thclass_list, 'thclass_id');
- Tpl::output('thclass_list', $thclass_list);
- // Members of the information
- $this->memberInfo();
- // Read Permission
- $readperm = $this->readPermissions($this->cm_info);
- Tpl::output('readperm', $readperm);
- $this->circleSEO(L('nc_edit_theme'));
- // breadcrumb navigation
- $this->breadcrumd(L('nc_edit_theme'));
- if($this->theme_info['theme_special'] == 1){
- $poll_info = $model->table('circle_thpoll')->find($this->t_id);
- Tpl::output('poll_info', $poll_info);
- $option_list = $model->table('circle_thpolloption')->where(array('theme_id'=>$this->t_id))->order('pollop_sort asc')->select();
- Tpl::output('option_list', $option_list);
- Tpl::showpage('theme.edit_themepoll');
- }else{
- Tpl::showpage('theme.edit_theme');
- }
- }
- /**
- * 赞
- */
- public function ajax_likeyesOp(){
- // 话题信息
- $this->themeInfo();
- $like_info = Model()->table('circle_like')->where(array('theme_id'=>$this->t_id, 'member_id'=>$_SESSION['member_id']))->find();
- if(empty($like_info)){
- // 插入话题赞表
- Model()->table('circle_like')->insert(array('theme_id'=>$this->t_id, 'member_id'=>$_SESSION['member_id'], 'circle_id'=>$this->c_id));
- // 更新赞数量
- Model()->table('circle_theme')->update(array('theme_id'=>$this->t_id, 'theme_likecount'=>array('exp', 'theme_likecount+1')));
- echo 'true';
- }else{
- echo 'false';
- }
- exit;
- }
- /**
- * 取消赞
- */
- public function ajax_likenoOp(){
- // 话题信息
- $this->themeInfo();
- $like_info = Model()->table('circle_like')->where(array('theme_id'=>$this->t_id, 'member_id'=>$_SESSION['member_id']))->find();
- if(empty($like_info)){
- echo 'false';
- }else{
- // 删除话题赞表信息
- Model()->table('circle_like')->where(array('theme_id'=>$this->t_id, 'member_id'=>$_SESSION['member_id']))->delete();
- // 更新赞数量
- Model()->table('circle_theme')->update(array('theme_id'=>$this->t_id, 'theme_likecount'=>array('exp', 'theme_likecount-1')));
- echo 'true';
- }
- exit;
- }
- /**
- * 高级回复
- */
- public function replyOp(){
- // 圈子信息
- $this->circleInfo();
- // 圈主和管理信息
- $this->manageList();
- // 会员信息
- $this->memberInfo();
- // 不是圈子成员不能发帖
- if(!in_array($this->identity, array(1,2,3))){
- showDialog(L('circle_no_join_ban_reply'));
- }
- // 话题信息
- $this->themeInfo();
- if($_GET['answer_id'] != ''){
- $reply_info = Model()->table('circle_threply')->where(array('theme_id'=>$this->t_id, 'reply_id'=>intval($_GET['answer_id'])))->find();
- if(!empty($reply_info)) Tpl::output('answer', $reply_info);
- }
- // 附件信息
- $where = array();
- $where['member_id'] = $_SESSION['member_id'];
- $where['affix_type']= 2;
- $where['reply_id'] = 0;
- $affix_list = Model()->table('circle_affix')->where($where)->select();
- Tpl::output('affix_list', $affix_list);
- $this->circleSEO(L('nc_reply_theme'));
- // breadcrumb navigation
- $this->breadcrumd(L('nc_advanced_reply'));
- Tpl::showpage('theme.reply');
- }
- /**
- * 编辑回复
- */
- public function edit_replyOp(){
- // 验证回复信息
- $this->checkReplySelf();
- if(chksubmit()){
- /**
- * 验证
- */
- $obj_validate = new Validator();
- $obj_validate->validateparam = array(
- array("input"=>$_POST["replycontent"], "require"=>"true", "message"=>L('circle_reply_not_null')),
- );
- $error = $obj_validate->validate();
- if($error != ''){
- showDialog($error);
- }else{
- $model = Model();
- $update = array();
- $update['theme_id'] = $this->t_id;
- $update['reply_id'] = $this->r_id;
- $update['member_id'] = $_SESSION['member_id'];
- $update['member_name'] = $_SESSION['member_name'];
- $update['reply_content']= circleCenterCensor($_POST['replycontent']);
- $update['reply_addtime']= time();
- $update['is_closed'] = 0;
- $rs = $model->table('circle_threply')->where(array('theme_id'=>$this->t_id, 'reply_id'=>$this->r_id))->update($update);
- if($rs){
- // 删除原有商品
- $goods_list = Model()->table('circle_thg')->where(array('theme_id'=>$this->t_id, 'reply_id'=>$this->r_id))->delete();
- // 插入话题商品
- if(!empty($_POST['goods'])){
- $goods_insert = array();
- foreach ($_POST['goods'] as $key=>$val){
- $p = array();
- $p['theme_id'] = $this->t_id;
- $p['reply_id'] = $this->r_id;
- $p['circle_id'] = $this->c_id;
- $p['goods_id'] = $val['id'];
- $p['goods_name'] = $val['name'];
- $p['goods_price'] = $val['price'];
- $p['goods_image'] = $val['image'];
- $p['store_id'] = $val['storeid'];
- $p['thg_type'] = $val['type'];
- $p['thg_url'] = ($val['type'] == 1)?$val['uri']:'';
- $goods_insert[] = $p;
- }
- $rs = $model->table('circle_thg')->insertAll($goods_insert);
- }
- // 更新话题附件
- $model->table('circle_affix')->where(array('affix_type'=>2, 'member_id'=>$_SESSION['member_id'], 'reply_id'=>0))->update(array('theme_id'=>$this->t_id, 'reply_id'=>$this->r_id, 'circle_id'=>$this->c_id));
- showDialog(L('nc_common_op_succ'), 'index.php?act=theme&op=theme_detail&c_id='.$this->c_id.'&t_id='.$this->t_id, 'succ');
- }
- }
- }
- // 圈子信息
- $this->circleInfo();
- // 圈主和管理信息
- $this->manageList();
- // 会员信息
- $this->memberInfo();
- // 话题信息
- $this->themeInfo();
- // 附件信息
- $where = array();
- $where['member_id'] = $_SESSION['member_id'];
- $where['affix_type']= 2;
- $where['reply_id'] = array('in', array(0,$this->r_id));
- $where['theme_id'] = array('in', array(0,$this->t_id));
- $affix_list = Model()->table('circle_affix')->where($where)->select();
- Tpl::output('affix_list', $affix_list);
- // 商品信息
- $where = array();
- $where['theme_id'] = $this->t_id;
- $where['reply_id'] = $this->r_id;
- $goods_list = Model()->table('circle_thg')->where($where)->select();
- $goods_list = tidyThemeGoods($goods_list, 'themegoods_id');
- Tpl::output('goods_list', $goods_list);
- $this->circleSEO(L('nc_edit_theme'));
- // breadcrumb navigation
- $this->breadcrumd(L('nc_edit_reply'));
- Tpl::showpage('theme.edit_reply');
- }
- /**
- * 话题回复保存
- */
- public function save_replyOp(){
- // Reply function does close,throw error.
- if(!intval(C('circle_istalk'))){
- showDialog(L('circle_has_been_closed_reply'));
- }
- // checked cookie of SEC
- if(cookie(circle_intervaltime)){
- showDialog(L('circle_operation_too_frequent'));
- }
- // 会员信息
- $this->memberInfo();
- // 不是圈子成员不能发帖
- if(!in_array($this->identity, array(1,2,3))){
- showDialog(L('circle_no_join_ban_reply'));
- }
- // 话题信息
- $this->themeInfo();
- if(chksubmit()){
- /**
- * 验证
- */
- $obj_validate = new Validator();
- $obj_validate->validateparam = array(
- array("input"=>$_POST["replycontent"], "require"=>"true", "message"=>L('circle_reply_not_null')),
- );
- $error = $obj_validate->validate();
- if($error != ''){
- showDialog($error);
- }else{
- $model = Model();
- $insert = array();
- $insert['theme_id'] = $this->t_id;
- $insert['circle_id'] = $this->c_id;
- $insert['member_id'] = $_SESSION['member_id'];
- $insert['member_name'] = $_SESSION['member_name'];
- $insert['reply_content']= circleCenterCensor($_POST['replycontent']);
- $insert['reply_addtime']= time();
- $insert['is_closed'] = 0;
- // 回复楼层验证
- if($_POST['answer_id'] != ''){
- $reply_info = Model()->table('circle_threply')->where(array('theme_id'=>$this->t_id, 'reply_id'=>intval($_POST['answer_id'])))->find();
- if(!empty($reply_info)) {
- $insert['reply_replyid'] = $reply_info['reply_id'];
- $insert['reply_replyname'] = $reply_info['member_name'];
- }
- }
- $reply_id = $model->table('circle_threply')->insert($insert);
- if($reply_id){
- if($_GET['type'] == 'adv'){
- // 插入话题商品
- if(!empty($_POST['goods'])){
- $goods_insert = array();
- foreach ($_POST['goods'] as $key=>$val){
- $p = array();
- $p['theme_id'] = $this->t_id;
- $p['reply_id'] = $reply_id;
- $p['circle_id'] = $this->c_id;
- $p['goods_id'] = $val['id'];
- $p['goods_name'] = $val['name'];
- $p['goods_price'] = $val['price'];
- $p['goods_image'] = $val['image'];
- $p['store_id'] = $val['storeid'];
- $p['thg_type'] = $val['type'];
- $p['thg_url'] = ($val['type'] == 1)?$val['uri']:'';
- $goods_insert[] = $p;
- }
- $rs = $model->table('circle_thg')->insertAll($goods_insert);
- }
- // 更新话题附件
- $model->table('circle_affix')->where(array('affix_type'=>2, 'member_id'=>$_SESSION['member_id'], 'reply_id'=>0))->update(array('theme_id'=>$this->t_id, 'reply_id'=>$reply_id, 'circle_id'=>$this->c_id));
- }
- // 话题被回复数增加 最后发言人发言时间
- $update = array();
- $update['theme_id'] = $this->t_id;
- $update['theme_commentcount'] = array('exp', 'theme_commentcount+1');
- $update['lastspeak_id'] = $_SESSION['member_id'];
- $update['lastspeak_name'] = $_SESSION['member_name'];
- $update['lastspeak_time'] = time();
- $model->table('circle_theme')->update($update);
- // 成员回复数增加 最后回复时间
- $model->table('circle_member')->where(array('member_id'=>$_SESSION['member_id'], 'circle_id'=>$this->c_id))->update(array('cm_comcount'=>array('exp', 'cm_comcount+1'), 'cm_lastspeaktime'=>time()));
- // set cookie of SEC
- if(intval(C('circle_intervaltime')) > 0){
- setNcCookie('circle_intervaltime', true, intval(C('circle_intervaltime')));
- }
- if($this->theme_info['member_id'] != $_SESSION['member_id']){
- // Experience for replyer
- $param = array();
- $param['member_id'] = $_SESSION['member_id'];
- $param['member_name'] = $_SESSION['member_name'];
- $param['circle_id'] = $this->c_id;
- $param['theme_id'] = $this->t_id;
- $param['type'] = 'reply';
- $param['itemid'] = $this->t_id.','.$reply_id;
- Model('circle_exp')->saveExp($param);
- // Experience for releaser
- $param = array();
- $param['member_id'] = $this->theme_info['member_id'];
- $param['member_name'] = $this->theme_info['member_name'];
- $param['theme_id'] = $this->t_id;
- $param['circle_id'] = $this->c_id;
- $param['type'] = 'replied';
- $param['itemid'] = $this->t_id;
- Model('circle_exp')->saveExp($param);
- }
- if($_GET['type'] == 'quick'){
- showDialog(L('nc_common_op_succ'), '', 'succ', '$(\'li[nctype="li'.$this->t_id.'"]\').find(\'.quick-reply-2\').removeClass(\'t\').html(\'\').end().find(\'.quick-reply-list-2\').remove().end().end().find(\'a[nctype="reply"]\').click().click();');
- }else{
- showDialog(L('nc_common_op_succ'), 'index.php?act=theme&op=theme_detail&c_id='.$this->c_id.'&t_id='.$this->t_id, 'succ');
- }
- }
- }
- }
- }
- /**
- * 删除回复
- */
- public function del_replyOp(){
- // 验证回复
- $this->checkReplySelf();
- $model = Model();
- // 删除商品
- $goods_list = $model->table('circle_thg')->where(array('theme_id'=>$this->t_id, 'reply_id'=>$this->r_id))->delete();
- // 删除附件
- $where = array();
- $where['affix_type']= 2;
- $where['member_id'] = $_SESSION['member_id'];
- $where['theme_id'] = $this->t_id;
- $where['reply_id'] = $this->r_id;
- $affix_list = $model->table('circle_affix')->where($where)->select();
- if($affix_list){
- foreach ($affix_list as $val){
- @unlink(themeImagePath($val['affix_filename']));
- @unlink(themeImagePath($val['affix_filethumb']));
- }
- $model->table('circle_affix')->where($where)->delete();
- }
- // The recycle bin add delete records
- $param = array();
- $param['theme_id'] = $this->t_id;
- $param['reply_id'] = $this->r_id;
- $param['op_id'] = $_SESSION['member_id'];
- $param['op_name'] = $_SESSION['member_name'];
- $param['type'] = 'reply';
- Model('circle_recycle')->saveRecycle($param);
- // 删除回复
- $model->table('circle_threply')->where(array('theme_id'=>$this->t_id, 'reply_id'=>$this->r_id, 'member_id'=>$_SESSION['member_id']))->delete();
- // Experience
- if(intval($this->reply_info['reply_exp']) > 0){
- $param = array();
- $param['member_id'] = $_SESSION['member_id'];
- $param['member_name'] = $_SESSION['member_name'];
- $param['circle_id'] = $this->c_id;
- $param['itemid'] = $this->t_id.','.$this->r_id;
- $param['type'] = 'delReplied';
- $param['exp'] = $this->reply_info['reply_exp'];
- Model('circle_exp')->saveExp($param);
- }
- showDialog(L('nc_common_op_succ'), 'reload', 'succ');
- }
- }
|