YourWBB


yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB 2.3.x » [WBB 2.3.x] Hacks und Addons » HOWTO: rssfeed und rssfeed2thread v2 » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 41.476 Views | | Thema zu Favoriten hinzufügen
Seiten (4): [1] 2 3 4 nächste »
Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen HOWTO: rssfeed und rssfeed2thread v2
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

 HOWTO: rssfeed und rssfeed2thread v2 Antworten Zitieren Editieren Melden       UP

Titel: HOWTO: rssfeed und rssfeed2thread v2
Version: 2.0
Beschreibung: Soa, da die erste Version ja reichlich gespraechsstoff lieferte gibts nun eine neue. Ich habe ein paar details geaendert, die das script noch komfortabler machne, allerdings bereitet mir das Script noch ein paar Kopfschmerzen und ich bin leider auf feedback angeiwesen was das UTF8 Handling angeht. Da ich ein natives UTF8 System habe (Gentoo Linux) nutzt mein SQL-Server auch natives UTF8 und ich habe doch einige unschoene Sachen bei den Tests gesehen, da es aber nicht jeder hat, hoffe ich das ich das alles als "testumgebungsproblem" abhandeln kann ;D

Datei 1: acp/lib/rss.inc.php - neue Konfigurationsdatei
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
<?PHP
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */

// rss-output

# Boardids & Boardidsmode
# Geben Sie hier zum einendie Baordids (durch kommata getrennt) an und zum anderen den modus.
# Modus 1: NUR die Forenids werden genommen
# Modus 2: Es werden alle Foren, aber NICHT die Forenids genommen
$rss_boardids "0";
$rss_boardids_mode 2;

# RSS-Config
# Geben Sie hier die entsprechenden werte an...
# Per default werden die Systemwerte genommen (options.inc.php!)
$rss_name $master_board_name;
$rss_url $url2board;
$rss_description $rss_name ." - ".$rss_url;

# Rss Outputoptions
# Maximale Anzahl an ausgaben.
# Maximalie anzahl der Zeichen (Inhaltsauszug)
$rss_limit 15;
$rss_show_limit 250;

// rss-input

# boardid / uname / uid
# wohin damit? / Welcher Benutzer bekommt die Beitraege gutgeschrieben / Benutzer alias... (Hinweis: ALias linkt auf die userid!)
$boardid 7;
$uid 1;
$uname "System";

# status
# 0 = offen | 1 = geschlossen (der erstellte Thread)
$rss_status 1;

# sites
# hier werden die rssfeeds definiert, syntax: $sites[] = "url";
$sites[] = "http://www.golem.de/rss.php?feed=RSS2.0";
$sites[] = "http://www.heise.de/newsticker/heise.rdf";
?>


Datei 2: rss.php - ausgabe des boardfeeds
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
<?PHP
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */
require("./acp/lib/options.inc.php");
require("./acp/lib/rss.inc.php");
require("./global.php");

