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" ); }