// points define("LOGIN",5); // 每天登录 define("LIKE",1); // 点赞 define("ASK",10); // 提问 define("JOINGR",2); // 参加约跑 define("STARTGR",50); // 添加约跑 define("ADDROUTE",50); // 添加路线 define("JOINROUTE",2); // 跑过路线 define("CHECKIN",50); // 打卡 define("CHECKINPERK",2); // 打卡每公里 define("CREATEEVT",100); // 添加赛事并且审核通过 define("JOINEVT",2); // 参加赛事 define("ADDFRIEND",10); // 添加好友 define("UPLOADPHOTO",1); // 上传图片 define("CIRCLERUNWEEKLY",100); // 朋友圈周跑量冠军 define("CIRCLERUNMONTHLY",200); // 朋友圈月跑量冠军 define("RUNWEEKLY",200); // 全网周跑量冠军 define("RUNMONTHLY",500); // 全网月跑量冠军 define("COMMENT",1); // 发表评论 define("ADDGROUP",50); // 添加跑团 define("JOINGROUP",2); // 加入跑团 /* 亚军:除2 季军:除5 */ define("R_LIKE",2); // 被点赞 define("R_CERT",100); // 上传比赛证书 define("R_JOINEVT",20); // 参加赛事 define("R_EVTRANK",100); // 参加泡泡赛事第一名 define("R_ANSWER",10); // 回答问题 define("R_BESTANS",20); // 回答的问题被采纳 define("R_WRITEARTICLE",10);// 发表文章 define("R_BESTARTICLE",50); // 文章被点200赞 define("MIN_ARTICLE",10); // 发文章 define("MIN_QA",500); // 回答问题 define("MIN_EVENT",500); // 建立赛事 define("MIN_GROUP",0); // 组跑团 /** second var could be distance for checkin, could be placement for ranking **/ function addpoint($action,$targetid="",$targetparentid="",$var="",$touserid="") { //if (!isSet($_SESSION["user"])) return; $database = new medoo(); /* if ($action == 'CHECKIN' || $action == 'CHECKIN') { $hasrecord = $database->get("tbl_point","id",array("AND"=>array("targetid"=>$targetid,"action"=>"CHECKIN"))); if ($hasrecord) return; } */ switch($action) { // 成长值 case "LOGIN": if (!isSet($_SESSION["user"]["lastlogin"]) || (time() - strtotime($_SESSION["user"]["lastlogin"]) > 86400)) { $setarr = array("action"=>"LOGIN","growthpt"=>LOGIN); $database->update('tbl_user',array("idhash"=>md5($_SESSION["user"]["id"]),"lastlogin"=>date('Y-m-d H:i:s')),array("id"=>$_SESSION["user"]["id"])); } break; case "LIKE": $setarr = array("action"=>$var."_LIKE","growthpt"=>LIKE);break; case "ASK": $setarr = array("action"=>$action,"growthpt"=>ASK);break; case "JOINGR": $setarr = array("action"=>$action,"growthpt"=>JOINGR);break; case "STARTGR": $setarr = array("action"=>$action,"growthpt"=>STARTGR);break; case "ADDROUTE": $setarr = array("action"=>$action,"growthpt"=>ADDROUTE);break; case "JOINROUTE": $setarr = array("action"=>$action,"growthpt"=>JOINROUTE);break; case "ADDGROUP": $setarr = array("action"=>$action,"growthpt"=>ADDGROUP);break; case "JOINGROUP": $setarr = array("action"=>$action,"growthpt"=>JOINGROUP);break; case "CHECKIN": $setarr = array("action"=>"CHECKIN","growthpt"=>CHECKIN);break; case "CHECKINPERK": $setarr = array("action"=>"CHECKIN_ADDKM","growthpt"=>ceil(CHECKINPERK*$var));break; case "CREATEEVT": $setarr = array("action"=>$action,"growthpt"=>CREATEEVT);break; case "JOINEVT": $setarr = array("action"=>"JOIN_EVENT","growthpt"=>JOINEVT);break; case "ADDFRIEND": $setarr = array("action"=>$action,"growthpt"=>ADDFRIEND);break; case "UPLOADPHOTO": $setarr = array("action"=>"UPLOAD_".$var."_PHOTO","growthpt"=>UPLOADPHOTO);break; case "CIRCLERUNWEEKLY": $setarr = array("action"=>"朋友圈周跑量冠军","growthpt"=>ceil(CIRCLERUNWEEKLY / $var));break; case "CIRCLERUNMONTHLY": $setarr = array("action"=>"朋友圈月跑量冠军","growthpt"=>ceil(CIRCLERUNMONTHLY / $var));break; case "RUNWEEKLY": $setarr = array("action"=>"朋友圈月跑量冠军","growthpt"=>ceil(RUNWEEKLY / $var));break; case "RUNMONTHLY": $setarr = array("action"=>"朋友圈月跑量冠军","growthpt"=>ceil(RUNMONTHLY / $var));break; case "COMMENT": $setarr = array("action"=>"WRITE_".$var."_COMMENT","growthpt"=>COMMENT);break; // 威望值 case "R_LIKE": $setarr = array("action"=>$var."_LIKED","reputationpt"=>R_LIKE);break; case "R_CERT": $setarr = array("action"=>$action,"reputationpt"=>R_CERT);break; case "R_JOINEVT": $setarr = array("action"=>"JOIN_EVENT_REPUTATION","reputationpt"=>R_JOINEVT);break; case "R_EVTRANK": $setarr = array("action"=>$action,"reputationpt"=>R_EVTRANK * $var);break; // 1,0.75,0.5,0.25,0.1 case "R_ANSWER": $setarr = array("action"=>$action,"reputationpt"=>R_ANSWER);break; case "R_BESTANS": $setarr = array("action"=>$action,"reputationpt"=>R_BESTANS);break; case "R_WRITEARTICLE": $setarr = array("action"=>$action,"reputationpt"=>R_WRITEARTICLE);break; case "R_BESTARTICLE": $setarr = array("action"=>$action,"reputationpt"=>R_BESTARTICLE);break; } $nowdate = date("Y-m-d H:i:s"); if (isSet($setarr)) { $setarr["userid"] = ($touserid != ""?$touserid:$_SESSION["user"]["id"]); $setarr["targetid"] = $targetid; $setarr["targetparentid"] = $targetparentid; $setarr["createddate"] = $nowdate; $newpt = $database->get("tbl_point","id",array("AND"=>array("action"=>$setarr["action"],"userid"=>$setarr["userid"],"targetid"=>$setarr["targetid"],"targetparentid"=>$setarr["targetparentid"]))); if (!$newpt) { $newpt = $database->insert("tbl_point",$setarr); } //error_log(json_encode($database->error())); // add actiontracking if ($action == 'LIKE' || $action == 'ASK' || $action == 'JOINGR' || $action == 'STARTGR' || $action == 'ADDROUTE' || $action == 'JOINROUTE' || $action == 'ADDGROUP' || $action == 'JOINGROUP' || $action == 'CHECKIN' || $action == 'CREATEEVT' || $action == 'JOINEVT' || $action == 'COMMENT' || $action == 'R_WRITEARTICLE' || $action == 'R_BESTARTICLE' || $action == 'R_ANSWER') { $commentid = 0; if ($action == 'COMMENT') $commentid = $targetid; $database->insert("tbl_actiontracking",array("userid"=>$_SESSION["user"]["id"],"commentid"=>$commentid,"targetid"=>($targetparentid != 0 ? $targetparentid : $targetid),"actiontype"=>$setarr["action"],"pointid"=>$newpt,"createddate"=>$nowdate)); } } } /************ determine if user can do certain things *******************/ function checkPermission($action) { global $superadmin; if (!isSet($_SESSION["user"])) return false; if ($superadmin) return true; $database = new medoo(); $pt = $database->sum("tbl_point","reputationpt",array("userid"=>$_SESSION["user"]["id"])); switch ($action) { case "qa": if ($pt < MIN_QA) return false; case "article": if ($pt < MIN_ARTICLE) return false; case "event": if ($pt < MIN_EVENT) return false; case "group": if ($pt < MIN_GROUP) return false; } return true; }