slide_write.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. requirePHPLib('form');
  3. if (!UOJContext::hasBlogPermission()) {
  4. become403Page();
  5. }
  6. if (isset($_GET['id'])) {
  7. if (!validateUInt($_GET['id']) || !($blog = queryBlog($_GET['id'])) || !UOJContext::isHisSlide($blog)) {
  8. become404Page();
  9. }
  10. } else {
  11. $blog = DB::selectFirst("select * from blogs where poster = '".UOJContext::user()['username']."' and type = 'S' and is_draft = true");
  12. }
  13. $blog_editor = new UOJBlogEditor();
  14. $blog_editor->type = 'slide';
  15. $blog_editor->name = 'blog';
  16. if ($blog) {
  17. $blog_editor->cur_data = array(
  18. 'title' => $blog['title'],
  19. 'content_md' => $blog['content_md'],
  20. 'content' => $blog['content'],
  21. 'tags' => queryBlogTags($blog['id']),
  22. 'is_hidden' => $blog['is_hidden']
  23. );
  24. } else {
  25. $blog_editor->cur_data = array(
  26. 'title' => '新幻灯片',
  27. 'content_md' => '',
  28. 'content' => '',
  29. 'tags' => array(),
  30. 'is_hidden' => true
  31. );
  32. }
  33. if ($blog && !$blog['is_draft']) {
  34. $blog_editor->blog_url = HTML::blog_url(UOJContext::user()['username'], "/post/{$blog['id']}");
  35. } else {
  36. $blog_editor->blog_url = null;
  37. }
  38. function updateBlog($id, $data) {
  39. DB::update("update blogs set title = '".DB::escape($data['title'])."', content = '".DB::escape($data['content'])."', content_md = '".DB::escape($data['content_md'])."', is_hidden = {$data['is_hidden']} where id = {$id}");
  40. }
  41. function insertSlide($data) {
  42. DB::insert("insert into blogs (type, title, content, content_md, poster, is_hidden, is_draft, post_time) values ('S', '".DB::escape($data['title'])."', '".DB::escape($data['content'])."', '".DB::escape($data['content_md'])."', '".Auth::id()."', {$data['is_hidden']}, {$data['is_draft']}, now())");
  43. }
  44. $blog_editor->save = function($data) {
  45. global $blog;
  46. $ret = array();
  47. if ($blog) {
  48. if ($blog['is_draft']) {
  49. if ($data['is_hidden']) {
  50. updateBlog($blog['id'], $data);
  51. } else {
  52. deleteBlog($blog['id']);
  53. insertSlide(array_merge($data, array('is_draft' => 0)));
  54. $blog = array('id' => DB::insert_id(), 'tags' => array());
  55. $ret['blog_write_url'] = HTML::blog_url(UOJContext::user()['username'], "/slide/{$blog['id']}/write");
  56. $ret['blog_url'] = HTML::blog_url(UOJContext::user()['username'], "/post/{$blog['id']}");
  57. }
  58. } else {
  59. updateBlog($blog['id'], $data);
  60. }
  61. } else {
  62. insertSlide(array_merge($data, array('is_draft' => $data['is_hidden'] ? 1 : 0)));
  63. $blog = array('id' => DB::insert_id(), 'tags' => array());
  64. }
  65. if ($data['tags'] !== $blog['tags']) {
  66. DB::delete("delete from blogs_tags where blog_id = {$blog['id']}");
  67. foreach ($data['tags'] as $tag) {
  68. DB::insert("insert into blogs_tags (blog_id, tag) values ({$blog['id']}, '".DB::escape($tag)."')");
  69. }
  70. }
  71. return $ret;
  72. };
  73. $blog_editor->runAtServer();
  74. ?>
  75. <?php echoUOJPageHeader('写幻灯片') ?>
  76. <div class="text-right">
  77. <a href="http://uoj.ac/blog/75">这玩意儿怎么用?</a>
  78. </div>
  79. <?php $blog_editor->printHTML() ?>
  80. <?php echoUOJPageFooter() ?>