Please make sure IN_MYBB is defined.");
}
$plugins->add_hook("member_profile_end", "profile_achivements");
$plugins->add_hook("postbit", "postbit_achivements");
$plugins->add_hook("usercp_start", "usercp_achivements");
$plugins->add_hook("modcp_start", "modcp_achivements");
function postbit_achivements(&$post)
{
global $templates, $mybb, $lang;
$lang->load("achivements", false, true);
static $static_achievements;
$post['achivements'] = getarchivements($post['uid']);
if (!$post['achivements'])
{
$achivements = $lang->notachivements;
}
else
{
$num_achiviements = 0;
foreach($post['achivements'] as $column => $logro)
{
if($logro['showpostbit'] == 1)
{
++$num_achiviements;
$achivements .= "
";
if ($num_achiviements >= $mybb->settings['achivements_maxpostbit'])
break;
else
continue;
}
if ($num_achiviements >= $mybb->settings['achivements_maxpostbit'])
break;
else
continue;
}
if(!$achivements)
{
$achivements = $lang->achshide;
}
}
if($mybb->settings['achivements_showachvpostbit'] == 1)
{
eval("\$post['achivementspostbit'] = \"".$templates->get("achivements_postbit")."\";");
}
}
function profile_achivements()
{
global $mybb, $memprofile, $templates, $lang, $theme, $achivements, $achivementsprofile;
$lang->load("achivements", false, true);
$memprofile['achivements'] = getarchivements($memprofile['uid']);
if(!$memprofile['achivements'])
{
$lang->achisemptytableprofile = $lang->sprintf($lang->achisemptytableprofile, $memprofile['username']);
$achivements = $lang->achisemptytableprofile;
}
else
{
foreach($memprofile['achivements'] as $archivement)
{
if($archivement['showprofile'] == 1)
{
$achivements .= "
";
}
}
if(!$achivements)
{
$lang->achishidetableprofile = $lang->sprintf($lang->achishidetableprofile, $memprofile['username']);
$achivements = $lang->achishidetableprofile;
}
}
$lang->achsmemprofile = $lang->sprintf($lang->achsmemprofile, $memprofile['username']);
if($mybb->settings['achivements_showachvprofile'] == 1)
{
eval("\$achivementsprofile = \"".$templates->get("achivements_profile")."\";");
}
}
function usercp_achivements()
{
global $mybb,$db,$templates,$theme,$lang,$headerinclude,$header,$footer,$usercpnav;
if($mybb->input['action'] != "achivements" && $mybb->input['action'] != "do_achivements")
{
return;
}
if($mybb->input['action'] == "do_achivements" && $mybb->request_method == "post")
{
verify_post_check($mybb->input['my_post_key']);
$mybb->user['achivements'] = getarchivements($mybb->user['uid']);
if($mybb->input['profile'])
{
$db->update_query('user_achivements', array('showprofile' => 0), '`uid`='.$mybb->user['uid']);
if($mybb->input['showachivement'])
{
foreach($mybb->input['showachivement'] as $achs)
{
$db->update_query('user_achivements', array('showprofile' => 1), '`uid`='.$mybb->user['uid'].' AND `aid`='.$achs);
}
}
}
if($mybb->input['postbit'])
{
$db->update_query('user_achivements', array('showpostbit' => 0), '`uid`='.$mybb->user['uid']);
if($mybb->input['showachivement'])
{
$count = 0;
foreach($mybb->input['showachivement'] as $achs)
{
$db->update_query('user_achivements', array('showpostbit' => 1), '`uid`='.$mybb->user['uid'].' AND `aid`='.$achs);
++$count;
if($count >= $mybb->settings['achivements_maxpostbit'])
break;
else
continue;
}
}
}
redirect("usercp.php", $lang->redirect_profileupdated);
}
if($errors)
{
$errors = inline_error($errors);
}
$lang->load("achivements", false, true);
add_breadcrumb($lang->nav_usercp, "usercp.php");
add_breadcrumb($lang->achivements, "usercp.php");
static $static_achievements;
$mybb->user['achivements'] = getarchivements($mybb->user['uid']);
if(!$mybb->user['achivements'])
{
$achivements = "{$lang->achisemptytableprofileusercp}";
$currentachivements = "{$lang->achisemptytableprofileusercp}";
$currentachivementspostbit = "{$lang->achisemptytableprofileusercp}";
}
else
{
$intshow = 0;
$intshowpostbit = 0;
$currentachivements = "{$lang->achivementsshowprofilecurrent}
";
$lang->achivementsshowpostbitcurrent = $lang->sprintf($lang->achivementsshowpostbitcurrent, $mybb->settings['achivements_maxpostbit']);
$currentachivementspostbit = "{$lang->achivementsshowpostbitcurrent}
";
$countachs = 1;
$postbit = 0;
//die(var_dump($mybb->user['achivements']));
foreach($mybb->user['achivements'] as $archivement)
{
if($archivement['showprofile'] == 1)
{
$intshow = 1;
$currentachivements .= "
";
}
if($archivement['showpostbit'] == 1 && $postbit == 0)
{
$intshowpostbit = 1;
$currentachivementspostbit .= "
";
if($countachs >= intval($mybb->settings['achivements_maxpostbit']))
{
$postbit = 1;
}else{
$postbit = 0;
}
++$countachs;
}
}
if($intshowpostbit == 0)
{
$currentachivementspostbit = "{$lang->notachshowpostbit}";
}
if($intshow == 0)
{
$currentachivements = "{$lang->notachshowprofile}";
}
foreach($mybb->user['achivements'] as $ach)
{
$achivement .= "
";
eval("\$achivements .= \"".$templates->get("achivements_usercp_all")."\";");
unset($achivement);
}
}
eval("\$achivementsusercp = \"".$templates->get("achivements_usercp")."\";");
output_page($achivementsusercp);
}
function modcp_achivements()
{
global $templates, $modcp_nav, $lang, $mybb, $db;
global $headerinclude, $header, $errors, $theme, $cache, $footer;
$lang->load("achivements", false, true);
$lang->load("admin/achivements", false, true);
if($mybb->settings['achivements_modcp'] == 1)
{
eval("\$nav_achivements = \"".$templates->get("achivements_modcp_nav")."\";");
$modcp_nav = str_replace('', $nav_achivements, $modcp_nav);
}
if($mybb->input['action'] == "achivements" && $mybb->usergroup['canmodcp'] == 1 && $mybb->settings['achivements_modcp'] == 1)
{
add_breadcrumb($lang->nav_modcp, "modcp.php");
add_breadcrumb($lang->achivements, 'modcp.php?action=achivements');
if($mybb->input['mod'] == "give")
{
$query = $db->simple_select('achivements_custom', '*', "acid='".intval($mybb->input['acid'])."'");
$custom = $db->fetch_array($query);
if(!$custom['acid'])
{
error_no_permission();
}
if($custom['modcp'] == 0)
{
error_no_permission();
}
if($mybb->request_method == "post")
{
$query = $db->simple_select("users", '*', "username='".$db->escape_string($mybb->input['username'])."'");
$user = $db->fetch_array($query);
if(!$user['uid'])
{
error_no_permission();
}
$achivements = unserialize($user['achivements']);
$acid = intval($custom['acid']);
if(!empty($achivements['acid'][$acid]['acid']))
{
$lang->repeatcustom = $lang->sprintf($lang->repeatcustom, $user['username'], $custom['name']);
redirect("modcp.php?action=achivements", $lang->repeatcustom);
}
$achivements['acid'][$acid] = array('acid' => $acid, 'name' => $db->escape_string($custom['name']), 'image' => $db->escape_string($custom['image']), 'showprofile' => 1, 'showpostbit' => 0);
$updateuser = array(
'achivements' => serialize($achivements)
);
$lang->successachcustom = $lang->sprintf($lang->successachcustom, $custom['name'], $user['username']);
$db->update_query("users", $updateuser,"uid=".$user['uid']);
$add = array(
'user' => $mybb->user['uid'],
'give' => $user['uid'],
'dateline' => TIME_NOW,
'log' => 'give',
'acid' => $custom['acid'],
'ipaddress' => get_ip()
);
$add = serialize($add);
add_log_custom_modcp($add);
require_once MYBB_ROOT."inc/plugins/achivements/include/mp.php";
$sendmp = unserialize($mybb->settings['achivements_sendmp']);
if($sendmp['custom'] == 1)
{
send_mp_achivement_new($user['uid'], 'custom', $custom['acid']);
}
redirect("modcp.php?action=achivements", $lang->successachcustom);
exit;
}
$lang->giveuserform = $lang->sprintf($lang->giveuserform, $custom['name']);
eval("\$give = \"".$templates->get("achivements_modcp_give")."\";");
output_page($give);
exit;
}
elseif($mybb->input['mod'] == "quit")
{
$query = $db->simple_select('achivements_custom', '*', "acid='".intval($mybb->input['acid'])."'");
$custom = $db->fetch_array($query);
if(!$custom['acid'])
{
error_no_permission();
}
if($custom['modcp'] == 0)
{
error_no_permission();
}
if($mybb->request_method == "post")
{
$query = $db->simple_select("users", '*', "username='".$db->escape_string($mybb->input['username'])."'");
$user = $db->fetch_array($query);
if(!$user['uid'])
{
error_no_permission();
}
$achivements = unserialize($user['achivements']);
$acid = intval($custom['acid']);
if(empty($achivements['acid'][$acid]['acid']))
{
$lang->notcustomuser = $lang->sprintf($lang->notcustomuser, $user['username'], $custom['name']);
redirect("modcp.php?action=achivements", $lang->notcustomuser);
}
unset($achivements['acid'][$acid]);
if(empty($achivements['acid']))
{
unset($achivements['acid']);
}
$updateuser = array(
'achivements' => serialize($achivements)
);
$db->update_query("users", $updateuser,"uid=".$user['uid']);
$add = array(
'user' => $mybb->user['uid'],
'revoke' => $user['uid'],
'dateline' => TIME_NOW,
'log' => 'revoke',
'acid' => $custom['acid'],
'ipaddress' => get_ip()
);
$add = serialize($add);
add_log_custom_modcp($add);
$lang->successachivementcustomdelete = $lang->sprintf($lang->successachivementcustomdelete, $user['username'], $custom['name']);
redirect("modcp.php?action=achivements", $lang->successachivementcustomdelete);
exit;
}
$lang->quitcustom = $lang->sprintf($lang->quitcustom, $custom['name']);
eval("\$quit = \"".$templates->get("achivements_modcp_quit")."\";");
output_page($quit);
exit;
}
$query = $db->simple_select('achivements_custom', '*', 'modcp="1"', array('order_by' => 'acid', 'order_dir' => 'DESC'));
while($custom = $db->fetch_array($query))
{
$trow = alt_trow();
eval("\$custom_achivements .= \"".$templates->get("achivements_modcp_list")."\";");
}
if(empty($custom_achivements))
{
$custom_achivements = "{$lang->emptycustom_modules} |
";
}
eval("\$modcpachivements = \"".$templates->get("achivements_modcp")."\";");
output_page($modcpachivements);
}
}
function add_log_custom_modcp($log)
{
global $db, $lang;
$log = unserialize($log);
$user = get_user(intval($log['user']));
//$custom = getcustom($log['acid']);
if($log['log'] == 'add')
{
$lang->logadd = $lang->sprintf($lang->logadd, $custom['name']);
$loginsert = $lang->logadd;
}
elseif($log['log'] == 'quit')
{
$lang->logdelete = $lang->sprintf($lang->logdelete, $custom['name']);
$loginsert = $lang->logdelete;
}
elseif($log['log'] == 'give')
{
$give = get_user($log['give']);
$username = format_name($give['username'], $give['usergroup'], $give['displaygroup']);
$profilelink = build_profile_link($username, $give['uid'], "_blank");
$lang->loggive = $lang->sprintf($lang->loggive, $custom['name'], $profilelink);
$loginsert = $lang->loggive;
}
elseif($log['log'] == 'revoke')
{
$revoke = get_user($log['revoke']);
$username = format_name($revoke['username'], $revoke['usergroup'], $revoke['displaygroup']);
$profilelink = build_profile_link($username, $revoke['uid'], "_blank");
$lang->logrevoke = $lang->sprintf($lang->logrevoke, $custom['name'], $profilelink);
$loginsert = $lang->logrevoke;
}
elseif($log['log'] == 'truncate')
{
$db->query("truncate ".TABLE_PREFIX."achivements_customlog");
$loginsert = $lang->logtruncate;
}
$lid = $db->insert_id();
$updatelog = array(
"lid" => $lid,
"user" => intval($log['user']),
"log" => $loginsert,
"dateline" => intval($log['dateline']),
"ipaddress" => $log['ipaddress']
);
$db->insert_query("achivements_customlog", $updatelog);
}
function getarchivements($uid)
{
global $db;
$query = $db->query("SELECT * FROM `".TABLE_PREFIX."achivements` a LEFT JOIN `".TABLE_PREFIX."user_achivements` ua ON ua.`aid`=a.`id` WHERE ua.uid='".intval($uid)."'");
while($row = $db->fetch_array($query)){
$custom[] = $row;
}
$db->free_result($query);
return $custom;
}
?>