/d24_70.php

https://bitbucket.org/dodyrw/indexu7_db_migration_idd24 · PHP · 673 lines · 441 code · 184 blank · 48 comment · 40 complexity · 0417102b9987cc533859fb7e3ed324d3 MD5 · raw file

  1. <?php
  2. require_once "db.php";
  3. ini_set("max_execution_time", "0");
  4. $connection = mysql_connect($db_host, $db_user, $db_pass);
  5. if (!$connection) {
  6. die("Database connection failed:" . mysql_error());
  7. }
  8. $db_select = mysql_select_db($db_name, $connection);
  9. /*---------------------------------------------
  10. Step by step:
  11. 1) Create lep tables from fresh.sql
  12. 2) Move data : category, link, user, review
  13. 3) Update category path & number of links -> use admin panel
  14. 4) Manual re-setting :
  15. paypal
  16. discount coupon
  17. pricing
  18. ---------------------------------------------*/
  19. /* step 1 */
  20. $file = 'fresh.sql';
  21. $lines = @file($file);
  22. unset($query);
  23. if (is_array($lines)) {
  24. foreach ($lines as $k => $v) {
  25. $buffer = trim($v);
  26. if(!empty($buffer) && substr($buffer,0,1) != "#" && substr($buffer,0,2) != "--" && substr($buffer,0,2) != "/*") {
  27. if(substr($buffer,-1,1)==";") {
  28. $query .= $v;
  29. $result = mysql_query($query, $connection);
  30. ($result) ? $res = "<span style='color:#00f;'>OK</span>" : $res = "<span style='color:#f00;'>FAILED</span>";
  31. $debug .= htmlentities($query) . "... $res \n\n";
  32. unset($query);
  33. }
  34. else {
  35. $query .= $v;
  36. }
  37. }
  38. }
  39. }
  40. /* step 2 */
  41. $now = time();
  42. /* category */
  43. $query = "delete from lep_category";
  44. $result = mysql_query($query);
  45. $query = "select * from idx_category";
  46. $result = mysql_query($query);
  47. while ($row = mysql_fetch_assoc($result)) {
  48. foreach ($row as $k => $v) {
  49. $row[$k] = addslashes($row[$k]);
  50. }
  51. $query = "insert into `lep_category`(`category_id`,`parent_id`,`order_num`,`title`,`status`,`path`,`path_url`,`parents`,`description`,`meta_keyword`,`seo_title`,`has_child`,`num_res`,`created_at`) values ({$row['category_id']},{$row['parent_id']},{$row['order_num']},'{$row['name']}','1','','','','{$row['description']}','{$row['meta_keyword']}','','',0,'{$now}')";
  52. $result2 = mysql_query($query);
  53. }
  54. $debug .= "Category table imported. \n\n";
  55. /* user */
  56. $query = "delete from lep_user";
  57. $result = mysql_query($query);
  58. $query = "select * from idx_users";
  59. $result = mysql_query($query);
  60. while ($row = mysql_fetch_assoc($result)) {
  61. $query = "INSERT INTO `lep_user`
  62. (
  63. `username`,
  64. `password`,
  65. `email`,
  66. `status`,
  67. `code`,
  68. `created_at`,
  69. `first_name`,
  70. `last_name`
  71. )
  72. VALUES
  73. (
  74. '{$row['username']}',
  75. '{$row['password']}',
  76. '{$row['email']}',
  77. '1',
  78. '',
  79. '{$now}',
  80. '{$row['name']}',
  81. ''
  82. )";
  83. $result2 = mysql_query($query);
  84. }
  85. $debug .= "User table imported. \n\n";
  86. /* review */
  87. $query = "select * from idx_review";
  88. $result = mysql_query($query);
  89. while ($row = mysql_fetch_assoc($result)) {
  90. $rev_date = strtotime($row['date']);
  91. $query = "select user_id from lep_user where username = '{$row['username']}'";
  92. $result2 = mysql_query($query);
  93. $row2 = mysql_fetch_assoc($result2);
  94. $user_id = $row2['user_id'];
  95. $query = "INSERT INTO `lep_comment`
  96. (
  97. `res_id`,
  98. `user_id`,
  99. `comment`,
  100. `status`,
  101. `created_at`,
  102. `subject`,
  103. `rating`
  104. )
  105. VALUES
  106. (
  107. '{$row['link_id']}',
  108. '{$user_id}',
  109. '{$row['review']}',
  110. '{$row['status']}',
  111. '{$rev_date}',
  112. '{$row['subject']}',
  113. '{$row['rating']}'
  114. )
  115. ";
  116. $result2 = mysql_query($query);
  117. }
  118. $debug .= "Review table imported. \n\n";
  119. /* links and custom fields */
  120. // get all custom fields, if not exist in lep_resource_field, then add new one
  121. $query = "select * from lep_resource_field";
  122. $result = mysql_query($query);
  123. while ($row = mysql_fetch_assoc($result)) {
  124. $lep_fields[] = $row['name'];
  125. }
  126. $idx_fields = array('title','url','description','keywords','contact_name','email','reciprocal_url');
  127. $query = "select * from idx_custom_field";
  128. $result = mysql_query($query);
  129. while ($row = mysql_fetch_assoc($result)) {
  130. $idx_fields[] = $row['field_name'];
  131. if (!in_array($row['field_name'],$lep_fields)) {
  132. if ($row['permission']=='2') {
  133. $admin_only = '1';
  134. }
  135. else {
  136. $admin_only = '0';
  137. }
  138. //text, textarea, select, multiselect, checkbox, radio, file, image, date, datetime, richeditor
  139. //inputText, inputPassword, textarea, inputCheckbox, inputRadio, select, multiselect, inputFile, richtext, date
  140. if ($row['field_type']=='TEXT') {
  141. $field_type = 'inputText';
  142. }
  143. elseif ($row['field_type']=='TEXTAREA') {
  144. $field_type = 'textarea';
  145. }
  146. elseif ($row['field_type']=='SELECT') {
  147. $field_type = 'select';
  148. }
  149. elseif ($row['field_type']=='MULTISELECT') {
  150. $field_type = 'multiselect';
  151. }
  152. elseif ($row['field_type']=='CHECKBOX') {
  153. $field_type = 'inputCheckbox';
  154. }
  155. elseif ($row['field_type']=='RADIO') {
  156. $field_type = 'inputRadio';
  157. }
  158. elseif ($row['field_type']=='FILE') {
  159. $field_type = 'inputFile';
  160. }
  161. elseif ($row['field_type']=='IMAGE') {
  162. $field_type = 'inputFile';
  163. }
  164. elseif ($row['field_type']=='DATE') {
  165. $field_type = 'date';
  166. }
  167. elseif ($row['field_type']=='DATETIME') {
  168. $field_type = 'date';
  169. }
  170. elseif ($row['field_type']=='RICHEDITOR') {
  171. $field_type = 'richtext';
  172. }
  173. $query = "INSERT INTO `lep_resource_field`
  174. (
  175. `name`,
  176. `text`,
  177. `type`,
  178. `val`,
  179. `default_val`,
  180. `order_num`,
  181. `admin_only`
  182. )
  183. VALUES
  184. (
  185. '{$row['field_name']}',
  186. '{$row['field_text']}',
  187. '{$field_type}',
  188. '{$row['field_option']}',
  189. 'default_val',
  190. '100',
  191. '{$admin_only}'
  192. )";
  193. $result2 = mysql_query($query);
  194. //$query = "ALTER TABLE `lep_resource` ADD COLUMN `{$row['field_name']}` VARCHAR(255) DEFAULT '' NULL";
  195. $query = "ALTER TABLE `lep_resource` ADD COLUMN `{$row['field_name']}` TEXT NULL";
  196. $result2 = mysql_query($query);
  197. ($result2) ? $res = "<span style='color:#00f;'>OK</span>" : $res = "<span style='color:#f00;'>FAILED</span>";
  198. $debug .= htmlentities($query) . "... $res \n\n";
  199. }
  200. }
  201. // import links without user now
  202. /////////// exclude ones with user id ///////////
  203. $query = "ALTER TABLE `lep_user` ADD UNIQUE `username` ( `username` )";
  204. $result = mysql_query($query);
  205. $query = "SELECT *
  206. FROM idx_link AS a, idx_link_user AS b, lep_user AS c
  207. WHERE a.link_id = b.link_id
  208. AND c.username = b.username";
  209. $result = mysql_query($query);
  210. $link_with_user = array();
  211. while ($row = mysql_fetch_assoc($result)) {
  212. $link_with_user[] = $row['link_id'];
  213. }
  214. $link_with_user_sql = implode(',', $link_with_user);
  215. /////////////////
  216. if (count($link_with_user)) {
  217. $query = "SELECT *
  218. FROM idx_link
  219. WHERE link_id NOT IN ($link_with_user_sql)
  220. ";
  221. }
  222. else {
  223. $query = "SELECT *
  224. FROM idx_link
  225. ";
  226. }
  227. $result = mysql_query($query);
  228. if ($result) {
  229. while ($row = mysql_fetch_assoc($result)) {
  230. unset($query_fname);
  231. unset($query_fval);
  232. $query = "INSERT INTO `lep_resource` ";
  233. $fields_added = array();
  234. foreach ($idx_fields as $k => $v) {
  235. if (!in_array($v,$fields_added)) {
  236. $f_value = $row[$v];
  237. $f_value = addslashes($row[$v]);
  238. if ($v=='keywords') {
  239. $f_name = 'tag';
  240. }
  241. elseif ($v=='contact_name') {
  242. $f_name = 'owner_name';
  243. }
  244. elseif ($v=='date') {
  245. $f_name = 'created_at';
  246. $f_value = strtotime($row[$v]);
  247. }
  248. else {
  249. $f_name = $v;
  250. }
  251. $query_fname[] = $f_name;
  252. $query_fval[] = "'".$f_value."'";
  253. }
  254. $fields_added[] = $f_name;
  255. }
  256. $query_fname[] = 'res_id';
  257. $query_fval[] = $row['link_id'];
  258. $query_fname[] = 'category_id';
  259. $query_fval[] = $row['category_id'];
  260. $query_fname[] = 'hits';
  261. $query_fval[] = $row['hits'];
  262. $query_fname[] = 'listing_type';
  263. $query_fval[] = "'basic'";
  264. $query_fname[] = 'status';
  265. $query_fval[] = '1';
  266. if ($row['suspended']!='1') $row['suspended'] = '0';
  267. $query_fname[] = 'suspended';
  268. $query_fval[] = $row['suspended'];
  269. $query_fname[] = 'user_id';
  270. $query_fval[] = "''";
  271. $query_temp2 = implode(',',$query_fname);
  272. $query_temp3 = implode(',',$query_fval);
  273. $query .= "($query_temp2) values ($query_temp3)";
  274. $result2 = mysql_query($query);
  275. ($result2) ? $res = "<span style='color:#00f;'>OK</span>" : $res = "<span style='color:#f00;'>FAILED</span>";
  276. $debug .= htmlentities($query) . "... $res \n\n";
  277. }
  278. }
  279. $debug .= "Link without user imported. \n\n";
  280. // import links with user now
  281. // fasten the process
  282. // $query = "ALTER TABLE `lep_user` ADD UNIQUE `username` ( `username` )";
  283. // $result = mysql_query($query);
  284. $query = "SELECT *
  285. FROM idx_link AS a, idx_link_user AS b, lep_user AS c
  286. WHERE a.link_id = b.link_id
  287. AND c.username = b.username";
  288. $result = mysql_query($query);
  289. while ($row = mysql_fetch_assoc($result)) {
  290. unset($query_fname);
  291. unset($query_fval);
  292. $query = "INSERT INTO `lep_resource` ";
  293. $fields_added = array();
  294. foreach ($idx_fields as $k => $v) {
  295. if (!in_array($v,$fields_added)) {
  296. $f_value = $row[$v];
  297. $f_value = addslashes($row[$v]);
  298. if ($v=='keywords') {
  299. $f_name = 'tag';
  300. }
  301. elseif ($v=='contact_name') {
  302. $f_name = 'owner_name';
  303. }
  304. elseif ($v=='date') {
  305. $f_name = 'created_at';
  306. $f_value = strtotime($row[$v]);
  307. }
  308. else {
  309. $f_name = $v;
  310. }
  311. $query_fname[] = $f_name;
  312. $query_fval[] = "'".$f_value."'";
  313. }
  314. $fields_added[] = $f_name;
  315. }
  316. $query_fname[] = 'res_id';
  317. $query_fval[] = $row['link_id'];
  318. $query_fname[] = 'category_id';
  319. $query_fval[] = $row['category_id'];
  320. $query_fname[] = 'hits';
  321. $query_fval[] = $row['hits'];
  322. $query_fname[] = 'listing_type';
  323. $query_fval[] = "'basic'";
  324. $query_fname[] = 'status';
  325. $query_fval[] = '1';
  326. if ($row['suspended']=='') $row['suspended'] = '0';
  327. $query_fname[] = 'suspended';
  328. $query_fval[] = $row['suspended'];
  329. $query_fname[] = 'user_id';
  330. $query_fval[] = $row['user_id'];
  331. $query_temp2 = implode(',',$query_fname);
  332. $query_temp3 = implode(',',$query_fval);
  333. $query .= "($query_temp2) values ($query_temp3)";
  334. $result2 = mysql_query($query);
  335. ($result2) ? $res = "<span style='color:#00f;'>OK</span>" : $res = "<span style='color:#f00;'>FAILED</span>";
  336. $debug .= htmlentities($query) . "... $res \n\n";
  337. }
  338. $debug .= "Link with user imported. \n\n";
  339. // import pending
  340. $query = "SELECT *
  341. FROM idx_link_temp AS a, idx_link_temp_user AS b, lep_user AS c
  342. WHERE a.vid = b.vid
  343. AND c.username = b.username";
  344. $result = mysql_query($query);
  345. while ($row = mysql_fetch_assoc($result)) {
  346. unset($query_fname);
  347. unset($query_fval);
  348. $query = "INSERT INTO `lep_resource` ";
  349. $fields_added = array();
  350. foreach ($idx_fields as $k => $v) {
  351. if (!in_array($v,$fields_added)) {
  352. $f_value = $row[$v];
  353. $f_value = addslashes($row[$v]);
  354. if ($v=='keywords') {
  355. $f_name = 'tag';
  356. }
  357. elseif ($v=='contact_name') {
  358. $f_name = 'owner_name';
  359. }
  360. elseif ($v=='date') {
  361. $f_name = 'created_at';
  362. $f_value = strtotime($v);
  363. }
  364. else {
  365. $f_name = $v;
  366. }
  367. $query_fname[] = $f_name;
  368. $query_fval[] = "'".$f_value."'";
  369. }
  370. $fields_added[] = $f_name;
  371. }
  372. $query_fname[] = 'res_id';
  373. $query_fval[] = $row['link_id'];
  374. $query_fname[] = 'category_id';
  375. $query_fval[] = $row['category_id'];
  376. $query_fname[] = 'hits';
  377. $query_fval[] = $row['hits'];
  378. $query_fname[] = 'listing_type';
  379. $query_fval[] = "'basic'";
  380. $query_fname[] = 'status';
  381. $query_fval[] = '0';
  382. if ($row['suspended']=='') $row['suspended'] = '0';
  383. $query_fname[] = 'suspended';
  384. $query_fval[] = $row['suspended'];
  385. $query_fname[] = 'user_id';
  386. $query_fval[] = $row['user_id'];
  387. $query_temp2 = implode(',',$query_fname);
  388. $query_temp3 = implode(',',$query_fval);
  389. $query .= "($query_temp2) values ($query_temp3)";
  390. $result2 = mysql_query($query);
  391. ($result2) ? $res = "<span style='color:#00f;'>OK</span>" : $res = "<span style='color:#f00;'>FAILED</span>";
  392. $debug .= htmlentities($query) . "... $res \n\n";
  393. }
  394. $debug .= "Pending link table imported. \n\n";
  395. // import active paid listing
  396. $sp_expire = date('Y-m-d H:i:s');
  397. $query = "SELECT * FROM `idx_paid_listing` where paid = '1' and expire > '$sp_expire'";
  398. $result = mysql_query($query);
  399. while ($row = mysql_fetch_assoc($result)) {
  400. $expire = strtotime($row['expire']);
  401. $query = "update lep_resource set featured = '1', featured_expired = '$expire' where res_id = '{$row['link_id']}'";
  402. $result2 = mysql_query($query);
  403. ($result2) ? $res = "<span style='color:#00f;'>OK</span>" : $res = "<span style='color:#f00;'>FAILED</span>";
  404. $debug .= htmlentities($query) . "... $res \n\n";
  405. }
  406. $debug .= "Paid listing imported. \n\n";
  407. /* fix date */
  408. $query = "select * from idx_review";
  409. $result = mysql_query($query);
  410. while ($row = mysql_fetch_assoc($result)) {
  411. $rev_date = strtotime($row['date']);
  412. $query = "select user_id from lep_user where username = '{$row['username']}'";
  413. $result2 = mysql_query($query);
  414. $row2 = mysql_fetch_assoc($result2);
  415. $user_id = $row2['user_id'];
  416. $query = "update lep_comment set created_at = '$rev_date}' where res_id = '{$row['link_id']}' and user_id = '{$user_id}'";
  417. $result2 = mysql_query($query);
  418. }
  419. $query = "select * from idx_link";
  420. $result = mysql_query($query);
  421. while ($row = mysql_fetch_assoc($result)) {
  422. $created_date = strtotime($row['date']);
  423. $query = "update lep_resource set created_at = '{$created_date}' where category_id = '{$row['category_id']}' and title = '{$row['title']}'";
  424. $result2 = mysql_query($query);
  425. }
  426. $debug .= "Date fixed. \n\n";
  427. // update page rank
  428. $query = " SELECT * FROM `idx_pagerank` WHERE rank != '0'";
  429. $result = mysql_query($query);
  430. while ($row = mysql_fetch_assoc($result)) {
  431. $query = "update lep_resource set ss_googlepr = '{$row['rank']}' where res_id = '{$row['link_id']}'";
  432. $result2 = mysql_query($query);
  433. }
  434. $debug .= "GooglePR imported. \n\n";
  435. // fix email fields :
  436. // update lep_resource set image = replace(image, "upload_files/", "")
  437. // apply setting
  438. $query = "update lep_config set value = '$website_url' where name = 'url'";
  439. $result = mysql_query($query);
  440. $debug .= "Done. \n\n";
  441. // $theme_path = $base_path . "themes/";
  442. // $admin_template_path = $base_path . "admin_tpl/";
  443. // $plugin_path = $base_path . "plugin/";
  444. // $query = "update idx_setting set setting_value = '$site_url' where setting_name = 'site_url'";
  445. // $result = mysql_query($query, $connection);
  446. // $query = "update idx_setting set setting_value = '$email_address' where setting_name = 'email_address'";
  447. // $result = mysql_query($query, $connection);
  448. // $query = "update idx_setting set setting_value = '$theme_path' where setting_name = 'theme_path'";
  449. // $result = mysql_query($query, $connection);
  450. // $query = "update idx_setting set setting_value = '$admin_template_path' where setting_name = 'admin_template_path'";
  451. // $result = mysql_query($query, $connection);
  452. // $query = "update idx_setting set setting_value = '$plugin_path' where setting_name = 'plugin_path'";
  453. // $result = mysql_query($query, $connection);
  454. ?>
  455. <!DOCTYPE html>
  456. <html lang="en">
  457. <head>
  458. <meta charset="utf-8">
  459. <title>Indexu Database Migration</title>
  460. <style>
  461. html {
  462. font-family: verdana;
  463. font-size: 12px;
  464. }
  465. h1 {
  466. font-size: 18px;
  467. }
  468. .explain {
  469. margin: 20px;
  470. padding: 10px;
  471. border: 1px solid #000;
  472. background: #ffc;
  473. }
  474. .debug {
  475. font-size: 9px;
  476. font-weight: normal;
  477. }
  478. </style>
  479. </head>
  480. <body>
  481. <h1>Indexu Database Migration</h1>
  482. Database upgraded.
  483. <h1>Debug</h1>
  484. <div class="debug">
  485. <?php print nl2br($debug); ?>
  486. </div>
  487. </body>
  488. </html>