getMbSpecialByID($special_id,'*',true); if(empty($special_info)) { $err = ['code' => errcode::ErrParamter,'msg' => "该专题不存在"]; return false; } $special = new ugc\special($special_info); if($special->published()) { $err = ['code' => errcode::ErrParamter,'msg' => "文章发布之后,不可以编辑."]; return false; } $setting = new ugc\setting($setting,$special); $rule = $setting->format(); $rule['pubtime'] = time(); $rule['state'] = 0; $ret = $mod_special->editUserSpecial($special_id,['special_id' => $special_id,'member_id' => session_helper::memberid()],$rule); if($ret != false) { $type = $setting->reader_type(); $spid = intval($special_id); QueueClient::push('onPublishSpecial',['user_id' => session_helper::memberid(),'specials'=> array(['type' => $type,'spid' => $spid])]); } return $ret; } public static function del_special($special_id,&$err) { $mod_special = Model('mb_special'); $special_info = $mod_special->getMbSpecialByID($special_id,'*',true); if(empty($special_info)) { $err = ['code' => errcode::ErrParamter,'msg' => "该专题不存在"]; return false; } $special = new ugc\special($special_info); if($special->memberid() != session_helper::memberid()) { $err = ['code' => errcode::ErrSpecial,'msg' => "您不能删除该内容"]; return false; } $ret = $mod_special->delMbSpecialByID($special_id); if($ret != false) { $type = $special->reader_type(); $spid = intval($special_id); QueueClient::push('onDelSpecial',['user_id' => session_helper::memberid(),'specials'=> array(['type' => $type,'spid' => $spid])]); return $ret; } else { $err = ['code' => errcode::ErrSpecial,'msg' => "删除失败"]; return false; } } public static function submit($special_id,$options,&$err) { $mod_special = Model('mb_special'); $special_info = $mod_special->getMbSpecialByID($special_id,'*',true); $special = new special($special_info); $vote_single = $special->vote_single(); $submitor = new special_submitor($special_id,$vote_single); if($submitor->submited()) { $err = ['code' => errcode::ErrSpecial,'msg' => "您已经提交过"]; return false; } else { $submitor->submit(); } if(!empty($options)) { $vote = $options['vote']; $answers = $options['question']; } else { $vote = false; $answers = false; } $answer_diff = []; $vote_result = []; $num = 0; if($special->has_vote() || $special->has_question()) { if($special->has_vote() && $vote != false) { $voter = new special_vote($special->special_id()); $vote_result = $voter->vote($vote); if($vote_result == false) { return false; } else { $num++; } } if($special->has_question() && $answers != false) { $answor = new special_answer($special); $correct_num = $answor->answer($answers); $num += $correct_num; $answer_diff = $answor->diff(); } } else { $num = 1; } $rule = $special->submit_rule(); if($rule != false) { $type_sn = $rule->make_bonus($num); } else { $type_sn = ""; } return ['vote_result' => $vote_result,'answer_diff' => $answer_diff,'type_sn' => $type_sn]; } public static function support_special($special_id,$comment_id) { $supporter = new special_support($special_id,$comment_id); if($supporter->supported()) { $supporter->unsupport(); $supported = false; } else { $supporter->support(); $supported = true; } return $supported; } public static function categories() { return ugc\category::instance()->categories(); } public static function category_title($category_id) { return ugc\category::instance()->title($category_id); } public static function init_server() { $initer = new ugciniter(); $initer->init_fellows(); $initer->init_special(); } } class ugciniter { public function init_fellows() { $i = 0; while (true) { $start = $i * 1000; $items = Model()->table('member')->field('member_id,inviter_id')->order('member_id asc')->limit("{$start},1000")->select(); if(empty($items)) { return; } $i++; foreach ($items as $item) { $this->add_fellow($item['member_id'],$item['inviter_id']); } } } private function add_fellow($member_id,$inviter_id) { $member_id = intval($member_id); $inviter_id = intval($inviter_id); if($inviter_id > 0) { search\relation_client::instance()->add_follow(array('user_id' => $member_id,'friends'=>[$inviter_id])); search\relation_client::instance()->add_follow(array('user_id' => $inviter_id,'friends'=>[$member_id])); } if($member_id > 0) { $iRelation = new \relation\mem_relation($member_id); $follows = $iRelation->subscriber(); $uids = []; foreach ($follows as $val) { $uid = intval($val); if($uid > 0) { $uids[] = $uid; } } if(!empty($uids)) { search\relation_client::instance()->add_follow(array('user_id' => $member_id,'friends' => $uids)); } } if($member_id > 0) { $mod_member = Model('member'); $items = $mod_member->getMemberList(['inviter_id' => $member_id],'member_id'); $uids = []; foreach ($items as $val) { $uid = intval($val['member_id']); if($uid > 0) { $uids[] = $uid; } } if(!empty($uids)) { search\relation_client::instance()->add_follow(array('user_id' => $member_id,'friends' => $uids)); } } } public function init_special() { $i = 0; while (true) { $start = $i * 1000; $items = Model()->table('mb_special')->where(['from_user' => 1])->field('special_id,member_id,reader_type')->order('member_id asc')->limit("{$start},1000")->select(); if(empty($items)) { return; } $i++; foreach ($items as $item) { $this->add_special($item); } } } private function add_special($item) { $user_id = intval($item['member_id']); $special_id = intval($item['special_id']); $reader_type = intval($item['reader_type']); if($user_id >0 && $special_id > 0) { search\relation_client::instance()->add_special(array('user_id' => $user_id,'specials'=> [['type' => $reader_type,'spid' => $special_id]])); } } }