/** * Create and return an instance * * @param string $language * * @return PMF_String_Basic */ public static function getInstance($encoding = null, $language = 'en') { if (!self::$instance) { self::$instance = new self(); self::$instance->encoding = self::DEFAULT_ENCODING; self::$instance->language = PMF_Language::isASupportedLanguage($language) ? $language : self::DEFAULT_LANGUAGE; } return self::$instance; }
$stopword = PMF_Filter::filterInput(INPUT_GET, 'stopword', FILTER_SANITIZE_STRING); $stopwords_lang = PMF_Filter::filterInput(INPUT_GET, 'stopwords_lang', FILTER_SANITIZE_STRING); switch ($ajax_action) { case 'load_stop_words_by_lang': if (PMF_Language::isASupportedLanguage($stopwords_lang)) { $stop_words_list = PMF_Stopwords::getInstance()->getByLang($stopwords_lang); header('Content-Type: application/json'); print json_encode($stop_words_list); } break; case 'delete_stop_word': if (null != $stopword_id && PMF_Language::isASupportedLanguage($stopwords_lang)) { $pmf_sw = PMF_Stopwords::getInstance(); $pmf_sw->setLanguage($stopwords_lang); $pmf_sw->remove($stopword_id); } break; case 'save_stop_word': if (null != $stopword && PMF_Language::isASupportedLanguage($stopwords_lang)) { $pmf_sw = PMF_Stopwords::getInstance(); $pmf_sw->setLanguage($stopwords_lang); if (null !== $stopword_id && -1 < $stopword_id) { $pmf_sw->update($stopword_id, $stopword); } else { if (!$pmf_sw->match($stopword)) { $pmf_sw->add($stopword); } } } break; }
define('IS_VALID_PHPMYFAQ', null); // // Bootstrapping // require PMF_ROOT_DIR . '/inc/Bootstrap.php'; /** * Initialize attachment factory */ PMF_Attachment_Factory::init($faqConfig->get('records.attachmentsStorageType'), $faqConfig->get('records.defaultAttachmentEncKey'), $faqConfig->get('records.enableAttachmentEncryption')); $currentSave = PMF_Filter::filterInput(INPUT_POST, 'save', FILTER_SANITIZE_STRING); $currentAction = PMF_Filter::filterInput(INPUT_GET, 'action', FILTER_SANITIZE_STRING); $currentToken = PMF_Filter::filterInput(INPUT_POST, 'csrf', FILTER_SANITIZE_STRING); $Language = new PMF_Language($faqConfig); $LANGCODE = $Language->setLanguage($faqConfig->get('main.languageDetection'), $faqConfig->get('main.language')); require_once PMF_ROOT_DIR . '/lang/language_en.php'; if (isset($LANGCODE) && PMF_Language::isASupportedLanguage($LANGCODE)) { require_once PMF_ROOT_DIR . '/lang/language_' . $LANGCODE . '.php'; } else { $LANGCODE = 'en'; } $auth = false; $user = PMF_User_CurrentUser::getFromSession($faqConfig); if ($user) { $auth = true; } else { $error = $PMF_LANG['ad_auth_sess']; $user = null; unset($user); } if (is_null($currentAction) || !is_null($currentSave)) { ?>
// Send headers $http = PMF_Helper_Http::getInstance(); $http->setContentType('application/json'); $http->addHeader(); // Set user permissions $current_user = -1; $current_groups = array(-1); $action = PMF_Filter::filterInput(INPUT_GET, 'action', FILTER_SANITIZE_STRING); $language = PMF_Filter::filterInput(INPUT_GET, 'lang', FILTER_SANITIZE_STRING, 'en'); $categoryId = PMF_Filter::filterInput(INPUT_GET, 'categoryId', FILTER_VALIDATE_INT); $recordId = PMF_Filter::filterInput(INPUT_GET, 'recordId', FILTER_VALIDATE_INT); // Get language (default: english) $Language = new PMF_Language(); $language = $Language->setLanguage($faqconfig->get('main.languageDetection'), $faqconfig->get('main.language')); // Set language if (PMF_Language::isASupportedLanguage($language)) { require 'lang/language_' . $language . '.php'; } else { require 'lang/language_en.php'; } $plr = new PMF_Language_Plurals($PMF_LANG); PMF_String::init($language); // Set empty result $result = array(); // Handle actions switch ($action) { case 'getVersion': $result = array('version' => $faqconfig->get('main.currentVersion')); break; case 'getApiVersion': $result = array('apiVersion' => (int) $faqconfig->get('main.currentApiVersion'));
if (is_null($sid_cookie)) { if (!is_null($sid_get)) { $sids = sprintf('sid=%d&lang=%s&', $sid_get, $LANGCODE); } } } } else { if (!setcookie(PMF_GET_KEY_NAME_LANGUAGE, $LANGCODE, $_SERVER['REQUEST_TIME'] + PMF_LANGUAGE_EXPIRED_TIME)) { $sids = sprintf('lang=%s&', $LANGCODE); } } // // Found a article language? // $lang = PMF_Filter::filterInput(INPUT_POST, 'artlang', FILTER_SANITIZE_STRING); if (is_null($lang) && !PMF_Language::isASupportedLanguage($lang)) { $lang = $LANGCODE; } // // Create a new FAQ object // $faq = new PMF_Faq($current_user, $current_groups); // // Create a new Category object // $category = new PMF_Category($current_user, $current_groups); // // Create a new Tags object // $oTag = new PMF_Tags(); //
$output = ''; $isCronRequest = false; $isRequestedByCLI = isset($_SERVER['argv']) && isset($_SERVER['argv'][0]); $isRequestedByWebLocalhost = isset($_SERVER['REMOTE_ADDR']) && '127.0.0.1' == $_SERVER['REMOTE_ADDR']; $isCronRequest = $isRequestedByCLI || $isRequestedByWebLocalhost; if ($isCronRequest && file_exists(PMF_ROOT_DIR . '/config/database.php')) { // Hack: set dummy values for those entries evaluated during a Web request but not during a CLI request if ($isRequestedByCLI) { $_SERVER['HTTP_HOST'] = ''; $_SERVER['HTTP_USER_AGENT'] = ''; } define('IS_VALID_PHPMYFAQ', null); require PMF_ROOT_DIR . '/inc/Bootstrap.php'; // Preload English strings require_once PMF_ROOT_DIR . '/lang/language_en.php'; if (LANGCODE != 'en' && PMF_Language::isASupportedLanguage(LANGCODE)) { // Overwrite English strings with the ones we have in the current language require_once PMF_ROOT_DIR . '/lang/language_' . LANGCODE . '.php'; } //Load plurals support for selected language $plr = new PMF_Language_Plurals(LANGCODE); // // Initalizing static string wrapper // PMF_String::init(LANGCODE); $oLnk = new PMF_Linkverifier($faqConfig); $faq = new PMF_Faq($faqConfig); $totStart = microtime(true); // Read the data directly from the faqdata table (all faq records in all languages) $start = microtime(true); $output .= $isRequestedByWebLocalhost ? '' : "\n";
$category = new PMF_Category(); $name = PMF_Filter::filterInput(INPUT_POST, 'name', FILTER_SANITIZE_STRING); $email = PMF_Filter::filterInput(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); $faqid = PMF_Filter::filterInput(INPUT_POST, 'faqid', FILTER_VALIDATE_INT); $faqlanguage = PMF_Filter::filterInput(INPUT_POST, 'faqlanguage', FILTER_SANITIZE_STRING); $question = PMF_Filter::filterInput(INPUT_POST, 'question', FILTER_SANITIZE_STRIPPED); $answer = PMF_Filter::filterInput(INPUT_POST, 'answer', FILTER_SANITIZE_STRIPPED); $translation = PMF_Filter::filterInput(INPUT_POST, 'translated_answer', FILTER_SANITIZE_STRING); $contentlink = PMF_Filter::filterInput(INPUT_POST, 'contentlink', FILTER_VALIDATE_URL); $keywords = PMF_Filter::filterInput(INPUT_POST, 'keywords', FILTER_SANITIZE_STRIPPED); $categories = PMF_Filter::filterInputArray(INPUT_POST, array('rubrik' => array('filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY))); // Check on translation if (is_null($answer) && !is_null($translation)) { $answer = $translation; } if (!is_null($name) && !empty($name) && !is_null($email) && !empty($email) && !is_null($question) && !empty($question) && checkBannedWord(PMF_String::htmlspecialchars($question)) && !is_null($answer) && !empty($answer) && checkBannedWord(PMF_String::htmlspecialchars($answer)) && (is_null($faqid) && !is_null($categories['rubrik']) || !is_null($faqid) && !is_null($faqlanguage) && PMF_Language::isASupportedLanguage($faqlanguage))) { $isNew = true; if (!is_null($faqid)) { $isNew = false; $faqsession->userTracking('save_new_translation_entry', 0); } else { $faqsession->userTracking('save_new_entry', 0); } $isTranslation = false; if (!is_null($faqlanguage)) { $isTranslation = true; $newLanguage = $faqlanguage; } if (PMF_String::substr($contentlink, 7) != "") { $answer = sprintf('%s<br /><div id="newFAQContentLink">%s<a href="http://%s" target="_blank">%s</a></div>', $answer, $PMF_LANG['msgInfo'], PMF_String::substr($contentlink, 7), $contentlink); }
*/ // // Prepend and start the PHP session // require_once 'inc/Init.php'; define('IS_VALID_PHPMYFAQ', null); PMF_Init::cleanRequest(); session_name(PMF_COOKIE_NAME_AUTH . trim($faqconfig->get('main.phpMyFAQToken'))); session_start(); $searchString = PMF_Filter::filterInput(INPUT_POST, 'search', FILTER_SANITIZE_STRIPPED); $ajaxLanguage = PMF_Filter::filterInput(INPUT_POST, 'ajaxlanguage', FILTER_SANITIZE_STRING, 'en'); $categoryId = PMF_Filter::filterInput(INPUT_GET, 'searchcategory', FILTER_VALIDATE_INT, '%'); $language = new PMF_Language(); $languageCode = $language->setLanguage($faqconfig->get('main.languageDetection'), $faqconfig->get('main.language')); require_once 'lang/language_en.php'; if (PMF_Language::isASupportedLanguage($ajaxLanguage)) { $languageCode = trim($ajaxLanguage); require_once 'lang/language_' . $languageCode . '.php'; } else { $languageCode = 'en'; require_once 'lang/language_en.php'; } //Load plurals support for selected language $plr = new PMF_Language_Plurals($PMF_LANG); // // Initalizing static string wrapper // PMF_String::init($languageCode); // // Get current user and group id - default: -1 //
if (!defined('IS_VALID_PHPMYFAQ_ADMIN')) { header('Location: http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME'])); exit; } $ajax_action = PMF_Filter::filterInput(INPUT_GET, 'ajaxaction', FILTER_SANITIZE_STRING); if ('save_sticky_records' == $ajax_action && $permission['editbt']) { /** * Expected is an array of the structure: * array( 0 => array((int)id, (string)langugage, (int) checked)), * 1 => ..... * ) */ $items = isset($_GET['items']) && is_array($_GET['items']) ? $_GET['items'] : array(); $faq = new PMF_Faq(); foreach ($items as $item) { if (is_array($item) && count($item) == 3 && PMF_Language::isASupportedLanguage($item[1])) { print $faq->updateRecordSticky((int) $item[0], addslashes($item[1]), (int) $item[2]); } } } if ('delete_record' == $ajax_action && $permission['delbt']) { $record_id = PMF_Filter::filterInput(INPUT_POST, 'record_id', FILTER_VALIDATE_INT); $record_lang = PMF_Filter::filterInput(INPUT_POST, 'record_lang', FILTER_SANITIZE_STRING); adminlog('Beitragdel, ' . $record_id); $path = PMF_ROOT_DIR . '/attachments/' . $record_id . '/'; if (@is_dir($path)) { $do = dir($path); while ($dat = $do->read()) { if ($dat != "." && $dat != "..") { unlink($path . $dat); }
$thema = PMF_Filter::filterInput(INPUT_POST, 'thema', FILTER_SANITIZE_STRIPPED); $content = PMF_Filter::filterInput(INPUT_POST, 'content', FILTER_SANITIZE_STRIPPED); $tr_content = PMF_Filter::filterInput(INPUT_POST, 'translated_content', FILTER_SANITIZE_STRING); $contentlink = PMF_Filter::filterInput(INPUT_POST, 'contentlink', FILTER_VALIDATE_URL); $keywords = PMF_Filter::filterInput(INPUT_POST, 'keywords', FILTER_SANITIZE_STRIPPED); $code = PMF_Filter::filterInput(INPUT_POST, 'captcha', FILTER_SANITIZE_STRING); $categories = PMF_Filter::filterInputArray(INPUT_POST, array('rubrik' => array('filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY))); // If e-mail address is set to optional if (!PMF_Configuration::getInstance()->get('main.optionalMailAddress') && is_null($usermail)) { $usermail = PMF_Configuration::getInstance()->get('main.administrationMail'); } // Check on translation if (is_null($content) && !is_null($tr_content)) { $content = $tr_content; } if (!is_null($username) && !is_null($usermail) && !is_null($thema) && !is_null($content) && IPCheck($_SERVER['REMOTE_ADDR']) && checkBannedWord(PMF_String::htmlspecialchars($thema)) && checkBannedWord(PMF_String::htmlspecialchars($content)) && $captcha->checkCaptchaCode($code) && (is_null($faqid) && !is_null($categories) || !is_null($faqid) && !is_null($faqlanguage) && PMF_Language::isASupportedLanguage($faqlanguage))) { $isNew = true; if (!is_null($faqid)) { $isNew = false; $faqsession->userTracking('save_new_translation_entry', 0); } else { $faqsession->userTracking('save_new_entry', 0); } $isTranslation = false; if (!is_null($faqlanguage)) { $isTranslation = true; $newLanguage = $faqlanguage; } if (PMF_String::substr($contentlink, 7) != "") { $content = $content . "<br />" . $PMF_LANG["msgInfo"] . "<a href=\"http://" . PMF_String::substr($contentlink, 7) . "\" target=\"_blank\">" . $contentlink . "</a>"; }
*/ define('PMF_ROOT_DIR', dirname(__DIR__)); // // Define the named constant used as a check by any included PHP file // define('IS_VALID_PHPMYFAQ', null); // // Bootstrapping // require PMF_ROOT_DIR . '/inc/Bootstrap.php'; require PMF_ROOT_DIR . '/lang/language_en.php'; // // Get language (default: english) // $language = PMF_Filter::filterInput(INPUT_GET, 'lang', FILTER_SANITIZE_STRING); if (!is_null($language) && PMF_Language::isASupportedLanguage($language)) { require PMF_ROOT_DIR . '/lang/language_' . $language . '.php'; } // // Initalizing static string wrapper // PMF_String::init($language); $user = PMF_User_CurrentUser::getFromSession($faqConfig); $refreshTime = (PMF_SESSION_ID_EXPIRES - PMF_SESSION_ID_REFRESH) * 60; ?> <!DOCTYPE html> <html lang="<?php print $PMF_LANG['metaLanguage']; ?> " class="no-js"> <head>
// Bootstrapping // require 'inc/Bootstrap.php'; // get language (default: english) $Language = new PMF_Language($faqConfig); $LANGCODE = $Language->setLanguage($faqConfig->get('main.languageDetection'), $faqConfig->get('main.language')); $faqConfig->setLanguage($Language); // Found an article language? $lang = PMF_Filter::filterInput(INPUT_POST, 'artlang', FILTER_SANITIZE_STRING); if (is_null($lang) && !PMF_Language::isASupportedLanguage($lang)) { $lang = PMF_Filter::filterInput(INPUT_GET, 'artlang', FILTER_SANITIZE_STRING); if (is_null($lang) && !PMF_Language::isASupportedLanguage($lang)) { $lang = $LANGCODE; } } if (isset($lang) && PMF_Language::isASupportedLanguage($lang)) { require_once "lang/language_" . $lang . ".php"; } else { $lang = "en"; require_once "lang/language_en.php"; } // // Initalizing static string wrapper // PMF_String::init($LANGCODE); // authenticate with session information $user = PMF_User_CurrentUser::getFromSession($faqConfig); if ($user) { $auth = true; } else { $user = null;
/** * This function generates an array with a specified number of most recent * published records * * @param integer $count Number of recorsd * @param string $language Language * @return array */ public function getLatestData($count = PMF_NUMBER_RECORDS_LATEST, $language = null) { global $sids; if ($this->groupSupport) { $permPart = sprintf("( fdg.group_id IN (%s)\n OR\n (fdu.user_id = %d AND fdg.group_id IN (%s)))", implode(', ', $this->groups), $this->user, implode(', ', $this->groups)); } else { $permPart = sprintf("( fdu.user_id = %d OR fdu.user_id = -1 )", $this->user); } $now = date('YmdHis'); $query = ' SELECT fd.id AS id, fd.lang AS lang, fcr.category_id AS category_id, fd.thema AS thema, fd.content AS content, fd.datum AS datum, fv.visits AS visits FROM ' . SQLPREFIX . 'faqvisits fv, ' . SQLPREFIX . 'faqdata fd LEFT JOIN ' . SQLPREFIX . 'faqcategoryrelations fcr ON fd.id = fcr.record_id AND fd.lang = fcr.record_lang LEFT JOIN ' . SQLPREFIX . 'faqdata_group AS fdg ON fd.id = fdg.record_id LEFT JOIN ' . SQLPREFIX . 'faqdata_user AS fdu ON fd.id = fdu.record_id WHERE fd.date_start <= \'' . $now . '\' AND fd.date_end >= \'' . $now . '\' AND fd.id = fv.id AND fd.lang = fv.lang AND fd.active = \'yes\''; if (isset($language) && PMF_Language::isASupportedLanguage($language)) { $query .= ' AND fd.lang = \'' . $language . '\''; } $query .= ' AND ' . $permPart . ' ORDER BY fd.datum DESC'; $result = $this->db->query($query); $latest = array(); $data = array(); $i = 0; $oldId = 0; while (($row = $this->db->fetch_object($result)) && $i < $count) { if ($oldId != $row->id) { $data['datum'] = $row->datum; $data['thema'] = $row->thema; $data['content'] = $row->content; $data['visits'] = $row->visits; $title = $row->thema; $url = sprintf('%saction=artikel&cat=%d&id=%d&artlang=%s', $sids, $row->category_id, $row->id, $row->lang); $oLink = new PMF_Link(PMF_Link::getSystemRelativeUri() . '?' . $url); $oLink->itemTitle = $row->thema; $oLink->tooltip = $title; $data['url'] = $oLink->toString(); $latest[] = $data; $i++; } $oldId = $row->id; } return $latest; }
* @since 2006-11-12 */ if (!defined('IS_VALID_PHPMYFAQ')) { header('Location: http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME'])); exit; } $captcha = new PMF_Captcha($db, $Language); $captcha->setSessionId($sids); if (!is_null($showCaptcha)) { $captcha->showCaptchaImg(); exit; } $translationLanguage = PMF_Filter::filterInput(INPUT_POST, 'translation', FILTER_SANITIZE_STRIPPED, $LANGCODE); if (!PMF_Language::isASupportedLanguage($translationLanguage)) { $translationLanguage = $LANGCODE; } $faqSource['id'] = 'writeSourceFaqId'; $faqSource['lang'] = $translationLanguage; $faqSource['title'] = 'writeSourceTitle'; $faqSource['content'] = 'writeSourceContent'; $faqSource['keywords'] = 'writeSourceKeywords'; $faqsession->userTracking('new_translation_entry', 0); $id = PMF_Filter::filterInput(INPUT_GET, 'id', FILTER_VALIDATE_INT); $srclang = PMF_Filter::filterInput(INPUT_GET, 'srclang', FILTER_SANITIZE_STRIPPED); if (!is_null($id) && !is_null($srclang) && PMF_Language::isASupportedLanguage($srclang)) { $oFaq = new PMF_Faq(); $oFaq->getRecord($id); $faqSource = $oFaq->faqRecord; } $tpl->processTemplate('writeContent', array('writeSourceFaqId' => $faqSource['id'], 'writeSourceTitle' => $faqSource['title'], 'writeSourceContent' => $faqSource['content'], 'writeSourceKeywords' => $faqSource['keywords'], 'msgNewTranslationHeader' => $PMF_LANG['msgNewTranslationHeader'], 'msgNewTranslationAddon' => $PMF_LANG['msgNewTranslationAddon'], 'msgNewTransSourcePane' => $PMF_LANG['msgNewTransSourcePane'], 'msgNewTranslationPane' => $PMF_LANG['msgNewTranslationPane'], 'writeSendAdress' => '?' . $sids . 'action=save', 'defaultContentName' => $user ? $user->getUserData('display_name') : '', 'defaultContentMail' => $user ? $user->getUserData('email') : '', 'msgNewTranslationName' => $PMF_LANG['msgNewTranslationName'], 'msgNewTranslationMail' => $PMF_LANG['msgNewTranslationMail'], 'msgNewTranslationKeywords' => $PMF_LANG['msgNewTranslationKeywords'], 'writeTransFaqLanguage' => $translationLanguage, 'captchaFieldset' => PMF_Helper_Captcha::getInstance()->renderFieldset($PMF_LANG['msgCaptcha'], $captcha->printCaptcha('translate')), 'msgNewTranslationSubmit' => $PMF_LANG['msgNewTranslationSubmit'], 'tinyMCELanguage' => PMF_Language::isASupportedTinyMCELanguage($LANGCODE) ? $LANGCODE : 'en')); $tpl->includeTemplate('writeContent', 'index');
if ($faqConfig->get('main.enableWysiwygEditorFrontend')) { $answer = PMF_Filter::filterInput(INPUT_POST, 'answer', FILTER_SANITIZE_SPECIAL_CHARS); $answer = html_entity_decode($answer); } else { $answer = PMF_Filter::filterInput(INPUT_POST, 'answer', FILTER_SANITIZE_STRIPPED); $answer = nl2br($answer); } $translation = PMF_Filter::filterInput(INPUT_POST, 'translated_answer', FILTER_SANITIZE_STRING); $contentlink = PMF_Filter::filterInput(INPUT_POST, 'contentlink', FILTER_VALIDATE_URL); $keywords = PMF_Filter::filterInput(INPUT_POST, 'keywords', FILTER_SANITIZE_STRIPPED); $categories = PMF_Filter::filterInputArray(INPUT_POST, array('rubrik' => array('filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY))); // Check on translation if (empty($answer) && !is_null($translation)) { $answer = $translation; } if (!is_null($name) && !empty($name) && !is_null($email) && !empty($email) && !is_null($question) && !empty($question) && $stopwords->checkBannedWord(strip_tags($question)) && !is_null($answer) && !empty($answer) && $stopwords->checkBannedWord(strip_tags($answer)) && (is_null($faqid) && !is_null($categories['rubrik']) || !is_null($faqid) && !is_null($faqlanguage) && PMF_Language::isASupportedLanguage($faqlanguage))) { $isNew = true; if (!is_null($faqid)) { $isNew = false; try { $faqsession->userTracking('save_new_translation_entry', 0); } catch (PMF_Exception $e) { // @todo handle the exception } } else { try { $faqsession->userTracking('save_new_entry', 0); } catch (PMF_Exception $e) { // @todo handle the exception } }
/** * This function generates an array with a specified number of most recent * published records * * @param integer $count Number of records * @param string $language Language * * @return array */ public function getLatestData($count = PMF_NUMBER_RECORDS_LATEST, $language = null) { global $sids; $now = date('YmdHis'); $query = ' SELECT fd.id AS id, fd.lang AS lang, fcr.category_id AS category_id, fd.thema AS thema, fd.content AS content, fd.datum AS datum, fv.visits AS visits, fdg.group_id AS group_id, fdu.user_id AS user_id FROM ' . PMF_Db::getTablePrefix() . 'faqvisits fv, ' . PMF_Db::getTablePrefix() . 'faqdata fd LEFT JOIN ' . PMF_Db::getTablePrefix() . 'faqcategoryrelations fcr ON fd.id = fcr.record_id AND fd.lang = fcr.record_lang LEFT JOIN ' . PMF_Db::getTablePrefix() . 'faqdata_group AS fdg ON fd.id = fdg.record_id LEFT JOIN ' . PMF_Db::getTablePrefix() . 'faqdata_user AS fdu ON fd.id = fdu.record_id WHERE fd.date_start <= \'' . $now . '\' AND fd.date_end >= \'' . $now . '\' AND fd.id = fv.id AND fd.lang = fv.lang AND fd.active = \'yes\''; if (isset($language) && PMF_Language::isASupportedLanguage($language)) { $query .= ' AND fd.lang = \'' . $language . '\''; } $query .= ' ' . $this->queryPermission($this->groupSupport) . ' ORDER BY fd.datum DESC'; $result = $this->_config->getDb()->query($query); $latest = array(); $data = array(); $i = 0; $oldId = 0; while (($row = $this->_config->getDb()->fetchObject($result)) && $i < $count) { if ($oldId != $row->id) { if ($this->groupSupport) { if (!in_array($row->user_id, array(-1, $this->user)) || !in_array($row->group_id, $this->groups)) { continue; } } else { if (!in_array($row->user_id, array(-1, $this->user))) { continue; } } $data['datum'] = $row->datum; $data['thema'] = $row->thema; $data['content'] = $row->content; $data['visits'] = $row->visits; $title = $row->thema; $url = sprintf('%s?%saction=artikel&cat=%d&id=%d&artlang=%s', PMF_Link::getSystemRelativeUri(), $sids, $row->category_id, $row->id, $row->lang); $oLink = new PMF_Link($url, $this->_config); $oLink->itemTitle = $row->thema; $oLink->tooltip = $title; $data['url'] = $oLink->toString(); $latest[] = $data; $i++; } $oldId = $row->id; } return $latest; }