admincp_credits.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  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: admincp_credits.php 32527 2013-02-05 09:56:25Z monkey $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. cpheader();
  12. $operation = $operation ? $operation : 'list';
  13. if($operation == 'list') {
  14. $rules = array();
  15. foreach(C::t('common_credit_rule')->fetch_all_rule() as $value) {
  16. $rules[$value['rid']] = $value;
  17. }
  18. if(!submitcheck('rulesubmit')) {
  19. $anchor = in_array($_GET['anchor'], array('base', 'policytable', 'edit')) ? $_GET['anchor'] : 'base';
  20. $current = array($anchor => 1);
  21. showsubmenu('setting_credits', array(
  22. array('setting_credits_base', 'setting&operation=credits&anchor=base', $current['base']),
  23. array('setting_credits_policy', 'credits&operation=list&anchor=policytable', $current['policytable']),
  24. ));
  25. showformheader("credits&operation=list");
  26. showtableheader('setting_credits_policy', 'nobottom', 'id="policytable"'.($anchor != 'policytable' ? ' style="display: none"' : ''));
  27. echo '<tr class="header"><th class="td28 nowrap">'.$lang['setting_credits_policy_name'].'</th><th class="td28 nowrap">'.$lang['setting_credits_policy_cycletype'].'</th><th class="td28 nowrap">'.$lang['setting_credits_policy_rewardnum'].'</th>';
  28. for($i = 1; $i <= 8; $i++) {
  29. if($_G['setting']['extcredits'][$i]) {
  30. echo "<th class=\"td25\" id=\"policy$i\" ".($_G['setting']['extcredits'][$i] ? '' : 'disabled')." valign=\"top\">".$_G['setting']['extcredits'][$i]['title']."</th>";
  31. }
  32. }
  33. echo '<th class="td25">&nbsp;</th></tr>';
  34. foreach($rules as $rid => $rule) {
  35. $tdarr = array($rule['rulename'], $rule['rid'] ? $lang['setting_credits_policy_cycletype_'.$rule['cycletype']] : 'N/A', $rule['rid'] && $rule['cycletype'] ? $rule['rewardnum'] : 'N/A');
  36. for($i = 1; $i <= 8; $i++) {
  37. if($_G['setting']['extcredits'][$i]) {
  38. array_push($tdarr, '<input name="credit['.$rule['rid'].']['.$i.']" class="txt" value="'.$rule['extcredits'.$i].'" />');
  39. }
  40. }
  41. $opstr = '<a href="'.ADMINSCRIPT.'?action=credits&operation=edit&rid='.$rule['rid'].'" title="" class="act">'.$lang['edit'].'</a>';
  42. array_push($tdarr, $opstr);
  43. showtablerow('', array_fill(0, count($_G['setting']['extcredits']) + 4, 'class="td25"'), $tdarr);
  44. }
  45. showtablerow('', 'class="lineheight" colspan="9"', $lang['setting_credits_policy_comment']);
  46. showtablefooter();
  47. showtableheader('', 'nobottom', '');
  48. showsetting('setting_credits_policy_mobile', 'settingnew[creditspolicymobile]', $_G['setting']['creditspolicymobile'], 'text');
  49. showsubmit('rulesubmit');
  50. showtablefooter();
  51. showformfooter();
  52. } else {
  53. foreach($_GET['credit'] as $rid => $credits) {
  54. $rule = array();
  55. for($i = 1; $i <= 8; $i++) {
  56. if($_G['setting']['extcredits'][$i]) {
  57. $rule['extcredits'.$i] = $credits[$i];
  58. }
  59. }
  60. C::t('common_credit_rule')->update($rid, $rule);
  61. }
  62. $settings = array(
  63. 'creditspolicymobile' => $_GET['settingnew']['creditspolicymobile'],
  64. );
  65. C::t('common_setting')->update_batch($settings);
  66. updatecache(array('setting', 'creditrule'));
  67. cpmsg('credits_update_succeed', 'action=credits&operation=list&anchor=policytable', 'succeed');
  68. }
  69. } elseif($operation == 'edit') {
  70. $rid = intval($_GET['rid']);
  71. $fid = intval($_GET['fid']);
  72. if($rid) {
  73. $globalrule = $ruleinfo = C::t('common_credit_rule')->fetch($rid);
  74. if($fid) {
  75. $query = C::t('forum_forum')->fetch_info_by_fid($fid);
  76. $forumname = $query['name'];
  77. $policy = $query['creditspolicy'] ? dunserialize($query['creditspolicy']) : array();
  78. if(isset($policy[$ruleinfo['action']])) {
  79. $ruleinfo = $policy[$ruleinfo['action']];
  80. }
  81. }
  82. }
  83. if(!submitcheck('rulesubmit')) {
  84. if(!$rid) {
  85. $ruleinfo['rulename'] = $lang['credits_edit_lowerlimit'];
  86. }
  87. if(!$fid) {
  88. shownav('global', 'credits_edit');
  89. showsubmenu("$lang[credits_edit] - $ruleinfo[rulename]");
  90. } else {
  91. if(!in_array($fid, explode(',', $globalrule['fids']))) {
  92. for($i = 1; $i <= 8; $i++) {
  93. $ruleinfo['extcredits'.$i] = '';
  94. }
  95. }
  96. shownav('forum', 'forums_edit');
  97. showsubmenu("$forumname - $lang[credits_edit] - $ruleinfo[rulename]");
  98. showtips('forums_edit_tips');
  99. }
  100. showformheader("credits&operation=edit&rid=$rid&".($fid ? "fid=$fid" : ''));
  101. $extra = '';
  102. if($fid) {
  103. $actives = $checkarr = array();
  104. $usecustom = in_array($fid, explode(',', $globalrule['fids'])) ? 1 : 0;
  105. $actives[$usecustom] = ' class="checked"';
  106. $checkarr[$usecustom] = ' checked';
  107. showtableheader('', 'nobottom');
  108. $str = <<<EOF
  109. <ul onmouseover="altStyle(this);">
  110. <li$actives[1]><input type="radio" onclick="$('edit').style.display = '';" $checkarr[1] value="1" name="rule[usecustom]" class="radio">&nbsp;$lang[yes]</li>
  111. <li$actives[0]><input type="radio" onclick="$('edit').style.display = 'none';" $checkarr[0] value="0" name="rule[usecustom]" class="radio">&nbsp;$lang[no]</li>
  112. </ul>
  113. EOF;
  114. showsetting('setting_credits_use_custom_credit', 'usecustom', $usecustom, $str);
  115. showtablefooter();
  116. $extra = !$usecustom ? ' style="display:none;" ' : '';
  117. }
  118. showtips('setting_credits_policy_comment');
  119. showtableheader('credits_edit', 'nobottom', 'id="edit"'.$extra);
  120. if($rid) {
  121. showsetting('setting_credits_policy_cycletype', array('rule[cycletype]', array(
  122. array(0, $lang['setting_credits_policy_cycletype_0'], array('cycletimetd' => 'none', 'rewardnumtd' => 'none')),
  123. array(1, $lang['setting_credits_policy_cycletype_1'], array('cycletimetd' => 'none', 'rewardnumtd' => '')),
  124. array(2, $lang['setting_credits_policy_cycletype_2'], array('cycletimetd' => '', 'rewardnumtd' => '')),
  125. array(3, $lang['setting_credits_policy_cycletype_3'], array('cycletimetd' => '', 'rewardnumtd' => '')),
  126. array(4, $lang['setting_credits_policy_cycletype_4'], array('cycletimetd' => 'none', 'rewardnumtd' => '')),
  127. )), $ruleinfo['cycletype'], 'mradio');
  128. showtagheader('tbody', 'cycletimetd', in_array($ruleinfo['cycletype'], array(2, 3)), 'sub');
  129. showsetting('credits_edit_cycletime', 'rule[cycletime]', $ruleinfo['cycletime'], 'text');
  130. showtagfooter('tbody');
  131. showtagheader('tbody', 'rewardnumtd', in_array($ruleinfo['cycletype'], array(1, 2, 3, 4)), 'sub');
  132. showsetting('credits_edit_rewardnum', 'rule[rewardnum]', $ruleinfo['rewardnum'], 'text');
  133. showtagfooter('tbody');
  134. }
  135. for($i = 1; $i <= 8; $i++) {
  136. if($_G['setting']['extcredits'][$i]) {
  137. if($rid) {
  138. showsetting("extcredits{$i}(".$_G['setting']['extcredits'][$i]['title'].')', "rule[extcredits{$i}]", $ruleinfo['extcredits'.$i], 'text', '', 0, $fid ? '('.$lang['credits_edit_globalrule'].':'.$globalrule['extcredits'.$i].')' : '');
  139. } else {
  140. showsetting("extcredits{$i}(".$_G['setting']['extcredits'][$i]['title'].')', "rule[extcredits{$i}]", $_G['setting']['creditspolicy']['lowerlimit'][$i], 'text');
  141. }
  142. }
  143. }
  144. showtablefooter();
  145. showtableheader('', 'nobottom');
  146. showsubmit('rulesubmit');
  147. showtablefooter();
  148. showformfooter();
  149. } else {
  150. $rid = $_GET['rid'];
  151. $rule = $_GET['rule'];
  152. if($rid) {
  153. if(!$rule['cycletype']) {
  154. $rule['cycletime'] = 0;
  155. $rule['rewardnum'] = 1;
  156. }
  157. $havecredit = $rule['usecustom'] ? true : false;
  158. for($i = 1; $i <= 8; $i++) {
  159. if(!$_G['setting']['extcredits'][$i]) {
  160. $rule['extcredits'.$i] = 0;
  161. }
  162. }
  163. foreach($rule as $key => $val) {
  164. $rule[$key] = intval($val);
  165. }
  166. if($fid) {
  167. $fids = $globalrule['fids'] ? explode(',', $globalrule['fids']) : array();
  168. if($havecredit) {
  169. $rule['rid'] = $rid;
  170. $rule['fid'] = $fid;
  171. $rule['rulename'] = $ruleinfo['rulename'];
  172. $rule['action'] = $ruleinfo['action'];
  173. $policy[$ruleinfo['action']] = $rule;
  174. if(!in_array($fid, $fids)) {
  175. $fids[] = $fid;
  176. }
  177. } else {
  178. if($rule['cycletype'] != 0 && ($rule['cycletype'] == 4 && !$rule['rewardnum'])) {
  179. require_once DISCUZ_ROOT.'./source/class/class_credit.php';
  180. credit::deletelogbyfid($rid, $fid);
  181. }
  182. unset($policy[$ruleinfo['action']]);
  183. if(in_array($fid, $fids)) {
  184. unset($fids[array_search($fid, $fids)]);
  185. }
  186. }
  187. C::t('forum_forumfield')->update($fid, array('creditspolicy' => serialize($policy)));
  188. C::t('common_credit_rule')->update($rid, array('fids' => implode(',', $fids)));
  189. updatecache('creditrule');
  190. cpmsg('credits_update_succeed', 'action=forums&operation=edit&anchor=credits&fid='.$fid, 'succeed');
  191. } else {
  192. C::t('common_credit_rule')->update($rid, $rule);
  193. }
  194. updatecache('creditrule');
  195. } else {
  196. $lowerlimit['creditspolicy']['lowerlimit'] = array();
  197. for($i = 1; $i <= 8; $i++) {
  198. if($_G['setting']['extcredits'][$i]) {
  199. $lowerlimit['creditspolicy']['lowerlimit'][$i] = (float)$rule['extcredits'.$i];
  200. }
  201. }
  202. C::t('common_setting')->update('creditspolicy', $lowerlimit['creditspolicy']);
  203. updatecache(array('setting', 'creditrule'));
  204. }
  205. cpmsg('credits_update_succeed', 'action=credits&operation=list&anchor=policytable', 'succeed');
  206. }
  207. }
  208. ?>