Exemplo n.º 1
0
function rss_walk_path($refid)
{
    global $db, $environment, $dataloop, $cfg;
    // content dieser ebene suchen
    $ebene = make_ebene($refid);
    if (preg_match("/^\\/aktuell/", $ebene)) {
        rss_get_content($ebene, -1);
    } else {
        rss_get_content($ebene);
    }
    // das menue durchgehen
    $sql = "SELECT  *\n                  FROM  " . $cfg["rss"]["db"]["menu"]["entries"] . "\n                  JOIN  " . $cfg["rss"]["db"]["lang"]["entries"] . "\n                    ON (" . $cfg["rss"]["db"]["menu"]["entries"] . "." . $cfg["rss"]["db"]["menu"]["key"] . "=" . $cfg["rss"]["db"]["lang"]["entries"] . "." . $cfg["rss"]["db"]["menu"]["key"] . ")\n                 WHERE  " . $cfg["rss"]["db"]["menu"]["ref"] . "=" . $refid . "\n                   AND  " . $cfg["rss"]["db"]["lang"]["lang"] . "='" . $environment["language"] . "'\n                   AND (" . $cfg["rss"]["db"]["menu"]["hide"] . "='0'\n                    OR  " . $cfg["rss"]["db"]["menu"]["hide"] . " IS NULL)";
    $result = $db->query($sql);
    while ($data = $db->fetch_array($result, 1)) {
        $ebene = make_ebene($data["mid"]);
        rss_walk_path($data["mid"]);
    }
}
function rss_walk_path($refid, $hide = 0, $sub = 0)
{
    global $db, $environment, $dataloop, $cfg;
    // content dieser ebene suchen
    $ebene = make_ebene($refid);
    // das menue durchgehen
    $sql = "SELECT  *\n                      FROM  " . $cfg["xml-sm"]["db"]["menu"]["entries"] . "\n                      JOIN  " . $cfg["xml-sm"]["db"]["lang"]["entries"] . "\n                        ON  (" . $cfg["xml-sm"]["db"]["menu"]["entries"] . "." . $cfg["xml-sm"]["db"]["menu"]["key"] . "=" . $cfg["xml-sm"]["db"]["lang"]["entries"] . "." . $cfg["xml-sm"]["db"]["menu"]["key"] . ")\n                     WHERE  " . $cfg["xml-sm"]["db"]["menu"]["ref"] . "=" . $refid . "\n                       AND  " . $cfg["xml-sm"]["db"]["lang"]["lang"] . "='" . $environment["language"] . "'\n                  ORDER BY sort";
    // echo "<pre>".$sql."</pre>";
    $result = $db->query($sql);
    while ($data = $db->fetch_array($result, 1)) {
        if ($hide == 0 && $data["hide"] == -1) {
            continue;
        }
        $ebene = make_ebene($data["mid"]);
        if (preg_match("/\\/\$/", $ebene)) {
            $url = $ebene . "index.html";
        } else {
            $url = $ebene . ".html";
        }
        // aus content aenderungsdatum holen
        $array = explode("/", $ebene);
        $kategorie = array_pop($array);
        if (count($array) > 1) {
            $ebene = implode("/", $array);
            $tname = eCRC($ebene) . "." . $kategorie;
        } else {
            $ebene = "";
            $tname = $kategorie;
        }
        $sql = "SELECT  *\n                          FROM  " . $cfg["xml-sm"]["db"]["text"]["entries"] . "\n                         WHERE tname='" . $tname . "'\n                           AND label='" . $cfg["xml-sm"]["def_label"] . "'\n                           AND lang='" . $environment["language"] . "'\n                           AND status=1";
        $res_content = $db->query($sql);
        $data_content = $db->fetch_array($res_content, 1);
        $date = $data_content["changed"];
        preg_match("/[0-9]{4}-[0-9]{2}-[0-9]{2}/", $data_content["changed"], $match);
        if (trim($match[0]) != "") {
            $date = $match[0];
        }
        if (trim((string) $date) == "") {
            $date = date("Y-m-d", time() - 60 * 60 * 24);
        }
        // <changefreq>
        if (preg_match("/^\\/aktuell/", $url) || preg_match("/^\\/index/", $url)) {
            $changefreq = "daily";
            $priority = "1.0";
        } else {
            $changefreq = "monthly";
            $priority = "0.5";
        }
        //                 $ebene = make_ebene($data["mid"]);
        $dataloop["urls"][$url] = array("url" => $url, "pubDate" => $date, "changefreq" => $changefreq, "priority" => $priority);
        if (preg_match("/^\\/aktuell/", $url)) {
            $sql = "SELECT  *\n                              FROM  " . $cfg["xml-sm"]["db"]["text"]["entries"] . "\n                             WHERE tname LIKE '" . eCRC(str_replace(".html", "", $url)) . "%'\n                               AND label='" . $cfg["xml-sm"]["def_label"] . "'\n                               AND lang='" . $environment["language"] . "'\n                               AND status=1\n                          ORDER BY changed DESC";
            $res_content = $db->query($sql);
            while ($data_content = $db->fetch_array($res_content, 1)) {
                if (!is_numeric($data_content["kategorie"])) {
                    continue;
                }
                if (preg_match("#\\[SORT\\](.*)\\[/SORT\\]#U", $data["content"], $match)) {
                    $date_start = $match[1];
                    if (preg_match("/^([0-9]{4})-([0-9]{2})-([0-9]{2})/", $date_start, $date_match)) {
                        $timestamp_start = mktime("0", "0", "0", $date_match[2], $date_match[3], $date_match[1]);
                    } else {
                        // falls nicht angegeben, ganz frueher annehmen
                        $timestamp_start = mktime(0, 0, 0, 1, 1, 1971);
                    }
                    if ($timestamp_start > mktime()) {
                        continue;
                    }
                }
                $changefreq = "never";
                $priority = "0.7";
                $url_sub = str_replace(".html", "", $url) . "/" . $data_content["kategorie"] . ".html";
                $date = $data_content["changed"];
                preg_match("/[0-9]{4}-[0-9]{2}-[0-9]{2}/", $data_content["changed"], $match);
                if (trim($match[0]) != "") {
                    $date = $match[0];
                }
                if (trim((string) $date) == "") {
                    $date = date("Y-m-d", time() - 60 * 60 * 24);
                }
                $dataloop["urls"][$url_sub] = array("url" => $url_sub, "pubDate" => $date, "changefreq" => $changefreq, "priority" => $priority);
            }
        }
        rss_walk_path($data["mid"]);
    }
}