예제 #1
0
 public function searchAction()
 {
     function modify($s)
     {
         $s = "%" . $s . "%";
         for ($i = 0; $i < strlen($s); $i++) {
             if ($s[$i] == ' ') {
                 $s[$i] = '%';
             }
         }
         return $s;
     }
     function my_sort1($a, $b)
     {
         // sort question by follownum first and then answernum
         if ($a['follownum'] == $b['follownum']) {
             if ($a['answernum'] == $b['answernum']) {
                 return 0;
             } else {
                 return $a['answernum'] < $b['answernum'] ? 1 : -1;
             }
         }
         return $a['follownum'] < $b['follownum'] ? 1 : -1;
     }
     function my_sort2($a, $b)
     {
         // sort user by likenum
         if ($a['likenum'] == $b['likenum']) {
             return 0;
         } else {
             return $a['likenum'] < $b['likenum'] ? 1 : -1;
         }
     }
     $perpage = 10;
     //question number per page
     if ($_GET) {
         // get front-data
         $data = $this->getRequest()->getParam('key', '');
         $key = $data = trim($data);
         $data = modify($data);
         $P = $this->getRequest()->getParam('P', '1');
     }
     //file_put_contents ( "2.txt", $data );
     $result = array();
     if ($data == '') {
         $this->render('searchresult');
         return -1;
     }
     /*
      * search for question
      *
      */
     //file_put_contents ( "1.txt", "search2" );
     $search = new question();
     $result = $search->searchQestion($data);
     $answer = new answer();
     $followQ = new followQ();
     $question = new question();
     $tag = new tag();
     $ask = new ask();
     for ($i = 0; $i < count($result); $i++) {
         $result[$i]['time'] = $ask->getAskTimebyQID($result[$i]['QID']);
         $result[$i]['answernum'] = $answer->getAnswernumbyQID($result[$i]['QID']);
         $result[$i]['follownum'] = $followQ->getFollownumbyQID($result[$i]['QID']);
         $result[$i]['tag'] = $tag->getTagbyQID($result[$i]['QID']);
     }
     usort($result, "my_sort1");
     // sort question by follownum first and then answernum
     //print_r($result);
     //$_SESSION["$key"] = $result;
     $sum = count($result);
     $Pnum = floor($sum / $perpage);
     if ($sum % $perpage > 0) {
         $Pnum++;
     }
     $presult = array();
     $length = min($P * $perpage, $sum);
     for ($i = ($P - 1) * $perpage; $i < $length; $i++) {
         $presult[$i] = $result[$i];
     }
     $this->view->P = $P;
     $this->view->Pnum = $Pnum;
     $this->view->Qresult = $presult;
     /*
      * search for user
      * 
      */
     session_start();
     $loginuser = $_SESSION['user'];
     $UID = $loginuser['UID'];
     $followu = new followU();
     $farr = $followu->getFUIDsbyUID($UID);
     if ($P > 1) {
         $this->view->Uresult = array();
     } else {
         $search = new user();
         $result = $search->searchUser($data);
         $likeA = new likeA();
         $likeC = new likeC();
         $likeQ = new likeQ();
         $answer = new answer();
         for ($i = 0; $i < count($result); $i++) {
             $isfollow = false;
             $result[$i]['likenum'] = $this->getLikedNumByUID($result[$i]['UID']);
             //$result[$i]['likenum']+=$likeC->getLikenumbyUID($result[$i]['UID']);
             //$result[$i]['likenum']+=$likeQ->getLikenumbyUID($result[$i]['UID']);
             $result[$i]['answernum'] = $answer->getAnswernumbyUID($result[$i]['UID']);
             for ($j = 0; $j < count($farr); $j++) {
                 if ($farr[$j] == $result[$i]['UID']) {
                     $isfollow = true;
                     break;
                 }
             }
             $result[$i]['isfollow'] = $isfollow;
         }
         usort($result, "my_sort2");
         //sort user by likenum
         $this->view->Uresult = $result;
     }
     $this->view->key = $key;
     $this->view->url = "/search/search";
     $this->render('searchresult');
     //
     //file_put_contents ( "1.txt", "search3" );
 }