admincp_verify.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  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_verify.php 33455 2013-06-19 03:52:01Z andyzheng $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. cpheader();
  12. $operation = $operation ? $operation : '';
  13. $anchor = in_array($_GET['anchor'], array('base', 'edit', 'verify', 'verify1', 'verify2', 'verify3', 'verify4', 'verify5', 'verify6', 'verify7', 'authstr', 'refusal', 'pass')) ? $_GET['anchor'] : 'base';
  14. $current = array($anchor => 1);
  15. $navmenu = array();
  16. if($operation == 'verify') {
  17. loadcache('profilesetting');
  18. $vid = intval($_GET['do']);
  19. $anchor = in_array($_GET['anchor'], array('authstr', 'refusal', 'pass', 'add')) ? $_GET['anchor'] : 'authstr';
  20. $current = array($anchor => 1);
  21. if($anchor == 'add') {
  22. if(!submitcheck('addverifysubmit') || $vid < 0 || $vid > 7) {
  23. $navmenu[0] = array('members_verify_nav_authstr', 'verify&operation=verify&anchor=authstr&do='.$vid, 0);
  24. $navmenu[1] = array('members_verify_nav_refusal', 'verify&operation=verify&anchor=refusal&do='.$vid, 0);
  25. $navmenu[2] = array('members_verify_nav_pass', 'verify&operation=verify&anchor=pass&do='.$vid, 0);
  26. $navmenu[3] = array('members_verify_nav_add', 'verify&operation=verify&anchor=add&do='.$vid, 1);
  27. $vid ? shownav('user', 'nav_members_verify', $_G['setting']['verify'][$vid]['title']) : shownav('user', $_G['setting']['verify'][$vid]['title']);
  28. showsubmenu($lang['members_verify_add'].'-'.$_G['setting']['verify'][$vid]['title'], $navmenu);
  29. showformheader("verify&operation=verify&anchor=add&do=$vid", 'enctype');
  30. showtableheader();
  31. showsetting('members_verify_userlist', 'users', $member['users'], 'textarea');
  32. showsubmit('addverifysubmit');
  33. showtablefooter();
  34. showformfooter();
  35. } else {
  36. $userlist = explode("\r\n", $_GET['users']);
  37. $insert = array();
  38. $haveuser = false;
  39. $members = C::t('common_member')->fetch_all_by_username($userlist);
  40. $vuids = array();
  41. foreach($members as $value) {
  42. $vuids[$value['uid']] = $value['uid'];
  43. }
  44. $verifyusers = C::t('common_member_verify')->fetch_all($vuids);
  45. foreach($members as $member) {
  46. if(isset($verifyusers[$member['uid']])) {
  47. C::t('common_member_verify')->update($member['uid'], array("verify$vid" => 1));
  48. } else {
  49. C::t('common_member_verify')->insert(array('uid'=>$member['uid'], "verify$vid" => 1));
  50. }
  51. $haveuser = true;
  52. }
  53. if($haveuser) {
  54. cpmsg('members_verify_add_user_succeed', 'action=verify&operation=verify&do='.$vid.'&anchor=pass', 'succeed');
  55. } else {
  56. cpmsg_error('members_verify_add_user_failure', 'action=verify&operation=add&vid='.$vid);
  57. }
  58. }
  59. } else {
  60. if($anchor != 'pass') {
  61. $_GET['verifytype'] = $vid;
  62. } else {
  63. $_GET['verify'.$vid] = 1;
  64. $_GET['orderby'] = 'uid';
  65. }
  66. require_once libfile('function/profile');
  67. if(!submitcheck('verifysubmit', true)) {
  68. $menutitle = $vid ? $_G['setting']['verify'][$vid]['title'] : $lang['members_verify_profile'];
  69. $navmenu[0] = array('members_verify_nav_authstr', 'verify&operation=verify&anchor=authstr&do='.$vid, $current['authstr']);
  70. $navmenu[1] = array('members_verify_nav_refusal', 'verify&operation=verify&anchor=refusal&do='.$vid, $current['refusal']);
  71. if($vid) {
  72. $navmenu[2] = array('members_verify_nav_pass', 'verify&operation=verify&anchor=pass&do='.$vid, $current['pass']);
  73. $navmenu[3] = array('members_verify_nav_add', 'verify&operation=verify&anchor=add&do='.$vid, $current['add']);
  74. }
  75. $vid ? shownav('user', 'nav_members_verify', $menutitle) : shownav('user', $menutitle);
  76. showsubmenu($lang['members_verify_verify'].($vid ? '-'.$menutitle : ''), $navmenu);
  77. $searchlang = array();
  78. $keys = array('search', 'likesupport', 'resultsort', 'defaultsort', 'orderdesc', 'orderasc', 'perpage_10', 'perpage_20', 'perpage_50', 'perpage_100',
  79. 'members_verify_dateline', 'members_verify_uid', 'members_verify_username', 'members_verify_fieldid');
  80. foreach ($keys as $key) {
  81. $searchlang[$key] = cplang($key);
  82. }
  83. $orderby = isset($_GET['orderby']) ? $_GET['orderby'] : '';
  84. $datehtml = $orderbyhtml = '';
  85. if($anchor != 'pass') {
  86. $datehtml = "<tr><th>$searchlang[members_verify_dateline]</th><td colspan=\"3\">
  87. <input type=\"text\" name=\"dateline1\" value=\"$_GET[dateline1]\" size=\"10\" onclick=\"showcalendar(event, this)\"> ~
  88. <input type=\"text\" name=\"dateline2\" value=\"$_GET[dateline2]\" size=\"10\" onclick=\"showcalendar(event, this)\"> (YYYY-MM-DD)
  89. </td></tr>";
  90. $orderbyhtml = "<select name=\"orderby\"><option value=\"dateline\"$orderby[dateline]>$searchlang[members_verify_dateline]</option> </select>";
  91. } else {
  92. $orderbyhtml = "<select name=\"orderby\"><option value=\"uid\"$orderby[dateline]>$searchlang[members_verify_uid]</option> </select>";
  93. }
  94. $ordersc = isset($_GET['ordersc']) ? $_GET['ordersc'] : '';
  95. $perpages = isset($_GET['perpages']) ? $_GET['perpages'] : '';
  96. $adminscript = ADMINSCRIPT;
  97. $expertsearch = $vid ? '&nbsp;<a href="'.ADMINSCRIPT.'?action=members&operation=search&more=1&vid='.$vid.'" target="_top">'.cplang('search_higher').'</a>' : '';
  98. echo <<<EOF
  99. <form method="get" autocomplete="off" action="$adminscript">
  100. <div class="block style4">
  101. <table cellspacing="3" cellpadding="3">
  102. <tr>
  103. <th>$searchlang[members_verify_username]* </th><td><input type="text" name="username" value="$_GET[username]"></td>
  104. <th>$searchlang[members_verify_uid]</th><td><input type="text" name="uid" value="$_GET[uid]"> *$searchlang[likesupport]</td>
  105. </tr>
  106. $datehtml
  107. <tr>
  108. <th>$searchlang[resultsort]</th>
  109. <td colspan="3">
  110. $orderbyhtml
  111. <select name="ordersc">
  112. <option value="desc"$ordersc[desc]>$searchlang[orderdesc]</option>
  113. <option value="asc"$ordersc[asc]>$searchlang[orderasc]</option>
  114. </select>
  115. <select name="perpage">
  116. <option value="10"$perpages[10]>$searchlang[perpage_10]</option>
  117. <option value="20"$perpages[20]>$searchlang[perpage_20]</option>
  118. <option value="50"$perpages[50]>$searchlang[perpage_50]</option>
  119. <option value="100"$perpages[100]>$searchlang[perpage_100]</option>
  120. </select>
  121. <input type="hidden" name="action" value="verify">
  122. <input type="hidden" name="operation" value="verify">
  123. <input type="hidden" name="do" value="$vid">
  124. <input type="hidden" name="anchor" value="$anchor">
  125. <input type="submit" name="searchsubmit" value="$searchlang[search]" class="btn">$expertsearch
  126. </td>
  127. </tr>
  128. </table>
  129. </div>
  130. </form>
  131. <iframe id="frame_profile" name="frame_profile" style="display: none"></iframe>
  132. <script type="text/javascript" src="static/js/calendar.js"></script>
  133. <script type="text/javascript">
  134. function showreason(vid, flag) {
  135. var reasonobj = $('reason_'+vid);
  136. if(reasonobj) {
  137. reasonobj.style.display = flag ? '' : 'none';
  138. }
  139. if(!flag && $('verifyitem_' + vid) != null) {
  140. var checkboxs = $('verifyitem_' + vid).getElementsByTagName('input');
  141. for(var i in checkboxs) {
  142. if(checkboxs[i].type == 'checkbox') {
  143. checkboxs[i].checked = '';
  144. }
  145. }
  146. }
  147. }
  148. function mod_setbg(vid, value) {
  149. $('mod_' + vid + '_row').className = 'mod_' + value;
  150. }
  151. function mod_setbg_all(value) {
  152. checkAll('option', $('cpform'), value);
  153. var trs = $('cpform').getElementsByTagName('TR');
  154. for(var i in trs) {
  155. if(trs[i].id && trs[i].id.substr(0, 4) == 'mod_') {
  156. trs[i].className = 'mod_' + value;
  157. showreason(trs[i].getAttribute('verifyid'), value == 'refusal' ? 1 : 0);
  158. }
  159. }
  160. }
  161. function mod_cancel_all() {
  162. var inputs = $('cpform').getElementsByTagName('input');
  163. for(var i in inputs) {
  164. if(inputs[i].type == 'radio') {
  165. inputs[i].checked = '';
  166. }
  167. }
  168. var trs = $('cpform').getElementsByTagName('TR');
  169. for(var i in trs) {
  170. if(trs[i].id && trs[i].id.match(/^mod_(\d+)_row$/)) {
  171. trs[i].className = "mod_cancel";
  172. showreason(trs[i].getAttribute('verifyid'), 0)
  173. }
  174. }
  175. }
  176. function singleverify(vid) {
  177. var formobj = $('cpform');
  178. var oldaction = formobj.action;
  179. formobj.action = oldaction+'&frame=no&singleverify='+vid;
  180. formobj.target = "frame_profile";
  181. formobj.submit();
  182. formobj.action = oldaction;
  183. formobj.target = "";
  184. }
  185. </script>
  186. EOF;
  187. $mpurl = ADMINSCRIPT.'?action=verify&operation=verify&anchor='.$anchor.'&do='.$vid;
  188. if($anchor == 'refusal') {
  189. $_GET['flag'] = -1;
  190. } elseif ($anchor == 'authstr') {
  191. $_GET['flag'] = 0;
  192. }
  193. $intkeys = array('uid', 'verifytype', 'flag', 'verify1', 'verify2', 'verify3', 'verify4', 'verify5', 'verify6', 'verify7');
  194. $strkeys = array();
  195. $randkeys = array();
  196. $likekeys = array('username');
  197. $results = getwheres($intkeys, $strkeys, $randkeys, $likekeys, 'v.');
  198. foreach($likekeys as $k) {
  199. $_GET[$k] = dhtmlspecialchars($_GET[$k]);
  200. }
  201. $mpurl .= '&'.implode('&', $results['urls']);
  202. $wherearr = $results['wherearr'];
  203. if($_GET['dateline1']){
  204. $wherearr[] = "v.dateline >= '".strtotime($_GET['dateline1'])."'";
  205. $mpurl .= '&dateline1='.$_GET['dateline1'];
  206. }
  207. if($_GET['dateline2']){
  208. $wherearr[] = "v.dateline <= '".strtotime($_GET['dateline2'])."'";
  209. $mpurl .= '&dateline2='.$_GET['dateline2'];
  210. }
  211. $wheresql = empty($wherearr)?'1':implode(' AND ', $wherearr);
  212. $orders = getorders(array('dateline', 'uid'), 'dateline', 'v.');
  213. $ordersql = $orders['sql'];
  214. if($orders['urls']) $mpurl .= '&'.implode('&', $orders['urls']);
  215. $orderby = array($_GET['orderby']=>' selected');
  216. $ordersc = array($_GET['ordersc']=>' selected');
  217. $orders = in_array($_G['orderby'], array('dateline', 'uid')) ? $_G['orderby'] : 'dateline';
  218. $ordersc = in_array(strtolower($_GET['ordersc']), array('asc', 'desc')) ? $_GET['ordersc'] : 'desc';
  219. $perpage = empty($_GET['perpage']) ? 0 : intval($_GET['perpage']);
  220. if(!in_array($perpage, array(10, 20,50,100))) $perpage = 10;
  221. $perpages = array($perpage=>' selected');
  222. $mpurl .= '&perpage='.$perpage;
  223. $page = empty($_GET['page'])?1:intval($_GET['page']);
  224. if($page<1) $page = 1;
  225. $start = ($page-1)*$perpage;
  226. $multipage = '';
  227. showformheader("verify&operation=verify&do=".$vid.'&anchor='.$anchor);
  228. echo "<script>disallowfloat = '{$_G[setting][disallowfloat]}';</script><input type=\"hidden\" name=\"verifysubmit\" value=\"trun\" />";
  229. showtableheader('members_verify_manage', 'fixpadding');
  230. if($anchor != 'pass') {
  231. $cssarr = array('width="90"', 'width="120"', 'width="120"', '');
  232. $titlearr = array($lang['members_verify_username'], $lang['members_verify_type'], $lang['members_verify_dateline'], $lang['members_verify_info']);
  233. showtablerow('class="header"', $cssarr, $titlearr);
  234. $count = C::t('common_member_verify_info')->count_by_search($_GET['uid'], $vid, $_GET['flag'], $_GET['username'], strtotime($_GET['dateline1']), strtotime($_GET['dateline2']));
  235. } else {
  236. $cssarr = array('width="80"', 'width="90"', 'width="120"', '');
  237. $titlearr = array('', $lang['members_verify_username'], $lang['members_verify_type'], $lang['members_verify_info']);
  238. showtablerow('class="header"', $cssarr, $titlearr);
  239. $wheresql = (!empty($_GET['username']) ? str_replace('v.username', 'm.username', $wheresql) : $wheresql) . ' AND v.uid=m.uid ';
  240. $count = C::t('common_member_verify')->count_by_search($_GET['uid'], $vid, $_GET['username']);
  241. }
  242. if($count) {
  243. if($anchor != 'pass') {
  244. $verifyusers = C::t('common_member_verify_info')->fetch_all_search($_GET['uid'], $vid, $_GET['flag'], $_GET['username'], strtotime($_GET['dateline1']), strtotime($_GET['dateline2']), $orders, $start, $perpage, $ordersc);
  245. } else {
  246. $verifyusers = C::t('common_member_verify')->fetch_all_search($_GET['uid'], $vid, $_GET['username'], 'v.uid', $start, $perpage, $ordersc);
  247. $verifyuids = array_keys($verifyusers);
  248. $profiles = C::t('common_member_profile')->fetch_all($verifyuids, false, 0);
  249. }
  250. foreach($verifyusers as $uid => $value) {
  251. if($anchor == 'pass') {
  252. $value = array_merge($value, $profiles[$uid]);
  253. }
  254. $value['username'] = '<a href="home.php?mod=space&uid='.$value['uid'].'&do=profile" target="_blank">'.avatar($value['uid'], "small").'<br/>'.$value['username'].'</a>';
  255. if($anchor != 'pass') {
  256. $fields = $anchor != 'pass' ? dunserialize($value['field']) : $_G['setting']['verify'][$vid]['field'];
  257. $verifytype = $value['verifytype'] ? $_G['setting']['verify'][$value['verifytype']]['title'] : $lang['members_verify_profile'];
  258. $fieldstr = '<table width="96%">';
  259. $i = 0;
  260. $fieldstr .= '<tr>'.($anchor == 'authstr' ? '<td width="26">'.$lang[members_verify_refusal].'</td>' : '').'<td width="100">'.$lang['members_verify_fieldid'].'</td><td>'.$lang['members_verify_newvalue'].'</td></tr><tbody id="verifyitem_'.$value[vid].'">';
  261. $i++;
  262. foreach($fields as $key => $field) {
  263. if(in_array($key, array('constellation', 'zodiac', 'birthyear', 'birthmonth', 'birthprovince', 'birthdist', 'birthcommunity', 'resideprovince', 'residedist', 'residecommunity'))) {
  264. continue;
  265. }
  266. if($_G['cache']['profilesetting'][$key]['formtype'] == 'file') {
  267. if($field) {
  268. $field = '<a href="'.(getglobal('setting/attachurl').'./profile/'.$field).'" target="_blank"><img src="'.(getglobal('setting/attachurl').'./profile/'.$field).'" class="verifyimg" /></a>';
  269. } else {
  270. $field = cplang('members_verify_pic_removed');
  271. }
  272. } elseif(in_array($key, array('gender', 'birthday', 'birthcity', 'residecity'))) {
  273. $field = profile_show($key, $fields);
  274. }
  275. $fieldstr .= '<tr>'.($anchor == 'authstr' ? '<td><input type="checkbox" name="refusal['.$value['vid'].']['.$key.']" value="'.$key.'" onclick="$(\'refusal'.$value['vid'].'\').click();" /></td>' : '').'<td>'.$_G['cache']['profilesetting'][$key]['title'].':</td><td>'.$field.'</td></tr>';
  276. $i++;
  277. }
  278. $opstr = "";
  279. if($anchor == 'authstr') {
  280. $opstr .= "<label><input class=\"radio\" type=\"radio\" name=\"verify[$value[vid]]\" value=\"validate\" onclick=\"mod_setbg($value[vid], 'validate');showreason($value[vid], 0);\">$lang[validate]</label>&nbsp;<label><input class=\"radio\" type=\"radio\" name=\"verify[$value[vid]]\" value=\"refusal\" id=\"refusal$value[vid]\" onclick=\"mod_setbg($value[vid], 'refusal');showreason($value[vid], 1);\">$lang[members_verify_refusal]</label>";
  281. } elseif ($anchor == 'refusal') {
  282. $opstr .= "<label><input class=\"radio\" type=\"radio\" name=\"verify[$value[vid]]\" value=\"validate\" onclick=\"mod_setbg($value[vid], 'validate');\">$lang[validate]</label>";
  283. }
  284. $fieldstr .= "</tbody><tr><td colspan=\"5\">$opstr &nbsp;<span id=\"reason_$value[vid]\" style=\"display: none;\">$lang[moderate_reasonpm]&nbsp; <input type=\"text\" class=\"txt\" name=\"reason[$value[vid]]\" style=\"margin: 0px;\"></span>&nbsp;<input type=\"button\" value=\"$lang[moderate]\" name=\"singleverifysubmit\" class=\"btn\" onclick=\"singleverify($value[vid]);\"></td></tr></table>";
  285. $valuearr = array($value['username'], $verifytype, dgmdate($value['dateline'], 'dt'), $fieldstr);
  286. showtablerow("id=\"mod_$value[vid]_row\" verifyid=\"$value[vid]\"", $cssarr, $valuearr);
  287. } else {
  288. $fields = $_G['setting']['verify'][$vid]['field'];
  289. $verifytype = $vid ? $_G['setting']['verify'][$vid]['title'] : $lang['members_verify_profile'];
  290. $fieldstr = '<table width="96%">';
  291. $fieldstr .= '<tr><td width="100">'.$lang['members_verify_fieldid'].'</td><td>'.$lang['members_verify_newvalue'].'</td></tr>';
  292. foreach($fields as $key => $field) {
  293. if(!in_array($key, array('constellation', 'zodiac', 'birthyear', 'birthmonth', 'birthprovince', 'birthdist', 'birthcommunity', 'resideprovince', 'residedist', 'residecommunity'))) {
  294. if(in_array($key, array('gender', 'birthday', 'birthcity', 'residecity'))) {
  295. $value[$field] = profile_show($key, $value);
  296. }
  297. if($_G['cache']['profilesetting'][$key]['formtype'] == 'file') {
  298. if($value[$field]) {
  299. $value[$field] = '<a href="'.(getglobal('setting/attachurl').'./profile/'.$value[$field]).'" target="_blank"><img src="'.(getglobal('setting/attachurl').'./profile/'.$value[$field]).'" class="verifyimg" /></a>';
  300. } else {
  301. $value[$field] = cplang('members_verify_pic_removed');
  302. }
  303. }
  304. $fieldstr .= '<tr><td width="100">'.$_G['cache']['profilesetting'][$key]['title'].':</td><td>'.$value[$field].'</td></tr>';
  305. }
  306. }
  307. $fieldstr .= "</table>";
  308. $opstr = "<ul class=\"nofloat\"><li><label><input class=\"radio\" type=\"radio\" name=\"verify[$value[uid]]\" value=\"export\" onclick=\"mod_setbg($value[uid], 'validate');\">$lang[export]</label></li><li><label><input class=\"radio\" type=\"radio\" name=\"verify[$value[uid]]\" value=\"refusal\" onclick=\"mod_setbg($value[uid], 'refusal');\">$lang[members_verify_refusal]</label></li></ul>";
  309. $valuearr = array($opstr, $value['username'], $verifytype, $fieldstr);
  310. showtablerow("id=\"mod_$value[uid]_row\"", $cssarr, $valuearr);
  311. }
  312. }
  313. $multipage = multi($count, $perpage, $page, $mpurl);
  314. if($anchor != 'pass') {
  315. showsubmit('batchverifysubmit', 'submit', '', '<a href="#all" onclick="mod_setbg_all(\'validate\')">'.cplang('moderate_all_validate').'</a>'. ($anchor == 'authstr' ? ' &nbsp;<a href="#all" onclick="mod_setbg_all(\'refusal\')">'.cplang('moderate_refusal_all').'</a>' : '').' &nbsp;<a href="#all" onclick="mod_cancel_all();">'.cplang('moderate_cancel_all').'</a>', $multipage, false);
  316. } else {
  317. showsubmit('batchverifysubmit', 'submit', '', '<a href="#all" onclick="mod_setbg_all(\'export\')">'.cplang('moderate_export_all').'</a> &nbsp;<a href="#all" onclick="mod_setbg_all(\'refusal\')">'.cplang('moderate_refusal_all').'</a> &nbsp;<a href="#all" onclick="mod_cancel_all();">'.cplang('moderate_cancel_all').'</a> &nbsp;|&nbsp;<a href="'.ADMINSCRIPT.'?action=verify&operation=verify&do=1&anchor=pass&verifysubmit=true">'.cplang('moderate_export_getall').'</a>', $multipage, false);
  318. }
  319. } else {
  320. showtablerow('', 'colspan="'.count($cssarr).'"', '<strong>'.cplang('moderate_nodata').'</strong>');
  321. }
  322. showtablefooter();
  323. showformfooter();
  324. } else {
  325. if($anchor == 'pass') {
  326. $verifyuids = array();
  327. $note_values = array(
  328. 'verify' => $vid ? '<a href="home.php?mod=spacecp&ac=profile&op=verify&vid='.$vid.'" target="_blank">'.$_G['setting']['verify'][$vid]['title'].'</a>' : ''
  329. );
  330. foreach($_GET['verify'] as $uid => $type) {
  331. if($type == 'export') {
  332. $verifyuids['export'][] = $uid;
  333. } elseif($type == 'refusal') {
  334. $verifyuids['refusal'][] = $uid;
  335. notification_add($uid, 'verify', 'profile_verify_pass_refusal', $note_values, 1);
  336. }
  337. }
  338. if(is_array($verifyuids['refusal']) && !empty($verifyuids['refusal'])) {
  339. C::t('common_member_verify')->update($verifyuids['refusal'], array("verify$vid" => '0'));
  340. }
  341. if(is_array($verifyuids['export']) && !empty($verifyuids['export']) || empty($verifyuids['refusal'])) {
  342. $uids = array();
  343. if(is_array($verifyuids['export']) && !empty($verifyuids['export'])) {
  344. $uids = $verifyuids['export'];
  345. }
  346. $fields = $_G['setting']['verify'][$vid]['field'];
  347. $fields = array_reverse($fields);
  348. $fields['username'] = 'username';
  349. $fields = array_reverse($fields);
  350. $title = $verifylist = '';
  351. $showtitle = true;
  352. $verifyusers = C::t('common_member_verify')->fetch_all_by_vid($vid, 1, $uids);
  353. $verifyuids = array_keys($verifyusers);
  354. $members = C::t('common_member')->fetch_all($verifyuids, false, 0);
  355. $profiles = C::t('common_member_profile')->fetch_all($verifyuids, false, 0);
  356. foreach($verifyusers as $uid => $value) {
  357. $value = array_merge($value, $members[$uid], $profiles[$uid]);
  358. $str = $common = '';
  359. foreach($fields as $key => $field) {
  360. if(in_array($key, array('constellation', 'zodiac', 'birthyear', 'birthmonth', 'birthprovince', 'birthdist', 'birthcommunity', 'resideprovince', 'residedist', 'residecommunity'))) {
  361. continue;
  362. }
  363. if($showtitle) {
  364. $title .= $common.($key == 'username' ? $lang['username'] : $_G['cache']['profilesetting'][$key]['title']);
  365. }
  366. if(in_array($key, array('gender', 'birthday', 'birthcity', 'residecity'))) {
  367. $value[$field] = profile_show($key, $value);
  368. }
  369. $str .= $common.$value[$field];
  370. $common = "\t";
  371. }
  372. $verifylist .= $str."\n";
  373. $showtitle = false;
  374. }
  375. $verifylist = $title."\n".$verifylist;
  376. $filename = date('Ymd', TIMESTAMP).'.xls';
  377. define('FOOTERDISABLED', true);
  378. ob_end_clean();
  379. header("Content-type:application/vnd.ms-excel");
  380. header('Content-Encoding: none');
  381. header('Content-Disposition: attachment; filename='.$filename);
  382. header('Pragma: no-cache');
  383. header('Expires: 0');
  384. if($_G['charset'] != 'gbk') {
  385. $verifylist = diconv($verifylist, $_G['charset'], 'GBK');
  386. }
  387. echo $verifylist;
  388. exit();
  389. } else {
  390. cpmsg('members_verify_succeed', 'action=verify&operation=verify&do='.$vid.'&anchor=pass', 'succeed');
  391. }
  392. } else {
  393. $vids = array();
  394. $single = intval($_GET['singleverify']);
  395. $verifyflag = empty($_GET['verify']) ? false : true;
  396. if($verifyflag) {
  397. if($single) {
  398. $_GET['verify'] = array($single => $_GET['verify'][$single]);
  399. }
  400. foreach($_GET['verify'] as $id => $type) {
  401. $vids[] = $id;
  402. }
  403. $verifysetting = $_G['setting']['verify'];
  404. $verify = $refusal = array();
  405. foreach(C::t('common_member_verify_info')->fetch_all($vids) as $value) {
  406. if(in_array($_GET['verify'][$value['vid']], array('refusal', 'validate'))) {
  407. $fields = dunserialize($value['field']);
  408. $verifysetting = $_G['setting']['verify'][$value['verifytype']];
  409. if($_GET['verify'][$value['vid']] == 'refusal') {
  410. $refusalfields = !empty($_GET['refusal'][$value['vid']]) ? $_GET['refusal'][$value['vid']] : $verifysetting['field'];
  411. $fieldtitle = $common = '';
  412. $deleteverifyimg = false;
  413. foreach($refusalfields as $key => $field) {
  414. $fieldtitle .= $common.$_G['cache']['profilesetting'][$field]['title'];
  415. $common = ',';
  416. if($_G['cache']['profilesetting'][$field]['formtype'] == 'file') {
  417. $deleteverifyimg = true;
  418. @unlink(getglobal('setting/attachdir').'./profile/'.$fields[$key]);
  419. $fields[$field] = '';
  420. }
  421. }
  422. if($deleteverifyimg) {
  423. C::t('common_member_verify_info')->update($value['vid'], array('field' => serialize($fields)));
  424. }
  425. if($value['verifytype']) {
  426. $verify["verify"]['-1'][] = $value['uid'];
  427. }
  428. $verify['flag'][] = $value['vid'];
  429. $note_values = array(
  430. 'verify' => $vid ? '<a href="home.php?mod=spacecp&ac=profile&op=verify&vid='.$vid.'" target="_blank">'.$verifysetting['title'].'</a>' : '',
  431. 'profile' => $fieldtitle,
  432. 'reason' => $_GET['reason'][$value['vid']],
  433. );
  434. $note_lang = 'profile_verify_error';
  435. } else {
  436. C::t('common_member_profile')->update(intval($value['uid']), $fields);
  437. $verify['delete'][] = $value['vid'];
  438. if($value['verifytype']) {
  439. $verify["verify"]['1'][] = $value['uid'];
  440. }
  441. $note_values = array(
  442. 'verify' => $vid ? '<a href="home.php?mod=spacecp&ac=profile&op=verify&vid='.$vid.'" target="_blank">'.$verifysetting['title'].'</a>' : ''
  443. );
  444. $note_lang = 'profile_verify_pass';
  445. }
  446. notification_add($value['uid'], 'verify', $note_lang, $note_values, 1);
  447. }
  448. }
  449. if($vid && !empty($verify["verify"])) {
  450. foreach($verify["verify"] as $flag => $uids) {
  451. $flag = intval($flag);
  452. C::t('common_member_verify')->update($uids, array("verify$vid" => $flag));
  453. }
  454. }
  455. if(!empty($verify['delete'])) {
  456. C::t('common_member_verify_info')->delete($verify['delete']);
  457. }
  458. if(!empty($verify['flag'])) {
  459. C::t('common_member_verify_info')->update($verify['flag'], array('flag' => '-1'));
  460. }
  461. }
  462. if($single && $_GET['frame'] == 'no') {
  463. echo "<script type=\"text/javascript\">var trObj = parent.$('mod_{$single}_row');trObj.parentNode.removeChild(trObj);</script>";
  464. } else {
  465. cpmsg('members_verify_succeed', 'action=verify&operation=verify&do='.$vid.'&anchor='.$_GET['anchor'], 'succeed');
  466. }
  467. }
  468. }
  469. }
  470. } elseif($operation == 'edit') {
  471. shownav('user', 'nav_members_verify');
  472. $vid = $_GET['vid'] < 8 ? intval($_GET['vid']) : 0;
  473. $verifyarr = $_G['setting']['verify'][$vid];
  474. if(!submitcheck('verifysubmit')) {
  475. if($vid == 7) {
  476. showtips('members_verify_setting_tips');
  477. }
  478. showformheader("verify&operation=edit&vid=$vid", 'enctype');
  479. showtableheader();
  480. $readonly = $vid == 6 || $vid == 7 ? 'readonly' : '';
  481. showsetting('members_verify_title', "verify[title]", $verifyarr['title'], 'text', $readonly);
  482. showsetting('members_verify_enable', "verify[available]", $verifyarr['available'], 'radio');
  483. $verificonhtml = '';
  484. if($verifyarr['icon']) {
  485. $icon_url = parse_url($verifyarr['icon']);
  486. $prefix = !$icon_url['host'] && strpos($verifyarr['icon'], $_G['setting']['attachurl'].'common/') === false ? $_G['setting']['attachurl'].'common/' : '';
  487. $verificonhtml = '<label><input type="checkbox" class="checkbox" name="deleteicon['.$vid.']" value="yes" /> '.$lang['delete'].'</label><br /><img src="'.$prefix.$verifyarr['icon'].'" />';
  488. }
  489. $unverifyiconhtml = '';
  490. if($verifyarr['unverifyicon']) {
  491. $unverifyiconurl = parse_url($verifyarr['unverifyicon']);
  492. $prefix = !$unverifyiconurl['host'] && strpos($verifyarr['unverifyicon'], $_G['setting']['attachurl'].'common/') === false ? $_G['setting']['attachurl'].'common/' : '';
  493. $unverifyiconhtml = '<label><input type="checkbox" class="checkbox" name="delunverifyicon['.$vid.']" value="yes" /> '.$lang['delete'].'</label><br /><img src="'.$prefix.$verifyarr['unverifyicon'].'" />';
  494. }
  495. showsetting('members_verify_showicon', "verify[showicon]", $verifyarr['showicon'], 'radio', '', 1);
  496. showsetting('members_unverify_icon', 'unverifyiconnew', (!$unverifyiconurl['host'] ? str_replace($_G['setting']['attachurl'].'common/', '', $verifyarr['unverifyicon']) : $verifyarr['unverifyicon']), 'filetext', '', 0, $unverifyiconhtml);
  497. showsetting('members_verify_icon', 'iconnew', (!$icon_url['host'] ? str_replace($_G['setting']['attachurl'].'common/', '', $verifyarr['icon']) : $verifyarr['icon']), 'filetext', '', 0, $verificonhtml);
  498. showtagfooter('tbody');
  499. if($vid == 6) {
  500. showsetting('members_verify_view_real_name', "verify[viewrealname]", $verifyarr['viewrealname'], 'radio');
  501. } elseif($vid == 7) {
  502. showsetting('members_verify_view_video_photo', "verify[viewvideophoto]", $verifyarr['viewvideophoto'], 'radio');
  503. }
  504. if($vid != 7) {
  505. $varname = array('verify[field]', array(), 'isfloat');
  506. foreach(C::t('common_member_profile_setting')->fetch_all_by_available(1) as $value) {
  507. if(!in_array($value['fieldid'], array('constellation', 'zodiac', 'birthyear', 'birthmonth', 'birthprovince', 'birthdist', 'birthcommunity', 'resideprovince', 'residedist', 'residecommunity'))) {
  508. $varname[1][] = array($value['fieldid'], $value['title'], $value['fieldid']);
  509. }
  510. }
  511. showsetting('members_verify_setting_field', $varname, $verifyarr['field'], 'omcheckbox');
  512. }
  513. $groupselect = array();
  514. foreach(C::t('common_usergroup')->fetch_all_not(array(6, 7)) as $group) {
  515. $group['type'] = $group['type'] == 'special' && $group['radminid'] ? 'specialadmin' : $group['type'];
  516. $groupselect[$group['type']] .= "<option value=\"$group[groupid]\" ".(in_array($group['groupid'], $verifyarr['groupid']) ? 'selected' : '').">$group[grouptitle]</option>\n";
  517. }
  518. $groupselect = '<optgroup label="'.$lang['usergroups_member'].'">'.$groupselect['member'].'</optgroup>'.
  519. ($groupselect['special'] ? '<optgroup label="'.$lang['usergroups_special'].'">'.$groupselect['special'].'</optgroup>' : '').
  520. ($groupselect['specialadmin'] ? '<optgroup label="'.$lang['usergroups_specialadmin'].'">'.$groupselect['specialadmin'].'</optgroup>' : '').
  521. '<optgroup label="'.$lang['usergroups_system'].'">'.$groupselect['system'].'</optgroup>';
  522. showsetting('members_verify_group', '', '', '<select name="verify[groupid][]" multiple="multiple" size="10">'.$groupselect.'</select>');
  523. showsubmit('verifysubmit');
  524. showtablefooter();
  525. showformfooter();
  526. } else {
  527. foreach( $_G['setting']['verify'] AS $key => $value) {
  528. $_G['setting']['verify'][$key]['icon'] = str_replace($_G['setting']['attachurl'].'common/', '', $value['icon']);
  529. $_G['setting']['verify'][$key]['unverifyicon'] = str_replace($_G['setting']['attachurl'].'common/', '', $value['unverifyicon']);
  530. }
  531. $verifynew = getgpc('verify');
  532. if($vid == 6 || $vid == 7) {
  533. $verifynew['title'] = $_G['setting']['verify'][$vid]['title'];
  534. }
  535. if($verifynew['available'] == 1 && !trim($verifynew['title'])) {
  536. cpmsg('members_verify_update_title_error', '', 'error');
  537. }
  538. $verifynew['icon'] = getverifyicon('iconnew', $vid);
  539. $verifynew['unverifyicon'] = getverifyicon('unverifyiconnew', $vid, 'unverify_icon');
  540. if($_GET['deleteicon']) {
  541. $verifynew['icon'] = delverifyicon($verifyarr['icon']);
  542. }
  543. if($_GET['delunverifyicon']) {
  544. $verifynew['unverifyicon'] = delverifyicon($verifyarr['unverifyicon']);
  545. }
  546. if(!empty($verifynew['field']['residecity'])) {
  547. $verifynew['field']['resideprovince'] = 'resideprovince';
  548. $verifynew['field']['residedist'] = 'residedist';
  549. $verifynew['field']['residecommunity'] = 'residecommunity';
  550. }
  551. if(!empty($verifynew['field']['birthday'])) {
  552. $verifynew['field']['birthyear'] = 'birthyear';
  553. $verifynew['field']['birthmonth'] = 'birthmonth';
  554. }
  555. if(!empty($verifynew['field']['birthcity'])) {
  556. $verifynew['field']['birthprovince'] = 'birthprovince';
  557. $verifynew['field']['birthdist'] = 'birthdist';
  558. $verifynew['field']['birthcommunity'] = 'birthcommunity';
  559. }
  560. $verifynew['groupid'] = !empty($verifynew['groupid']) && is_array($verifynew['groupid']) ? $verifynew['groupid'] : array();
  561. $_G['setting']['verify'][$vid] = $verifynew;
  562. $_G['setting']['verify']['enabled'] = false;
  563. for($i = 1; $i < 8; $i++) {
  564. if($_G['setting']['verify'][$i]['available'] && !$_G['setting']['verify']['enabled']) {
  565. $_G['setting']['verify']['enabled'] = true;
  566. }
  567. if($_G['setting']['verify'][$i]['icon']) {
  568. $icon_url = parse_url($_G['setting']['verify'][$i]['icon']);
  569. }
  570. $_G['setting']['verify'][$i]['icon'] = !$icon_url['host'] ? str_replace($_G['setting']['attachurl'].'common/', '', $_G['setting']['verify'][$i]['icon']) : $_G['setting']['verify'][$i]['icon'] ;
  571. }
  572. C::t('common_setting')->update('verify', $_G['setting']['verify']);
  573. if(isset($verifynew['viewrealname']) && !$verifynew['viewrealname']) {
  574. C::t('common_member_profile_setting')->update('realname', array('showinthread' => 0));
  575. $custominfo = C::t('common_setting')->fetch('customauthorinfo', true);
  576. if(isset($custominfo[0]['field_realname'])) {
  577. unset($custominfo[0]['field_realname']);
  578. C::t('common_setting')->update('customauthorinfo', $custominfo);
  579. updatecache(array('custominfo'));
  580. }
  581. }
  582. updatecache(array('setting'));
  583. cpmsg('members_verify_update_succeed', 'action=verify', 'succeed');
  584. }
  585. } else {
  586. shownav('user', 'nav_members_verify');
  587. showsubmenu('members_verify_setting');
  588. if(!submitcheck('verifysubmit')) {
  589. showtips('members_verify_setting_tips');
  590. showformheader("verify");
  591. showtableheader('members_verify_setting', 'fixpadding');
  592. showsubtitle(array('members_verify_available', 'members_verify_id', 'members_verify_title', ''), 'header');
  593. for($i = 1; $i < 8; $i++) {
  594. $readonly = $i == 6 || $i == 7 ? true : false;
  595. $url = parse_url($_G['setting']['verify'][$i]['icon']);
  596. if(!$url['host'] && $_G['setting']['verify'][$i]['icon'] && strpos($_G['setting']['verify'][$i]['icon'], $_G['setting']['attachurl'].'common/') === false) {
  597. $_G['setting']['verify'][$i]['icon'] = $_G['setting']['attachurl'].'common/'.$_G['setting']['verify'][$i]['icon'];
  598. }
  599. showtablerow('', array('class="td25"', '', '', 'class="td25"'), array(
  600. "<input class=\"checkbox\" type=\"checkbox\" name=\"settingnew[verify][$i][available]\" value=\"1\" ".($_G['setting']['verify'][$i]['available'] ? 'checked' : '')." />",
  601. 'verify'.$i,
  602. ($readonly ? $_G['setting']['verify'][$i]['title']."<input type=\"hidden\" name=\"settingnew[verify][$i][title]\" value=\"{$_G['setting']['verify'][$i]['title']}\" readonly>&nbsp;":"<input type=\"text\" class=\"txt\" size=\"8\" name=\"settingnew[verify][$i][title]\" value=\"{$_G['setting']['verify'][$i]['title']}\">").
  603. ($_G['setting']['verify'][$i]['icon'] ? '<img src="'.$_G['setting']['verify'][$i]['icon'].'" />' : ''),
  604. "<a href=\"".ADMINSCRIPT."?action=verify&operation=edit&anchor=base&vid=$i\">".$lang['edit']."</a>"
  605. ));
  606. }
  607. showsubmit('verifysubmit');
  608. showtablefooter();
  609. showformfooter();
  610. } else {
  611. $settingnew = getgpc('settingnew');
  612. $enabled = false;
  613. foreach($settingnew['verify'] as $key => $value) {
  614. if($value['available'] && !$value['title']) {
  615. cpmsg('members_verify_title_invalid', '', 'error');
  616. }
  617. if($value['available']) {
  618. $enabled = true;
  619. }
  620. $_G['setting']['verify'][$key]['available'] = intval($value['available']);
  621. $_G['setting']['verify'][$key]['title'] = $value['title'];
  622. }
  623. $_G['setting']['verify']['enabled'] = $enabled;
  624. C::t('common_setting')->update('verify', $_G['setting']['verify']);
  625. updatecache(array('setting'));
  626. updatemenu('user');
  627. cpmsg('members_verify_update_succeed', 'action=verify', 'succeed');
  628. }
  629. }
  630. function getverifyicon($iconkey = 'iconnew', $vid = 1, $extstr = 'verify_icon') {
  631. global $_G, $_FILES;
  632. if($_FILES[$iconkey]) {
  633. $data = array('extid' => "$vid");
  634. $iconnew = upload_icon_banner($data, $_FILES[$iconkey], $extstr);
  635. } else {
  636. $iconnew = $_GET[''.$iconkey];
  637. }
  638. return $iconnew;
  639. }
  640. function delverifyicon($icon) {
  641. global $_G;
  642. $valueparse = parse_url($icon);
  643. if(!isset($valueparse['host']) && preg_match('/^'.preg_quote($_G['setting']['attachurl'].'common/', '/').'/', $icon)) {
  644. @unlink($icon);
  645. }
  646. return '';
  647. }
  648. ?>