home_medal.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: home_medal.php 28887 2012-03-16 10:17:38Z monkey $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. loadcache('medals');
  12. if(!$_G['uid'] && $_GET['action']) {
  13. showmessage('not_loggedin', NULL, array(), array('login' => 1));
  14. }
  15. $_G['mnid'] = 'mn_common';
  16. $medallist = $medallogs = array();
  17. $tpp = 10;
  18. $page = max(1, intval($_GET['page']));
  19. $start_limit = ($page - 1) * $tpp;
  20. if(empty($_GET['action'])) {
  21. include libfile('function/forum');
  22. $medalcredits = array();
  23. foreach(C::t('forum_medal')->fetch_all_data(1) as $medal) {
  24. $medal['permission'] = medalformulaperm(serialize(array('medal' => dunserialize($medal['permission']))), 1);
  25. if($medal['price']) {
  26. $medal['credit'] = $medal['credit'] ? $medal['credit'] : $_G['setting']['creditstransextra'][3];
  27. $medalcredits[$medal['credit']] = $medal['credit'];
  28. }
  29. $medallist[$medal['medalid']] = $medal;
  30. }
  31. $memberfieldforum = C::t('common_member_field_forum')->fetch($_G['uid']);
  32. $membermedal = $memberfieldforum['medals'] ? explode("\t", $memberfieldforum['medals']) : array();
  33. $membermedal = array_map('intval', $membermedal);
  34. $lastmedals = $uids = array();
  35. foreach(C::t('forum_medallog')->fetch_all_lastmedal(10) as $id => $lastmedal) {
  36. $lastmedal['dateline'] = dgmdate($lastmedal['dateline'], 'u');
  37. $lastmedals[$id] = $lastmedal;
  38. $uids[] = $lastmedal['uid'];
  39. }
  40. $lastmedalusers = C::t('common_member')->fetch_all($uids);
  41. $mymedals = C::t('common_member_medal')->fetch_all_by_uid($_G['uid']);
  42. } elseif($_GET['action'] == 'confirm') {
  43. include libfile('function/forum');
  44. $medal = C::t('forum_medal')->fetch($_GET['medalid']);
  45. $medal['permission'] = medalformulaperm(serialize(array('medal' => dunserialize($medal['permission']))), 1);
  46. if($medal['price']) {
  47. $medal['credit'] = $medal['credit'] ? $medal['credit'] : $_G['setting']['creditstransextra'][3];
  48. $medalcredits[$medal['credit']] = $medal['credit'];
  49. }
  50. include template('home/space_medal_float');
  51. } elseif($_GET['action'] == 'apply' && submitcheck('medalsubmit')) {
  52. $medalid = intval($_GET['medalid']);
  53. $_G['forum_formulamessage'] = $_G['forum_usermsg'] = $medalnew = '';
  54. $medal = C::t('forum_medal')->fetch($medalid);
  55. if(!$medal['type']) {
  56. showmessage('medal_apply_invalid');
  57. }
  58. if(C::t('common_member_medal')->count_by_uid_medalid($_G['uid'], $medalid)) {
  59. showmessage('medal_apply_existence', 'home.php?mod=medal');
  60. }
  61. $applysucceed = FALSE;
  62. $medalpermission = $medal['permission'] ? dunserialize($medal['permission']) : '';
  63. if($medalpermission[0] || $medalpermission['usergroupallow']) {
  64. include libfile('function/forum');
  65. medalformulaperm(serialize(array('medal' => $medalpermission)), 1);
  66. if($_G['forum_formulamessage']) {
  67. showmessage('medal_permforum_nopermission', 'home.php?mod=medal', array('formulamessage' => $_G['forum_formulamessage'], 'usermsg' => $_G['forum_usermsg']));
  68. } else {
  69. $applysucceed = TRUE;
  70. }
  71. } else {
  72. $applysucceed = TRUE;
  73. }
  74. if($applysucceed) {
  75. $expiration = empty($medal['expiration'])? 0 : TIMESTAMP + $medal['expiration'] * 86400;
  76. if($medal['type'] == 1) {
  77. if($medal['price']) {
  78. $medal['credit'] = $medal['credit'] ? $medal['credit'] : $_G['setting']['creditstransextra'][3];
  79. if($medal['price'] > getuserprofile('extcredits'.$medal['credit'])) {
  80. showmessage('medal_not_get_credit', '', array('credit' => $_G['setting']['extcredits'][$medal[credit]][title]));
  81. }
  82. updatemembercount($_G['uid'], array($medal['credit'] => -$medal['price']), true, 'BME', $medal['medalid']);
  83. }
  84. $memberfieldforum = C::t('common_member_field_forum')->fetch($_G['uid']);
  85. $usermedal = $memberfieldforum;
  86. unset($memberfieldforum);
  87. $medal['medalid'] = $medal['medalid'].(empty($expiration) ? '' : '|'.$expiration);
  88. $medalnew = $usermedal['medals'] ? $usermedal['medals']."\t".$medal['medalid'] : $medal['medalid'];
  89. C::t('common_member_field_forum')->update($_G['uid'], array('medals' => $medalnew));
  90. C::t('common_member_medal')->insert(array('uid' => $_G['uid'], 'medalid' => $medal['medalid']), 0, 1);
  91. $medalmessage = 'medal_get_succeed';
  92. } else {
  93. if(C::t('forum_medallog')->count_by_verify_medalid($_G['uid'], $medal['medalid'])) {
  94. showmessage('medal_apply_existence', 'home.php?mod=medal');
  95. }
  96. $medalmessage = 'medal_apply_succeed';
  97. manage_addnotify('verifymedal');
  98. }
  99. C::t('forum_medallog')->insert(array(
  100. 'uid' => $_G['uid'],
  101. 'medalid' => $medalid,
  102. 'type' => $medal['type'],
  103. 'dateline' => TIMESTAMP,
  104. 'expiration' => $expiration,
  105. 'status' => ($expiration ? 1 : 0),
  106. ));
  107. showmessage($medalmessage, 'home.php?mod=medal', array('medalname' => $medal['name']));
  108. }
  109. } elseif($_GET['action'] == 'log') {
  110. include libfile('function/forum');
  111. foreach(C::t('forum_medal')->fetch_all_data(1) as $medal) {
  112. $medallist[$medal['medalid']] = $medal;
  113. }
  114. $memberfieldforum = C::t('common_member_field_forum')->fetch($_G['uid']);
  115. $membermedal = $memberfieldforum['medals'] ? explode("\t", $memberfieldforum['medals']) : array();
  116. foreach($membermedal as $k => $medal) {
  117. if(!in_array($medal, array_keys($medallist))) {
  118. unset($membermedal[$k]);
  119. }
  120. }
  121. $medalcount = count($membermedal);
  122. if(!empty($membermedal)) {
  123. $mymedal = array();
  124. foreach($membermedal as $medalid) {
  125. if($medalpos = strpos($medalid, '|')) {
  126. $medalid = substr($medalid, 0, $medalpos);
  127. }
  128. $mymedal['name'] = $_G['cache']['medals'][$medalid]['name'];
  129. $mymedal['image'] = $medallist[$medalid]['image'];
  130. $mymedals[] = $mymedal;
  131. }
  132. }
  133. $medallognum = C::t('forum_medallog')->count_by_uid($_G['uid']);
  134. $multipage = multi($medallognum, $tpp, $page, "home.php?mod=medal&action=log");
  135. foreach(C::t('forum_medallog')->fetch_all_by_uid($_G['uid'], $start_limit, $tpp) as $medallog) {
  136. $medallog['name'] = $_G['cache']['medals'][$medallog['medalid']]['name'];
  137. $medallog['dateline'] = dgmdate($medallog['dateline']);
  138. $medallog['expiration'] = !empty($medallog['expiration']) ? dgmdate($medallog['expiration']) : '';
  139. $medallogs[] = $medallog;
  140. }
  141. } else {
  142. showmessage('undefined_action');
  143. }
  144. $navtitle = lang('core', 'title_medals_list');
  145. include template('home/space_medal');
  146. ?>