I relly needed to show the user only articles in his language. 1.4m2 is a good starting point for this behaviour, even though it requires a few changes.
This post is quite long, but there are really few changes needed:
- restrict allowed languages
- Remove unneeded languages by deleting language files in the lang subdirectory
- Delete unneeded languages entry in the $LANGINI array in inc/languages.php line 22
- Edit inc/functions.php and change several functions (most changes consist in adding $LANG as a global variable, and adding a condition to the SQL query: faqdata.lang='$LANG')
- function generateNumberOfArticles
function generateNumberOfArticles()
{
global $db, $LANG;
$num = $db->num_rows($db->query("SELECT id FROM ".SQLPREFIX."faqdata WHERE active = 'yes' AND lang='$LANG'"));
ENF OF FUNCTION UNCHANGED
- function printCategoriesPlusNumber
function printCategoriesPlusNumber()
{
global $db, $sids, $msgEntries, $err_noHeaders, $LANG;
$result = $db->query("SELECT ".SQLPREFIX."faqrubrik.rubrik, ".SQLPREFIX."faqrubrik.titel, count(".SQLPREFIX."faqdata.rubrik) AS number FROM ".SQLPREFIX."faqrubrik LEFT JOIN ".SQLPREFIX."faqdata ON ".SQLPREFIX."faqdata.rubrik = ".SQLPREFIX."faqrubrik.rubrik AND ".SQLPREFIX."faqdata.active = 'yes' AND ".SQLPREFIX."faqdata.lang='$LANG' GROUP BY ".SQLPREFIX."faqrubrik.rubrik ORDER BY ".SQLPREFIX."faqrubrik.rubrik");
ENF OF FUNCTION UNCHANGED - function printThemes
function printThemes($category)
{
global $db, $sids, $msgEntries, $msgPage, $msgVoteFrom, $msgPages, $msgViews, $msgPrevious, $msgNext, $err_noArticles, $PMF_CONF, $LANG;
$seite = 1;
$output = "";
if (isset($_REQUEST["seite"])) {
$seite = $_REQUEST["seite"];
}
$numResult = $db->query("SELECT id FROM ".SQLPREFIX."faqdata WHERE active = 'yes' AND lang='$LANG' AND rubrik = '".$category."'");
$num = $db->num_rows($numResult);
$seiten = ceil($num / $PMF_CONF["numRecordsPage"]);
if ($seite == 1) {
$first = 0;
}
else {
$first = ($seite * $PMF_CONF["numRecordsPage"]) - $PMF_CONF["numRecordsPage"];
}
$result = $db->query("SELECT ".SQLPREFIX."faqdata.id, ".SQLPREFIX."faqdata.lang, ".SQLPREFIX."faqdata.thema, ".SQLPREFIX."faqdata.rubrik, ".SQLPREFIX."faqvisits.visits
FROM ".SQLPREFIX."faqdata LEFT JOIN ".SQLPREFIX."faqvisits ON ".SQLPREFIX."faqdata.id = ".SQLPREFIX."faqvisits.id AND ".SQLPREFIX."faqvisits.lang = ".SQLPREFIX."faqdata.lang
WHERE ".SQLPREFIX."faqdata.active = 'yes'
AND ".SQLPREFIX."faqdata.rubrik = '".$category."'
AND ".SQLPREFIX."faqdata.lang='$LANG'
ORDER BY ".SQLPREFIX."faqdata.id LIMIT ".$first.", ".$PMF_CONF["numRecordsPage"]);
ENF OF FUNCTION UNCHANGED
- function generateTopTen
function generateTopTen()
{
global $db, $sids, $err_noTopTen, $msgViews, $LANG;
$result = $db->query("SELECT DISTINCT ".SQLPREFIX."faqdata.id, ".SQLPREFIX."faqdata.lang, ".SQLPREFIX."faqdata.thema, ".SQLPREFIX."faqdata.rubrik, ".SQLPREFIX."faqvisits.visits
FROM ".SQLPREFIX."faqvisits, ".SQLPREFIX."faqdata
WHERE ".SQLPREFIX."faqdata.id = ".SQLPREFIX."faqvisits.id
AND ".SQLPREFIX."faqdata.lang = ".SQLPREFIX."faqvisits.lang
AND ".SQLPREFIX."faqdata.active = 'yes'
AND ".SQLPREFIX."faqdata.lang = '$LANG' ORDER BY ".SQLPREFIX."faqvisits.visits DESC
LIMIT 0,10");
ENF OF FUNCTION UNCHANGED
} - function generateFiveNewest
function generateFiveNewest()
{
global $db, $sids, $err_noTopTen, $msgViews, $LANG;
$result = $db->query("SELECT DISTINCT ".SQLPREFIX."faqdata.id, ".SQLPREFIX."faqdata.lang, ".SQLPREFIX."faqdata.rubrik, ".SQLPREFIX."faqdata.thema, ".SQLPREFIX."faqdata.datum, ".SQLPREFIX."faqvisits.visits
FROM ".SQLPREFIX."faqdata, ".SQLPREFIX."faqvisits
WHERE ".SQLPREFIX."faqdata.id = ".SQLPREFIX."faqvisits.id
AND ".SQLPREFIX."faqdata.lang = ".SQLPREFIX."faqvisits.lang
AND ".SQLPREFIX."faqdata.active = 'yes'
AND ".SQLPREFIX."faqdata.lang = '$LANG' ORDER BY ".SQLPREFIX."faqdata.datum desc LIMIT 0,5");
ENF OF FUNCTION UNCHANGED
- function searchEngine
function searchEngine($begriff)
{
global $db, $sids, $msgEntries, $msgPage, $msgPages, $msgPrevious, $msgNext, $err_noArticles, $msgSearchAmount, $msgSearchAmounts, $msgVoteFrom, $msgSearchContent, $PMF_CONF, $LANG;
$categories = getCategories();
$seite = "";
$output = "";
if (isset($_REQUEST["seite"])) {
$seite = $_REQUEST["seite"];
}
if (isset($_REQUEST["search"])) {
$begriff = $_REQUEST["search"];
}
$begriff = trim($begriff);
if (mysql_check("4.0.1") == FALSE) {
// Search with MySQL 3.23.23+
$query = "SELECT id, lang, rubrik, thema, content FROM ".SQLPREFIX."faqdata WHERE MATCH (thema,content,keywords) AGAINST ('".$begriff."') AND active = 'yes' AND lang='$LANG'";
}
else {
// Search with MySQL 4.0.1+
$query = "SELECT id, lang, rubrik, thema, content FROM ".SQLPREFIX."faqdata WHERE MATCH (thema,content,keywords) AGAINST ('".str_replace(" ", "* ", trim($begriff))."*' IN BOOLEAN MODE) AND active = 'yes' AND lang='$LANG'";
}
ENF OF FUNCTION UNCHANGED
- function generateNumberOfArticles
- categories exist one language (i.e. category names are not translated).
- Open questions seem not to be related to one language
- Comments seem not to be related to one language
- I did not test the search feature yet
Ronan