IndexController.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use HyperDown\Parser;
  4. use Parsedown;
  5. use App\Models\Chat;
  6. use App\Models\Config;
  7. use App\Models\FriendshipLink;
  8. use App\Models\OauthUser;
  9. use DB;
  10. use App\Models\Article;
  11. use App\Models\ArticleTag;
  12. use App\Models\Comment;
  13. use Illuminate\Http\Request;
  14. use App\Http\Controllers\Controller;
  15. use League\HTMLToMarkdown\HtmlConverter;
  16. class IndexController extends Controller
  17. {
  18. /**
  19. * 后台首页
  20. *
  21. * @return mixed
  22. */
  23. public function index()
  24. {
  25. return view('admin/index/index');
  26. }
  27. public function migration(Article $articleModel, ArticleTag $articleTag, Comment $commentModel, FriendshipLink $friendshipLinkModel, Config $configModel, OauthUser $oauthUserModel, Chat $chatModel)
  28. {
  29. $data = DB::connection('old')->table('article')->where('aid', 103)->value('content');
  30. $content = htmlspecialchars_decode($data);
  31. $content = str_replace('<br style="box-sizing: inherit; margin-bottom: 0px;"/>', '', $content);
  32. $content = str_replace('/Upload/image/ueditor', '/uploads/article', $content);
  33. $content = str_replace(['<pre class="brush:', '</pre>', ';toolbar:false">', '<p><br/></p>'], ["\r\n```", "\r\n```\r\n", "\r\n", "\r\n"], $content);
  34. $content = str_replace('```js', '```javascript', $content);
  35. $content = str_replace("\r\n", '|rn|', $content);
  36. $content = str_replace('<p>', '', $content);
  37. $content = str_replace('</p>', '|rn|', $content);
  38. $htmlConverter = new HtmlConverter();
  39. echo $content;die;
  40. $markdown = $htmlConverter->convert($content);
  41. $markdown = htmlspecialchars($markdown);
  42. $markdown = str_replace(['|rn|', '\*', '\_', "\n "], ["\r\n", '*', '_', "\n "], $markdown);
  43. $markdown = str_replace("\r\n\r\n", "\r\n", $markdown);
  44. $markdown = str_replace('http://www.baijunyao.com/uploads/article', 'uploads/article', $markdown);
  45. echo $markdown;die;
  46. die;
  47. // 从旧系统中迁移文章
  48. $htmlConverter = new HtmlConverter();
  49. $parser = new Parser();
  50. $data = DB::connection('old')->table('article')->get()->toArray();
  51. $articleModel->truncate();
  52. foreach ($data as $k => $v) {
  53. $content = htmlspecialchars_decode($v->content);
  54. $content = str_replace('<br style="box-sizing: inherit; margin-bottom: 0px;"/>', '', $content);
  55. $content = str_replace('/Upload/image/ueditor', '/uploads/article', $content);
  56. $content = str_replace(['<pre class="brush:', '</pre>', ';toolbar:false">', '<p><br/></p>'], ["\r\n```", "\r\n```\r\n", "\r\n", "\r\n"], $content);
  57. $content = str_replace('```js', '```javascript', $content);
  58. $content = str_replace("\r\n", '|rn|', $content);
  59. $content = str_replace('<p>', '', $content);
  60. $content = str_replace('</p>', '|rn|', $content);
  61. $markdown = $htmlConverter->convert($content);
  62. $markdown = htmlspecialchars($markdown);
  63. $markdown = str_replace(['|rn|', '\*', '\_', "\n "], ["\r\n", '*', '_', "\n "], $markdown);
  64. $markdown = str_replace("\r\n\r\n", "\r\n", $markdown);
  65. $markdown = str_replace('http://www.baijunyao.com/uploads/article', 'uploads/article', $markdown);
  66. // markdown 转html
  67. $html = $parser->makeHtml($markdown);
  68. $html = str_replace('<code class="', '<code class="lang-', $html);
  69. // $html = htmlspecialchars_decode($html);
  70. $article = [
  71. 'id' => $v->aid,
  72. 'category_id' => $v->cid,
  73. 'title' => $v->title,
  74. 'author' => $v->author,
  75. 'markdown' => $markdown,
  76. 'html' => $html,
  77. 'description' => $v->description,
  78. 'keywords' => $v->keywords,
  79. 'cover' => $articleModel->getCover($markdown),
  80. 'is_top' => $v->is_top,
  81. 'click' => $v->click,
  82. ];
  83. $articleModel->create($article);
  84. $editArticleMap = [
  85. 'id' => $v->aid
  86. ];
  87. $editArticleData = [
  88. 'created_at' => date('Y-m-d H:i:s', $v->addtime)
  89. ];
  90. $articleModel->editData($editArticleMap, $editArticleData);
  91. }
  92. // 从旧系统中迁移文章标签中间表
  93. // $data = DB::connection('old')->table('article_tag')->get()->toArray();
  94. // $articleTag->truncate();
  95. // foreach ($data as $v) {
  96. // $article_tag = [
  97. // 'article_id' => $v->aid,
  98. // 'tag_id' => $v->tid
  99. // ];
  100. // $articleTag->addData($article_tag);
  101. // }
  102. // 从旧系统中迁移评论
  103. // $data = DB::connection('old')->table('comment')->get()->toArray();
  104. // $commentModel->truncate();
  105. // foreach ($data as $v) {
  106. // $comment_data = [
  107. // 'id' => $v->cmtid,
  108. // 'oauth_user_id' => $v->ouid,
  109. // 'type' => $v->type,
  110. // 'pid' => $v->pid,
  111. // 'article_id' => $v->aid,
  112. // 'content' => str_replace('/Public/emote', '/statics/emoticon', $v->content),
  113. // 'status' => $v->status,
  114. // ];
  115. // $commentModel->create($comment_data);
  116. // $editCommentMap = [
  117. // 'id' => $v->cmtid,
  118. // ];
  119. // $editCommentData = [
  120. // 'created_at' => date('Y-m-d H:i:s', $v->date)
  121. // ];
  122. // $commentModel->editData($editCommentMap, $editCommentData);
  123. // }
  124. // 迁移友情链接
  125. // $data = DB::connection('old')->table('link')->get()->toArray();
  126. // $friendshipLinkModel->truncate();
  127. // foreach ($data as $v) {
  128. // $link_data = [
  129. // 'id' => $v->lid,
  130. // 'name' => $v->lname,
  131. // 'url' => $v->url,
  132. // 'sort' => $v->sort
  133. // ];
  134. // if ($v->is_show === 0) {
  135. // $link_data['deleted_at'] = date('Y-m-d H:i:s', time());
  136. // }
  137. // $friendshipLinkModel->addData($link_data);
  138. // }
  139. // 迁移配置项
  140. // $data = DB::connection('old')->table('config')->get()->toArray();
  141. // $configModel->truncate();
  142. // foreach ($data as $v) {
  143. // $config_data = [
  144. // 'id' => $v->id,
  145. // 'name' => $v->name,
  146. // 'value' => $v->value
  147. // ];
  148. // $configModel->addData($config_data);
  149. // }
  150. // 迁移第三方登录用户表
  151. // $data = DB::connection('old')->table('oauth_user')->get()->toArray();
  152. // $oauthUserModel->truncate();
  153. // foreach ($data as $v) {
  154. // $oauthUserData = [
  155. // 'id' => $v->id,
  156. // 'type' => $v->type,
  157. // 'name' => $v->nickname,
  158. // 'avatar' => $v->head_img,
  159. // 'openid' => $v->openid,
  160. // 'access_token' => $v->access_token,
  161. // 'last_login_ip' => $v->last_login_ip,
  162. // 'login_times' => $v->login_times,
  163. // 'email' => $v->email,
  164. // 'is_admin' => $v->is_admin
  165. // ];
  166. // $oauthUserModel->addData($oauthUserData);
  167. // $editOauthUserMap = [
  168. // 'id' => $v->id,
  169. // ];
  170. // $editOauthUserData = [
  171. // 'created_at' => date('Y-m-d H:i:s', $v->create_time)
  172. // ];
  173. // $oauthUserModel->editData($editOauthUserMap, $editOauthUserData);
  174. // }
  175. // 迁移随言碎语表
  176. // $data = DB::connection('old')->table('chat')->get()->toArray();
  177. // $chatModel->truncate();
  178. // foreach ($data as $v) {
  179. // $chatData = [
  180. // 'id' => $v->chid,
  181. // 'content' => $v->content,
  182. // ];
  183. // $chatModel->addData($chatData);
  184. // $editChatMap = [
  185. // 'id' => $v->chid,
  186. // ];
  187. // $editChatData = [
  188. // 'created_at' => date('Y-m-d H:i:s', $v->date)
  189. // ];
  190. // $chatModel->editData($editChatMap, $editChatData);
  191. // }
  192. }
  193. }