PageRenderTime 63ms CodeModel.GetById 36ms RepoModel.GetById 0ms app.codeStats 0ms

/discuzx/utility/convert/source/d7.2_x2.0/table/members.php

https://github.com/bluelovers/Discuz
PHP | 294 lines | 216 code | 44 blank | 34 comment | 32 complexity | 3644431c3e88c3f78a8a3521cdb19693 MD5 | raw file
  1. <?php
  2. /**
  3. * DiscuzX Convert
  4. *
  5. * $Id: members.php 17836 2010-11-03 05:24:59Z cnteacher $
  6. */
  7. $curprg = basename(__FILE__);
  8. $table_source = $db_source->tablepre.'members';
  9. $table_target = $db_target->tablepre.'common_member';
  10. $table_target_admincp = $db_target->tablepre.'common_admincp_member';
  11. $limit = $setting['limit']['members'] ? $setting['limit']['members'] : 2000;
  12. $nextid = 0;
  13. $start = getgpc('start');
  14. if($start == 0) {
  15. $db_target->query("TRUNCATE $table_target");
  16. $db_target->query("TRUNCATE $table_target_admincp");
  17. $db_target->query("TRUNCATE {$table_target}_count");
  18. $db_target->query("TRUNCATE {$table_target}_field_forum");
  19. $db_target->query("TRUNCATE {$table_target}_field_home");
  20. $db_target->query("TRUNCATE {$table_target}_log");
  21. $db_target->query("TRUNCATE {$table_target}_profile");
  22. $db_target->query("TRUNCATE {$table_target}_status");
  23. }
  24. // bluelovers
  25. include_once DISCUZ_ROOT.'./include/editor.func.php';
  26. $_old = $_new = array();
  27. // bluelovers
  28. $query = $db_source->query("SELECT * FROM $table_source WHERE uid>'$start' ORDER BY uid LIMIT $limit");
  29. while ($row = $db_source->fetch_array($query)) {
  30. if($row['adminid'] == 1) {
  31. $adminrow = array('uid' => $row['uid'], 'cpgroupid' => '0', 'customperm' => '');
  32. $data = implode_field_value($adminrow);
  33. $db_target->query("INSERT INTO {$table_target_admincp} SET $data");
  34. $row['allowadmincp'] = 1;
  35. }
  36. $rowfield = $db_source->fetch_first("SELECT * FROM ".$db_source->tablepre."memberfields WHERE uid='$row[uid]'");
  37. $rowfield = daddslashes($rowfield, 1);
  38. $nextid = $row['uid'];
  39. $emptyrow = array('uid' => $row['uid']);
  40. $data = implode_field_value($emptyrow);
  41. $db_target->query("INSERT INTO {$table_target}_count SET $data");
  42. $db_target->query("INSERT INTO {$table_target}_field_forum SET $data");
  43. $db_target->query("INSERT INTO {$table_target}_field_home SET $data");
  44. $db_target->query("INSERT INTO {$table_target}_log SET $data");
  45. $db_target->query("INSERT INTO {$table_target}_profile SET $data");
  46. $db_target->query("INSERT INTO {$table_target}_status SET $data");
  47. // $db_target->query("REPLACE INTO {$table_target}_count SET $data");
  48. // $db_target->query("REPLACE INTO {$table_target}_field_forum SET $data");
  49. // $db_target->query("REPLACE INTO {$table_target}_field_home SET $data");
  50. // $db_target->query("REPLACE INTO {$table_target}_log SET $data");
  51. // $db_target->query("REPLACE INTO {$table_target}_profile SET $data");
  52. // $db_target->query("REPLACE INTO {$table_target}_status SET $data");
  53. // bluelovers
  54. $rowfield['site'] = s_trim($rowfield['site'], "\\/");
  55. if (!s_valid_url($rowfield['site'])) {
  56. $rowfield['site'] = '';
  57. }
  58. $rowfield['sightml'] = html2bbcode($rowfield['sightml'], 1, 1);
  59. $rowfield['sightml'] = s_trim($rowfield['sightml'], "\\/", 1);
  60. $rowfield['bio'] = html2bbcode($rowfield['bio'], 1);
  61. // if ($nextid == 174) {
  62. // showmessage($rowfield['bio']);
  63. // }
  64. $_new[$nextid]['nickname'] = $rowfield['nickname'] = daddslashes(s_trim_nickname($_old[$nextid]['nickname'] = $rowfield['nickname']));
  65. $_new[$nextid]['customstatus'] = daddslashes(s_trim_nickname($_old[$nextid]['customstatus'] = $rowfield['customstatus']));
  66. foreach (array('bio') as $___k_) {
  67. $rowfield[$___k_] = s_trim($rowfield[$___k_], "\\/", 1);
  68. $_t_ = s_trim($rowfield[$___k_], "\\/@@?!#&mp;%\*\^_~.-+=0123456789asd大安多照顧無");
  69. $_t_ = str_replace(array('家', '好', '帥', '大', '安', '我',
  70. '很', '謝', '無', '沒', '什', '麼', '介', '紹', '新', '手',
  71. '您', '喔', '拉', '唷', '嘿', '嗨', '&amp;'
  72. ), '', $_t_);
  73. // $_t_ = preg_replace("/([0-9_\-@\#\?\!;\*\^\.asdASD\'\" \t ]+)/iu", '', $_t_);
  74. // $_t_ = preg_replace("/[0-9_\-=asdf\t \@\?\!\.\^\*\'\~\"\[\]]+/iU", '', $_t_);
  75. if (!$_t_
  76. || s_valid_email($rowfield[$___k_]) || s_valid_url($rowfield[$___k_])
  77. ) {
  78. $rowfield[$___k_] = '';
  79. }
  80. // $rowfield[$___k_] = dhtmlspecialchars($rowfield[$___k_], ENT_QUOTES, true, ENT_QUOTES);
  81. $rowfield[$___k_] = dhtmlspecialchars($rowfield[$___k_], ENT_QUOTES);
  82. // if ($nextid == 174) {
  83. // showmessage($rowfield[$___k_]);
  84. // }
  85. }
  86. foreach (array('icq', 'alipay', 'taobao', 'qq', 'yahoo', 'msn') as $___k_) {
  87. $rowfield[$___k_] = s_trim($rowfield[$___k_], "\\/");
  88. if (empty($rowfield[$___k_]) || !(s_valid_email($rowfield[$___k_]) || preg_match("/^[a-z0-9_-]+$/i", $rowfield[$___k_]))) {
  89. $rowfield[$___k_] = '';
  90. }
  91. }
  92. // bluelovers
  93. $row = daddslashes($row, 1);
  94. $unset = array(
  95. 'regip',
  96. 'lastip',
  97. 'lastvisit',
  98. 'lastactivity',
  99. 'lastpost',
  100. 'posts',
  101. 'threads',
  102. 'digestposts',
  103. 'pageviews',
  104. 'extcredits1',
  105. 'extcredits2',
  106. 'extcredits3',
  107. 'extcredits4',
  108. 'extcredits5',
  109. 'extcredits6',
  110. 'extcredits7',
  111. 'extcredits8',
  112. 'bday',
  113. 'sigstatus',
  114. 'tpp',
  115. 'ppp',
  116. 'styleid',
  117. 'dateformat',
  118. 'timeformat',
  119. 'pmsound',
  120. 'showemail',
  121. 'newsletter',
  122. 'invisible',
  123. 'prompt',
  124. 'editormode',
  125. 'customshow',
  126. 'xspacestatus',
  127. 'customaddfeed',
  128. 'newbietaskid',
  129. 'secques',
  130. 'gender',
  131. );
  132. list($year, $month, $day) = explode('-', $row['bday']);
  133. $row['notifysound'] = $row['pmsound'];
  134. $update = array(
  135. 'status' => array(
  136. 'regip' => $row['regip'],
  137. 'lastip' => $row['lastip'],
  138. 'lastvisit' => $row['lastvisit'],
  139. 'lastactivity' => $row['lastactivity'],
  140. 'lastpost' => $row['lastpost'],
  141. 'buyercredit' => $row['buyercredit'],
  142. 'sellercredit' => $row['sellercredit'],
  143. ),
  144. 'count' => array(
  145. 'posts' => $row['posts'],
  146. 'threads' => $row['threads'],
  147. 'digestposts' => $row['digestposts'],
  148. 'extcredits1' => $row['extcredits1'],
  149. 'extcredits2' => $row['extcredits2'],
  150. 'extcredits3' => $row['extcredits3'],
  151. 'extcredits4' => $row['extcredits4'],
  152. 'extcredits5' => $row['extcredits5'],
  153. 'extcredits6' => $row['extcredits6'],
  154. 'extcredits7' => $row['extcredits7'],
  155. 'extcredits8' => $row['extcredits8'],
  156. 'oltime' => $row['oltime'],
  157. ),
  158. 'profile' => array(
  159. 'birthyear' => $year,
  160. 'birthmonth' => $month,
  161. 'birthday' => $day,
  162. 'gender' => $row['gender'],
  163. 'site' => $rowfield['site'],
  164. 'alipay' => $rowfield['alipay'],
  165. 'icq' => $rowfield['icq'],
  166. 'qq' => $rowfield['qq'],
  167. 'yahoo' => $rowfield['yahoo'],
  168. 'msn' => $rowfield['msn'],
  169. 'taobao' => $rowfield['taobao'],
  170. 'address' => $rowfield['location'],
  171. 'bio' => $rowfield['bio'],
  172. // bluelovers
  173. 'nickname' => $rowfield['nickname'],
  174. // 'customstatus' => $rowfield['customstatus'],
  175. // bluelovers
  176. ),
  177. 'field_forum' => array(
  178. 'customshow' => $row['customshow'],
  179. 'customstatus' => $rowfield['customstatus'],
  180. 'medals' => $rowfield['medals'],
  181. 'sightml' => $rowfield['sightml'],
  182. 'groupterms' => $rowfield['groupterms'],
  183. 'authstr' => $rowfield['authstr'],
  184. )
  185. );
  186. foreach($unset as $k) {
  187. unset($row[$k]);
  188. }
  189. // bluelovers
  190. for ($i=1; $i<=8; $i++) {
  191. if (isset($rowfield['field_'.$i]) && !empty($rowfield['field_'.$i])) {
  192. $update['profile']['field'.$i] = $rowfield['field'.$i] = $rowfield['field_'.$i];
  193. }
  194. }
  195. if (!(s_valid_email($update['profile']['field1']) || preg_match("/^[a-z0-9_-]+$/i", $update['profile']['field1']))) {
  196. $update['profile']['field1'] = '';
  197. }
  198. // bluelovers
  199. foreach($update as $table => $trow) {
  200. $data = implode_field_value($trow, ',', db_table_fields($db_target, $table_target.'_'.$table));
  201. $db_target->query("UPDATE {$table_target}_$table SET $data WHERE uid='$row[uid]'");
  202. }
  203. // bluelovers
  204. if (!s_valid_email($row['email']) || empty($row['email']) || (empty($row['timeoffset']) && !($row['posts'] > 0 || $row['threads'] > 0 || $row['digestposts'] > 0)) || !empty($rowfield['authstr'])) {
  205. $row['emailstatus'] = 0;
  206. } elseif ($rowfield['authstr'] == '' && ($row['posts'] > 0 || $row['threads'] > 0 || $row['digestposts'] > 0)) {
  207. $row['emailstatus'] = 1;
  208. }
  209. // bluelovers
  210. $data = implode_field_value($row, ',', db_table_fields($db_target, $table_target));
  211. $db_target->query("INSERT INTO $table_target SET $data");
  212. // $db_target->query("REPLACE INTO $table_target SET $data");
  213. }
  214. if($nextid) {
  215. $_old = array_filter($_old);
  216. $_s = '';
  217. if($start == 0) {
  218. $fp = fopen('tmp.txt', 'w') or die("can't open file");
  219. fclose($fp);
  220. }
  221. foreach($_old as $_uid => $_row) {
  222. // $_k_ = 'nickname';
  223. foreach($_row as $_k_ => $_v_) {
  224. if ($_row[$_k_] != $_new[$_uid][$_k_]) {
  225. $_s .= '<_uid_> '.$_uid.'<_k_> '.$_k_.' <_;_> '.$_row[$_k_].' <_x_> '.$_new[$_uid][$_k_]."\n";
  226. }
  227. }
  228. }
  229. $fp = fopen('tmp.txt', 'aw+') or die("can't open file");
  230. fwrite($fp, $_s);
  231. fclose($fp);
  232. showmessage("繼續轉換數據表 ".$table_source." uid > $nextid", "index.php?a=$action&source=$source&prg=$curprg&start=$nextid");
  233. } else {
  234. $db_target->query("UPDATE $table_target SET newpm='0'");
  235. // bluelovers
  236. $db_target->query("REPLACE INTO {$db_target->tablepre}common_setting ( skey, svalue )
  237. VALUES (
  238. 'lastmember', (
  239. SELECT username
  240. FROM {$db_target->tablepre}common_member
  241. ORDER BY regdate DESC
  242. LIMIT 1
  243. )
  244. )");
  245. // bluelvoers
  246. }
  247. ?>