HOWTO: rssfeed und rssfeed2thread v2 |
OptixPro
Mitglied
Dabei seit: 07.02.05
Beiträge: 83
|
|
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($where, strlen($where)-2, 2) == "OR" || substr($where, strlen($where)-3, 3) == "AND") $where = substr($where, 0, strlen($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($message, 0, $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]» [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]» [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
----
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 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Sn00pY
Mitglied
Dabei seit: 13.11.04
Beiträge: 931
Forenversion: 2.3
|
|
# 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 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
OptixPro
Mitglied
Dabei seit: 07.02.05
Beiträge: 83
Themenstarter
|
|
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($where, strlen($where)-2, 2) == "OR") $where = substr($where, 0, strlen($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($where, strlen($where)-2, 2) == "OR" || substr($where, strlen($where)-3, 3) == "AND") $where = substr($where, 0, strlen($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 |
E-Mail
Finden
Als Freund hinzufügen
|
|
OptixPro
Mitglied
Dabei seit: 07.02.05
Beiträge: 83
Themenstarter
|
|
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 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Netwarrior
Mitglied
Dabei seit: 17.01.04
Beiträge: 31
|
|
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($where, strlen($where)-2, 2) == "OR" || substr($where, strlen($where)-3, 3) == "AND") $where = substr($where, 0, strlen($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($message, 0, $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]» [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]» [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 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
OptixPro
Mitglied
Dabei seit: 07.02.05
Beiträge: 83
Themenstarter
|
|
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 |
E-Mail
Finden
Als Freund hinzufügen
|
|
OptixPro
Mitglied
Dabei seit: 07.02.05
Beiträge: 83
Themenstarter
|
|
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
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 |
E-Mail
Finden
Als Freund hinzufügen
|
|
OptixPro
Mitglied
Dabei seit: 07.02.05
Beiträge: 83
Themenstarter
|
|
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
|
|
17.10.06 10:24 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Netwarrior
Mitglied
Dabei seit: 17.01.04
Beiträge: 31
|
|
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 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
OptixPro
Mitglied
Dabei seit: 07.02.05
Beiträge: 83
Themenstarter
|
|
jo, danke dir, ich denke ich habe die loesung, da es hauptsaechlich mit mysql > v4 passiert...
|
|
20.10.06 11:44 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Agi
TEAM - PHP Freak
Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi Forenversion: 3.1
|
|
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 |
Finden
Als Freund hinzufügen
|
|
Agi
TEAM - PHP Freak
Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi Forenversion: 3.1
|
|
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 |
Finden
Als Freund hinzufügen
|
|
|