# make wherebit
if(!empty($rss_boardids)){
        $boardids split(","$rss_boardids);

        for($i 0$i <= count($boardids); $i++){
                if(!empty($boardids[$i]) && $rss_boardids_mode == 1$where .= " boardid = ".$boardids[$i]." OR";
                else if(!empty($boardids[$i]) && $rss_boardids_mode != 1$where .= " boardid != ".$boardids[$i]." AND";
        }
}

if(!$where$where "WHERE 1";
else $where "WHERE ".$where;

if(substr($wherestrlen($where)-22) == "OR" || substr($wherestrlen($where)-33) == "AND"$where substr($where0strlen($where)-3);
# /make wherebit



$result $db->query("SELECT threadid FROM bb".$n."_threads ".$where." ORDER BY starttime DESC LIMIT 0,".$rss_limit."");
while($row mysql_fetch_array($result)) $threadids .= ','.$row['threadid'];

$result $db->query("SELECT DISTINCT threadid, message, allowsmilies FROM bb".$n."_posts WHERE threadid IN (0$threadids) ORDER BY posttime DESC");
while($row mysql_fetch_array($result)) $posttemp[$row['threadid']] = $row;

$result mysql_query("SELECT bb".$n."_threads.*, username, userid FROM bb".$n."_threads LEFT JOIN bb".$n."_users ON (bb".$n."_users.userid=bb".$n."_threads.starterid) WHERE threadid IN (0$threadids) ORDER BY starttime DESC");

header("Content-type: text/xml");
header("Content-Description: Automaticly generated");
print '<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">

<channel>
  <title>'.$rss_name.'</title>
  <link>'.$rss_url.'</link>
  <description>'.$rss_description.'</description>
</channel>';
while($row mysql_fetch_array($result)) {
        $message preg_replace("/\[(.*?)](.*?)\[\/(.*?)\]/si","$2"$posttemp[$row['threadid']]['message']);
        $message preg_replace("/\[(.*?)\=(.*?)](.*?)\[\/(.*?)\]/si","$3"$posttemp[$row['threadid']]['message']);
        print '<item>
        <title>'.htmlconverter($row['topic']).'</title>
        <link>'.$url2board.'/thread.php?threadid='.$row['threadid'].'</link>
        <description>'.htmlconverter(substr($message0$rss_show_limit)).'...</description>
        </item>
        ';
}



print '</rdf:RDF>';
?>


Datei 3: rss2threads.php - rssfeed auslesen und in einen thread packen
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
<?PHP
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */
require("./acp/lib/options.inc.php");
require("./acp/lib/rss.inc.php");
require("./global.php");


print '*** ['.date("d.m.Y H:i").'] Starting script...';
print "\n";    
print '*** ['.date("d.m.Y H:i").'] UID->'.$uid.'';
print "\n";    
print '*** ['.date("d.m.Y H:i").'] UNAME->'.$uname.'';
print "\n";    
print '*** ['.date("d.m.Y H:i").'] BOARDID->'.$boardid.'';
print "\n";    
print '*** ['.date("d.m.Y H:i").'] SITESCONT->'.count(sites).'';
print "\n";    

$time time();
for($s 0;$s count($sites); $s++){
    preg_match("/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si"$sites[$s], $input[1]);
    $urlsplit split("/",$input[1][3]);

    print '*** ['.date("d.m.Y H:i").'] sites['.$s.'] = '.$urlsplit[0].'';
    print "\n";    

    $content implode("",file($sites[$s]));
    preg_match_all("/\<item\>(.*?)\<\/item\>/si"$content$results);

    for($i 0;$i count($results[1]);$i++) {
        preg_match("/\<link\>(.*?)\<\/link\>/si"$results[1][$i], $link);
        preg_match("/\<title\>(.*?)\<\/title\>/si"$results[1][$i], $title);
        preg_match("/\<description\>(.*?)\<\/description\>/si"$results[1][$i], $desc);
        preg_match("/\<pubDate\>(.*?)\<\/pubDate\>/si"$results[1][$i], $date);

        $link $link[1];
        $title $title[1];
        $desc $desc[1];
        $date $date[1];

        $check $db->query("SELECT id,title FROM bb".$n."_rss WHERE title = '".addslashes($title)."'");
        if($db->num_rows($check) == 0){ 
            $db->query("INSERT INTO `bb".$n."_rss`  ( `id` , `from` , `title` , `link` , `description` ) VALUES ('', '".$s."', '".addslashes($title)."', '".addslashes($link)."', '".addslashes($desc)."')");
            if(!empty($date)) $news[$s][$i]['date'] = substr($date,0,strlen($date)-6);
            $news[$s][$i]['link'] = $link;
            $news[$s][$i]['title'] = $title;
            $news[$s][$i]['desc'] = $desc;
            if(!$news[$s]['name']) $news[$s]['name']  = $urlsplit[0];

            print '*** ['.date("d.m.Y H:i").'] DB->INERSRT('.$title.')';
            print "\n";
        } else {
            print '*** ['.date("d.m.Y H:i").'] DB->EXISTS('.$title.')';
            print "\n";
        }
    }
}

for($i 0;$i count($news);$i++){
    $newstopic[$i] = "".$news[$i]['name']." - News [".date("d.m.Y H:i")."]";
    for($a 0;$a count($news[$i]);$a++){
        if(!empty($news[$i][$a]['date'])) $newstext[$i] .= "[".$news[$i][$a]['date']."] [b]&raquo; [URL=".utf8_decode($news[$i][$a]['link'])."]".utf8_decode($news[$i][$a]['title'])."[/URL][/b]<br />";
        else if(!empty($news[$i][$a]['title'])) $newstext[$i] .= "[b]&raquo; [URL=".utf8_decode($news[$i][$a]['link'])."]".utf8_decode($news[$i][$a]['title'])."[/URL][/b]<br />";

        if(!empty($news[$i][$a]['desc'])) $newstext[$i] .= "[i]".utf8_decode(htmlentities($news[$i][$a]['desc']))."[/i]<br /><br />";
    }

    $newstext[$i] .= "<br />[i]Quelle: [URL=http://".utf8_decode($news[$i]['name'])."]".utf8_decode($news[$i]['name'])."[/URL][/i]<br /><br />";
}

for($i 0;$i count($newstext);$i++){
    $db->query("INSERT INTO bb".$n."_threads (boardid,topic,iconid,starttime,starterid,starter,lastposttime,lastposterid,lastposter,closed,attachments,pollid,important,visible) VALUES ('".$boardid."','".addslashes($newstopic[$i])."','3','".$time."','".$uid."','".addslashes($uname)."','".$time."','".$uid."','".addslashes($uname)."','".$rss_status."','0','0','0','1')");
    $threadid $db->insert_id();
    print '*** ['.date("d.m.Y H:i").'] DB->CREATE_THRED('.$threadid.'->'.$newstopic[$i].')';
    print "\n";

    $db->unbuffered_query("UPDATE bb".$n."_stats SET threadcount=threadcount+1"1);
    print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_GLOBAL_THREADCOUNT';
    print "\n";

    $db->query("INSERT INTO bb".$n."_posts (parentpostid,threadid,userid,username,iconid,posttopic,posttime,message,attachments,allowsmilies,allowhtml,allowbbcode,allowimages,showsignature,ipaddress,visible) VALUES "."('0','".$threadid."','".$uid."','".addslashes($uname)."','3','".addslashes($newstopic[$i])."','".$time."','".addslashes($newstext[$i])."','0','1','1','1','1','0','127.0.0.1','1')");
    $postid $db->insert_id();
    print '*** ['.date("d.m.Y H:i").'] DB->CREATE_POST('.$threadid.'->'.$postid.')';
    print "\n";

    $db->unbuffered_query("UPDATE bb".$n."_stats SET postcount=postcount+1"1);
    print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_GLOBAL_POSTCOUNT';
    print "\n";

    $db->unbuffered_query("UPDATE bb".$n."_boards SET threadcount=threadcount+1, postcount=postcount+1, lastthreadid='".$threadid."', lastposttime='".$time."', lastposterid='".$uid."', lastposter='".addslashes($uname)."' WHERE boardid IN (".$boardid.")"1);
    print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_BOARD('.$boardid.')';
    print "\n";
}
?>


Datei 4: rss.sq - sqldatei zum importieren, wird benoetigt, wenn man den rssimport nutzen moechte (rss2threads.php)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */

CREATE TABLE `bb1_rss` (
  `id` int(10) NOT NULL auto_increment,
  `from` char(1) NOT NULL default '',
  `title` varchar(255) NOT NULL default '',
  `link` varchar(255) NOT NULL default '',
  `description` text NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1;

Wenn nun die Datei 1 im ordner acp/lib/ und die anderen beiden Dateien im root des Forums liegen kann man noch eine .htaccess datei anlegen fuer den rss feed, der Inhalt waere z.B.
code:
1:
2:
RewriteEngine On
RewriteRule ^(.*).rss$ rss.php [L]

Dadurch werden alle aufrufe mit .rss am ende auf die rss.php geleitet.

Es ist angebracht die rss2thread.php umzubennen und per cronjob aufrufen zu lassen, damit sie zum einen nicht durch den browser aufgerufen wird, durch jmd der diesen Thread kennt und weiss das dieses Script auf dem Server / in dem Forum eingebunden ist und zum anderen damit man nich selber immer das Script aufrufen muss.

Nun sollte man noch die Einstellungen in der rss.inc.php an seine beduerfnisse anpassen und das wars...

Und wie gesagt: sollte es Fehler mit Umlauten und Sonderzeichen geben, waere mir ein Feedback sehr hilfreich, das auch die Betriebsystemversion, phpversion und mysqlversion enthaelt. Danke Augenzwinkern
----
Demo: n /a

weiter zum Download

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von OptixPro: 22.10.06 11:10.

09.10.06 15:45 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Sn00pY Sn00pY ist männlich
Mitglied


images/avatars/avatar-4143.jpg

Dabei seit: 13.11.04
Beiträge: 931
Forenversion: 2.3

Antworten Zitieren Editieren Melden       UP

# Boardids & Boardidsmode
# Geben Sie hier zum einendie Baordids (durch kommata getrennt) an und zum anderen den modus.
# Modus 1: NUR die Forenids werden genommen
# Modus 2: Es werden alle Foren, aber NICHT die Forenids genommen
$rss_boardids = "5,56";
$rss_boardids_mode = 2;



Funktioniert leider net also er macht die foren trotzdem mit....
10.10.06 21:02 Sn00pY ist offline E-Mail WWW Finden Als Freund hinzufügen
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

suchen:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
# make wherebit
if($rss_boardids_mode == 1$sep "=";
else $sep "!=";

if(!empty($rss_boardids)){
    $boardids split(","$rss_boardids);

    for($i 0$i <= count($boardids); $i++){
        if(!empty($boardids[$i])) $where .= " boardid ".$sep." ".$boardids[$i]." OR";
    }
}

if(!$where$where "WHERE 1";
else $where "WHERE ".$where;

if(substr($wherestrlen($where)-22) == "OR"$where substr($where0strlen($where)-3);
# /make wherebit

ersetzen mit:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
# make wherebit
if(!empty($rss_boardids)){
        $boardids split(","$rss_boardids);

        for($i 0$i <= count($boardids); $i++){
                if(!empty($boardids[$i]) && $rss_boardids_mode == 1$where .= " boardid = ".$boardids[$i]." OR";
                else if(!empty($boardids[$i]) && $rss_boardids_mode != 1$where .= " boardid != ".$boardids[$i]." AND";
        }
}

if(!$where$where "WHERE 1";
else $where "WHERE ".$where;

if(substr($wherestrlen($where)-22) == "OR" || substr($wherestrlen($where)-33) == "AND"$where substr($where0strlen($where)-3);
# /make wherebit


beim einen muss ja nen OR und beim anderen SQL-Query nen AND eingesetzt werden... mit einer auszuschliessenden ID gehts auch mit dem alten code, bei mehreren muss der neue her... habs auch im ersten post geaendert-
11.10.06 11:52 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Netwarrior Netwarrior ist männlich
Mitglied


Dabei seit: 17.01.04
Beiträge: 31

Antworten Zitieren Editieren Melden       UP

funktioniert bei mir leider nicht.

php5 mit suse 10.1

bekomme nur ne weisse seite
12.10.06 19:43 Netwarrior ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Netwarrior in deine Kontaktliste ein
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

Zitat:
Original von Netwarrior
funktioniert bei mir leider nicht.

php5 mit suse 10.1

bekomme nur ne weisse seite


a) 3 dateien, daher: welche funkiniert nicht?
b) an php5 liegt es wohl nicht (da Testumgebung =
Apache 2.0.58 Linux version 2.6.17-gentoo-r8 (root@orpheus) (gcc-Version 4.1.1 (Gentoo 4.1.1)) #1 Tue Sep 12 15:32:34 CEST 2006 @ PHP 5.1.6-pl4-gentoo (built: Sep 27 2006 19:23:51))
12.10.06 21:07 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Netwarrior Netwarrior ist männlich
Mitglied


Dabei seit: 17.01.04
Beiträge: 31

Antworten Zitieren Editieren Melden       UP

guten morgen.

habe die Datei acp/lib/rss.inc.php erstellt und hochgeladen.

Dabei habe ich einen anderen rss-feed eingestellt

dann die rss2thread.php hochgeladen.

Beim Aufruf erhalte ich eben die weisse seite.

Apache/2.0.54
PHP Version 5.0.4

Edit:

Gerade mal die rss.php ausprobiert.
ebenfalls hier eine weisse Seite.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Netwarrior: 14.10.06 07:19.

14.10.06 07:13 Netwarrior ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Netwarrior in deine Kontaktliste ein
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

rss2threads => rss IMPORT! Glaube nicht, das du mit der nen rssfeed ausgeben kannst *gg*
rss.php => rssfeed des forums.

und zum guten schluss: poste deine rss.inc.php mal bitte und sofern du die .htzaccess angelegt hast auch ob AllowOverride in der Apache Config fuer dein Web aktiv is bzw auf All steht.

//edit: btw ne leere Seite ist bei allen Scripten unmoeglich... Da sie so oder so etwas ausgeben... Wenn ich das so sehe, sieht es nach einer Fehlkonfiguration des Webservers oder aehnlichem aus. Da die rss.php mindestens den header und das ende des feeds ausgibt und die rss2threads.php die ersten statusmeldungen...

//edit 2: klappt es ueberhaupt mit factory defaults (also den sites die ich im beispiel verwende?) Zunge raus

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von OptixPro: 14.10.06 09:49.

14.10.06 09:45 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Netwarrior Netwarrior ist männlich
Mitglied


Dabei seit: 17.01.04
Beiträge: 31

Antworten Zitieren Editieren Melden       UP

Die rss.inc.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
<?PHP
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */

// rss-output

# Boardids & Boardidsmode
# Geben Sie hier zum einendie Baordids (durch kommata getrennt) an und zum anderen den modus.
# Modus 1: NUR die Forenids werden genommen
# Modus 2: Es werden alle Foren, aber NICHT die Forenids genommen
$rss_boardids "0";
$rss_boardids_mode 2;

# RSS-Config
# Geben Sie hier die entsprechenden werte an...
# Per default werden die Systemwerte genommen (options.inc.php!)
$rss_name $master_board_name;
$rss_url $url2board;
$rss_description $rss_name ." - ".$rss_url;

# Rss Outputoptions
# Maximale Anzahl an ausgaben.
# Maximalie anzahl der Zeichen (Inhaltsauszug)
$rss_limit 15;
$rss_show_limit 250;

// rss-input

# boardid / uname / uid
# wohin damit? / Welcher Benutzer bekommt die Beitraege gutgeschrieben / Benutzer alias... (Hinweis: ALias linkt auf die userid!)
$boardid 21;
$uid 1;
$uname "System";

# status
# 0 = offen | 1 = geschlossen (der erstellte Thread)
$rss_status 1;

# sites
# hier werden die rssfeeds definiert, syntax: $sites[] = "url";
//$sites[] = "http://de.guildwars.com/home/news.rss";
$sites[] = "http://www.heise.de/newsticker/heise.rdf";
?>


Rss.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
<?PHP
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */
require("./acp/lib/options.inc.php");
require("./acp/lib/rss.inc.php");
require("global.php");

# make wherebit
if(!empty($rss_boardids)){
        $boardids split(","$rss_boardids);

        for($i 0$i <= count($boardids); $i++){
                if(!empty($boardids[$i]) && $rss_boardids_mode == 1$where .= " boardid = ".$boardids[$i]." OR";
                else if(!empty($boardids[$i]) && $rss_boardids_mode != 1$where .= " boardid != ".$boardids[$i]." AND";
        }
}

if(!$where$where "WHERE 1";
else $where "WHERE ".$where;

if(substr($wherestrlen($where)-22) == "OR" || substr($wherestrlen($where)-33) == "AND"$where substr($where0strlen($where)-3);
# /make wherebit



$result $db->query("SELECT threadid FROM bb".$n."_threads ".$where." ORDER BY starttime DESC LIMIT 0,".$rss_limit."");
while($row mysql_fetch_array($result)) $threadids .= ','.$row['threadid'];

$result $db->query("SELECT DISTINCT threadid, message, allowsmilies FROM bb".$n."_posts WHERE threadid IN (0$threadids) ORDER BY posttime DESC");
while($row mysql_fetch_array($result)) $posttemp[$row['threadid']] = $row;

$result mysql_query("SELECT bb".$n."_threads.*, username, userid FROM bb".$n."_threads LEFT JOIN bb".$n."_users ON (bb".$n."_users.userid=bb".$n."_threads.starterid) WHERE threadid IN (0$threadids) ORDER BY starttime DESC");

header("Content-type: text/xml");
header("Content-Description: Automaticly generated");
print '<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">

<channel>
  <title>'.$rss_name.'</title>
  <link>'.$rss_url.'</link>
  <description>'.$rss_description.'</description>
</channel>';

while($row mysql_fetch_array($result)) {
    $message preg_replace("/\[(.*?)](.*?)\[\/(.*?)\]/si","$2"$posttemp[$row['threadid']]['message']);
    $message preg_replace("/\[(.*?)\=(.*?)](.*?)\[\/(.*?)\]/si","$3"$posttemp[$row['threadid']]['message']);
    print '<item>
    <title>'.$row['topic'].'</title>
    <link>'.$url2board.'/thread.php?threadid='.$row['threadid'].'</link>
    <description>'.htmlspecialchars(substr($message0$rss_show_limit)).'...</description>
    </item>
    ';
}

print '</rdf:RDF>';
?>


meine rss2thread.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
<?PHP
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */
require("./acp/lib/options.inc.php");
require("./acp/lib/rss.inc.php");
require("global.php");


print '*** ['.date("d.m.Y H:i").'] Starting script...';
print "\n";
print '*** ['.date("d.m.Y H:i").'] UID->'.$uid.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] UNAME->'.$uname.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] BOARDID->'.$boardid.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] SITESCONT->'.count(sites).'';
print "\n";

$time time();
for($s 0;$s count($sites); $s++){
    preg_match("/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si"$sites[$s], $input[1]);
    $urlsplit split("/",$input[1][3]);

    print '*** ['.date("d.m.Y H:i").'] sites['.$s.'] = '.$urlsplit[0].'';
    print "\n";

    $content implode("",file($sites[$s]));
    preg_match_all("/\<item\>(.*?)\<\/item\>/si"$content$results);

    for($i 0;$i count($results[1]);$i++) {
        preg_match("/\<link\>(.*?)\<\/link\>/si"$results[1][$i], $link);
        preg_match("/\<title\>(.*?)\<\/title\>/si"$results[1][$i], $title);
        preg_match("/\<description\>(.*?)\<\/description\>/si"$results[1][$i], $desc);
        preg_match("/\<pubDate\>(.*?)\<\/pubDate\>/si"$results[1][$i], $date);

        $link $link[1];
        $title $title[1];
        $desc $desc[1];
        $date $date[1];

        $check $db->query("SELECT id,title FROM bb".$n."_rss WHERE title = '".addslashes($title)."'");
        if($db->num_rows($check) == 0){
            $db->query("INSERT INTO `bb".$n."_rss`  ( `id` , `from` , `title` , `link` , `description` ) VALUES ('', '".$s."', '".addslashes($title)."', '".addslashes($link)."', '".addslashes($desc)."')");
            if(!empty($date)) $news[$s][$i]['date'] = substr($date,0,strlen($date)-6);
            $news[$s][$i]['link'] = $link;
            $news[$s][$i]['title'] = $title;
            $news[$s][$i]['desc'] = $desc;
            if(!$news[$s]['name']) $news[$s]['name']  = $urlsplit[0];

            print '*** ['.date("d.m.Y H:i").'] DB->INSERT('.$title.')';
            print "\n";
        } else {
            print '*** ['.date("d.m.Y H:i").'] DB->EXISTS('.$title.')';
            print "\n";
        }
    }
}

for($i 0;$i count($news);$i++){
    $newstopic[$i] = "".$news[$i]['name']." - News [".date("d.m.Y H:i")."]";
    for($a 0;$a count($news[$i]);$a++){
        if(!empty($news[$i][$a]['date'])) $newstext[$i] .= "[".$news[$i][$a]['date']."] [b]&raquo; [URL=".utf8_decode($news[$i][$a]['link'])."]".utf8_decode($news[$i][$a]['title'])."[/URL][/b]<br />";
        else if(!empty($news[$i][$a]['title'])) $newstext[$i] .= "[b]&raquo; [URL=".utf8_decode($news[$i][$a]['link'])."]".utf8_decode($news[$i][$a]['title'])."[/URL][/b]<br />";

        if(!empty($news[$i][$a]['desc'])) $newstext[$i] .= "[i]".utf8_decode(htmlentities($news[$i][$a]['desc']))."[/i]<br /><br />";
    }

    $newstext[$i] .= "<br />[i]Quelle: [URL=http://".utf8_decode($news[$i]['name'])."]".utf8_decode($news[$i]['name'])."[/URL][/i]<br /><br />";
}

for($i 0;$i count($newstext);$i++){
    $db->query("INSERT INTO bb".$n."_threads (boardid,topic,iconid,starttime,starterid,starter,lastposttime,lastposterid,lastposter,closed,attachments,pollid,important,visible) VALUES ('".$boardid."','".addslashes($newstopic[$i])."','3','".$time."','".$uid."','".addslashes($uname)."','".$time."','".$uid."','".addslashes($uname)."','".$rss_status."','0','0','0','1')");
    $threadid $db->insert_id();
    print '*** ['.date("d.m.Y H:i").'] DB->CREATE_THRED('.$threadid.'->'.$newstopic[$i].')';
    print "\n";

    $db->unbuffered_query("UPDATE bb".$n."_stats SET threadcount=threadcount+1"1);
    print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_GLOBAL_THREADCOUNT';
    print "\n";

    $db->query("INSERT INTO bb".$n."_posts (parentpostid,threadid,userid,username,iconid,posttopic,posttime,message,attachments,allowsmilies,allowhtml,allowbbcode,allowimages,showsignature,ipaddress,visible) VALUES "."('0','".$threadid."','".$uid."','".addslashes($uname)."','3','".addslashes($newstopic[$i])."','".$time."','".addslashes($newstext[$i])."','0','1','1','1','1','0','127.0.0.1','1')");
    $postid $db->insert_id();
    print '*** ['.date("d.m.Y H:i").'] DB->CREATE_POST('.$threadid.'->'.$postid.')';
    print "\n";

    $db->unbuffered_query("UPDATE bb".$n."_stats SET postcount=postcount+1"1);
    print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_GLOBAL_POSTCOUNT';
    print "\n";

    $db->unbuffered_query("UPDATE bb".$n."_boards SET threadcount=threadcount+1, postcount=postcount+1, lastthreadid='".$threadid."', lastposttime='".$time."', lastposterid='".$uid."', lastposter='".addslashes($uname)."' WHERE boardid IN (".$boardid.")"1);
    print '*** ['.date("d.m.Y H:i").'] DB->UPDATE_BOARD('.$boardid.')';
    print "\n";
}
?>
14.10.06 09:56 Netwarrior ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Netwarrior in deine Kontaktliste ein
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

und du meinst die rss2thread.php und rss.php geben definitiv nur eine "blanko" Seite aus?

da du ja mit ja anwtortest, liegt es an deinem Server bzw. deinem Web. Weil alleine dieser code ausgefuehrt werden muesste, wenn nicht die serverkonfig daneben waere, alles andere waere mir neu:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
<?PHP
//schnipp
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */
require("./acp/lib/options.inc.php");
require("./acp/lib/rss.inc.php");
require("global.php");


print '*** ['.date("d.m.Y H:i").'] Starting script...';
print "\n";
print '*** ['.date("d.m.Y H:i").'] UID->'.$uid.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] UNAME->'.$uname.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] BOARDID->'.$boardid.'';
print "\n";
print '*** ['.date("d.m.Y H:i").'] SITESCONT->'.count(sites).'';
print "\n"

//schnap
?>
14.10.06 21:29 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Netwarrior Netwarrior ist männlich
Mitglied


Dabei seit: 17.01.04
Beiträge: 31

Antworten Zitieren Editieren Melden       UP

definitv ja...

Meine phpinfo: [Link wieder entfernt]

**Edit**
Link entfernt

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Netwarrior: 17.10.06 11:42.

15.10.06 17:30 Netwarrior ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Netwarrior in deine Kontaktliste ein
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

hmmm... da frag ich mich eigentlich nur, wie du es hochgeladen hast, binaer? ;D ascii? garnich? (hat dein ftpprog vll eine weisse siete geupped?)... Weil da passt was nich traurig Liegt aber echt nicht am Script... da das Script meines erachtens nichtmal zum start kommt... Warum auch immer, zur Info meine phpinfo():

http://sarina.homelinux.net/info.php
16.10.06 15:31 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Netwarrior Netwarrior ist männlich
Mitglied


Dabei seit: 17.01.04
Beiträge: 31

Antworten Zitieren Editieren Melden       UP

Uploadmodus ist automatisch.

hab die datei nochmal runtergeladen und mit winmerge verglichen, die dateien sind identisch
17.10.06 08:01 Netwarrior ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Netwarrior in deine Kontaktliste ein
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

dann tut es mir leid fuer dich, aber da kann ich nicht helfen, probiers mal mit der v1 is nen anderer DB eintrag mit weniger "komfort" vll geht der, der war damals noch fuer php4 zugeschnitten und sollte auch mit php5 laufen, kann mir aber wie gesagt nicht erklaeren warum das bei dir nicht funkt traurig
17.10.06 10:24 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Netwarrior Netwarrior ist männlich
Mitglied


Dabei seit: 17.01.04
Beiträge: 31

Antworten Zitieren Editieren Melden       UP

die v1 hat zwischenzeitlich mal funktioniert mit php4 aber dann mit php5 gehts auch nicht mehr :-(

Keine ahnung warum der das nicht mag...

**Edit**

Fehler gefunden :-)

Suche nach
php:
1:
require("global.php");


Ersetze durch
php:
1:
require("./global.php");


Leider werden die Umlaute nicht richtig dargestellt

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Netwarrior: 18.10.06 14:22.

17.10.06 11:41 Netwarrior ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Netwarrior in deine Kontaktliste ein
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

Umlaute im Import oder Export?
19.10.06 14:05 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Netwarrior Netwarrior ist männlich
Mitglied


Dabei seit: 17.01.04
Beiträge: 31

Antworten Zitieren Editieren Melden       UP

im import (also die rss2thread)

Beispiel:
[Die, 17 Okt 2006 13:40:00] » Status des Spiels: Werdet eins mit eurem inneren Mönch
Gute kompetitive Teams sind oftmals nur so stark wie ihr bester Mönch. Im Status des Spiels dieser Woche widmen wir der Mönchklasse besondere Aufmerksamkeit, sowohl auf individuellem Level als auch unter dem Gesichtspunkt des Mönchs als wichtiger Unterstützungscharakter.

Die Überschrift wird korrekt eingefügt, der Newstext leider nicht.
20.10.06 10:52 Netwarrior ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Netwarrior in deine Kontaktliste ein
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

jo, danke dir, ich denke ich habe die loesung, da es hauptsaechlich mit mysql > v4 passiert...
20.10.06 11:44 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Agi Agi ist männlich
TEAM - PHP Freak

images/avatars/avatar-5240.gif

Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi
Forenversion: 3.1

Antworten Zitieren Editieren Melden       UP

Hi ich hab noch ne Frage an dich:

Derzeit zeigt der Hack ja alle Threads aus allen Foren (außer den ausgeschlossenen) an; könntest du da nicht noch nen Zusatz coden, sodass man auch einzelne Foren abonnieren kann.
Zb wenn ich in News oben rechts auf das RSS Symbol klicke, dass er mir dann nur News aus dem Newsforum ausgibt; nicht vom ganzen board

Denn meine User stört es ungemein, dass sie alle Foren abonnieren müssen, obwohl sie die RSS Funktion nur in bestimmten Foren benutzen wollen ...

__________________

20.10.06 19:39 Agi ist offline Finden Als Freund hinzufügen
OptixPro
Mitglied


Dabei seit: 07.02.05
Beiträge: 83

Themenstarter Thema begonnen von OptixPro
Antworten Zitieren Editieren Melden       UP

das ist im grunde eine "kleinigkeit":

php:
1:
# /make wherebit


mit

php:
1:
2:
3:
// boardidhack
if(isset($_REQUEST['boardid']) && !empty($_REQUEST['boardid'])) $where "boardid = '".$_GET['boardid']."'";
# /make wherebit


ersetzen, habe das ganze allerdings nicht getestet. beachte aber, dass nur wenn eine boardid != 0 angeben wird diese beruecksichtigt wird und wenn keine != 0 boardid angegeben wird, die standart einstellung genommen wird.

aufruf dann per rss.php?boardid=2132 (z. B.)

// edit, der fix fuer die umlaute kommt im laufe des wochenendes, hab noch nicht alles soweit fertig wie ich gehofft hatte...

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von OptixPro: 20.10.06 21:46.

20.10.06 21:45 OptixPro ist offline E-Mail Finden Als Freund hinzufügen
Agi Agi ist männlich
TEAM - PHP Freak

images/avatars/avatar-5240.gif

Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi
Forenversion: 3.1

Antworten Zitieren Editieren Melden       UP

Hab ausprobiert, jetzt bringt er mir den Fehler wenn ich die Datei aufrufe:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
SQL-DATABASE ERROR

Database error in WoltLab Burning Board (2.3.6): Invalid SQL: SELECT threadid FROM bb1_threads WHERE boardid = '105' boardid != 1 AND boardid != 2 AND boardid != 3 AND boardid != 56 AND boardid != 121 AND boardid != 4 AND boardid != 5 AND boardid != 63 AND boardid != 19 ORDER BY starttime DESC LIMIT 0,15
mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'boardid != 1 AND boardid != 2 AND boardid != 3 AND boardid != 56 AND boardid != ' at line 1
mysql error number: 1064
mysql version: 4.1.13
php version: 5.1.4
Date: 21.10.2006 @ 02:38
Script: /rss.php?boardid=105
Referer: 


__________________

21.10.06 02:39 Agi ist offline Finden Als Freund hinzufügen
Seiten (4): [1] 2 3 4 nächste » Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB 2.3.x » [WBB 2.3.x] Hacks und Addons » HOWTO: rssfeed und rssfeed2thread v2