replacing the cli cmds with variables and configuration in config.php
[gwvp-mini.git] / gwvpmini / gwvpmini_search.php
1 <?php
2
3 \r
4 $CALL_ME_FUNCTIONS["search"] = "gwvpmini_SearchCallMe";\r
5 \r
6 // the home_page_provders bit is an array\r
7 \r
8 \r
9 \r
10 function gwvpmini_SearchCallMe()\r
11 {\r
12 \r
13         // error_log("in repoadmin callme - err?");\r
14         // error_log(print_r($_REQUEST, true));\r
15         if(isset($_REQUEST["q"])) {\r
16                 // error_log("in repoadmin callme, for Q");\r
17                 $query = $_REQUEST["q"];\r
18                 $qspl = explode("/", $query);\r
19                 if(isset($qspl[0])) {
20                         if($qspl[0] == "search_redirs") {
21                                 return "gwvpmini_SearchMainPageRedir";
22                         }\r
23                         if($qspl[0] == "search") {\r
24                                 return "gwvpmini_SearchMainPage";\r
25                         } else return false;\r
26                 }\r
27                 else return false;\r
28         }\r
29 \r
30         return false;\r
31 }\r
32
33
34 function gwvpmini_SearchBuilder()
35 {
36         global $BASE_URL;
37         
38         echo "<form method=\"post\" action=\"$BASE_URL/search_redirs\">";
39         echo "<input type=\"text\" name=\"searchstring\"><input type=\"submit\" name=\"Search\" value=\"Seach\">";
40         echo "</form>";
41                 
42 }
43
44 function gwvpmini_SearchMainPage()
45 {
46         gwvpmini_goMainPage("gwvpmini_SearchMainPageBody");
47 }
48
49 function gwvpmini_SearchMainPageRedir()
50 {
51         global $BASE_URL;
52         
53         $_SESSION["search"] = $_REQUEST["searchstring"];
54         header("Location: $BASE_URL/search");
55         
56         return;
57 }
58
59 function gwvpmini_SearchMainPageBody()
60 {
61         global $BASE_URL;
62         
63         $search = "";
64         if(isset($_SESSION["search"])) {
65                 $search = $_SESSION["search"];
66                 unset($_SESSION["search"]);
67         } else {
68                 $query = $_REQUEST["q"];\r
69                 $qspl = explode("/", $query);\r
70                 if(isset($qspl[1])) {
71                         $search = $qspl[1];
72                 }
73         }
74         
75         $reps = gwvpmini_findReposLike($search);
76         $ppls = gwvpmini_findPeopleLike($search);
77         
78         
79         
80         /*echo "<pre>repos\n\n";
81         print_r($reps);
82         echo "\n\nppl\n\n";
83         print_r($ppls);
84         echo "</pre>";*/
85         
86         // we need to process the search string into tokens here
87         if($search == "") {
88                 echo "You need to enter a search string<br>";
89                 return;
90         }
91         
92         $vl = gwvpmini_SearchTokenizeString($search);
93         $search_str = $vl["str"];
94         
95         echo "<h2>Results</h2>";
96         echo "Searching for \"$search_str\"<br>Note: Search does not look INSIDE repos<br>";
97         echo "<table><tr><td bgcolor=\"#eeeeff\"><h3>Repo's</h3></td><td bgcolor=\"#eeffee\"><h3>People</h3></td></tr>";
98         // repos
99         echo "<tr valign=\"top\"><td>";
100         
101         
102         
103         if($reps != false) {
104                 echo "<table border=\"1\">";
105                 foreach($reps as $rep) {
106                         $ownerinfo = gwvpmini_getUser(null, null, $rep["owner"]);
107                         $userdets = gwvpmini_HtmlGravatar($ownerinfo["email"], 40, "<br>")."<a href=\"$BASE_URL/user/".$ownerinfo["username"]."\">".$ownerinfo["username"]."</a>";
108                         
109                         $repodets = "<b><a href=\"$BASE_URL/view/".$rep["name"]."\">".$rep["name"]."</a></b><br>".$rep["desc"];
110                         echo "<tr><td>$userdets</td><td>$repodets</td></tr>";
111                 }
112                 echo "</table>";
113         } else echo "No Repo's Match";
114         
115         
116         echo "</td><td>";
117         // people
118         if($ppls != false) {\r
119                 echo "<table border=\"1\">";
120                 $ownedrepos = "BLAHBLAH";\r
121                 foreach($ppls as $ppl) {\r
122                         $userdets = gwvpmini_HtmlGravatar($ppl["email"], 40, "<br>")."<a href=\"$BASE_URL/user/".$ppl["username"]."\">".$ppl["username"]."</a>";
123                         $repos = gwvpmini_GetOwnedRepos($ppl["username"]);
124                         if($repos == false) $ownedrepos = "No Repos";
125                         else {
126                                 $ownedrepos = "";
127                                 foreach($repos as $repo) {
128                                         $ownedrepos .= "<b><a href=\"$BASE_URL/view/".$repo["name"]."\">".$repo["name"]."</a></b> - ".$repo["desc"]."<br>";
129                                 }
130                         }
131                         echo "<tr><td>$userdets</td><td>$ownedrepos</td></tr>";\r
132                 }\r
133                 \r
134                 echo "</table>";\r
135         } else echo "No People Match";\r
136         \r
137         
138         echo "</table>";
139 }
140
141 function gwvpmini_SearchTokenizeString($search)
142 {
143         $inp = preg_replace("/[^a-zA-Z0-9 ]+/", "", $search);\r
144         \r
145         $res = preg_split("/ +/", trim($inp));\r
146
147         $ret["str"] = "";
148         $i = 0;
149         foreach($res as $r) {
150                 if($i == 0) $ret["str"] = "<b>$r</b>";
151                 else $ret["str"] .= " <i>and</i> <b>$r</b>";
152                 $ret["words"][$i] = $r;
153                 $i++;
154         }
155         
156         /*echo "<pre>";
157         print_r($ret);
158         echo "</pre>";*/
159         
160         return $ret;
161         
162 }
163
164 ?>