Advertisement
Guest User

Untitled

a guest
Jan 30th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.61 KB | None | 0 0
  1. <?php
  2.  
  3. // Handle form upload
  4. if(isset($_POST['import']))
  5. {
  6.  
  7. $mysql_host = trim($_POST['mysql_host']);
  8. $mysql_user = trim($_POST['mysql_username']);
  9. $mysql_password = trim($_POST['mysql_password']);
  10. $mysql_schema = trim($_POST['mysql_schema']);
  11. $table_prefix = trim($_POST['table_prefix']);
  12.  
  13. // Validate MySQL details
  14. if(!mysql_connect($mysql_host, $mysql_user, $mysql_password) || !mysql_select_db($mysql_schema)) {
  15. echo 'Supplied MySQL details were incorrect - aborting';
  16. return;
  17. }
  18.  
  19. // set tablenames
  20. $tb_users = $table_prefix . 'users';
  21. $tb_usergroups = $table_prefix . 'usergroups';
  22. $tb_user_usergroup_map = $table_prefix . 'user_usergroup_map';
  23.  
  24. // Validate File Name
  25. if($_FILES["csv"]["error"] != 0) {
  26. printf('Invalid file name: "%s" - Error code "%s" <br />', $_FILES['csv']['tmp_name'], $_FILES["csv"]["error"]);
  27. die('<strong>Upload aborted...</strong><br />');
  28. } else {
  29. printf('Importing the following csv file<br />
  30. File: "%s"<br />
  31. Size: "%s" bytes<br />', $_FILES['csv']['name'], $_FILES['csv']['size']);
  32. }
  33.  
  34. // open cvs file
  35. $fp = fopen($_FILES['csv']['tmp_name'], 'r');
  36.  
  37. // validate data
  38. $valid_data = true;
  39. while($user = fgetcsv($fp)) {
  40.  
  41. // Verify name
  42. if(!isset($user[0])) {
  43. display_user('<br /><strong>ERROR!!! Invalid Name </strong><br />', $user);
  44. $valid_data = false;
  45. } elseif($user[0] == '') {
  46. display_user('<br /><strong>ERROR!!! Invalid Name </strong><br />', $user);
  47. $valid_data = false;
  48. }
  49.  
  50. // Verify username
  51. if(!isset($user[1])) {
  52. display_user('<br /><strong>ERROR!!! Invalid username </strong><br />', $user);
  53. $valid_data = false;
  54. } elseif($user[1] == '') {
  55. display_user('<br /><strong>ERROR!!! Invalid username </strong><br />', $user);
  56. $valid_data = false;
  57. }
  58.  
  59. // Verify email
  60. if(!isset($user[2])) {
  61. display_user('<br /><strong>ERROR!!! Invalid email </strong><br />', $user);
  62. $valid_data = false;
  63. } elseif($user[2] == '') {
  64. display_user('<br /><strong>ERROR!!! Invalid email </strong><br />', $user);
  65. $valid_data = false;
  66. }
  67.  
  68. // Verify Password
  69. if(!isset($user[3])) {
  70. display_user('<br /><strong>ERROR!!! Invalid password </strong><br />', $user);
  71. $valid_data = false;
  72. } elseif($user[3] == '') {
  73. display_user('<br /><strong>ERROR!!! Invalid password </strong><br />', $user);
  74. $valid_data = false;
  75. }
  76.  
  77. // Verify usergroup
  78. if(!isset($user[4])) {
  79. display_user('<br /><strong>ERROR!!! Invalid usergroup </strong><br />', $user);
  80. $valid_data = false;
  81. } elseif($user[4] == '') {
  82. display_user('<br /><strong>ERROR!!! Invalid usergroup </strong><br />', $user);
  83. $valid_data = false;
  84. }
  85.  
  86. // Check duplicate username
  87. $sql = '
  88. SELECT COUNT(*) AS duplicate_username
  89. FROM '.$tb_users.'
  90. WHERE username = "'.$user[1].'"';
  91.  
  92. $result = mysql_query($sql);
  93. if (!$result) {
  94. die('Invalid query: ' . mysql_error());
  95. }
  96.  
  97. while ($row = mysql_fetch_assoc($result)) {
  98. $duplicate_users = $row['duplicate_username'];
  99. }
  100.  
  101. if ($duplicate_users > 0) {
  102. display_user('<br /><strong>ERROR!!! Duplicate username </strong><br />', $user);
  103. $valid_data = false;
  104. }
  105.  
  106. // Check duplicate email
  107. $sql = '
  108. SELECT COUNT(*) AS duplicate_email
  109. FROM '.$tb_users.'
  110. WHERE email = "'.$user[2].'"';
  111.  
  112. $result = mysql_query($sql);
  113. if (!$result) {
  114. die('Invalid query: ' . mysql_error());
  115. }
  116.  
  117. while ($row = mysql_fetch_assoc($result)) {
  118. $duplicate_users = $row['duplicate_email'];
  119. }
  120.  
  121. if ($duplicate_users > 0) {
  122. display_user('<br /><strong>ERROR!!! Duplicate email </strong><br />', $user);
  123. $valid_data = false;
  124. }
  125.  
  126. }
  127.  
  128.  
  129. if(!$valid_data) {
  130. die('<strong>CSV file contains errors. Upload Aborted!</strong>');
  131. } else {
  132. printf('<strong>Data is valid. Uploading users...</strong><br />');
  133. }
  134.  
  135.  
  136. // Count initial users
  137. $sql = '
  138. SELECT COUNT(*) AS initial_users
  139. FROM '.$tb_users.'
  140. '
  141. ;
  142.  
  143. $result = mysql_query($sql);
  144. if (!$result) {
  145. die('Invalid query: ' . mysql_error());
  146. }
  147.  
  148. while ($row = mysql_fetch_assoc($result)) {
  149. $initial_users = $row['initial_users'];
  150. }
  151.  
  152.  
  153.  
  154. // Load users
  155. // open cvs file
  156. $fp = fopen($_FILES['csv']['tmp_name'], 'r');
  157.  
  158. $counter = 0;
  159. while($user = fgetcsv($fp)) {
  160.  
  161.  
  162. // Check duplicate username
  163. $valid_username = true;
  164. $sql = '
  165. SELECT COUNT(*) AS duplicate_username
  166. FROM '.$tb_users.'
  167. WHERE username = "'.$user[1].'"';
  168.  
  169. $result = mysql_query($sql);
  170. if (!$result) {
  171. die('Invalid query: ' . mysql_error());
  172. }
  173.  
  174. while ($row = mysql_fetch_assoc($result)) {
  175. $duplicate_username = $row['duplicate_username'];
  176. }
  177.  
  178. if ($duplicate_users > 0) {
  179. display_user('<br /><strong>ERROR!!! Duplicate username found in database</strong><br />', $user);
  180. $valid_username = false;
  181. }
  182.  
  183. // Check duplicate email
  184. $valid_mail = true;
  185. $sql = '
  186. SELECT COUNT(*) AS duplicate_email
  187. FROM '.$tb_users.'
  188. WHERE email = "'.$user[2].'"';
  189.  
  190. $result = mysql_query($sql);
  191. if (!$result) {
  192. die('Invalid query: ' . mysql_error());
  193. }
  194.  
  195. while ($row = mysql_fetch_assoc($result)) {
  196. $duplicate_users = $row['duplicate_email'];
  197. }
  198.  
  199. if ($duplicate_users > 0) {
  200. display_user('<br /><strong>ERROR!!! Duplicate email found in database</strong><br />', $user);
  201. $valid_mail = false;
  202. }
  203.  
  204. if(!$valid_username or !$valid_mail) {
  205. printf('<strong>WARNING!!! User not uploaded</strong><br /><br />');
  206. } else {
  207.  
  208. // Upload user
  209. display_user('<br />', $user);
  210.  
  211.  
  212. // Encypt password if required
  213. $user_password = isset($_POST['md5_passwords']) ? md5($user[3]) : sql_prep($user[3]);
  214.  
  215. // Insert record into users
  216. $sql = "
  217. INSERT INTO ".$tb_users."
  218. SET
  219. name = '".sql_prep($user[0])."',
  220. username = '".sql_prep($user[1])."',
  221. email = '".sql_prep($user[2])."',
  222. password = '".$user_password."',
  223. registerDate = NOW(),
  224. activation = '',
  225. params = '{"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":""}',
  226. otpKey = '',
  227. otep = ''
  228. ";
  229.  
  230. $result = mysql_query($sql);
  231. if (!$result) {
  232. die('Invalid query: ' . mysql_error());
  233. }
  234.  
  235. // Retrieve last uploaded user's ID
  236. list($user_id) = mysql_fetch_row(mysql_query('SELECT LAST_INSERT_ID()'));
  237.  
  238. printf('Assigned user ID: '.$user_id.'<br />');
  239.  
  240.  
  241. // Insert record user_group_map
  242. $sql = '
  243. INSERT INTO '.$tb_user_usergroup_map.'
  244. SET
  245. user_id = '.$user_id.',
  246. group_id = '.$user[4].'
  247. ';
  248.  
  249. $result = mysql_query($sql);
  250. if (!$result) {
  251. die('Invalid query: ' . mysql_error());
  252. }
  253.  
  254. echo 'done.<br />';
  255. flush();
  256.  
  257. }
  258.  
  259. // Update counter
  260. $counter++;
  261.  
  262. }
  263.  
  264. // Count final users
  265. $sql = '
  266. SELECT COUNT(*) AS final_users
  267. FROM '.$tb_users.'
  268. '
  269. ;
  270.  
  271. $result = mysql_query($sql);
  272. if (!$result) {
  273. die('Invalid query: ' . mysql_error());
  274. }
  275.  
  276. while ($row = mysql_fetch_assoc($result)) {
  277. $final_users = $row['final_users'];
  278. }
  279.  
  280.  
  281. if(($final_users - $initial_users) == $counter) {
  282. echo '<br /><br /><strong>Done. <br />
  283. Uploaded '.$counter.' users </strong>';
  284. } else {
  285. echo '<br /><br /><strong>ERROR!!! <br />
  286. Uploaded only some users</strong><br />
  287. Users submitted: '.$counter.'<br />
  288. Users uploaded : '.($final_users - $initial_users);
  289. }
  290.  
  291.  
  292. } else {
  293.  
  294.  
  295. // show upload form
  296. ?>
  297. <html><head><title>Bulk import users into Joomla 3</title></head><body>
  298. <h1>Import Users to Joomla</h1>
  299. <p>
  300. Use this script to do a bulk import of users into Joomla 1.5.<br />
  301. Upload a CSV file with the following format:<br />
  302. <code>
  303. name, username, email, password, group_number
  304. </code><br />
  305. Wrap details with commas in them in quotes.
  306. </p>
  307. <hr />
  308. <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
  309. <input type="hidden" name="import" value="1" />
  310. <table cellpadding="4px">
  311. <tr>
  312. <td>CSV File: </td>
  313. <td><input type="file" name="csv" /></td>
  314. </tr>
  315. <tr>
  316. <td>MD5 Hash Passwords: </td>
  317. <td><input type="checkbox" name="md5_passwords" /><br /><small>*Check this option if the passwords in your CSV are in plain text</small></td>
  318. </tr>
  319. <tr>
  320. <td>Joomla Table Prefix: </td>
  321. <td><input type="text" name="table_prefix" value="jos_" /></td>
  322. </tr>
  323. <tr>
  324. <td>Joomla Database Name: </td>
  325. <td><input type="text" name="mysql_schema" value="joomla" /></td>
  326. </tr>
  327. <tr>
  328. <td>MySQL Host: </td>
  329. <td><input type="text" name="mysql_host" value="localhost" /></td>
  330. </tr>
  331. <tr>
  332. <td>MySQL Username: </td>
  333. <td><input type="text" name="mysql_username" value="" /></td>
  334. </tr>
  335. <tr>
  336. <td>MySQL Password: </td>
  337. <td><input type="password" name="mysql_password" value="" /></td>
  338. </tr>
  339. <tr>
  340. <td></td>
  341. <td><input type="submit" name="submit" value=" Import Users! " /></td>
  342. </tr>
  343. </table>
  344. </form>
  345. </body></html>
  346.  
  347. <?php
  348.  
  349. }
  350.  
  351. function sql_prep($var) {
  352. return mysql_real_escape_string($var);
  353. }
  354.  
  355. function display_user($message, $user) {
  356.  
  357. printf($message);
  358. printf('Name: "%s" ... ', sql_prep($user[0]));
  359. printf(' Username: "%s" ... ', sql_prep($user[1]));
  360. printf(' Password: "%s" ... ', sql_prep($user[3]));
  361. printf(' Mail: "%s" ... ', sql_prep($user[2]));
  362. printf(' Group: "%s" ', sql_prep($user[4]));
  363. printf('<br />');
  364.  
  365. return;
  366.  
  367. }
  368.  
  369. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement