예제 #1
0
 $faqSearchResult = new PMF_Search_Resultset($user, $faq);
 $searchResult = array();
 $mergedResult = array();
 foreach ($cleanQuestion as $word) {
     $searchResult[] = $faqSearch->search($word);
 }
 foreach ($searchResult as $resultSet) {
     foreach ($resultSet as $result) {
         $mergedResult[] = $result;
     }
 }
 $faqSearchResult->reviewResultset($mergedResult);
 if (0 < $faqSearchResult->getNumberOfResults()) {
     $response = sprintf('<p>%s</p>', $plr->GetMsg('plmsgSearchAmount', $faqSearchResult->getNumberOfResults()));
     $response .= '<ul>';
     foreach ($faqSearchResult->getResultset() as $result) {
         $url = sprintf('/index.php?action=artikel&amp;cat=%d&amp;id=%d&amp;artlang=%s', $result->category_id, $result->id, $result->lang);
         $oLink = new PMF_Link(PMF_Configuration::getInstance()->get('main.referenceURL') . $url);
         $oLink->text = PMF_Utils::chopString($result->question, 15);
         $oLink->itemTitle = $result->question;
         $response .= sprintf('<li>%s<br /><div class="searchpreview">%s...</div></li>', $oLink->toHtmlAnchor(), PMF_Utils::chopString(strip_tags($result->answer), 10));
     }
     $response .= '</ul>';
     $message = array('result' => $response);
 } else {
     $questionData = array('username' => $name, 'email' => $email, 'category_id' => $ucategory, 'question' => $question, 'is_visible' => $visibility);
     $faq->addQuestion($questionData);
     $questionMail = "User: "******", mailto:" . $questionData['email'] . "\n" . $PMF_LANG["msgCategory"] . ": " . $categories[$questionData['category_id']]["name"] . "\n\n" . wordwrap($question, 72) . "\n\n" . $faqconfig->get('main.referenceURL') . '/admin/';
     $userId = $cat->getCategoryUser($questionData['category_id']);
     $oUser = new PMF_User();
     $oUser->getUserById($userId);
예제 #2
0
 /**
  * Renders the result page for the main search page
  * 
  * @param PMF_Search_Resultset $resultSet   PMF_Search_Resultset object
  * @param integer              $currentPage Current page number
  * 
  * @return string
  */
 public function renderSearchResult(PMF_Search_Resultset $resultSet, $currentPage)
 {
     $html = '';
     $confPerPage = PMF_Configuration::getInstance()->get('main.numberOfRecordsPerPage');
     $numOfResults = $resultSet->getNumberOfResults();
     $totalPages = ceil($numOfResults / $confPerPage);
     $lastPage = $currentPage * $confPerPage;
     $firstPage = $lastPage - $confPerPage;
     if ($lastPage > $numOfResults) {
         $lastPage = $numOfResults;
     }
     if (0 < $numOfResults) {
         $html .= sprintf("<p>%s</p>\n", $this->plurals->GetMsg('plmsgSearchAmount', $numOfResults));
         if (1 < $totalPages) {
             $html .= sprintf("<p><strong>%s%d %s %s</strong></p>\n", $this->translation['msgPage'], $currentPage, $this->translation['msgVoteFrom'], $this->plurals->GetMsg('plmsgPagesTotal', $totalPages));
         }
         $html .= "<ul class=\"phpmyfaq_ul\">\n";
         foreach ($resultSet->getResultset() as $result) {
             $categoryName = $this->categoryLayout->renderBreadcrumb(array($result->category_id));
             $question = PMF_Utils::chopString($result->question, 15);
             $answerPreview = PMF_Utils::chopString(strip_tags($result->answer), 25);
             $searchterm = str_replace(array('^', '.', '?', '*', '+', '{', '}', '(', ')', '[', ']', '"'), '', $this->searchterm);
             $searchterm = preg_quote($searchterm, '/');
             $searchItems = explode(' ', $searchterm);
             if (PMF_String::strlen($searchItems[0]) > 1) {
                 foreach ($searchItems as $item) {
                     if (PMF_String::strlen($item) > 2) {
                         $question = PMF_Utils::setHighlightedString($question, $item);
                         $answerPreview = PMF_Utils::setHighlightedString($answerPreview, $item);
                     }
                 }
             }
             // Build the link to the faq record
             $currentUrl = sprintf('%s?%saction=artikel&amp;cat=%d&amp;id=%d&amp;artlang=%s&amp;highlight=%s', PMF_Link::getSystemRelativeUri(), $this->sessionId, $result->category_id, $result->id, $result->lang, urlencode($searchterm));
             $oLink = new PMF_Link($currentUrl);
             $oLink->text = $oLink->itemTitle = $oLink->tooltip = $result->question;
             $html .= sprintf("<li><strong>%s</strong>: %s<br /><div class=\"searchpreview\"><strong>%s</strong> %s...</div><br /></li>\n", $categoryName, $oLink->toHtmlAnchor(), $this->translation['msgSearchContent'], $answerPreview);
         }
         $html .= "</ul>\n";
         if (1 > $totalPages) {
             $html .= $this->pagination->render();
         }
     } else {
         $html = $this->translation['err_noArticles'];
     }
     return $html;
 }
 /**
  * @param PMF_Search_Resultset $resultSet
  * @param integer              $recordId
  *
  * @return string
  */
 public function renderRelatedFaqs(PMF_Search_Resultset $resultSet, $recordId)
 {
     $html = '';
     $numOfResults = $resultSet->getNumberOfResults();
     if ($numOfResults > 0) {
         $html .= '<ul>';
         $counter = 0;
         foreach ($resultSet->getResultset() as $result) {
             if ($counter >= 5) {
                 continue;
             }
             if ($recordId == $result->id) {
                 continue;
             }
             $counter++;
             $url = sprintf('%s?action=artikel&amp;cat=%d&amp;id=%d&amp;artlang=%s', PMF_Link::getSystemRelativeUri(), $result->category_id, $result->id, $result->lang);
             $oLink = new PMF_Link($url, $this->_config);
             $oLink->itemTitle = $result->question;
             $oLink->text = $result->question;
             $oLink->tooltip = $result->question;
             $html .= '<li>' . $oLink->toHtmlAnchor() . '</li>';
         }
         $html .= '</ul>';
     }
     return $html;
 }
예제 #4
0
     break;
 case 'getCount':
     $faq = new PMF_Faq($faqConfig);
     $result = array('faqCount' => $faq->getNumberOfRecords($language));
     break;
 case 'search':
     $faq = new PMF_Faq($faqConfig);
     $user = new PMF_User($faqConfig);
     $search = new PMF_Search($faqConfig);
     $faqSearchResult = new PMF_Search_Resultset($user, $faq, $faqConfig);
     $searchString = PMF_Filter::filterInput(INPUT_GET, 'q', FILTER_SANITIZE_STRIPPED);
     $searchResults = $search->search($searchString, false);
     $url = $faqConfig->get('main.referenceURL') . '/index.php?action=artikel&cat=%d&id=%d&artlang=%s';
     $faqSearchResult->reviewResultset($searchResults);
     $result = array();
     foreach ($faqSearchResult->getResultset() as $data) {
         $data->answer = html_entity_decode(strip_tags($data->answer), ENT_COMPAT, 'utf-8');
         $data->answer = PMF_Utils::makeShorterText($data->answer, 12);
         $data->link = sprintf($url, $data->category_id, $data->id, $data->lang);
         $result[] = $data;
     }
     break;
 case 'getCategories':
     $category = new PMF_Category($faqConfig, $currentGroups, true);
     $category->setUser($currentUser);
     $category->setGroups($currentGroups);
     $result = $category->categories;
     break;
 case 'getFaqs':
     $faq = new PMF_Faq($faqConfig);
     $faq->setUser($currentUser);