$allLanguages = false; $languages = ''; } // HACK: (re)evaluate the Category object w/o passing the user language // so the result set of a Search will have the Category Path // for any of the multilanguage faq records and the Category list // on the left pane will not be affected if ($allLanguages) { $category = new PMF_Category(); $category->transform(0); } if (is_null($user)) { $user = new PMF_User_CurrentUser(); } $faqSearch = new PMF_Search($db, $Language); $faqSearchResult = new PMF_Search_Resultset($user, $faq); $tagSearch = false; // // Handle the Tagging ID // if (!is_null($inputTag)) { $tagSearch = true; $tagging = new PMF_Tags($db, $Language); $recordIds = $tagging->getRecordsByTagId($inputTag); $searchResult = $faq->showAllRecordsByIds($recordIds); } else { $searchResult = ''; } // // Handle the full text search stuff //
if ($user->perm instanceof PMF_Perm_PermMedium) { $current_groups = $user->perm->getUserGroups($current_user); } else { $current_groups = array(-1); } if (0 == count($current_groups)) { $current_groups = array(-1); } } else { $user = new PMF_User_CurrentUser(); $current_user = -1; $current_groups = array(-1); } $faq = new PMF_Faq(); $faqSearch = new PMF_Search($db, $language); $faqSearchResult = new PMF_Search_Resultset($user, $faq); $categoryData = new PMF_Category_Tree_DataProvider_SingleQuery($LANGCODE); $categoryLayout = new PMF_Category_Layout(new PMF_Category_Tree_Helper(new PMF_Category_Tree($categoryData))); // // Handle the search requests // if (!is_null($searchString)) { $faqSearch->setCategory($categoryId); $searchResult = $faqSearch->search($searchString, false); $faqSearchResult->reviewResultset($searchResult); $faqSearchHelper = PMF_Helper_Search::getInstance(); $faqSearchHelper->setSearchterm($searchString); $faqSearchHelper->setCategoryLayout($categoryLayout); $faqSearchHelper->setPlurals($plr); print $faqSearchHelper->renderInstantResponseResult($faqSearchResult); }
$save = PMF_Filter::filterInput(INPUT_POST, 'save', FILTER_VALIDATE_INT, 0); // If e-mail address is set to optional if (!PMF_Configuration::getInstance()->get('main.optionalMailAddress') && is_null($email)) { $email = PMF_Configuration::getInstance()->get('main.administrationMail'); } if (!is_null($name) && !empty($name) && !is_null($email) && !empty($email) && !is_null($question) && !empty($question) && checkBannedWord(PMF_String::htmlspecialchars($question))) { if (PMF_Configuration::getInstance()->get('records.enableVisibilityQuestions')) { $visibility = 'N'; } else { $visibility = 'Y'; } if (1 != $save) { $cleanQuestion = PMF_Stopwords::getInstance()->clean($question); $user = new PMF_User_CurrentUser(); $faqSearch = new PMF_Search($db, $Language); $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) {
$allLanguages = false; $languages = ''; } // HACK: (re)evaluate the Category object w/o passing the user language // so the result set of a Search will have the Category Path // for any of the multilanguage faq records and the Category list // on the left pane will not be affected if ($allLanguages) { $category = new PMF_Category($faqConfig); $category->transform(0); } if (is_null($user)) { $user = new PMF_User_CurrentUser($faqConfig); } $faqSearch = new PMF_Search($faqConfig); $faqSearchResult = new PMF_Search_Resultset($user, $faq, $faqConfig); $tagSearch = false; // // Handle the Tagging ID // if (!is_null($inputTag)) { $tagSearch = true; $tagging = new PMF_Tags($faqConfig); $recordIds = $tagging->getRecordsByTagId($inputTag); $searchResult = $faq->showAllRecordsByIds($recordIds); } else { $searchResult = ''; } // // Handle the full text search stuff //
/** * @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&cat=%d&id=%d&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; }
*/ if (!defined('IS_VALID_PHPMYFAQ')) { header('Location: http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME'])); exit; } $captcha = new PMF_Captcha($db, $Language); $oGlossary = new PMF_Glossary(); $oLnk = new PMF_Linkverifier(); $faqTagging = new PMF_Tags($db, $Language); $faqRelation = new PMF_Relation($db, $Language); $faqRating = new PMF_Rating(); $faqComment = new PMF_Comment(); if (is_null($user)) { $user = new PMF_User_CurrentUser(); } $faqSearchResult = new PMF_Search_Resultset($user, $faq); $captcha->setSessionId($sids); if (!is_null($showCaptcha)) { $captcha->showCaptchaImg(); exit; } $currentCategory = $cat; $recordId = PMF_Filter::filterInput(INPUT_GET, 'id', FILTER_VALIDATE_INT); $solutionId = PMF_Filter::filterInput(INPUT_GET, 'solution_id', FILTER_VALIDATE_INT); $highlight = PMF_Filter::filterInput(INPUT_GET, 'highlight', FILTER_SANITIZE_STRIPPED); // Set the FAQ language $faq->setLanguage($lang); // Get all data from the FAQ record if (0 == $solutionId) { $faq->getRecord($recordId); } else {
} else { $current_groups = array(-1); } if (0 == count($current_groups)) { $current_groups = array(-1); } } else { $user = new PMF_User_CurrentUser($faqConfig); $current_user = -1; $current_groups = array(-1); } $category = new PMF_Category($faqConfig); $category->setUser($current_user); $category->transform(0); $category->buildTree(); $faq = new PMF_Faq($faqConfig); $faqSearch = new PMF_Search($faqConfig); $faqSearchResult = new PMF_Search_Resultset($user, $faq, $faqConfig); // // Handle the search requests // if (!is_null($searchString)) { $faqSearch->setCategory($categoryId); $searchResult = $faqSearch->search($searchString, false); $faqSearchResult->reviewResultset($searchResult); $faqSearchHelper = new PMF_Helper_Search($faqConfig); $faqSearchHelper->setSearchterm($searchString); $faqSearchHelper->setCategory($category); $faqSearchHelper->setPlurals($plr); Response::create($faqSearchHelper->renderInstantResponseResult($faqSearchResult))->send(); }
if (is_array($item) && count($item) == 3 && PMF_Language::isASupportedLanguage($item[1])) { echo $faq->updateRecordFlag((int) $item[0], addslashes($item[1]), $item[2], 'sticky'); } } } } else { echo $PMF_LANG['err_NotAuth']; } break; // search FAQs for suggestions // search FAQs for suggestions case 'search_records': if ($permission['editbt']) { $faq = new PMF_Faq($faqConfig); $faqSearch = new PMF_Search($faqConfig); $faqSearchResult = new PMF_Search_Resultset($user, $faq, $faqConfig); $searchResult = ''; $searchString = PMF_Filter::filterInput(INPUT_POST, 'search', FILTER_SANITIZE_STRIPPED); if (!is_null($searchString)) { $searchResult = $faqSearch->search($searchString, false); $faqSearchResult->reviewResultset($searchResult); $searchHelper = new PMF_Helper_Search($faqConfig); $searchHelper->setSearchterm($searchString); echo $searchHelper->renderAdminSuggestionResult($faqSearchResult); } } else { echo $PMF_LANG['err_NotAuth']; } break; // delete FAQs // delete FAQs
/** * 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&cat=%d&id=%d&artlang=%s&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; }
switch ($action) { case 'getVersion': $result = array('version' => $faqConfig->get('main.currentVersion')); break; case 'getApiVersion': $result = array('apiVersion' => (int) $faqConfig->get('main.currentApiVersion')); 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);
$protocol = 'https'; } header('Location: ' . $protocol . '://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME'])); exit; } $captcha = new PMF_Captcha($faqConfig); $oGlossary = new PMF_Glossary($faqConfig); $oLnk = new PMF_Linkverifier($faqConfig); $faqTagging = new PMF_Tags($faqConfig); $faqRelation = new PMF_Relation($faqConfig); $faqRating = new PMF_Rating($faqConfig); $faqComment = new PMF_Comment($faqConfig); if (is_null($user)) { $user = new PMF_User_CurrentUser($faqConfig); } $faqSearchResult = new PMF_Search_Resultset($user, $faq, $faqConfig); $captcha->setSessionId($sids); if (!is_null($showCaptcha)) { $captcha->showCaptchaImg(); exit; } $currentCategory = $cat; $recordId = PMF_Filter::filterInput(INPUT_GET, 'id', FILTER_VALIDATE_INT); $solutionId = PMF_Filter::filterInput(INPUT_GET, 'solution_id', FILTER_VALIDATE_INT); // Get all data from the FAQ record if (0 == $solutionId) { $faq->getRecord($recordId); } else { $faq->getRecordBySolutionId($solutionId); } $recordId = $faq->faqRecord['id'];
$output .= $faq->updateRecordFlag((int) $item[0], addslashes($item[1]), $item[2], 'sticky'); } } $response->setContent($output); } } else { $response->setContent($PMF_LANG['err_NotAuth']); } break; // search FAQs for suggestions // search FAQs for suggestions case 'search_records': if ($user->perm->checkRight($user->getUserId(), 'editbt')) { $faq = new PMF_Faq($faqConfig); $faqSearch = new PMF_Search($faqConfig); $faqSearchResult = new PMF_Search_Resultset($user, $faq, $faqConfig); $searchResult = ''; $searchString = PMF_Filter::filterInput(INPUT_POST, 'search', FILTER_SANITIZE_STRIPPED); if (!is_null($searchString)) { $searchResult = $faqSearch->search($searchString, false); $faqSearchResult->reviewResultset($searchResult); $searchHelper = new PMF_Helper_Search($faqConfig); $searchHelper->setSearchterm($searchString); $response->setContent($searchHelper->renderAdminSuggestionResult($faqSearchResult)); } } else { $response->setContent($PMF_LANG['err_NotAuth']); } break; // delete FAQs // delete FAQs