===== Mediawiki to dokuwiki =====
* 2009/3/18 ~
* mediawiki 내용 덤프 하기 : xml로 덤프하기 [[http://www.mediawiki.org/wiki/Manual:Backing_up_a_wiki|Backing_up_a_wiki]]
==== 미디어위키 내용 덤프 ====
미디어위키 내부의 관리 기능 중에 xml로 덤프하는 기능이 있어서, 그걸로 위키 내용을 전부를 덤프
D:\>"%path%\php.exe" dumpBackup.php --skip-header --skip-footer --current > wikidump.xml
==== 미디어위키를 dokuwiki로 문법 변환하는 내용 ====
php로 작성된게 있어서 다운로드 {{:wiki:mediawiki2dokuwiki.zip}}
==== xml에서 문서 내용 추출 ====
xml을 dokuwiki로 변환해야 하는데, 변환기는 없어서 직접 만들어야 한다.\\
형식이 표준이 아닌 것 같아서 잘 안읽히는거 같은데 확인해 봐야 할 것 같다.
===== 제로보드와 계정 연동 =====
* 2009/3/18, [[http://www.digist.co.kr/bbs/?mid=blog&search_target=regdate&search_keyword=200710&document_srl=101036|출처]]
==== 내용설명 ====
* 제로보드 계정으로 도쿠위키에 로그인 되도록 할 수 있어서 두개의 계정을 연결해두었다.
* 로그인 상태를 유지하는 것은, [[http://www.xpressengine.com/zb4_tip/15981669]]에서 다루고 있는데, 귀찮아서 일단 위치 참조만 나둔 생태로 정리
* 원본 소스 : {{:wiki:zbxe.class.zip|}}
==== 설치방법 ====
* zbxe.class.php 파일을 inc/auth 에 복사해서 넣는다.
* zbxe 계정 인증을 사용하기 위해서 다음 코드를 conf/local.php 에 추가한다.
/* add to user zeroboard account */
$conf['authtype'] = 'zbxe';
$conf['auth']['zbxe']['path'] = "D:/WEBAPP/devboard/"; // 제로보드가 설치된 경로, 마지막은 '/'로 끝나야한다.
$conf['auth']['zbxe']['user'] = "devteam;user"; // 도쿠위키의 user 그룹과 같은 권한을 갖게될 zbxe의 그룹이름
$conf['auth']['zbxe']['admin'] = "admin"; // 그룹이 여러개일때는 ';'으로 구분한다.
$conf['auth']['zbxe']['techteam'] = "devteam"; // 그룹이름이 영어만 인식하므로 주의
original code of **zbxe.class.php**
*/
class auth_zbxe extends auth_basic {
var $url = array();
function auth_zbxe() {
global $conf;
define('__ZBXE__', true);
$config_file = $conf['auth']['zbxe']['path']."files/config/db.config.php";
require_once ($config_file);
$this->url['path'] = $conf['auth']['zbxe']['path'];
$this->url['db_prefix'] = $db_info->db_table_prefix;
$this->url['host'] = $db_info->db_hostname;
$this->url['user'] = $db_info->db_userid;
$this->url['pass'] = $db_info->db_password;
$this->url['database'] = $db_info->db_database;
// connect to database
$this->url['link'] = mysql_connect($this->url['host'], $this->url['user'], $this->url['pass']);
if (!$this->url['link']) {
msg('Cant connect to DB: ' . mysql_error());
$this->success = false;
return;
}
if (!mysql_select_db($this->url['database'], $this->url['link'])) {
msg('cant connect to DB: ' . mysql_error());
$this->success = false;
return;
}
mysql_query("set names utf8");
// PHP 4때문에 destructor를 명시적 선언
register_shutdown_function("auth_zbxe_disconnect", $this);
}
// check password
function checkPass($user, $pass) {
$query = "select count(*) from ".$this->url['db_prefix']."_member where user_id='$user' and password=MD5('$pass')";
$result = mysql_query($query);
if(!$result){
msg('query failed-1: ' . mysql_error());
return false;
}
$count = mysql_result($result, 0, 0);
return ($count == 1 ? true: false);
}
// 유저 정보를 리턴
//
// name : 문자열, 유저이름
// mail : 문자열, 메일주소
// grps : 배열, 유저의 그룹 목록
function getUserData($user) {
global $conf;
$query = "select user_name, email_address, member_srl from ".$this->url['db_prefix']."_member where user_id='$user'";
$result = mysql_query($query);
if(!$result) return null;
if($data = mysql_fetch_array($result)){
$info['name'] = $data[user_name];
$info['mail'] = $data[email_address];
$member_srl = $data[member_srl];
}
$group_table = $this->url['db_prefix']."_member_group";
$group_member_table = $this->url['db_prefix']."_member_group_member";
$query =
"select g.title as title from " . $group_table . " g, " .
$group_member_table . " gm where g.group_srl = gm.group_srl and gm.member_srl = '$member_srl'";
$result = mysql_query($query);
if (!$result){
msg('query failed-2: ' . mysql_error());
return false;
}
while($data = mysql_fetch_array($result))
{
if(strpos($conf['auth']['zbxe']['user'], $data[title]) !== FALSE){
$info['grps'][] = 'user';
}
if(strpos($conf['auth']['zbxe']['admin'], $data[title]) !== FALSE){
$info['grps'][] = 'admin';
}
if(strpos($conf['auth']['zbxe']['techteam'], $data[title]) !== FALSE){
$info['grps'][] = 'techteam';
}
}
return $info;
}
}
function auth_zbxe_disconnect($obj) {
mysql_close($obj->url['link']);
}
?>
===== Create New Page 으로 페이지 생성시, 네임스페이스가 제대로 반영되지 않던 문제 =====
* 2009/3/17
원 제작자의 최근 소스를 받아서 업데이트함, 이후에는 정상 동작함
svn 주소
http://svn.bitflux.org/repos/public/misc/dokuwiki/plugins/npd
===== 주소창에서 페이지 한글 이름 입력시 글자가 깨지는 문제 =====
* 2009/3/17
한글 언어 환경 (비유니코드언어환경인듯)에서 ie나 firefox 로 실행하면서 새 페이지 이름에 한글을 넣으면\\
글자가 깨져서 나오는데 utf 로 인코딩해서 보내도 제대로 되지 않는 것 같아서\\
받은 페이지 이름을 강제로 utf8로 변경.
이후에는 정상으로 페이지가 뜨더라
// inc/pageutils.php
function getID($param='id',$clean=true){
global $conf;
$id = isset($_REQUEST[$param]) ? $_REQUEST[$param] : null;
// convert encoding from (local language to utf8)
$tmpstr = $id;
// If url address enter by WebBrowser's AddressBar
if($HTTP_REFERER == "")
{
if( mb_check_encoding($tmpstr, "euc-kr") == true )
{
$tmpstr = iconv("euc-kr", "utf-8", $tmpstr);
//echo ""; //(debug message)
}
}
// echo ""; //(debug message)
$id = $tmpstr;