settings['achivements_enable'] == 1) { require_once MYBB_ROOT."inc/plugins/achivements/include/mp.php"; $achivements = array(); $query = $db->simple_select('achivements'); while ($achivement = $db->fetch_array($query)) { $achivements[] = $achivement; } $db->free_result($query); $userachivements = array(); $uquery = $db->simple_select("user_achivements", "*"); while($usera = $db->fetch_array($uquery)) { $userachivements[$usera['uid']][$usera['aid']] = true; } $users = array(); $taskusersoffline = ''; if($mybb->settings['achivements_taskuseroffline'] == 0) { $taskusersoffline = "`lastactive` >= '{$task['lastrun']}'"; } $query = $db->simple_select("users", "*", $taskusersoffline); while($user = $db->fetch_array($query)) { $users[$user['uid']] = $user; } $insert_achivements = array(); $countachivements = 0; $countusers = 0; $max_postcount=0; $max_threadcount=0; $max_repcount=0; $max_timecount=0; $max_regdatecount=0; foreach ($users as $uid => $user) { $sendmp = unserialize($mybb->settings['achivements_sendmp']); foreach($achivements as $achivement) { switch($achivement['type']) { case "post": if (!isset($userachivements[$uid][$achivement['id']]) || empty($userachivements[$uid][$achivement['id']])) { if($achivement['requirement'] <= intval($user['postnum'])) { if($mybb->settings['achivements_showonlycurrent'] == 1) { if($max_postcount < $achivement['requirement']) { $max_postcount = $achivement['requirement']; ++$countachivements; unset($insert_achivements[$uid]['posts']); $insert_achivements[$uid]['posts'][] = $achivement['id']; if($sendmp['posts'] == 1) { send_mp_achivement_new($uid, 'posts', $achivement['id']); } } } else { ++$countachivements; $insert_achivements[$uid]['posts'][] = $achivement['id']; if($sendmp['posts'] == 1) { send_mp_achivement_new($uid, 'posts', $achivement['id']); } } } } break; case "threads": if (!isset($userachivements[$uid][$achivement['id']]) || empty($userachivements[$uid][$achivement['id']])) { if($achivement['requirement'] <= intval($user['threads'])) { if($mybb->settings['achivements_showonlycurrent'] == 1) { if($max_threadcount < $achivement['requirement']) { $max_threadcount = $achivement['requirement']; ++$countachivements; unset($insert_achivements[$uid]['threads']); $insert_achivements[$uid]['threads'][] = $achivement['id']; if($sendmp['threads'] == 1) { send_mp_achivement_new($uid, 'threads', $achivement['id']); } } } else { ++$countachivements; $insert_achivements[$uid]['threads'][] = $achivement['id']; if($sendmp['threads'] == 1) { send_mp_achivement_new($uid, 'threads', $achivement['id']); } } } } break; case "rep": if (!isset($userachivements[$uid][$achivement['id']]) || empty($userachivements[$uid][$achivement['id']])) { if($achivement['requirement'] <= intval($user['reputation'])) { if($mybb->settings['achivements_showonlycurrent'] == 1) { if($max_repcount < $achivement['requirement']) { $max_repcount = $achivement['requirement']; ++$countachivements; unset($insert_achivements[$uid]['rep']); $insert_achivements[$uid]['rep'][] = $achivement['id']; if($sendmp['reputation'] == 1) { send_mp_achivement_new($uid, 'reputation', $achivement['id']); } } } else { ++$countachivements; $insert_achivements[$uid]['rep'][] = $achivement['id']; if($sendmp['reputation'] == 1) { send_mp_achivement_new($uid, 'reputation', $achivement['id']); } } } } break; case "time": if (!isset($userachivements[$uid][$achivement['id']]) || empty($userachivements[$uid][$achivement['id']])) { switch($achivement['requirement_unit']) { case "hours": $timeonline = $achivement['requirement']*60*60; break; case "days": $timeonline = $achivement['requirement']*60*60*24; break; case "weeks": $timeonline = $achivement['requirement']*60*60*24*7; case "months": $timeonline = $achivement['requirement']*60*60*24*30; break; case "years": $timeonline = $achivement['requirement']*60*60*24*365; break; } if($timeonline <= intval($user['reputation'])) { if($mybb->settings['achivements_showonlycurrent'] == 1) { if($max_timecount < $timeonline) { $max_timecount = $timeonline; ++$countachivements; unset($insert_achivements[$uid]['time']); $insert_achivements[$uid]['time'][] = $achivement['id']; if($sendmp['timeonline'] == 1) { send_mp_achivement_new($uid, 'timeonline', $achivement['id']); } } } else { ++$countachivements; $insert_achivements[$uid]['time'][] = $achivement['id']; if($sendmp['timeonline'] == 1) { send_mp_achivement_new($uid, 'timeonline', $achivement['id']); } } } } break; case "regdate": if (!isset($userachivements[$uid][$achivement['id']]) || empty($userachivements[$uid][$achivement['id']])) { switch($achivement['requirement_unit']) { case "hours": $regdate = $achivement['requirement']*60*60; break; case "days": $regdate = $achivement['requirement']*60*60*24; break; case "weeks": $regdate = $achivement['requirement']*60*60*24*7; case "months": $regdate = $achivement['requirement']*60*60*24*30; break; case "years": $regdate = $achivement['requirement']*60*60*24*365; break; } $rdate = TIME_NOW - $regdate; if(intval($user['regdate']) <= $rdate) { if($mybb->settings['achivements_showonlycurrent'] == 1) { if($max_regdatecount < intval($user['regdate'])) { $max_regdatecount = intval($user['regdate']); ++$countachivements; unset($insert_achivements[$uid]['regdate']); $insert_achivements[$uid]['regdate'][] = $achivement['id']; if($sendmp['regdate'] == 1) { send_mp_achivement_new($uid, 'regdate', $achivement['id']); } } } else { ++$countachivements; $insert_achivements[$uid]['regdate'][] = $achivement['id']; if($sendmp['regdate'] == 1) { send_mp_achivement_new($uid, 'regdate', $achivement['id']); } } } } break; case "archivements": $achs = explode('|',$achivement['required_achivements']);; $error = 0; if(!empty($achs)) { foreach($achs as $ar) { if(empty($userachivements[$uid][$ar])) { ++$error; } } if($error == 0) { if (!isset($userachivements[$uid][$achivement['id']]) || empty($userachivements[$uid][$achivement['id']])) { ++$countachivements; $insert_achivements[$uid]['archivements'][] = $achivement['id']; if($sendmp['achivements'] == 1) { send_mp_achivement_new($uid, 'achivement', $achivement['id']); } } } } break; } } ++$countusers; } foreach($insert_achivements as $uid => $ach){ foreach($ach as $key => $v){ foreach($v as $a){ $update = array( "uid" => $uid, "aid" => $a, "showprofile"=>1, "showpostbit"=>1 ); $db->insert_query("user_achivements", $update); } } } $tasklog = "Checked {$countusers} Users and gave out {$countachivements} Achivements in total."; }else{ $tasklog = "Achivements deactivated."; } add_task_log($task, $tasklog); } ?>