load($this->post)){ $result = $this->_checkRights($doc->is_ad); if($result['error']==0) { if($doc->cat_id) { $category = Category::findOne($doc->cat_id); $parent_cat_ids = explode(",",$category->arr_parent_ids); $doc->doc_type = 1; $doc->status = 0; $doc->stars = 3; $doc->parent_cat_id = intval($parent_cat_ids[1]); $doc->root_cat_id = intval($parent_cat_ids[count($parent_cat_ids)-1]); if(!empty($category->arr_parent_ids)) { $doc->cat_ids = ",".join(",",array_reverse($parent_cat_ids)).","; } else { $doc->cat_ids = ",".$doc->cat_id.","; } $doc->user_id = $this->user->user_id; $doc->user_name = $this->user->user_name; $doc->create_time = TIMESTAMP; $doc->update_time = TIMESTAMP; if(!$doc->validate()) { $result = [ 'error' => 1, 'msg' => $doc->returnFirstError(), 'data'=>[] ]; } else { //tag更新 if(empty($doc->tags)) { $doc->tags = initTags($doc); } if($doc->save()) { $docData->id = $doc->id; $docData->load($this->post); if(empty($docData->content))$docData->content = ''; if(!$docData->validate()) { $result = [ 'error' => 1, 'msg' => $docData->returnFirstError(), 'data'=>[] ]; } else { if($docData->save()) { if($docData->file)Attachment::relateAttachmentByTable($docData->file,$docData->shortTableName(),'file',$doc->id); if($doc->thumb)Attachment::relateAttachmentByTable($doc->thumb,$doc->shortTableName(),'thumb',$doc->id); if($doc->tags)refreshTag($doc->tags,$doc->shortTableName(),$doc->id,$doc->user_id); $this->user->refreshData($this->user->user_id); $this->_refreshNum('doc_uploadnum'); $result = [ 'error' => 0, 'msg' => '恭喜您,上传成功', 'data' => ['url'=>$url], 'code'=>200 ]; } else { $result = [ 'error' => 1, 'msg' => '上传失败', 'data'=>[] ]; } } } else { $result = [ 'error' => 1, 'msg' => '上传失败', 'data'=>[] ]; } } } else { $result = [ 'error' => 1, 'msg' => '请求出错,缺少必要参数', 'data' => [], 'code'=>200 ]; } } } else { $result = [ 'error' => 1, 'msg' => '请求出错,缺少必要参数', 'data' => [], 'code'=>200 ]; } return $result; } //发布合辑 public function actionCollect() { $url = self::urlList('myupload'); $id = Yii::$app->request->post('id',0); if($id) { $doc = DocReal::findOne($id); $docData = DocRealData::findOne($id); $checkResult = $this->checkRights($this->user_id,$doc); if($checkResult['error']==1) { return $checkResult; } } else { $doc = new Doc(); $docData = new DocData(); } if($doc->load($this->post)){ $result = $this->_checkRights(0,$id); if($result['error']==0) { if($doc->cat_id) { $category = Category::findOne($doc->cat_id); $parent_cat_ids = explode(",",$category->arr_parent_ids); $doc->status = 0; $doc->stars = 3; $doc->parent_cat_id = intval($parent_cat_ids[1]); $doc->root_cat_id = intval($parent_cat_ids[count($parent_cat_ids)-1]); if(!empty($category->arr_parent_ids)) { $doc->cat_ids = ",".join(",",array_reverse($parent_cat_ids)).","; } else { $doc->cat_ids = ",".$doc->cat_id.","; } $doc->user_id = $this->user->user_id; $doc->user_name = $this->user->user_name; if($id==0)$doc->create_time = TIMESTAMP; $doc->update_time = TIMESTAMP; if(!$doc->validate()) { $result = [ 'error' => 0, 'msg' => $doc->returnFirstError(), 'data'=>[] ]; } else { //tag更新 if(empty($doc->tags)) { $doc->tags = initTags($doc); } if($doc->save()) { $docData->id = $doc->id; $docData->load($this->post); if(empty($docData->content))$docData->content = ''; if(!$docData->validate()) { $result = [ 'error' => 1, 'msg' => $docData->returnFirstError(), 'data'=>[] ]; } else { if($docData->save()) { //合辑关联文档数据 if(!empty($docData->docs)) { $docIds = explode(",",$docData->docs); $doc->doc_num = count($docIds); //写合辑文档关联表 $multiInsertData = []; if(is_array($docIds))foreach($docIds as $docId) { $multiInsertData[] = ['col_id' => $doc->id,'doc_id' => $docId]; } if(!empty($multiInsertData)) { Yii::$app->db->createCommand()->batchInsert(DocCol::tableName(), ['col_id', 'doc_id'], $multiInsertData)->execute(); } } else { $doc->doc_num = 0; } $doc->save(); if($doc->thumb)Attachment::relateAttachmentByTable($doc->thumb,$doc->shortTableName(),'thumb',$doc->id); if($doc->tags)refreshTag($doc->tags,$doc->shortTableName(),$doc->id,$doc->user_id); $this->user->refreshData($this->user->user_id); if($id==0)$this->_refreshNum('doc_uploadnum'); $result = [ 'error' => 0, 'msg' => '恭喜您,发布成功', 'data' => ['url'=>$url], 'code'=>200 ]; } else { $result = [ 'error' => 1, 'msg' => '发布失败', 'data'=>[] ]; } } } else { $result = [ 'error' => 1, 'msg' => '发布失败', 'data'=>[] ]; } } } else { $result = [ 'error' => 1, 'msg' => '请求出错,缺少必要参数', 'data' => [], 'code'=>200 ]; } } } else { $result = [ 'error' => 1, 'msg' => '请求出错,缺少必要参数', 'data' => [], 'code'=>200 ]; } return $result; } //发布资源 public function actionSource() { $url = self::urlList('myupload'); $id = Yii::$app->request->post('id',0); if($id) { $doc = DocReal::findOne($id); $docData = DocRealData::findOne($id); $checkResult = $this->checkRights($this->user_id,$doc); if($checkResult['error']==1) { return $checkResult; } } else { $doc = new Doc(); $docData = new DocData(); } if($doc->load($this->post)){ $result = $this->_checkRights(0,$id); if($result['error']==0) { if($doc->cat_id) { $category = Category::findOne($doc->cat_id); $parent_cat_ids = explode(",",$category->arr_parent_ids); $doc->status = 0; $doc->stars = 3; $doc->parent_cat_id = intval($parent_cat_ids[1]); $doc->root_cat_id = intval($parent_cat_ids[count($parent_cat_ids)-1]); if(!empty($category->arr_parent_ids)) { $doc->cat_ids = ",".join(",",array_reverse($parent_cat_ids)).","; } else { $doc->cat_ids = ",".$doc->cat_id.","; } $doc->user_id = $this->user->user_id; $doc->user_name = $this->user->user_name; if($id==0)$doc->create_time = TIMESTAMP; $doc->update_time = TIMESTAMP; if(!$doc->validate()) { $result = [ 'error' => 0, 'msg' => $doc->returnFirstError(), 'data'=>[] ]; } else { //tag更新 if(empty($doc->tags)) { $doc->tags = initTags($doc); } if($doc->save()) { $docData->id = $doc->id; $docData->load($this->post); if(empty($docData->content))$docData->content = ''; if(!$docData->validate()) { $result = [ 'error' => 1, 'msg' => $docData->returnFirstError(), 'data'=>[] ]; } else { if($docData->save()) { if($doc->thumb)Attachment::relateAttachmentByTable($doc->thumb,$doc->shortTableName(),'thumb',$doc->id); if($doc->tags)refreshTag($doc->tags,$doc->shortTableName(),$doc->id,$doc->user_id); $this->user->refreshData($this->user->user_id); if($id==0)$this->_refreshNum('doc_uploadnum'); $result = [ 'error' => 0, 'msg' => '恭喜您,发布成功', 'data' => ['url'=>$url], 'code'=>200 ]; } else { $result = [ 'error' => 1, 'msg' => '发布失败', 'data'=>[] ]; } } } else { $result = [ 'error' => 1, 'msg' => '发布失败', 'data'=>[] ]; } } } else { $result = [ 'error' => 1, 'msg' => '请求出错,缺少必要参数', 'data' => [], 'code'=>200 ]; } } } else { $result = [ 'error' => 1, 'msg' => '请求出错,缺少必要参数', 'data' => [], 'code'=>200 ]; } return $result; } //批量上传 public function actionMulti() { $url = self::urlList('myupload'); $doc = new Doc(); $docData = new DocData(); if($doc->load($this->post)){ $result = $this->_checkRights($doc->is_ad); if($result['error']==0) { $cat_id = $this->post['cat_id']; if($cat_id) { $category = Category::findOne($cat_id); $parent_cat_ids = explode(",",$category->arr_parent_ids); $doc->cat_id =$cat_id; $doc->doc_type = 1; $doc->status = 0; $doc->stars = 3; $doc->parent_cat_id = intval($parent_cat_ids[1]); $doc->root_cat_id = intval($parent_cat_ids[count($parent_cat_ids)-1]); if(!empty($category->arr_parent_ids)) { $doc->cat_ids = ",".join(",",array_reverse($parent_cat_ids)).","; } else { $doc->cat_ids = ",".$doc->cat_id.","; } $doc->user_id = $this->user->user_id; $doc->user_name = $this->user->user_name; $doc->create_time = TIMESTAMP; $doc->update_time = TIMESTAMP; if(!$doc->validate()) { $result = [ 'error' => 1, 'msg' => $doc->returnFirstError(), 'data'=>[] ]; } else { //tag更新 if(empty($doc->tags)) { $doc->tags = initTags($doc); } if($doc->save()) { $docData->id = $doc->id; $docData->load($this->post); if(empty($docData->content))$docData->content = ''; if(!$docData->validate()) { $result = [ 'error' => 1, 'msg' => $docData->returnFirstError(), 'data'=>[] ]; } else { if($docData->save()) { if($docData->file)Attachment::relateAttachmentByTable($docData->file,$docData->shortTableName(),'file',$doc->id); if($doc->tags)refreshTag($doc->tags,$doc->shortTableName(),$doc->id,$doc->user_id); $this->user->refreshData($this->user->user_id); $this->_refreshNum('doc_uploadnum'); $result = [ 'error' => 0, 'msg' => '恭喜您,上传成功', 'data' => ['url'=>$url], 'code'=>200 ]; } else { $result = [ 'error' => 1, 'msg' => '上传失败', 'data'=>[] ]; } } } else { $result = [ 'error' => 1, 'msg' => '上传失败', 'data'=>[] ]; } } } else { $result = [ 'error' => 1, 'msg' => '请求出错,缺少必要参数', 'data' => [], 'code'=>200 ]; } } } else { $result = [ 'error' => 1, 'msg' => '请求出错,缺少必要参数', 'data' => [], 'code'=>200 ]; } return $result; } private function _checkRights($is_ad=0,$id=0) { $userInfo = $this->userInfo; if($userInfo['is_lock']) { return [ 'error' => 1, 'msg' => '您的账户已被锁定,请联系管理员', 'data' => [], 'code'=>200 ]; } if($userInfo['is_delete']) { return [ 'error' => 1, 'msg' => '您的账户已被永久禁用,请联系管理员', 'data' => [], 'code'=>200 ]; } if(!$userInfo['open_upload']) { return [ 'error' => 1, 'msg' => '您没有上传权限,请联系管理员', 'data' => [], 'code'=>200 ]; } if($id==0) { //上传数量限制 $max_space = $userInfo['group_rights']['doc_max_space']; $upload_limit_day = $userInfo['group_rights']['doc_uploadnum_day']; $userNum = UserNum::find()->where("user_id=".$this->user_id." and date='".get_date(TIMESTAMP,'Y-m-d')."'")->one(); if($max_space==-1) { return [ 'error' => 1, 'msg' => '您已被禁止上传', 'data' => [], 'code'=>200 ]; } if(!empty($userNum)) { if($upload_limit_day>0&&$userNum->doc_uploadnum>=$upload_limit_day) { return [ 'error' => 1, 'msg' => '您已达到今日上传数量上限,上传失败', 'data' => [], 'code'=>200 ]; } } //对推广文档进行限制判断 if($is_ad==1) { $org_vip_settings = $userInfo['org_vip_settings']; if($org_vip_settings){ $adDocNum = DocReal::find()->where("user_id=".$this->user_id." and is_ad=1 and status=1")->count(); if($adDocNum>=$org_vip_settings['ad_doc_num']) { return [ 'error' => 1, 'msg' => '您已达到推广'.$this->docname.'发布数量上限,请升级VIP', 'data' => [], 'code'=>200 ]; } } } } return [ 'error' => 0, 'msg' => '允许上传', 'data' => [], 'code'=>200 ]; } public function actionDoctitlecheck() { if($this->docconfig['forbidden_title']) { $title = safe_replace(Yii::$app->request->get('title')); $exist = DocReal::find()->where("title='".$title."' and is_delete=0")->one(); $exist1 = Doc::find()->where("title='".$title."' and is_delete=0")->one(); if($exist||$exist1){ $result = [ 'error' => 2, 'msg' => '已存在相同标题文件', 'data'=>[] ]; } else { $result = [ 'error' => 0, 'msg' => '', 'data'=>[] ]; } } else { $result = [ 'error' => 0, 'msg' => '', 'data'=>[] ]; } return $result; } //内容md5值重复检测 public function actionDocmd5check() { $md5 = safe_replace(Yii::$app->request->get('md5')); $title = safe_replace(Yii::$app->request->get('title')); $exist = DocReal::find()->where("md5='".$md5."' and is_delete=0")->one(); $exist1 = Doc::find()->where("md5='".$md5."' and is_delete=0")->one(); if($exist||$exist1) { $result = [ 'error' => 1, 'msg' => '已存在相同内容文件', 'data'=>[] ]; } else { if(!empty($title)) { if($this->docconfig['forbidden_title']) { $exist = DocReal::find()->where("title='".$title."' and is_delete=0")->one(); $exist1 = Doc::find()->where("title='".$title."' and is_delete=0")->one(); } if($exist||$exist1){ $result = [ 'error' => 2, 'msg' => '已存在相同标题文件', 'data'=>[] ]; } else { //敏感词检测 if($this->badwordconfig['open']) { $sesResult = sensitive($title); } else { $sesResult = []; } if(!empty($sesResult)) { if($sesResult['log3']) { $result = [ 'error' => 1, 'msg' => $sesResult['log3'], 'data'=>[] ]; } else if($sesResult['log2']) { $result = [ 'error' => 1, 'msg' => $sesResult['log2'], 'data'=>[] ]; } else if($sesResult['log1']) { $result = [ 'error' => 1, 'msg' => $sesResult['log1'], 'data'=>[] ]; } } else { $result = [ 'error' => 0, 'msg' => '', 'data'=>[] ]; } } } else { $result = [ 'error' => 0, 'msg' => '', 'data'=>[] ]; } } return $result; } private function _refreshNum($filed) { $userNum = UserNum::find()->where("user_id=".$this->user_id." and date='".get_date(TIMESTAMP,'Y-m-d')."'")->one(); if(!empty($userNum)) { $userNum->$filed++; $userNum->save(); } else { $userNum = new UserNum(); $userNum->date = get_date(TIMESTAMP,'Y-m-d'); $userNum->user_id = $this->user_id; $userNum->$filed = 1; $userNum->save(); } } }