added a gravatar enable/disable bit
[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])) {\r
20                         if($qspl[0] == "search") {\r
21                                 return "gwvpmini_SearchMainPage";\r
22                         } else return false;\r
23                 }\r
24                 else return false;\r
25         }\r
26 \r
27         return false;\r
28 }\r
29
30
31 function gwvpmini_SearchBuilder()
32 {
33         global $BASE_URL;
34         
35         echo "<form method=\"post\" action=\"$BASE_URL/search\">";
36         echo "<input type=\"text\" name=\"searchstring\"><input type=\"submit\" name=\"Search\" value=\"Seach\">";
37         echo "</form>";
38                 
39 }
40
41 function gwvpmini_SearchMainPage()
42 {
43         gwvpmini_goMainPage("gwvpmini_SearchMainPageBody");
44 }
45
46 function gwvpmini_SearchMainPageBody()
47 {
48         global $BASE_URL;
49         
50         $search = $_REQUEST["searchstring"];
51         
52         $reps = gwvpmini_findReposLike($search);
53         $ppls = gwvpmini_findPeopleLike($search);
54         
55         
56         
57         /*echo "<pre>repos\n\n";
58         print_r($reps);
59         echo "\n\nppl\n\n";
60         print_r($ppls);
61         echo "</pre>";*/
62         
63         // we need to process the search string into tokens here
64         if($search == "") {
65                 echo "You need to enter a search string<br>";
66                 return;
67         }
68         
69         $vl = gwvpmini_SearchTokenizeString($search);
70         $search_str = $vl["str"];
71         
72         echo "<h2>Results</h2>";
73         echo "Searching for \"$search_str\"<br>Note: Search does not look INSIDE repos<br>";
74         echo "<table><tr><td bgcolor=\"#eeeeff\"><h3>Repo's</h3></td><td bgcolor=\"#eeffee\"><h3>People</h3></td></tr>";
75         // repos
76         echo "<tr valign=\"top\"><td>";
77         
78         
79         
80         if($reps != false) {
81                 echo "<table border=\"1\">";
82                 foreach($reps as $rep) {
83                         $ownerinfo = gwvpmini_getUser(null, null, $rep["owner"]);
84                         $userdets = gwvpmini_HtmlGravatar($ownerinfo["email"], 40, "<br>")."<a href=\"$BASE_URL/user/".$ownerinfo["username"]."\">".$ownerinfo["username"]."</a>";
85                         
86                         $repodets = "<b><a href=\"$BASE_URL/view/".$rep["name"]."\">".$rep["name"]."</a></b><br>".$rep["desc"];
87                         echo "<tr><td>$userdets</td><td>$repodets</td></tr>";
88                 }
89                 echo "</table>";
90         } else echo "No Repo's Match";
91         
92         
93         echo "</td><td>";
94         // people
95         if($ppls != false) {\r
96                 echo "<table border=\"1\">";
97                 $ownedrepos = "BLAHBLAH";\r
98                 foreach($ppls as $ppl) {\r
99                         $userdets = gwvpmini_HtmlGravatar($ppl["email"], 40, "<br>")."<a href=\"$BASE_URL/user/".$ppl["username"]."\">".$ppl["username"]."</a>";
100                         $repos = gwvpmini_GetOwnedRepos($ppl["username"]);
101                         if($repos == false) $ownedrepos = "No Repos";
102                         else {
103                                 $ownedrepos = "";
104                                 foreach($repos as $repo) {
105                                         $ownedrepos .= "<b><a href=\"$BASE_URL/view/".$repo["name"]."\">".$repo["name"]."</a></b> - ".$repo["desc"]."<br>";
106                                 }
107                         }
108                         echo "<tr><td>$userdets</td><td>$ownedrepos</td></tr>";\r
109                 }\r
110                 \r
111                 echo "</table>";\r
112         } else echo "No People Match";\r
113         \r
114         
115         echo "</table>";
116 }
117
118 function gwvpmini_SearchTokenizeString($search)
119 {
120         $inp = preg_replace("/[^a-zA-Z0-9 ]+/", "", $search);\r
121         \r
122         $res = preg_split("/ +/", trim($inp));\r
123
124         $ret["str"] = "";
125         $i = 0;
126         foreach($res as $r) {
127                 if($i == 0) $ret["str"] = "<b>$r</b>";
128                 else $ret["str"] .= " <i>and</i> <b>$r</b>";
129                 $ret["words"][$i] = $r;
130                 $i++;
131         }
132         
133         /*echo "<pre>";
134         print_r($ret);
135         echo "</pre>";*/
136         
137         return $ret;
138         
139 }
140
141 ?>