PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/plugin/memo.inc.php

https://github.com/miya5n/pukiwiki
PHP | 111 lines | 90 code | 18 blank | 3 comment | 12 complexity | d5eddf1c2beb3953dfb6f8dee7fafde4 MD5 | raw file
Possible License(s): GPL-2.0
  1. <?php
  2. // $Id: memo.inc.php,v 1.17 2011/01/25 15:01:01 henoheno Exp $
  3. //
  4. // Memo box plugin
  5. define('MEMO_COLS', 60); // Columns of textarea
  6. define('MEMO_ROWS', 5); // Rows of textarea
  7. function plugin_memo_action()
  8. {
  9. global $script, $vars, $cols, $rows;
  10. global $_title_collided, $_msg_collided, $_title_updated;
  11. if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
  12. if (! isset($vars['msg']) || $vars['msg'] == '') return;
  13. $memo_body = preg_replace('/' . "\r" . '/', '', $vars['msg']);
  14. $memo_body = str_replace("\n", '\n', $memo_body);
  15. $memo_body = str_replace('"', '&#x22;', $memo_body); // Escape double quotes
  16. $memo_body = str_replace(',', '&#x2c;', $memo_body); // Escape commas
  17. $postdata_old = get_source($vars['refer']);
  18. $postdata = '';
  19. $memo_no = 0;
  20. foreach($postdata_old as $line) {
  21. if (preg_match("/^#memo\(?.*\)?$/i", $line)) {
  22. if ($memo_no == $vars['memo_no']) {
  23. $postdata .= '#memo(' . $memo_body . ')' . "\n";
  24. $line = '';
  25. }
  26. ++$memo_no;
  27. }
  28. $postdata .= $line;
  29. }
  30. $postdata_input = $memo_body . "\n";
  31. $body = '';
  32. if (md5(get_source($vars['refer'], TRUE, TRUE)) !== $vars['digest']) {
  33. $title = $_title_collided;
  34. $body = $_msg_collided . "\n";
  35. $s_refer = htmlsc($vars['refer']);
  36. $s_digest = htmlsc($vars['digest']);
  37. $s_postdata_input = htmlsc($postdata_input);
  38. $body .= <<<EOD
  39. <form action="$script?cmd=preview" method="post">
  40. <div>
  41. <input type="hidden" name="refer" value="$s_refer" />
  42. <input type="hidden" name="digest" value="$s_digest" />
  43. <textarea name="msg" rows="$rows" cols="$cols" id="textarea">$s_postdata_input</textarea><br />
  44. </div>
  45. </form>
  46. EOD;
  47. } else {
  48. page_write($vars['refer'], $postdata);
  49. $title = $_title_updated;
  50. }
  51. $retvars['msg'] = & $title;
  52. $retvars['body'] = & $body;
  53. $vars['page'] = $vars['refer'];
  54. return $retvars;
  55. }
  56. function plugin_memo_convert()
  57. {
  58. global $script, $vars, $digest;
  59. global $_btn_memo_update;
  60. static $numbers = array();
  61. if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0;
  62. $memo_no = $numbers[$vars['page']]++;
  63. $data = func_get_args();
  64. $data = implode(',', $data); // Care all arguments
  65. $data = str_replace('&#x2c;', ',', $data); // Unescape commas
  66. $data = str_replace('&#x22;', '"', $data); // Unescape double quotes
  67. $data = htmlsc(str_replace('\n', "\n", $data));
  68. if (PKWK_READONLY) {
  69. $_script = '';
  70. $_submit = '';
  71. } else {
  72. $_script = & $script;
  73. $_submit = '<input type="submit" name="memo" value="' . $_btn_memo_update . '" />';
  74. }
  75. $s_page = htmlsc($vars['page']);
  76. $s_digest = htmlsc($digest);
  77. $s_cols = MEMO_COLS;
  78. $s_rows = MEMO_ROWS;
  79. $string = <<<EOD
  80. <form action="$_script" method="post" class="memo">
  81. <div>
  82. <input type="hidden" name="memo_no" value="$memo_no" />
  83. <input type="hidden" name="refer" value="$s_page" />
  84. <input type="hidden" name="plugin" value="memo" />
  85. <input type="hidden" name="digest" value="$s_digest" />
  86. <textarea name="msg" rows="$s_rows" cols="$s_cols">$data</textarea><br />
  87. $_submit
  88. </div>
  89. </form>
  90. EOD;
  91. return $string;
  92. }
  93. ?>