Phpwiki: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Rkr (Diskussion | Beiträge) K (→Scripts) |
Rkr (Diskussion | Beiträge) |
||
Zeile 12: | Zeile 12: | ||
*per ZIP-Snapshot | *per ZIP-Snapshot | ||
*Umlaute sollten nicht in "quoted-printable" konvertiert werden und Zeilen sollten nicht abgeschnitten werden. Änderungen in ziplib.php: | *Umlaute sollten nicht in "quoted-printable" konvertiert werden und Zeilen sollten nicht abgeschnitten werden. Änderungen in ziplib.php: | ||
< | <source lang="php"> | ||
function QuotedPrintableEncode ($string) | function QuotedPrintableEncode ($string) | ||
{ | { | ||
Zeile 24: | Zeile 24: | ||
return $quoted; | return $quoted; | ||
} | } | ||
</ | </source> | ||
==== Dateien und Inhalte konvertieren ==== | ==== Dateien und Inhalte konvertieren ==== |
Version vom 24. Juli 2008, 14:16 Uhr
Konvertierung von Phpwiki nach Mediawiki
- Phpwiki-Version: 1.2.7
- PhpWiki DB: File
- Mediawiki-Version: 1.11.0
Konvertierung gemäß
- http://meta.wikimedia.org/wiki/Documentation:PhpWiki_conversion
- http://wikiworld.com/wiki/index.php/PhpWiki2MediaWiki
Vorgehen
Phpwiki Seiten exportieren
- per ZIP-Snapshot
- Umlaute sollten nicht in "quoted-printable" konvertiert werden und Zeilen sollten nicht abgeschnitten werden. Änderungen in ziplib.php:
function QuotedPrintableEncode ($string)
{
...
if (!empty($match[3]))
//$quoted .= sprintf("=%02X", ord($match[3]));
$quoted .= $match[3];
...
//return preg_replace('/(?=.{77})(.{10,74}[ \t]|.{71,73}[^=][^=])/s',
// "\\1=\r\n", $quoted);
return $quoted;
}
Dateien und Inhalte konvertieren
- Script phpwikiconvert_wrapper.sh ausführen.
Seiten in Mediawiki importieren
- Script phpwikiconvert_sqladd.sh ausführen
- maintenance/rebuildall.php für Mediawiki ausführen (AdminSettings.php muss korrekt sein)
Einschränkungen
- Ausrufezeichen werden in == konvertiert.
- Interne Links wie InternerLink werden nicht konvertiert, wenn * davor steht.
- Alle Wörter mit mindestens 2 Großbuchstaben werden nach [[LINK]] konvertiert.
Scripts
phpwikiconvert_wrapper.sh:
#!/bin/bash # See http://meta.wikimedia.org/wiki/Documentation:PhpWiki_conversion # and http://wikiworld.com/wiki/index.php/PhpWiki2MediaWiki # dont't split lines in ziplib.php !! return $quoted; PRECONVERT=1 if [ "$PRECONVERT" = "1" ];then for file in pages/* do #awk 'i==1;/^\x0d$/{i=1}' $file | sed -f phpwikiconvert > converted/$file # convert to UNIX format dos2unix $file # convert ISO-8859-1 to UTF-8, don't convert to quoted-printable in ziplib.php # $quoted .= $match[3]; in Zeile 464 # THIS MUST ONLY BE DONE ONCE. DO NOT REPLY THIS ON ALREADY CONVERTED FILES. recode ISO_8859-1..UTF-8 $file # filename converting mv $file `echo $file|sed 's!%20!_!g'` 2>/dev/null # spaces to _ mv $file `echo $file|sed 's!%2F!_!g'` 2>/dev/null # slashes to _ mv $file `echo $file|sed 's!%F6!ö!g'` 2>/dev/null # for Behörden page done fi for file in pages/*; do # remove all lines including the first empty one and run syntax converter mkdir -p converted/pages awk 'i==1;/^$/{i=1}' $file | sed -f phpwikiconvert > converted/$file done
phpwikiconvert:
# Problems: # - Ausrufezeichen werden in == konvertiert # - interne Links InternerLink werden nicht konvertiert, wenn * davor steht # - alle Wörter mit 2 Großbuchstaben werden nach [[LINK]] konvertiert. # typeset markup s/_\([^_]*\)_/''\1''/g # italic -- OK -> Seems to be bold #s/\*\([^\*]*\)\*/'''\1'''/g # boldface -- OK -> problems with ** and *** #s!=\([^=]*\)=!<code>\1</code>!g # fixed-width -- OK -> problems with = # header markup -- OK s/!!!\(.*\)$/==\1==/g s/!!\(.*\)$/===\1===/g s/!\(.*\)$/====\1====/g # table markup (hopefully) s!\([^|][^|]*\)|!\1||!g s!^|!|-\n|!g # convert row start -- OK s!.*plugin OldStyleTable.*!\{\|! # convert table start -- mostly OK s!^?>$!\|\}! # convert table end -- mostly OK # link markup s!\[\(.*\)|\(http.*\)]![\2 \1]!g # url format -- OK s!\[\(.*\)|\(.*\)\]![\2|\1]!g # switch display and link text -- OK s!\[\([^]]*\)\]![[\1]]!g # double bracketize -- OK s!\[\[\(http.*\)\]\]![\1]!g # undo double-bracketing urls by above -- OK # redirects s!<?plugin RedirectTo page=\(.*\)?>!#REDIRECT [[\1]]! # quotes s!"!\\"!g # %%% newlines - jim s/!%%%/<br>/ s/<verbatim>/<pre>/ s!</vertatim>!</ pre>! # take out space b4 running - jim #wikiwords - jim - allowing numbers added afterwards s/^\([A-Z][a-z0-9][a-z0-9]*[A-Z][A-Za-z0-9]*\)/[[\1]]/ s/ \([A-Z][a-z0-9][a-z0-9]*[A-Z][A-Za-z0-9]*\)/ [[\1]]/g
phpwikiconvert_sqladd.sh:
#!/bin/bash # danach noch rebuildall.php ausführen (nach AdminSettings.php erstellen) cd converted/pages for file in *; do title=`echo $file|sed 's!%2F!/!g'|perl -n -e "print ucfirst;"` # title begins with capital char cat <<END | mysql -u wikinotes -pmrnotes66 wikinotes INSERT INTO page (page_id, page_namespace, page_title, page_counter, page_restrictions, page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len) VALUES (NULL,0, "$title", 0,'', 0, 1, RAND(), NOW()+0, 0, LENGTH("`cat $file`")); INSERT INTO text (old_id, old_text, old_flags) VALUES (NULL, "`cat $file`", "utf-8"); INSERT INTO revision (rev_id, rev_page, rev_text_id, rev_comment, rev_minor_edit, rev_user, rev_user_text, rev_timestamp) SELECT NULL, page_id, LAST_INSERT_ID(),"PhpWikiMigration", 0, 1 ,"Admin", NOW()+0 FROM page WHERE page_title = "$title"; UPDATE page,revision SET page.page_latest = LAST_INSERT_ID() WHERE page.page_id = revision.rev_page && revision.rev_id = LAST_INSERT_ID(); END done