function getURLbyID($ArticleID, $Nameonly = false)
{
    global $REX;
    if (!$ArticleID) {
        return '';
    }
    if ($GLOBALS[REX][MOD_REWRITE]) {
        @(include "redaxo/include/generated/articles/{$ArticleID}.article");
        $name = $REX[ART][$ArticleID][name];
        $path = $REX[ART][$ArticleID][path];
        $tmp = explode("-", $path);
        foreach ($tmp as $var) {
            if ($var != "") {
                @(include "redaxo/include/generated/categories/{$var}.category");
                if ($REX[CAT][$var][name] != $name) {
                    $linkpath .= $REX[CAT][$var][name] . "/";
                }
            }
        }
        $name = $linkpath . $name;
        if ($Nameonly) {
            return str_replace('/', $Nameonly, $name);
        }
        $url = $ArticleID . "-" . ModRewriteName($name);
    } else {
        $url = 'index.php?article_id=' . $ArticleID;
    }
    return $url;
}
function getURLbyID($ArticleID)
{
    if (!$ArticleID) {
        return '';
    }
    global $REX;
    if ($REX[MOD_REWRITE]) {
        $db = new sql();
        $sql = "SELECT name FROM rex_article WHERE id='{$ArticleID}'";
        $res = $db->get_array($sql);
        $url = $ArticleID . "-" . ModRewriteName($res[0][name]);
    } else {
        $url = 'index.php?article_id=' . $ArticleID;
    }
    return $url;
}
 function getModRewriteName()
 {
     $url = ModRewriteName($this->_name);
     return $url;
 }
function REX_SEARCH($searchtxt, $surroundchars = 20, $categories = "", $surround_tag_start = "<b>", $surround_tag_end = "</b>")
{
    ###### CHECK WHICH PATHES SHOULD BE SEARCHED
    if (!is_array($categories)) {
        $ADD_AREA .= "AND rex_article.path like '%-%'";
    } else {
        $ADD_AREA = "AND (";
        foreach ($categories as $var) {
            $ADD_AREA .= " rex_article.path like '%-{$var}%' OR ";
        }
        $ADD_AREA = substr($ADD_AREA, 0, -3) . ")";
    }
    ##### TRIM SEARCHTXT
    $searchtxt = trim($searchtxt, " ");
    ##### CHECK IF SEARCH STRING IS LONG ENOUGH
    if (strlen($searchtxt) < 40 and strlen($searchtxt) > 2) {
        ##### EXPLODE SEARCH STRING
        $words = explode(" ", $searchtxt);
        $words_count = 0;
        if (count($words) > 3) {
            $words_count = 3;
            $RETURN[msg] = "Es wurden nur die ersten 3 Begriffe benutzt";
        } else {
            $words_count = count($words);
        }
        ##### START SQL CLASS
        $SUCHE = new sql();
        #### SEARCH FOR ALL KEYWORDS
        for ($i = 0; $i < $words_count; $i++) {
            $SUCHE->flush();
            $KEYWORD = current($words);
            #### SQL QUERY
            $sql = "\r\n\t        SELECT\r\n\r\n\t        rex_article.id,rex_article.name,rex_article.beschreibung,\r\n\r\n\t\t\trex_article_slice.value1,rex_article_slice.value2,rex_article_slice.value3,\r\n\t\t\trex_article_slice.value4,rex_article_slice.value5,rex_article_slice.value6,\r\n\t\t\trex_article_slice.value7,rex_article_slice.value8,rex_article_slice.value9,\r\n\r\n\t        (FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article.name,' ',',')) * 10) +\r\n\t        (FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article.beschreibung,' ',',')) * 5) +\r\n\t        (FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article.suchbegriffe,' ',',')) * 5) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value1,' ',',')) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value2,' ',',')) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value3,' ',',')) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value4,' ',',')) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value5,' ',',')) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value6,' ',',')) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value7,' ',',')) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value8,' ',',')) +\r\n\t        FIND_IN_SET('{$KEYWORD}',REPLACE(rex_article_slice.value9,' ',','))\r\n\t        AS COUNTWORD\r\n\r\n\t        FROM rex_article_slice\r\n\r\n\t        LEFT JOIN rex_article ON rex_article.id=rex_article_slice.article_id\r\n\r\n\t        WHERE\r\n\r\n\t        (\r\n\t        rex_article.name LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article.beschreibung LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article.suchbegriffe LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value1 LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value2 LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value3 LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value4 LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value5 LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value6 LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value7 LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value8 LIKE ('%{$KEYWORD}%') OR\r\n\t        rex_article_slice.value9 LIKE ('%{$KEYWORD}%')\r\n\t        )\r\n\r\n\t        AND status = 1\r\n\r\n\t\t\t{$ADD_AREA}\r\n\r\n\t        GROUP BY id\r\n\r\n\t        ORDER BY COUNTWORD DESC\r\n\r\n\t        LIMIT 0,50\r\n\r\n\t        ";
            $SUCHE->setQuery($sql);
            $count_limit = 0;
            ###### GO THROUGH RESULTS
            for ($j = 0; $j < $SUCHE->getRows(); $j++) {
                $ART[$SUCHE->getValue("rex_article.id")][ID] = $SUCHE->getValue("rex_article.id");
                $ART[$SUCHE->getValue("rex_article.id")][NAME] = $SUCHE->getValue("rex_article.name");
                $ART[$SUCHE->getValue("rex_article.id")][DESC] = $SUCHE->getValue("rex_article.beschreibung");
                $ART[$SUCHE->getValue("rex_article.id")][COUNTWORD] = $SUCHE->getValue("COUNTWORD");
                $ART[$SUCHE->getValue("rex_article.id")][URL] = $SUCHE->getValue("rex_article.id") . "-" . ModRewriteName($SUCHE->getValue("rex_article.name"));
                ###### CHECK OCURRENCE OF KEYWORD
                for ($val = 1; $val < 10; $val++) {
                    $regex = "/\\b.{0," . $surroundchars . "}" . $KEYWORD . ".{0," . $surroundchars . "}\\b/im";
                    preg_match_all($regex, strip_tags($SUCHE->getValue("rex_article_slice.value" . $val)), $matches);
                    if ($matches[0][0] != '') {
                        $ART_REGEX[$SUCHE->getValue("rex_article.id")] .= "... " . implode($matches[0], " ... ");
                    }
                }
                $SUCHE->next();
            }
            $SEARCH_WORDS[] = $KEYWORD;
            next($words);
        }
        if (is_array($ART_REGEX)) {
            $replace_string = implode("|", $SEARCH_WORDS);
            foreach ($ART_REGEX as $key => $var) {
                $ART[$key][DESC_REGEX] = preg_replace("/(" . $replace_string . ")/im", $surround_tag_start . "\\1" . $surround_tag_end, $var) . " ...";
            }
        }
    }
    return $ART;
}