9ad7572f99e224e0f03992014f0d5fb98919c131
[atutor.git] / mods / wiki / plugins / mpi / mpi_bugreportstate.php
1 <?php
2
3 /*
4    Belongs to mpi_bugreports; provides bug status change buttons.
5 */
6
7 $ewiki_plugins["mpi"]["bugreportstate"] = "ewiki_mpi_bugreportstate";
8
9
10 #-- show submit buttons or change associated pages (from backlinks)
11 function ewiki_mpi_bugreportstate($action, $args, &$iii, &$s) 
12 {
13     global $ewiki_id;
14
15     #-- possible states    
16     $values = array("open", "closed", "done", "frozen", "answered");
17     foreach ($args as $i=>$name) if (is_int($i)) {
18        if (preg_match("/^\w+$/", $name) && !in_array($name, $values)) {
19           $values[] = $name;
20        }
21     }
22     $rxvals = implode("|", $values);
23
24     #-- if button pressed
25     if (($new = $_REQUEST["brs_change"]) && in_array($new, $values)) {
26     
27        $pages = ewiki_get_backlinks($ewiki_id);
28        $pages[] = $ewiki_id;
29
30        #-- change assoc pages
31        foreach ($pages as $id) {
32           $data = ewiki_db::GET($id);
33           if (preg_match("/\n\|.*stat(e|us).*\|.*($rxvals)/", $data["content"])
34           or preg_match("/\n\|.*($rxvals).*\|.*$ewiki_id/", $data["content"])) {
35              $data["content"] = preg_replace(
36                 "/(\n\|.*stat(?:e|us).*\|.*?)[_*]*(?:$rxvals)[_*]*/",
37                 "$1$new",
38                 $data["content"]
39              );
40              $data["content"] = preg_replace(
41                 "/(\n\|.*?)[_*]*(?:$rxvals)[_*]*(.*?\|.*$ewiki_id)/",
42                 "$1$new$2",
43                 $data["content"]
44              );
45              ewiki_db::UPDATE($data);
46              $data["version"]++;
47              ewiki_db::WRITE($data);
48           }
49        }
50
51        $o = "<p>(status changed)</p>";
52        $iii[0][0] = preg_replace("/($rxvals)/", "$new", $iii[0][0]);
53     }
54     
55     #-- show form/buttons
56     else {
57
58        $url = ewiki_script("", $ewiki_id);
59        $o .=<<<EOT
60 <form action="$url#added" method="POST" enctype="multipart/form-data">
61 <input type="submit" name="brs_change" value="open">
62 <input type="submit" name="brs_change" value="closed">
63 <input type="submit" name="brs_change" value="frozen">
64 </form>
65 EOT;
66     }
67
68     return($o);
69 }
70
71
72 ?>