* Date: 2018-4-3 */ namespace app\user\controller; use think\Db; use think\Config; use think\Verify; use think\Page; use think\Request; /** * 会员投稿发布 */ class UsersRelease extends Base { public function _initialize() { parent::_initialize(); $this->archives_db = Db::name('archives'); $this->users_menu_db = Db::name('users_menu'); $this->users_level_db = Db::name('users_level'); $this->channeltype_db = Db::name('channeltype'); // 会员投稿功能已关闭 if (empty($this->usersConfig['users_open_release'])) { $this->error('会员投稿功能已关闭', url('user/Users/index')); } // 菜单名称 $this->MenuTitle = $this->users_menu_db->where([ 'mca' => 'user/UsersRelease/release_centre', 'lang' => $this->home_lang, ])->getField('title'); $this->assign('MenuTitle', $this->MenuTitle); // 获取传入的模型ID $typeid = input('param.typeid/d', 0); $this->channelID = input('param.channel/d', 0); if (empty($this->channelID) && !empty($typeid)) $this->channelID = Db::name('arctype')->where(['id'=>$typeid])->getField('current_channel'); $this->channelData = $this->channeltype_db->where('id', $this->channelID)->field('id, table, is_release, is_litpic_users_release')->find(); if (!empty($this->channelData)) { $this->assign('is_release', $this->channelData['is_release']); $this->assign('is_litpic_users_release', $this->channelData['is_litpic_users_release']); } // 当前访问的方法名 $Method = request()->action(); $this->assign('Method', $Method); $list = input('param.list/d', 0); if ('release_centre' == $Method && !empty($this->channelData['is_release']) && empty($list)) $this->redirect('user/UsersRelease/article_add'); // 会员投稿配置 $this->assign('UsersConfig', $this->usersConfig); } // 会员投稿--文章首页 public function release_centre() { $result = []; $condition = [ 'a.users_id' => $this->users_id, 'a.lang' => $this->home_lang, 'a.is_del' => 0, ]; $typeid = input('typeid/d', 0); // 栏目ID,暂无用,预留 if (!empty($typeid)) $condition['a.typeid'] = $typeid; // 文章标题搜索 $keywords = input('keywords/s', ''); $this->assign('keywords', $keywords); if (!empty($keywords)) $condition['title'] = ['LIKE', "%{$keywords}%"]; // 全部、未审核、已审核筛选 $audited = input('audited/d', 0); $this->assign('audited', $audited); if (1 === intval($audited)) { $condition['arcrank'] = ['EQ', -1]; } else if (2 === intval($audited)) { $condition['arcrank'] = ['GT', -1]; } $SqlQuery = $this->archives_db->alias('a')->where($condition)->fetchSql()->count('aid'); $count = Db::name('sql_cache_table')->where(['sql_md5'=>md5($SqlQuery)])->getField('sql_result'); if (!empty($count) && 0 > $count) { Db::name('sql_cache_table')->where(['sql_md5'=>md5($SqlQuery)])->delete(); unset($count); } if (!isset($count)) { $count = $this->archives_db->alias('a')->where($condition)->count('aid'); // 添加查询执行语句到mysql缓存表 $SqlCacheTable = [ 'sql_name' => '|users_release|' . $this->users_id . '|all|', 'sql_result' => $count, 'sql_md5' => md5($SqlQuery), 'sql_query' => $SqlQuery, 'add_time' => getTime(), 'update_time' => getTime() ]; if (!empty($typeid)) $SqlCacheTable['sql_name'] = '|users_release|' . $this->users_id . '|' . $typeid . '|'; Db::name('sql_cache_table')->insertGetId($SqlCacheTable); } $Page = new Page($count, config('paginate.list_rows')); $result['data'] = []; if (!empty($count)) { $limit = $count > config('paginate.list_rows') ? $Page->firstRow.','.$Page->listRows : $count; // 数据查询 $result['data'] = $this->archives_db ->field('t.*, a.*') ->alias('a') ->join('__ARCTYPE__ t', 'a.typeid = t.id', 'LEFT') ->where($condition) ->order('a.aid desc') ->limit($limit) ->select(); // 如果当前分页没有数据则去除分页参数重载 if (empty($result['data']) && input('param.p/d', 0)) $this->redirect('user/UsersRelease/release_centre', ['list'=>1]); $seo_pseudo = tpCache('seo.seo_pseudo'); foreach ($result['data'] as $key => $value) { $value['arcurl'] = get_arcurl($value, false); $value['typeurl'] = get_typeurl($value, false); $value['editurl'] = url('user/UsersRelease/article_edit', array('aid'=>$value['aid'])); $value['litpic'] = get_default_pic($value['litpic']); // 支持子目录 $result['data'][$key] = $value; } } $result['delurl'] = url('user/UsersRelease/article_del'); $eyou = array( 'field' => $result, ); $this->assign('eyou', $eyou); $show = $Page->show(); $this->assign('page', $show); $this->assign('pager', $Page); // 会员投稿发布的文章状态 $home_article_arcrank = Config::get('global.home_article_arcrank'); $this->assign('home_article_arcrank', $home_article_arcrank); // 查询会员投稿数据 $where = [ 'is_del' => 0, 'lang' => $this->home_lang, 'users_id' => intval($this->users_id), ]; $all = $isAudited = $notAudited = 0; $archives = $this->archives_db->field('aid, arcrank')->where($where)->select(); $all = !empty($archives) ? count($archives) : 0; foreach ($archives as $key => $value) { if (-1 === intval($value['arcrank'])) { $notAudited++; } else { $isAudited++; } } $this->assign('all', $all); $this->assign('isAudited', $isAudited); $this->assign('notAudited', $notAudited); return $this->fetch('users/release_centre'); } public function release_select() { $typeid = 0; $ids = [1, 3, 4, 5]; $where = [ 'is_release' => 1, 'lang' => $this->home_lang, 'current_channel' => ['IN', $ids] ]; $release_typeids = Db::name('arctype')->where($where)->column('id'); // 生成栏目选择下拉列表 $onchange = "onchange='releaseJump(this);' data-url='" . url('user/UsersRelease/article_add') . "' "; $arctype_html = allow_release_arctype($typeid, $ids, true, $release_typeids, true); $arctype_html = str_ireplace('data-current_channel=', 'data-channel=', $arctype_html); $arctype_html = ""; $this->assign('arctype_html', $arctype_html); return $this->fetch('users/release_select'); } // 会员投稿--文章添加 public function article_add() { if (IS_AJAX_POST) { $post = input('post.'); // 文档标题处理 $post['title'] = !empty($post['title']) ? handleEyouFilterStr($post['title']) : ''; // 文档tags处理 if (!empty($post['tags'])) $post['tags'] = str_replace(",", ',', $post['tags']); // 会员投稿次数开启,查询会员投稿次数是否超过级别设置次数 if (!empty($this->usersConfig['is_open_posts_count'])) { $where = [ 'level_id' => $this->users['level'], 'posts_count' => ['<=', $this->GetOneDayReleaseCount()], ]; $result = $this->users_level_db->where($where)->count(); if (!empty($result)) $this->error('投稿次数超过会员级别限制,请先升级!'); } // 判断POST参数:文章标题是否为空、所属栏目是否为空、是否重复标题、是否重复提交 $this->PostParameCheck($post); // POST参数处理后返回 $post = $this->PostParameDealWith($post); if (!empty($post['arc_level_id'])){ $post['restric_type'] = 2; } // 拼装会员ID及用户名 $post['users_id'] = $this->users['users_id']; $post['author'] = empty($this->users['nickname']) ? $this->users['username'] : $this->users['nickname']; $newData = array( 'typeid' => empty($post['typeid']) ? 0 : $post['typeid'], 'origin' => empty($post['origin']) ? '网络' : $post['origin'], 'lang' => $this->home_lang, 'sort_order' => 100, 'add_time' => getTime(), 'update_time' => getTime(), ); $data = array_merge($post, $newData); $aid = $this->archives_db->insertGetId($data); if (!empty($aid)) { $_POST['aid'] = $aid; model('UsersRelease')->afterSave($aid, $data, 'add', $this->channelData['table']); // 添加查询执行语句到mysql缓存表 model('SqlCacheTable')->InsertSqlCacheTable(); // 发送站内信给后台 SendNotifyMessage($data, 20, 1, 0); // 邮箱发送 $returnData['email'] = GetEamilSendData(tpCache('smtp'), $this->users, $data, 3); // 手机发送 $returnData['mobile'] = GetMobileSendData(tpCache('sms'), $this->users, $data, 3); // 返回结束 $this->success("投稿成功!", url('user/UsersRelease/release_centre', ['list' => 1]), $returnData); } $this->error("投稿失败!"); } $typeid = input('param.typeid/d', 0); empty($typeid) && $typeid = getUsersConfigData('users.release_default_id') ? intval(getUsersConfigData('users.release_default_id')) : 0; // 自定义字段、栏目选项、Token验证 $assign_data = $this->GetAssignData($this->channelID, null, ['typeid'=>$typeid]); $assign_data['channel_id'] = $this->channelID; //视频模型 需要数据 开始 // 系统最大上传视频的大小 $assign_data['upload_max_filesize'] = upload_max_filesize(); //视频类型 $media_type = tpCache('basic.media_type'); $media_type = !empty($media_type) ? $media_type : config('global.media_ext'); $assign_data['media_type'] = $media_type; //文件类型 $file_type = tpCache('basic.file_type'); $file_type = !empty($file_type) ? $file_type : "zip|gz|rar|iso|doc|xls|ppt|wps"; $assign_data['file_type'] = $file_type; // 视频模型配置信息 $channelRow = Db::name('channeltype')->where('id', 5)->find(); $channelRow['data'] = json_decode($channelRow['data'], true); $assign_data['channelRow'] = $channelRow; // 会员等级信息 $assign_data['users_level'] = model('UsersLevel')->getList('level_id, level_name, level_value'); //视频模型 需要数据 结束 // 加载数据 $this->assign($assign_data); $html = $this->fetch('users/article_add'); $web_xss_filter = empty($this->eyou['global']['web_xss_filter']) ? 0 : intval($this->eyou['global']['web_xss_filter']); $replace = << var __web_xss_filter__ = {$web_xss_filter}; var __is_mobile__ = {$this->is_mobile}; EOF; $html = str_ireplace('', $replace, $html); return $html; } // 会员投稿--文章编辑 public function article_edit() { if (IS_AJAX_POST) { $post = input('post.'); $post['aid'] = intval($post['aid']); // 文档标题处理 $post['title'] = !empty($post['title']) ? handleEyouFilterStr($post['title']) : ''; // 文档tags处理 if (!empty($post['tags'])) $post['tags'] = str_replace(",", ',', $post['tags']); // 判断POST参数:文章标题是否为空、所属栏目是否为空、是否重复标题、是否重复提交 $this->PostParameCheck($post); // POST参数处理后返回 $post = $this->PostParameDealWith($post, 'edit'); // 更新数据 $newData = array( 'typeid' => empty($post['typeid']) ? 0 : $post['typeid'], 'update_time' => getTime(), ); if (!empty($post['arc_level_id'])){ $post['restric_type'] = 2; } $data = array_merge($post, $newData); // 更新条件 $where = [ 'aid' => $data['aid'], 'lang' => $this->home_lang, 'users_id' => $this->users_id, ]; $ResultID = $this->archives_db->where($where)->update($data); if (!empty($ResultID)) { /*后置操作*/ $data['attr']['typeid'] = $data['old_typeid']; model('UsersRelease')->afterSave($data['aid'], $data, 'edit', $this->channelData['table']); /* END */ $url = url('user/UsersRelease/release_centre',['list'=>1]); $this->success("编辑成功!", $url); } $this->error("编辑失败!"); } // 文章ID $aid = input('param.aid/d'); $channel_id = Db::name('archives')->where('aid', $aid)->getField('channel'); $info = model('UsersRelease')->getInfo($aid, null, false); if (!empty($info['users_id']) && intval($info['users_id']) !== intval($this->users_id)) { $this->error('文档不存在!'); } $is_remote_file = 0; $imgupload_list = $downfile_list = []; $video_list = ''; // 图集模型 if ($channel_id == 3) { $imgupload_list = model('UsersRelease')->getImgUpload($aid); foreach ($imgupload_list as $key => $val) { $imgupload_list[$key]['image_url'] = handle_subdir_pic($val['image_url']); } }else if ($channel_id == 4) { // 下载模型 $downfile_list = model('DownloadFile')->getDownFile($aid); // 下载文件中是否存在远程链接 foreach ($downfile_list as $key => $value) { if (1 == $value['is_remote']) { $is_remote_file = 1; break; } } }else if ($channel_id == 5){ $video_list = Db::name('media_file') ->where('aid', $aid) ->order('file_id asc') ->select(); $video_list = json_encode($video_list); } // 自定义字段、栏目选项、Token验证 $assign_data = $this->GetAssignData($channel_id, $aid, $info); // 文章列表 $assign_data['ArchivesData'] = $info; // 图集列表 $assign_data['imgupload_list'] = $imgupload_list; // 是否远程链接 $assign_data['is_remote_file'] = $is_remote_file; // 下载列表 $assign_data['downfile_list'] = !empty($downfile_list) ? json_encode($downfile_list) : ''; //视频模型视频列表 $assign_data['video_list'] = $video_list; // 加载数据 $assign_data['aid'] = $aid; $assign_data['channel_id'] = $channel_id; //视频模型 需要数据 开始 // 系统最大上传视频的大小 $assign_data['upload_max_filesize'] = upload_max_filesize(); //视频类型 $media_type = tpCache('basic.media_type'); $media_type = !empty($media_type) ? $media_type : config('global.media_ext'); $assign_data['media_type'] = $media_type; //文件类型 $file_type = tpCache('basic.file_type'); $file_type = !empty($file_type) ? $file_type : "zip|gz|rar|iso|doc|xls|ppt|wps"; $assign_data['file_type'] = $file_type; // 视频模型配置信息 $channelRow = Db::name('channeltype')->where('id', 5)->find(); $channelRow['data'] = json_decode($channelRow['data'], true); $assign_data['channelRow'] = $channelRow; // 会员等级信息 $assign_data['users_level'] = model('UsersLevel')->getList('level_id, level_name, level_value'); //视频模型 需要数据 结束 $this->assign($assign_data); $html = $this->fetch('users/article_edit'); $web_xss_filter = empty($this->eyou['global']['web_xss_filter']) ? 0 : intval($this->eyou['global']['web_xss_filter']); $replace = << var __web_xss_filter__ = {$web_xss_filter}; var __is_mobile__ = {$this->is_mobile}; EOF; $html = str_ireplace('', $replace, $html); return $html; } // 会员投稿--文章删除 public function article_del() { if(IS_AJAX_POST){ $del_id = input('del_id/a'); $aids = eyIntval($del_id); if(!empty($del_id)){ $Where = [ 'aid' => ['IN', $aids], 'lang' => $this->home_lang, 'users_id' => $this->users_id, ]; $field = 'a.aid, a.typeid, a.channel, a.arcrank, a.is_recom, a.is_special, a.is_b, a.is_head, a.is_litpic, a.is_jump, a.is_slide, a.is_roll, a.is_diyattr, a.users_id, b.table'; $archives = $this->archives_db ->alias('a') ->field($field) ->join('__CHANNELTYPE__ b', 'a.channel = b.id', 'LEFT') ->where($Where) ->select(); $typeids = []; $del_content = []; foreach ($archives as $key => $value) { $del_content[$value['table']][] = $value['aid']; if (-1 === $value['arcrank']) { array_push($typeids, $value['typeid']); unset($archives[$key]); } } $return = $this->archives_db->where($Where)->delete(); if (!empty($return)) { foreach ($del_content as $k => $v){ Db::name($k.'_content')->where('aid','in',$v)->delete(); if ('media' == $k){ model('MediaFile')->delVideoFile($v); }elseif ('download' == $k){ model('DownloadFile')->delDownFile($v); }elseif ('images' == $k){ $image_url = Db::name('images_upload')->where('aid','in',$v)->column('image_url'); Db::name('images_upload')->where('aid','in',$v)->delete(); foreach ($image_url as $key => $val) { $file_url_tmp = preg_replace('#^(/[/\w\-]+)?(/uploads/)#i', '.$2', $val); if (!is_http_url($val) && file_exists($file_url_tmp)) { @unlink($file_url_tmp); } } } } if (!empty($typeids)) model('SqlCacheTable')->UpdateDraftSqlCacheTable($typeids, 'del'); if (!empty($archives)) model('SqlCacheTable')->UpdateSqlCacheTable($archives, 'del', '', true); $this->success('删除成功'); } else { $this->error('删除失败'); } } } } public function get_addonextitem() { $typeid = input('post.typeid/d', 0); if (!empty($typeid)) { // 模型ID $channel_id = !empty($this->channelID) ? $this->channelID : Db::name('arctype')->where('id', $typeid)->getField('current_channel'); // 获取加载到页面的数据 $aid = input('post.aid/d', 0); $info['typeid'] = $typeid; $assign_data = $this->GetAssignData($channel_id, $aid, $info, true); $assign_data['channel_id'] = $channel_id; $this->assign($assign_data); // 加载模板处理 $filename = 'users_release_field'; if (isMobile()) $filename .= '_m'; // 模板版本号处理 $usersTpl2xVersion = getUsersTpl2xVersion(); if ($usersTpl2xVersion == 'v2.x') { $web_users_tpl_theme = tpCache('web.web_users_tpl_theme') ? tpCache('web.web_users_tpl_theme') : 'users'; if (isMobile()) { if (is_dir('./template/mobile/')) { $html = $this->fetch("./template/".TPL_THEME."mobile/{$web_users_tpl_theme}/{$filename}.htm"); } else { $html = $this->fetch("./template/".TPL_THEME."pc/{$web_users_tpl_theme}/wap/{$filename}.htm"); } } else { $html = $this->fetch("./template/".TPL_THEME."pc/{$web_users_tpl_theme}/{$filename}.htm"); } } else { $web_users_tpl_theme = 'users'; if ($this->usersTplVersion != 'v1') $web_users_tpl_theme .= '_' . $this->usersTplVersion; $html = $this->fetch("./public/static/template/{$web_users_tpl_theme}/{$filename}.htm"); } } else { $html = ''; $assign_data['htmltextField'] = ''; } // 返回页面数据 $result = [ 'html' => $html, 'htmltextField' => $assign_data['htmltextField'], 'is_litpic_users_release' => $this->channelData['is_litpic_users_release'] ]; $channel_id = !empty($channel_id) ? $channel_id : 0; $channel_data = $this->channel_addonextitem($channel_id); if (!empty($channel_data)) $result = array_merge($result, $channel_data); // sleep(1); $this->success('请求成功', null, $result); } //get_addonextitem一些模型后续处理 public function channel_addonextitem($channel=0) { $data = []; if (4 == $channel) { $data['download']['users_level'] = model('UsersLevel')->getList('level_id, level_name'); //下载模型自定义属性字段 $attr_field = Db::name('download_attr_field')->select(); $servername_use = 0; if ($attr_field) { $servername_info = []; for ($i = 0; $i < count($attr_field); $i++) { if ($attr_field[$i]['field_name'] == 'server_name') { if ($attr_field[$i]['field_use'] == 1) { $servername_use = 1; } $servername_info = $attr_field[$i]; break; } } $data['download']['servername_info'] = $servername_info; } $data['download']['attr_field'] = $attr_field; $data['download']['servername_use'] = $servername_use; $servername_arr = unserialize(tpCache('download.download_select_servername')); $data['download']['default_servername'] = $servername_arr?$servername_arr[0]:'立即下载'; $weapp = Db::name('weapp')->where('code','in',['Qiniuyun','AliyunOss','Cos'])->where('status',1)->getAllWithIndex('code'); $config = Db::name('channeltype')->where('nid','download')->value('data'); $config = json_decode($config,true); $upload_flag_name = ''; if (!empty($config['qiniuyun_open']) && '1' == $config['qiniuyun_open'] && !empty($weapp['Qiniuyun'])) { $upload_flag = 'qny'; $upload_flag_name = '七牛云'; } else if (!empty($config['oss_open']) && '1' == $config['oss_open'] && !empty($weapp['AliyunOss'])) { $upload_flag = 'oss'; $upload_flag_name = '阿里云'; } else if (!empty($config['cos_open']) && '1' == $config['cos_open'] && !empty($weapp['Cos'])) { $upload_flag = 'cos'; $upload_flag_name = '腾讯云'; }else{ $upload_flag = 'local'; } $data['download']['upload_flag'] = $upload_flag; $data['download']['upload_flag_name'] = $upload_flag_name; // 系统最大上传大小 限制类型 $file_size = tpCache('basic.file_size'); $postsize = @ini_get('file_uploads') ? ini_get('post_max_size') : -1; $fileupload = @ini_get('file_uploads') ? ini_get('upload_max_filesize') : -1; $min_size = strval($file_size) < strval($postsize) ? $file_size : $postsize; $min_size = strval($min_size) < strval($fileupload) ? $min_size : $fileupload; $basic['file_size'] = intval($min_size) * 1024 * 1024; $file_type = tpCache('basic.file_type'); $basic['file_type'] = !empty($file_type) ? $file_type : "zip|gz|rar|iso|doc|xls|ppt|wps"; $data['download']['basic'] = $basic; } return $data; } // 处理加载到页面的数据 private function GetAssignData($channel_id = null, $aid = null, $info = array(), $is_if = false) { /* 自定义字段 */ if (!empty($aid) && !empty($info) && !empty($channel_id)) { $addonFieldExtList = model('UsersRelease')->GetUsersReleaseData($channel_id, $info['typeid'], $aid, 'edit'); } else if (!empty($channel_id) && !empty($info)){ $addonFieldExtList = model('UsersRelease')->GetUsersReleaseData($channel_id, $info['typeid']); } else { $addonFieldExtList = model('UsersRelease')->GetUsersReleaseData($channel_id); } // 匹配显示的自定义字段 $htmltextField = []; // 富文本的字段名 foreach ($addonFieldExtList as $key => $val) { if ($val['dtype'] == 'htmltext') { array_push($htmltextField, $val['name']); } } $assign_data['addonFieldExtList'] = $addonFieldExtList; $assign_data['htmltextField'] = $htmltextField; /* END */ if (empty($is_if)) { /*允许发布文档列表的栏目*/ $typeid = 0; if (!empty($info['typeid'])) $typeid = $info['typeid']; $arctype_html = $this->allow_release_arctype($typeid); $assign_data['arctype_html'] = $arctype_html; /* END */ /*封装表单验证隐藏域*/ static $request = null; if (null == $request) { $request = Request::instance(); } $token = $request->token(); $assign_data['TokenValue'] = " "; /* END */ } return $assign_data; } // 判断POST参数:文章标题是否为空、所属栏目是否为空、是否重复标题、是否重复提交 private function PostParameCheck($post = array(), $channel_id = 1) { if (empty($post)) $this->error('提交错误!', null, 'title'); // 判断文章标题是否为空 if (empty($post['title'])) $this->error('请填写文章标题!', null, 'title'); // 判断所属栏目是否为空 if (empty($post['typeid'])) $this->error('请选择所属栏目!', null, 'typeid'); // 如果模型不允许重复标题则执行 $is_repeat_title = $this->channeltype_db->where('id', $channel_id)->getField('is_repeat_title'); if (empty($is_repeat_title)) { $where = [ 'title' => $post['title'], // 'channel' => $channel_id, ]; if (!empty($post['aid'])) $where['aid'] = ['NOT IN', $post['aid']]; $count = $this->archives_db->where($where)->count(); if(!empty($count)) $this->error('文档标题不允许重复!', null, 'title'); } // 数据验证 $rule = [ 'title' => 'require|token', ]; $message = [ 'title.require' => '不可为空!', ]; $validate = new \think\Validate($rule, $message); if(!$validate->check($post)) $this->error('不允许连续提交!'); } // POST参数处理后返回 private function PostParameDealWith($post = array(), $type = 'add') { // 内容详情 $content = input('post.addonFieldExt.content', '', null); // 自动获取内容第一张图片作为封面图 $post['litpic'] = !empty($post['litpic_inpiut']) ? $post['litpic_inpiut'] : get_html_first_imgurl($content); // 是否有封面图 $post['is_litpic'] = !empty($post['litpic']) ? 1 : 0; // SEO描述 if ('add' == $type && !empty($content)) { $post['seo_description']= @msubstr(checkStrHtml($content), 0, config('global.arc_seo_description_length'), false); } $post['addonFieldExt']['content'] = htmlspecialchars(strip_sql($content)); if (empty($this->usersConfig['is_automatic_review'])) { // 自动审核关闭,文章默认待审核 $post['arcrank'] = -1; // 待审核 } else { // 自动审核开启,文章默认已审核 $post['arcrank'] = 0; // 已审核 } return $post; } // 计算获取一天内的投稿文档合计次数 private function GetOneDayReleaseCount() { $time1 = strtotime(date('Y-m-d', time())); $time2 = $time1 + 86399; $where = [ 'lang' => $this->home_lang, 'users_id' => $this->users_id, 'add_time' => ['between time', [$time1, $time2]], ]; $AidCount = $this->archives_db->where($where)->count(); return $AidCount; } /** * 允许会员投稿发布的栏目列表 */ private function allow_release_arctype($typeid = 0) { // 查询会员投稿设置的投稿栏目 $ids = [1, 3, 4, 5]; $where = [ 'is_release' => 1, 'lang' => $this->home_lang, 'current_channel' => ['IN', $ids] ]; $release_typeids = Db::name('arctype')->where($where)->column('id'); // 生成栏目选择下拉列表 $arctype_html = allow_release_arctype($typeid, $ids, true, $release_typeids, true); $arctype_html = str_ireplace('data-current_channel=', 'data-channel=', $arctype_html); $arctype_html = ""; return $arctype_html; } /** * 模型字段 - 删除多图字段的图集 */ public function del_channelimgs() { if (IS_AJAX_POST) { $aid = input('aid/d', '0'); $channel = input('channel/d', ''); // 模型ID if (!empty($aid) && !empty($channel)) { $path = input('param.filename/s', ''); // 图片路径 $fieldid = input('param.fieldid/d'); // 多图字段 $fieldname = Db::name('channelfield')->where(['id'=>$fieldid])->value('name'); if (!empty($fieldname)) { /*模型附加表*/ $table = M('channeltype')->where('id', $channel)->getField('table'); $tableExt = $table . '_content'; /*--end*/ /*除去多图字段值中的图片*/ $info = M($tableExt)->field("{$fieldname}")->where("aid", $aid)->find(); $valueArr = explode(',', $info[$fieldname]); foreach ($valueArr as $key => $val) { if ($path == $val) { unset($valueArr[$key]); } } $value = implode(',', $valueArr); M($tableExt)->where('aid', $aid)->update(array($fieldname => $value, 'update_time' => getTime())); /*--end*/ } } } } }