2 // PukiWiki - Yet another WikiWikiWeb clone.
4 // Copyright 2002-2017 PukiWiki Development Team
5 // License: GPL v2 or (at your option) any later version
9 function plugin_vote_action()
11 global $vars, $cols,$rows;
12 global $_title_collided, $_msg_collided, $_title_updated;
13 global $_vote_plugin_votes;
15 $script = get_base_uri();
16 if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
18 $postdata_old = get_source($vars['refer']);
21 $title = $body = $postdata = $postdata_input = $vote_str = '';
23 foreach($postdata_old as $line) {
25 if (! preg_match('/^#vote(?:\((.*)\)(.*))?$/i', $line, $matches) ||
26 $vote_no++ != $vars['vote_no']) {
30 $args = explode(',', $matches[1]);
31 $lefts = isset($matches[2]) ? $matches[2] : '';
33 foreach($args as $arg) {
35 if (preg_match('/^(.+)\[(\d+)\]$/', $arg, $matches)) {
39 $e_arg = encode($arg);
40 if (! empty($vars['vote_' . $e_arg]) && $vars['vote_' . $e_arg] == $_vote_plugin_votes)
43 $votes[] = $arg . '[' . $cnt . ']';
46 $vote_str = '#vote(' . @join(',', $votes) . ')' . $lefts . "\n";
47 $postdata_input = $vote_str;
48 $postdata .= $vote_str;
51 if (md5(get_source($vars['refer'], TRUE, TRUE)) !== $vars['digest']) {
52 $title = $_title_collided;
54 $s_refer = htmlsc($vars['refer']);
55 $s_digest = htmlsc($vars['digest']);
56 $s_postdata_input = htmlsc($postdata_input);
59 <form action="$script?cmd=preview" method="post">
61 <input type="hidden" name="refer" value="$s_refer" />
62 <input type="hidden" name="digest" value="$s_digest" />
63 <textarea name="msg" rows="$rows" cols="$cols" id="textarea">$s_postdata_input</textarea><br />
69 page_write($vars['refer'], $postdata);
70 $title = $_title_updated;
73 $vars['page'] = $vars['refer'];
75 return array('msg'=>$title, 'body'=>$body);
78 function plugin_vote_convert()
80 global $vars, $digest;
81 global $_vote_plugin_choice, $_vote_plugin_votes;
82 static $number = array();
84 $page = isset($vars['page']) ? $vars['page'] : '';
86 // Vote-box-id in the page
87 if (! isset($number[$page])) $number[$page] = 0; // Init
88 $vote_no = $number[$page]++;
90 if (! func_num_args()) return '#vote(): No arguments<br />' . "\n";
96 $_script = get_base_uri();
100 $args = func_get_args();
101 $s_page = htmlsc($page);
102 $s_digest = htmlsc($digest);
105 <form action="$_script" method="post">
106 <table cellspacing="0" cellpadding="2" class="style_table" summary="vote">
108 <td align="left" class="vote_label" style="padding-left:1em;padding-right:1em"><strong>$_vote_plugin_choice</strong>
109 <input type="hidden" name="plugin" value="vote" />
110 <input type="hidden" name="refer" value="$s_page" />
111 <input type="hidden" name="vote_no" value="$vote_no" />
112 <input type="hidden" name="digest" value="$s_digest" />
114 <td align="center" class="vote_label"><strong>$_vote_plugin_votes</strong></td>
121 foreach($args as $arg) {
124 if (preg_match('/^(.+)\[(\d+)\]$/', $arg, $matches)) {
128 $e_arg = encode($arg);
130 $link = make_link($arg);
132 $cls = ($tdcnt++ % 2) ? 'vote_td1' : 'vote_td2';
136 <td align="left" class="$cls" style="padding-left:1em;padding-right:1em;">$link</td>
137 <td align="right" class="$cls">$cnt
138 <input type="$_submit" name="vote_$e_arg" value="$_vote_plugin_votes" class="submit" />