replacing the cli cmds with variables and configuration in config.php
[gwvp-mini.git] / gwvpmini / gwvpmini_search.php
index 1583c3f..6e72fe9 100644 (file)
@@ -10,13 +10,16 @@ $CALL_ME_FUNCTIONS["search"] = "gwvpmini_SearchCallMe";
 function gwvpmini_SearchCallMe()\r
 {\r
 \r
-       error_log("in repoadmin callme - err?");\r
-       error_log(print_r($_REQUEST, true));\r
+       // error_log("in repoadmin callme - err?");\r
+       // error_log(print_r($_REQUEST, true));\r
        if(isset($_REQUEST["q"])) {\r
-               error_log("in repoadmin callme, for Q");\r
+               // error_log("in repoadmin callme, for Q");\r
                $query = $_REQUEST["q"];\r
                $qspl = explode("/", $query);\r
-               if(isset($qspl[0])) {\r
+               if(isset($qspl[0])) {
+                       if($qspl[0] == "search_redirs") {
+                               return "gwvpmini_SearchMainPageRedir";
+                       }\r
                        if($qspl[0] == "search") {\r
                                return "gwvpmini_SearchMainPage";\r
                        } else return false;\r
@@ -32,7 +35,7 @@ function gwvpmini_SearchBuilder()
 {
        global $BASE_URL;
        
-       echo "<form method=\"post\" action=\"$BASE_URL/search\">";
+       echo "<form method=\"post\" action=\"$BASE_URL/search_redirs\">";
        echo "<input type=\"text\" name=\"searchstring\"><input type=\"submit\" name=\"Search\" value=\"Seach\">";
        echo "</form>";
                
@@ -43,9 +46,119 @@ function gwvpmini_SearchMainPage()
        gwvpmini_goMainPage("gwvpmini_SearchMainPageBody");
 }
 
+function gwvpmini_SearchMainPageRedir()
+{
+       global $BASE_URL;
+       
+       $_SESSION["search"] = $_REQUEST["searchstring"];
+       header("Location: $BASE_URL/search");
+       
+       return;
+}
+
 function gwvpmini_SearchMainPageBody()
 {
-       echo "You searched for ".$_REQUEST["searchstring"];
+       global $BASE_URL;
+       
+       $search = "";
+       if(isset($_SESSION["search"])) {
+               $search = $_SESSION["search"];
+               unset($_SESSION["search"]);
+       } else {
+               $query = $_REQUEST["q"];\r
+               $qspl = explode("/", $query);\r
+               if(isset($qspl[1])) {
+                       $search = $qspl[1];
+               }
+       }
+       
+       $reps = gwvpmini_findReposLike($search);
+       $ppls = gwvpmini_findPeopleLike($search);
+       
+       
+       
+       /*echo "<pre>repos\n\n";
+       print_r($reps);
+       echo "\n\nppl\n\n";
+       print_r($ppls);
+       echo "</pre>";*/
+       
+       // we need to process the search string into tokens here
+       if($search == "") {
+               echo "You need to enter a search string<br>";
+               return;
+       }
+       
+       $vl = gwvpmini_SearchTokenizeString($search);
+       $search_str = $vl["str"];
+       
+       echo "<h2>Results</h2>";
+       echo "Searching for \"$search_str\"<br>Note: Search does not look INSIDE repos<br>";
+       echo "<table><tr><td bgcolor=\"#eeeeff\"><h3>Repo's</h3></td><td bgcolor=\"#eeffee\"><h3>People</h3></td></tr>";
+       // repos
+       echo "<tr valign=\"top\"><td>";
+       
+       
+       
+       if($reps != false) {
+               echo "<table border=\"1\">";
+               foreach($reps as $rep) {
+                       $ownerinfo = gwvpmini_getUser(null, null, $rep["owner"]);
+                       $userdets = gwvpmini_HtmlGravatar($ownerinfo["email"], 40, "<br>")."<a href=\"$BASE_URL/user/".$ownerinfo["username"]."\">".$ownerinfo["username"]."</a>";
+                       
+                       $repodets = "<b><a href=\"$BASE_URL/view/".$rep["name"]."\">".$rep["name"]."</a></b><br>".$rep["desc"];
+                       echo "<tr><td>$userdets</td><td>$repodets</td></tr>";
+               }
+               echo "</table>";
+       } else echo "No Repo's Match";
+       
+       
+       echo "</td><td>";
+       // people
+       if($ppls != false) {\r
+               echo "<table border=\"1\">";
+               $ownedrepos = "BLAHBLAH";\r
+               foreach($ppls as $ppl) {\r
+                       $userdets = gwvpmini_HtmlGravatar($ppl["email"], 40, "<br>")."<a href=\"$BASE_URL/user/".$ppl["username"]."\">".$ppl["username"]."</a>";
+                       $repos = gwvpmini_GetOwnedRepos($ppl["username"]);
+                       if($repos == false) $ownedrepos = "No Repos";
+                       else {
+                               $ownedrepos = "";
+                               foreach($repos as $repo) {
+                                       $ownedrepos .= "<b><a href=\"$BASE_URL/view/".$repo["name"]."\">".$repo["name"]."</a></b> - ".$repo["desc"]."<br>";
+                               }
+                       }
+                       echo "<tr><td>$userdets</td><td>$ownedrepos</td></tr>";\r
+               }\r
+               \r
+               echo "</table>";\r
+       } else echo "No People Match";\r
+       \r
+       
+       echo "</table>";
+}
+
+function gwvpmini_SearchTokenizeString($search)
+{
+       $inp = preg_replace("/[^a-zA-Z0-9 ]+/", "", $search);\r
+       \r
+       $res = preg_split("/ +/", trim($inp));\r
+
+       $ret["str"] = "";
+       $i = 0;
+       foreach($res as $r) {
+               if($i == 0) $ret["str"] = "<b>$r</b>";
+               else $ret["str"] .= " <i>and</i> <b>$r</b>";
+               $ret["words"][$i] = $r;
+               $i++;
+       }
+       
+       /*echo "<pre>";
+       print_r($ret);
+       echo "</pre>";*/
+       
+       return $ret;
+       
 }
 
 ?>
\ No newline at end of file