/phpBB/develop/adjust_bbcodes.php

https://github.com/naderman/phpbb-orchestra · PHP · 174 lines · 119 code · 38 blank · 17 comment · 11 complexity · fa42e8245f593b2c4f8ead10613e6d6a MD5 · raw file

  1. <?php
  2. /**
  3. * Only adjust bitfields, do not rewrite text...
  4. * All new parsings have the img, flash and quote modes set to true
  5. *
  6. * You should make a backup from your users, posts and privmsgs table in case something goes wrong
  7. * Forum descriptions and rules need to be re-submitted manually.
  8. */
  9. die("Please read the first lines of this script for instructions on how to enable it");
  10. set_time_limit(0);
  11. define('IN_PHPBB', true);
  12. $phpbb_root_path = './../';
  13. $phpEx = substr(strrchr(__FILE__, '.'), 1);
  14. include($phpbb_root_path . 'common.'.$phpEx);
  15. include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
  16. // Start session management
  17. $user->session_begin();
  18. $auth->acl($user->data);
  19. $user->setup();
  20. $echos = 0;
  21. // Adjust user signatures
  22. $message_parser = new parse_message();
  23. $message_parser->mode = 'sig';
  24. $message_parser->bbcode_init();
  25. $sql = 'SELECT user_id, user_sig, user_sig_bbcode_uid, user_sig_bbcode_bitfield
  26. FROM ' . USERS_TABLE;
  27. $result = $db->sql_query($sql);
  28. while ($row = $db->sql_fetchrow($result))
  29. {
  30. // Convert bbcodes back to their normal form
  31. if ($row['user_sig_bbcode_uid'] && $row['user_sig'])
  32. {
  33. decode_message($row['user_sig'], $row['user_sig_bbcode_uid']);
  34. $message_parser->message = $row['user_sig'];
  35. $message_parser->prepare_bbcodes();
  36. $message_parser->parse_bbcode();
  37. $bitfield = $message_parser->bbcode_bitfield;
  38. $sql = 'UPDATE ' . USERS_TABLE . " SET user_sig_bbcode_bitfield = '" . $db->sql_escape($bitfield) . "'
  39. WHERE user_id = " . $row['user_id'];
  40. $db->sql_query($sql);
  41. if ($echos > 200)
  42. {
  43. echo '<br />' . "\n";
  44. $echos = 0;
  45. }
  46. echo '.';
  47. $echos++;
  48. flush();
  49. }
  50. else
  51. {
  52. $sql = 'UPDATE ' . USERS_TABLE . " SET user_sig_bbcode_bitfield = ''
  53. WHERE user_id = " . $row['user_id'];
  54. $db->sql_query($sql);
  55. }
  56. }
  57. $db->sql_freeresult($result);
  58. // Now adjust posts
  59. $message_parser = new parse_message();
  60. $message_parser->mode = 'post';
  61. $message_parser->bbcode_init();
  62. // Update posts
  63. $sql = 'SELECT post_id, post_text, bbcode_uid, enable_bbcode, enable_smilies, enable_sig
  64. FROM ' . POSTS_TABLE;
  65. $result = $db->sql_query($sql);
  66. while ($row = $db->sql_fetchrow($result))
  67. {
  68. // Convert bbcodes back to their normal form
  69. if ($row['enable_bbcode'])
  70. {
  71. decode_message($row['post_text'], $row['bbcode_uid']);
  72. $message_parser->message = $row['post_text'];
  73. $message_parser->prepare_bbcodes();
  74. $message_parser->parse_bbcode();
  75. $bitfield = $message_parser->bbcode_bitfield;
  76. $sql = 'UPDATE ' . POSTS_TABLE . " SET bbcode_bitfield = '" . $db->sql_escape($bitfield) . "'
  77. WHERE post_id = " . $row['post_id'];
  78. $db->sql_query($sql);
  79. if ($echos > 200)
  80. {
  81. echo '<br />' . "\n";
  82. $echos = 0;
  83. }
  84. echo '.';
  85. $echos++;
  86. flush();
  87. }
  88. else
  89. {
  90. $sql = 'UPDATE ' . POSTS_TABLE . " SET bbcode_bitfield = ''
  91. WHERE post_id = " . $row['post_id'];
  92. $db->sql_query($sql);
  93. }
  94. }
  95. $db->sql_freeresult($result);
  96. // Now to the private messages
  97. $message_parser = new parse_message();
  98. $message_parser->mode = 'post';
  99. $message_parser->bbcode_init();
  100. // Update pms
  101. $sql = 'SELECT msg_id, message_text, bbcode_uid, enable_bbcode
  102. FROM ' . PRIVMSGS_TABLE;
  103. $result = $db->sql_query($sql);
  104. while ($row = $db->sql_fetchrow($result))
  105. {
  106. // Convert bbcodes back to their normal form
  107. if ($row['enable_bbcode'])
  108. {
  109. decode_message($row['message_text'], $row['bbcode_uid']);
  110. $message_parser->message = $row['message_text'];
  111. $message_parser->prepare_bbcodes();
  112. $message_parser->parse_bbcode();
  113. $bitfield = $message_parser->bbcode_bitfield;
  114. $sql = 'UPDATE ' . PRIVMSGS_TABLE . " SET bbcode_bitfield = '" . $db->sql_escape($bitfield) . "'
  115. WHERE msg_id = " . $row['msg_id'];
  116. $db->sql_query($sql);
  117. if ($echos > 200)
  118. {
  119. echo '<br />' . "\n";
  120. $echos = 0;
  121. }
  122. echo '.';
  123. $echos++;
  124. flush();
  125. }
  126. else
  127. {
  128. $sql = 'UPDATE ' . PRIVMSGS_TABLE . " SET bbcode_bitfield = ''
  129. WHERE msg_id = " . $row['msg_id'];
  130. $db->sql_query($sql);
  131. }
  132. }
  133. $db->sql_freeresult($result);
  134. // Done
  135. $db->sql_close();
  136. ?>