From 67572cebaf675dc68fdb80cfc943318ae75dbbc3 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Jun 2007 06:05:26 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@1628 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DB.class.php | 3 + classes/db/DBMysql.class.php | 3 +- classes/db/DBMysql_innodb.class.php | 3 +- classes/module/ModuleHandler.class.php | 2 +- classes/object/Object.class.php | 5 +- modules/blog/blog.view.php | 49 +++-- modules/blog/skins/default/comment.html | 8 +- modules/blog/skins/default/delete_form.html | 2 +- modules/blog/skins/default/list.html | 8 +- modules/blog/skins/default/trackback.html | 4 +- modules/blog/skins/default/view_document.html | 58 +++--- modules/blog/skins/default/write_form.html | 24 +-- modules/blog/skins/xe_blog/comment.html | 6 +- modules/blog/skins/xe_blog/delete_form.html | 2 +- modules/blog/skins/xe_blog/list.html | 8 +- modules/blog/skins/xe_blog/trackback.html | 4 +- modules/blog/skins/xe_blog/view_document.html | 66 +++---- modules/blog/skins/xe_blog/write_form.html | 26 +-- modules/board/board.admin.view.php | 4 +- modules/board/board.view.php | 49 +++-- modules/board/skins/default/comment.html | 8 +- modules/board/skins/default/delete_form.html | 2 +- modules/board/skins/default/list.html | 34 ++-- modules/board/skins/default/trackback.html | 6 +- .../board/skins/default/view_document.html | 59 +++--- modules/board/skins/default/write_form.html | 24 +-- modules/board/skins/xe_list/comment.html | 6 +- modules/board/skins/xe_list/delete_form.html | 2 +- modules/board/skins/xe_list/list.html | 36 ++-- modules/board/skins/xe_list/trackback.html | 4 +- .../board/skins/xe_list/view_document.html | 61 +++--- modules/board/skins/xe_list/write_form.html | 24 +-- modules/document/document.class.php | 2 + modules/document/document.controller.php | 25 ++- modules/document/document.item.php | 183 ++++++++++++++++++ modules/document/document.model.php | 148 +++----------- modules/document/tpl/document_list.html | 24 +-- .../skins/blog_newest_document/list.html | 8 +- .../newest_document/skins/default/list.html | 12 +- 39 files changed, 543 insertions(+), 459 deletions(-) create mode 100644 modules/document/document.item.php diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index b4468b532..1e333c91f 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -82,6 +82,9 @@ // 구해진 클래스의 객체 생성후 isSupported method를 통해 지원 여부를 판단 for($i=0;$ierror = 'msg_module_is_not_exists'; diff --git a/classes/object/Object.class.php b/classes/object/Object.class.php index f4e6f53d5..369167e75 100644 --- a/classes/object/Object.class.php +++ b/classes/object/Object.class.php @@ -63,7 +63,10 @@ * @brief 추가된 변수의 key, value들을 추가 **/ function adds($object) { - if( (is_object($object) && count(array_keys($object))) || (is_array($object) && count($object))) { + if(is_object($object)) { + $vars = get_object_vars($object); + foreach($vars as $key => $val) $this->add($key, $val); + } elseif(is_array($object)) { foreach($object as $key => $val) $this->add($key, $val); } } diff --git a/modules/blog/blog.view.php b/modules/blog/blog.view.php index 3ec955bdd..b17ac8102 100644 --- a/modules/blog/blog.view.php +++ b/modules/blog/blog.view.php @@ -79,27 +79,31 @@ // document 객체를 생성. 기본 데이터 구조의 경우 document모듈만 쓰면 만사 해결.. -_-; $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument(0, $this->grant->manager); + // document_srl이 있다면 해당 글을 구해오자 if($this->grant->list && $document_srl) { // 글을 구함 - $document = $oDocumentModel->getDocument($document_srl, $this->grant->manager, true); + $oDocument->setDocument($document_srl); // 찾아지지 않았다면 초기화 - if($document->document_srl != $document_srl) { - unset($document); + if(!$oDocument->isExists()) { unset($document_srl); Context::set('document_srl','',true); + } else { + // 브라우저 타이틀 설정 + Context::setBrowserTitle($oDocument->getTitleText()); - // 글이 찾아졌으면 댓글 권한과 허용 여부를 체크하여 댓글 에디터 세팅 - } elseif($this->grant->write_comment && $document->allow_comment == 'Y' && $document->lock_comment != 'Y') { - // 브라우저 타이틀 - $browser_title = $this->module_info->browser_title.' - '.$document->title; - Context::setBrowserTitle($browser_title); + // 댓글에디터 설정 + if($this->grant->write_comment && $oDocument->allowComment() && !$oDocument->isLocked()) $this->setCommentEditor(0, 100); + + // 조회수 증가 + $oDocument->updateReadedCount(); } - Context::set('document', $document); } + Context::set('oDocument', $oDocument); // 댓글 $this->setCommentEditor(0, 100); @@ -167,23 +171,21 @@ // document 모듈 객체 생성 $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl, $this->grant->manager); // 지정된 글이 없다면 (신규) 새로운 번호를 만든다 - if($document_srl) { - $document = $oDocumentModel->getDocument($document_srl, $this->grant->manager); - if(!$document) { - unset($document_srl); - Context::set('document_srl',''); - } + if(!$oDocument->isExists()) { + unset($document_srl); + Context::set('document_srl',''); } if(!$document_srl) $document_srl = getNextSequence(); // 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로 - if($document&&!$document->is_granted) return $this->setTemplateFile('input_password_form'); + if($oDocument->isExists()&&!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form'); Context::set('document_srl',$document_srl); - Context::set('document', $document); + Context::set('oDocument', $oDocument); // 에디터 모듈의 getEditor를 호출하여 세팅 $oEditorModel = &getModel('editor'); @@ -209,19 +211,16 @@ // 삭제할 문서번호를 가져온다 $document_srl = Context::get('document_srl'); - // 지정된 글이 있는지 확인 - if($document_srl) { - $oDocumentModel = &getModel('document'); - $document = $oDocumentModel->getDocument($document_srl); - } + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl, $this->grant->manager); // 삭제하려는 글이 없으면 에러 - if(!$document) return $this->dispBlogContent(); + if(!$oDocument->isExists()) return $this->dispBlogContent(); // 권한이 없는 경우 비밀번호 입력화면으로 - if($document&&!$document->is_granted) return $this->setTemplateFile('input_password_form'); + if($oDocument->isExists()&&!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form'); - Context::set('document',$document); + Context::set('oDocument',$oDocument); $this->setTemplateFile('delete_form'); } diff --git a/modules/blog/skins/default/comment.html b/modules/blog/skins/default/comment.html index d6eae8b0c..461e5d764 100644 --- a/modules/blog/skins/default/comment.html +++ b/modules/blog/skins/default/comment.html @@ -1,6 +1,8 @@ - + - + + +
@@ -56,6 +58,6 @@ - + diff --git a/modules/blog/skins/default/delete_form.html b/modules/blog/skins/default/delete_form.html index 1f552303e..e0890106c 100644 --- a/modules/blog/skins/default/delete_form.html +++ b/modules/blog/skins/default/delete_form.html @@ -12,7 +12,7 @@ - +
{$lang->title}{$document->title}{$oDocument->getTitleText()}
diff --git a/modules/blog/skins/default/list.html b/modules/blog/skins/default/list.html index 161845165..da1bb16f9 100644 --- a/modules/blog/skins/default/list.html +++ b/modules/blog/skins/default/list.html @@ -5,19 +5,19 @@ - +
- [{zdate($document->regdate, "Y-m-d")}] {$document->title} + [{$oDocument->getRegdate("Y-m-d")}] {$oDocument->getTitleText()} - ({number_format($document->comment_count)}) + ({number_format($oDocument->getCommentCount())}) - ({number_format($document->trackback_count)}) + ({number_format($oDocument->getTrackbackCount())})
diff --git a/modules/blog/skins/default/trackback.html b/modules/blog/skins/default/trackback.html index 857fd47e8..d72602a24 100644 --- a/modules/blog/skins/default/trackback.html +++ b/modules/blog/skins/default/trackback.html @@ -1,5 +1,5 @@ - - + +
diff --git a/modules/blog/skins/default/view_document.html b/modules/blog/skins/default/view_document.html index 4c9a33cfb..b4584a83d 100644 --- a/modules/blog/skins/default/view_document.html +++ b/modules/blog/skins/default/view_document.html @@ -3,60 +3,63 @@
- - [{$category_list[$document->category_srl]->title}] + + [{$category_list[$oDocument->get('category_srl')]->title}] - {htmlspecialchars($document->title)} + {$oDocument->getTitleText()}
- {zdate($document->regdate,"Y-m-d H:i:s")} + {$oDocument->getRegdate('Y.m.d')} {$oDocument->getRegdate('H:i:s')} - by {htmlspecialchars($document->nick_name)} + {$oDocument->getNickName()}
-
{$document->content}
+
{$oDocument->getContent()}
- {$lang->document_url} : {getUrl()}{$document->document_srl} + {$lang->document_url} : {$oDocument->getPermanentUrl()}
- + {@ $tag_list = $oDocument->get('tag_list') } +
- {$lang->tag} : - + + {@ $tag = $tag_list[$i]; } + {$lang->tag} : {htmlspecialchars($val)}
- +
- {$lang->trackback_url} : {getUrl()}trackback/{$document->document_srl} + {$lang->trackback_url} : {$oDocument->getTrackbackUrl()}
- +
{$lang->uploaded_file}
- + {@ $uploaded_list = $oDocument->getUploadedFiles() } + {$file->source_filename} ({FileHandler::filesize($file->file_size)}) ({number_format($file->download_count)}) - +
@@ -64,23 +67,28 @@ - + - + - + - - {@ $document_srl = $document->document_srl; } + + {@ $document_srl = $oDocument->document_srl; } diff --git a/modules/blog/skins/default/write_form.html b/modules/blog/skins/default/write_form.html index b5118a6bb..a1871eb29 100644 --- a/modules/blog/skins/default/write_form.html +++ b/modules/blog/skins/default/write_form.html @@ -3,7 +3,7 @@
fileupload)-->enctype="multipart/form-data"> - + @@ -17,7 +17,7 @@ @@ -26,7 +26,7 @@ - + @@ -34,35 +34,35 @@ - + - + - + @@ -87,7 +87,7 @@ diff --git a/modules/blog/skins/xe_blog/comment.html b/modules/blog/skins/xe_blog/comment.html index 8e838bb94..b365d58a9 100644 --- a/modules/blog/skins/xe_blog/comment.html +++ b/modules/blog/skins/xe_blog/comment.html @@ -1,9 +1,9 @@ - +
    - +
  • depth)-->class="reply"> @@ -53,6 +53,6 @@ - + diff --git a/modules/blog/skins/xe_blog/delete_form.html b/modules/blog/skins/xe_blog/delete_form.html index 1f552303e..e0890106c 100644 --- a/modules/blog/skins/xe_blog/delete_form.html +++ b/modules/blog/skins/xe_blog/delete_form.html @@ -12,7 +12,7 @@
- + - + - + - + - - - - - - - + - + - + - + - + - + - + - + - + {@ $tag_list = $oDocument->get('tag_list') } + - + @@ -85,19 +82,19 @@ - + @@ -110,7 +107,7 @@ [{$lang->cmd_list}][{$lang->cmd_vote}] - + [{$lang->cmd_modify}][{$lang->cmd_delete}] @@ -118,13 +115,13 @@ - + - + diff --git a/modules/board/skins/default/write_form.html b/modules/board/skins/default/write_form.html index 2a8f6d27e..a1871eb29 100644 --- a/modules/board/skins/default/write_form.html +++ b/modules/board/skins/default/write_form.html @@ -3,7 +3,7 @@ fileupload)-->enctype="multipart/form-data"> - +
{$lang->writer}
{$lang->password}
{$lang->email_address}
{$lang->homepage}
{$lang->title}
- is_notice== "Y")-->checked="true" id="is_notice" /> + isNotice())-->checked="true" id="is_notice" /> - is_secret== "Y")-->checked="true" id="is_secret" /> + isSecret())-->checked="true" id="is_secret" /> - allow_comment != "N")-->checked="true" id="allow_comment" /> + allowComment())-->checked="true" id="allow_comment" /> - lock_comment == "Y")-->checked="true" id="lock_comment" /> + isLocked())-->checked="true" id="lock_comment" /> - allow_trackback != "N")-->checked="true" id="allow_trackback" /> + allowTrackback())-->checked="true" id="allow_trackback" />
{$lang->tag} -
+
{$lang->about_tag}
{$lang->title}{$document->title}{$oDocument->getTitleText()}
diff --git a/modules/blog/skins/xe_blog/list.html b/modules/blog/skins/xe_blog/list.html index bcc3216a7..e93359894 100644 --- a/modules/blog/skins/xe_blog/list.html +++ b/modules/blog/skins/xe_blog/list.html @@ -5,19 +5,19 @@ - +
- [{zdate($document->regdate, "Y-m-d")}] {$document->title} + [{$oDocument->getRegdate("Y-m-d")}] {$oDocument->getTitleText()} - ({number_format($document->comment_count)}) + ({number_format($oDocument->getCommentCount())}) - ({number_format($document->trackback_count)}) + ({number_format($oDocument->getTrackbackCount())})
diff --git a/modules/blog/skins/xe_blog/trackback.html b/modules/blog/skins/xe_blog/trackback.html index 65eebd2cc..4d8e504ab 100644 --- a/modules/blog/skins/xe_blog/trackback.html +++ b/modules/blog/skins/xe_blog/trackback.html @@ -1,9 +1,9 @@ - +
    - +
  • diff --git a/modules/blog/skins/xe_blog/view_document.html b/modules/blog/skins/xe_blog/view_document.html index d98aa0c68..e6109b70e 100644 --- a/modules/blog/skins/xe_blog/view_document.html +++ b/modules/blog/skins/xe_blog/view_document.html @@ -1,36 +1,28 @@ - - - - - - - -
    -

    {htmlspecialchars($document->title)}

    - - |{$category_list[$document->category_srl]->title} +

    {$oDocument->getTitleText()}

    + + |{$category_list[$oDocument->get('category_srl')]->title}
    - {zdate($document->regdate,"Y.m.d")} {zdate($document->regdate,"H:i:s")} + {$oDocument->getRegdate('Y.m.d')} {$oDocument->getRegdate('H:i:s')} - ({$document->ipaddress}) + ({$oDocument->get('ipaddress')}) - +
    @@ -38,42 +30,44 @@
    {$lang->document_url} :
    -
    {getUrl('','document_srl',$document->document_srl)}
    +
    {$oDocument->getPermanentUrl()}
    - +
    {$lang->trackback_url} :
    -
    {getUrl('','document_srl',$document->document_srl,'act','trackback')}
    +
    {$oDocument->getTrackbackUrl()}
    -
    {htmlspecialchars($document->nick_name)}
    +
    {$oDocument->getNickName()}
    -
    {$document->content}
    +
    {$oDocument->getContent()}
    - + {@ $tag_list = $oDocument->get('tag_list') } +
    {$lang->tag}
    - +
    {$lang->uploaded_file} :
    @@ -83,25 +77,25 @@
    - - + + - - - {@ $document_srl = $document->document_srl; } + + + {@ $document_srl = $oDocument->document_srl; } diff --git a/modules/blog/skins/xe_blog/write_form.html b/modules/blog/skins/xe_blog/write_form.html index 2169b4807..bb55319b9 100644 --- a/modules/blog/skins/xe_blog/write_form.html +++ b/modules/blog/skins/xe_blog/write_form.html @@ -5,62 +5,62 @@
    fileupload)-->enctype="multipart/form-data" class="boardEditor" id="fo_write">
    - +
    - + - + - +
    - + - +
    설정옵션
    - is_notice== "Y")-->checked="true" id="is_notice" /> + isNotice())-->checked="true" id="is_notice" />
    - lock_comment == "Y")-->checked="true" id="lock_comment" /> + isLocked())-->checked="true" id="lock_comment" />
    - is_secret== "Y")-->checked="true" id="is_secret" /> + isSecret())-->checked="true" id="is_secret" />
    - allow_comment != "N")-->checked="true" id="allow_comment" /> + allowComment())-->checked="true" id="allow_comment" />
    - allow_trackback != "N")-->checked="true" id="allow_trackback" /> + allowTrackback())-->checked="true" id="allow_trackback" />
    @@ -83,7 +83,7 @@
    - +

    {$lang->about_tag}

    diff --git a/modules/board/board.admin.view.php b/modules/board/board.admin.view.php index d742de4df..4f0d270db 100644 --- a/modules/board/board.admin.view.php +++ b/modules/board/board.admin.view.php @@ -220,8 +220,8 @@ // 목록이 있으면 게시글을 가져옴 if(count($flag_list)) $document_srl_list = array_keys($flag_list); if(is_array($document_srl_list) && count($document_srl_list)) { - $oDocumentModeul = &getModel('document'); - $document_list = $oDocumentModeul->getDocuments($document_srl_list, $this->grant->is_admin); + $oDocumentModel = &getModel('document'); + $document_list = $oDocumentModel->getDocuments($document_srl_list, $this->grant->is_admin); Context::set('document_list', $document_list); } diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 1e1e2dfb4..968d99390 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -51,31 +51,31 @@ // document 객체를 생성. 기본 데이터 구조의 경우 document모듈만 쓰면 만사 해결.. -_-; $oDocumentModel = &getModel('document'); - // document_srl이 있다면 해당 글을 구해오자 + // 선택된 문서 표시를 위한 객체 생성 + $oDocument = $oDocumentModel->getDocument(0, $this->grant->manager); + + // document_srl이 있다면 해당 글을 구해와서 $oDocument로 세팅 if($this->grant->view && $document_srl) { // 글을 구함 - $document = $oDocumentModel->getDocument($document_srl, $this->grant->manager, true); + $oDocument->setDocument($document_srl); + if($this->grant->manager) $oDocument->setGrant(); - // 찾아지지 않았다면 초기화 - if($document->document_srl != $document_srl) { - unset($document); - unset($document_srl); + if(!$oDocument->isExists()) { Context::set('document_srl','',true); + } else { + // 브라우저 타이틀 설정 + Context::setBrowserTitle($oDocument->getTitleText()); - // 글이 찾아졌으면 댓글 권한과 허용 여부를 체크하여 댓글 에디터 세팅 - } elseif($this->grant->write_comment && $document->allow_comment == 'Y' && $document->lock_comment != 'Y') { - - // 브라우저 타이틀 - $browser_title = $this->module_info->browser_title.' - '.$document->title; - Context::setBrowserTitle($browser_title); - - // 댓글 - $this->setCommentEditor(0, 100); + // 조회수 증가 + $oDocument->updateReadedCount(); } - Context::set('document', $document); } + Context::set('oDocument', $oDocument); + + // 댓글에디터 설정 + $this->setCommentEditor(0, 100); // 만약 document_srl은 있는데 page가 없다면 글만 호출된 경우 page를 구해서 세팅해주자.. if($document_srl && !$page) { @@ -93,7 +93,6 @@ $args->search_target = Context::get('search_target'); ///< 검색 대상 (title, contents...) $args->search_keyword = Context::get('search_keyword'); ///< 검색어 if($this->module_info->use_category=='Y') $args->category_srl = Context::get('category'); ///< 카테고리 사용시 선택된 카테고리 - $args->sort_index = Context::get('sort_index'); $args->order_type = Context::get('order_type'); @@ -135,22 +134,18 @@ // document 모듈 객체 생성 $oDocumentModel = &getModel('document'); - // 지정된 글이 없다면 (신규) 새로운 번호를 만든다 - if($document_srl) { - $document = $oDocumentModel->getDocument($document_srl, $this->grant->manager); - if(!$document) { - unset($document_srl); - Context::set('document_srl',''); - } - } + $oDocument = $oDocumentModel->getDocument(0, $this->grant->manager); + $oDocument->setDocument($document_srl); + + if(!$oDocument->isExists()) Context::set('document_srl',''); if(!$document_srl) $document_srl = getNextSequence(); // 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로 - if($document&&!$document->is_granted) return $this->setTemplateFile('input_password_form'); + if($oDocument->isExists()&&!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form'); Context::set('document_srl',$document_srl); - Context::set('document', $document); + Context::set('oDocument', $oDocument); // 에디터 모듈의 getEditor를 호출하여 세팅 $oEditorModel = &getModel('editor'); diff --git a/modules/board/skins/default/comment.html b/modules/board/skins/default/comment.html index 305d0ea16..1848b7a29 100644 --- a/modules/board/skins/default/comment.html +++ b/modules/board/skins/default/comment.html @@ -1,16 +1,16 @@
    - {$lang->comment} : {count($document->comment_list)} + {$lang->comment} : {$oDocument->getCommentCount()}
    - + - +
    @@ -68,7 +68,7 @@ - + diff --git a/modules/board/skins/default/delete_form.html b/modules/board/skins/default/delete_form.html index 1f552303e..e0890106c 100644 --- a/modules/board/skins/default/delete_form.html +++ b/modules/board/skins/default/delete_form.html @@ -12,7 +12,7 @@ - + - + - + - - - - + + + +
    {$lang->title}{$document->title}{$oDocument->getTitleText()}
    diff --git a/modules/board/skins/default/list.html b/modules/board/skins/default/list.html index 8d01ffb05..41967185f 100644 --- a/modules/board/skins/default/list.html +++ b/modules/board/skins/default/list.html @@ -2,7 +2,7 @@ - + @@ -32,48 +32,44 @@ {$lang->date}
    {$no} {$category_list[$val->category_srl]->title}{$category_list[$document->get('category_srl')]->title} - document_srl])-->checked="true" /> - - - - {@ $val->title = cut_str($val->title,$module_info->subject_cut_size)} + document_srl])-->checked="true" /> - {htmlspecialchars($val->title)} + {$document->getTitleText($module_info->subject_cut_size)} - {htmlspecialchars($val->title)} + {$document->getTitleText($module_info->subject_cut_size)} - {htmlspecialchars($val->title)} + {$document->getTitleText($module_info->subject_cut_size)} - - [{$val->comment_count}] + + [{$document->getCommentCount()}] - - [{$val->trackback_count}] + + [{$document->getTrackbackCount()}]
    {$val->nick_name}
    {$val->readed_count}{$val->voted_count}{zdate($val->regdate,"Y-m-d")}
    {$document->getNickName()}
    {$document->get('readed_count')}{$document->get('voted_count')}{$document->getRegdate("Y-m-d")}
    diff --git a/modules/board/skins/default/trackback.html b/modules/board/skins/default/trackback.html index f15313b78..33952f791 100644 --- a/modules/board/skins/default/trackback.html +++ b/modules/board/skins/default/trackback.html @@ -1,12 +1,12 @@
    - {$lang->trackback} : {count($document->trackback_list)} + {$lang->trackback} : {$oDocument->getTrackbackCount()}
    - +
    - +
    diff --git a/modules/board/skins/default/view_document.html b/modules/board/skins/default/view_document.html index 2cdfd5f4f..a8487e0f9 100644 --- a/modules/board/skins/default/view_document.html +++ b/modules/board/skins/default/view_document.html @@ -3,7 +3,7 @@ - + @@ -12,72 +12,69 @@
{$lang->category}{$category_list[$document->category_srl]->title}{$category_list[$oDocument->get('category_srl')]->title}
{$lang->title}{htmlspecialchars($document->title)}{$oDocument->getTitleText()}
{$lang->homepage}{htmlspecialchars($document->homepage)}
{$lang->date}{zdate($document->regdate,"Y-m-d H:i:s")}{$oDocument->getRegdate('Y-m-d H:i:s')}
{$lang->writer}
{htmlspecialchars($document->nick_name)}
{$oDocument->getNickName()}
{$lang->readed_count}{$document->readed_count}{$oDocument->get('readed_count')}
{$lang->voted_count}{$document->voted_count}{$oDocument->get('voted_count')}
{$lang->content}{$document->content}{$oDocument->getContent()}
{$lang->document_url}{getUrl('','document_srl',$document->document_srl)}{$oDocument->getPermanentUrl()}
{$lang->trackback_url}{getUrl('','document_srl',$document->document_srl,'act','trackback')}{$oDocument->getTrackbackUrl()}
{$lang->tag} - - {htmlspecialchars($val)} + + {@ $tag = $tag_list[$i]; } + {htmlspecialchars($tag)},
{$lang->uploaded_file} - - + {@ $uploaded_list = $oDocument->getUploadedFiles() } + + {$file->source_filename} ({FileHandler::filesize($file->file_size)}) ({number_format($file->download_count)})
ipaddress{$document->ipaddress}{$oDocument->get('ipaddress')}
- + {$lang->allow_comment} - + {$lang->lock_comment} - + {$lang->allow_trackback}
@@ -17,7 +17,7 @@ @@ -26,7 +26,7 @@ - + @@ -34,35 +34,35 @@ - + - + - + @@ -87,7 +87,7 @@ diff --git a/modules/board/skins/xe_list/comment.html b/modules/board/skins/xe_list/comment.html index b8f28cacd..3c8d7a0cc 100644 --- a/modules/board/skins/xe_list/comment.html +++ b/modules/board/skins/xe_list/comment.html @@ -1,7 +1,7 @@ - +
    - +
  • depth)-->class="reply"> @@ -51,6 +51,6 @@ - + diff --git a/modules/board/skins/xe_list/delete_form.html b/modules/board/skins/xe_list/delete_form.html index 1f552303e..e0890106c 100644 --- a/modules/board/skins/xe_list/delete_form.html +++ b/modules/board/skins/xe_list/delete_form.html @@ -12,7 +12,7 @@
- + - + - + @@ -71,40 +71,36 @@ - + - - - - + + + + diff --git a/modules/board/skins/xe_list/trackback.html b/modules/board/skins/xe_list/trackback.html index d6a3c46ab..9aecad5db 100644 --- a/modules/board/skins/xe_list/trackback.html +++ b/modules/board/skins/xe_list/trackback.html @@ -1,9 +1,9 @@ - +
    - +
  • diff --git a/modules/board/skins/xe_list/view_document.html b/modules/board/skins/xe_list/view_document.html index 31d8e12a7..658d3f26b 100644 --- a/modules/board/skins/xe_list/view_document.html +++ b/modules/board/skins/xe_list/view_document.html @@ -3,7 +3,7 @@ - + @@ -11,40 +11,41 @@
    -

    {htmlspecialchars($document->title)}

    - - |{$category_list[$document->category_srl]->title} +

    {$oDocument->getTitleText()}

    + + |{$category_list[$oDocument->get('category_srl')]->title}
    {$lang->readed_count}: - {$document->readed_count} + {$oDocument->get('readed_count')} , - + {$lang->voted_count}: - {$document->voted_count} + {$oDocument->get('voted_count')} , - {zdate($document->regdate,"Y.m.d")} {zdate($document->regdate,"H:i:s")} + {$oDocument->getRegdate('Y.m.d')} {$oDocument->getRegdate('H:i:s')} + - ({$document->ipaddress}) + ({$oDocument->get('ipaddress')}) - +
    @@ -52,40 +53,42 @@
    {$lang->document_url} :
    -
    {getUrl('','document_srl',$document->document_srl)}
    +
    {$oDocument->getPermanentUrl()}
    - +
    {$lang->trackback_url} :
    -
    {getUrl('','document_srl',$document->document_srl,'act','trackback')}
    +
    {$oDocument->getTrackbackUrl()}
    -
    {htmlspecialchars($document->nick_name)}
    +
    {$oDocument->getNickName()}
    -
    {$document->content}
    +
    {$oDocument->getContent()}
    - + {@ $tag_list = $oDocument->get('tag_list') } +
    {$lang->tag}
    - +
    {$lang->uploaded_file} :
    @@ -95,12 +98,12 @@
    - + - + diff --git a/modules/board/skins/xe_list/write_form.html b/modules/board/skins/xe_list/write_form.html index 1ef91ff61..bb55319b9 100644 --- a/modules/board/skins/xe_list/write_form.html +++ b/modules/board/skins/xe_list/write_form.html @@ -5,22 +5,22 @@
    fileupload)-->enctype="multipart/form-data" class="boardEditor" id="fo_write">
    - +
    - + - + - +
    @@ -31,36 +31,36 @@ - +
    설정옵션
    - is_notice== "Y")-->checked="true" id="is_notice" /> + isNotice())-->checked="true" id="is_notice" />
    - lock_comment == "Y")-->checked="true" id="lock_comment" /> + isLocked())-->checked="true" id="lock_comment" />
    - is_secret== "Y")-->checked="true" id="is_secret" /> + isSecret())-->checked="true" id="is_secret" />
    - allow_comment != "N")-->checked="true" id="allow_comment" /> + allowComment())-->checked="true" id="allow_comment" />
    - allow_trackback != "N")-->checked="true" id="allow_trackback" /> + allowTrackback())-->checked="true" id="allow_trackback" />
    @@ -83,7 +83,7 @@
    - +

    {$lang->about_tag}

    diff --git a/modules/document/document.class.php b/modules/document/document.class.php index 990d41828..e6bf236d8 100644 --- a/modules/document/document.class.php +++ b/modules/document/document.class.php @@ -5,6 +5,8 @@ * @brief document 모듈의 high 클래스 **/ + require_once('./modules/document/document.item.php'); + class document extends ModuleObject { // 공지사항용 값 diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 88fe9f876..99f9a5e79 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -227,11 +227,11 @@ $oDocumentModel = &getModel('document'); // 기존 문서가 있는지 확인 - $document = $oDocumentModel->getDocument($document_srl, $is_admin); - if($document->document_srl != $document_srl) return new Object(-1, 'msg_invalid_document'); + $oDocument = $oDocumentModel->getDocument($document_srl, $is_admin); + if(!$oDocument->isExists() || $oDocument->document_srl != $document_srl) return new Object(-1, 'msg_invalid_document'); // 권한이 있는지 확인 - if(!$document->is_granted&&!$is_admin) return new Object(-1, 'msg_not_permitted'); + if(!$oDocument->isGranted()) return new Object(-1, 'msg_not_permitted'); // 글 삭제 $args->document_srl = $document_srl; @@ -260,7 +260,7 @@ } // 카테고리가 있으면 카테고리 정보 변경 - if($document->category_srl) $this->updateCategoryCount($document->category_srl); + if($document->category_srl) $this->updateCategoryCount($oDocument->get('category_srl')); // commit $oDB->commit(); @@ -271,8 +271,10 @@ /** * @brief 해당 document의 조회수 증가 **/ - function updateReadedCount($document) { - $document_srl = $document->document_srl; + function updateReadedCount($oDocument) { + $document_srl = $oDocument->document_srl; + $member_srl = $oDocument->get('member_srl'); + $logged_info = Context::get('logged_info'); // session에 정보로 조회수를 증가하였다고 생각하면 패스 if($_SESSION['readed_document'][$document_srl]) return false; @@ -284,21 +286,18 @@ } // document의 작성자가 회원일때 조사 - if($document->member_srl) { - // member model 객체 생성 - $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getLoggedMemberSrl(); + if($member_srl) { // 글쓴이와 현재 로그인 사용자의 정보가 일치하면 읽었다고 생각하고 세션 등록후 패스 - if($member_srl && $member_srl == $document->member_srl) { + if($member_srl && $logged_info->member_srl == $member_srl) { $_SESSION['readed_document'][$document_srl] = true; return false; } } // 로그인 사용자이면 member_srl, 비회원이면 ipaddress로 판단 - if($member_srl) { - $args->member_srl = $member_srl; + if($logged_info->member_srl) { + $args->member_srl = $logged_info->member_srl; } else { $args->ipaddress = $_SERVER['REMOTE_ADDR']; } diff --git a/modules/document/document.item.php b/modules/document/document.item.php new file mode 100644 index 000000000..68a6d4324 --- /dev/null +++ b/modules/document/document.item.php @@ -0,0 +1,183 @@ +document_srl = $document_srl; + $this->_loadFromDB(); + } + + function setDocument($document_srl) { + $this->document_srl = $document_srl; + $this->_loadFromDB(); + } + + function _loadFromDB() { + if(!$this->document_srl) return; + + $args->document_srl = $this->document_srl; + $output = executeQuery('document.getDocument', $args); + + $this->setAttribute($output->data); + } + + function setAttribute($attribute) { + if(!$attribute->document_srl) return; + $this->document_srl = $attribute->document_srl; + $this->adds($attribute); + + // 태그 정리 + if($this->get('tags')) { + $tags = explode(',',$this->get('tags')); + $tag_count = count($tags); + for($i=0;$i<$tag_count;$i++) if(trim($tags[$i])) $tag_list[] = trim($tags[$i]); + $this->add('tag_list', $tag_list); + } + } + + function isExists() { + return $this->document_srl ? true : false; + } + + function isGranted() { + if($_SESSION['own_attribute'][$this->document_srl]) return true; + + if(!Context::get('is_logged')) return false; + + $logged_info = Context::get('logged_info'); + + if($logged_info->is_admin == 'Y') return true; + + if($this->get('member_srl') && $this->get('member_srl') == $logged_info->member_srl) return true; + + return false; + } + + function setGrant() { + $_SESSION['own_attribute'][$this->document_srl] = true; + } + + function allowComment() { + return $this->get('allow_comment') == 'Y' ? true : false; + } + + function allowTrackback() { + return $this->get('allow_trackback') == 'Y' ? true : false; + } + + function isLocked() { + return $this->get('lock_comment') == 'Y' ? true : false; + } + + function isEditable() { + if($this->isGranted() || !$this->get('member_srl')) return true; + return false; + } + + function isSecret() { + return $this->get('is_secret') == 'Y' ? true : false; + } + + function isNotice() { + return $this->get('is_notice') == 'Y' ? true : false; + } + + function getUserID() { + return htmlspecialchars($this->get('user_id')); + } + + function getUserName() { + return htmlspecialchars($this->get('user_name')); + } + + function getNickName() { + return htmlspecialchars($this->get('nick_name')); + } + + function getTitleText($cut_size = 0) { + return htmlspecialchars($this->getTitle()); + } + + function getTitle($cut_size = 0) { + if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret'); + + if($cut_size) return cut_str($this->get('title'), $cut_size); + + return $this->get('title'); + } + + function getContentText() { + if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret'); + + return htmlspecialchars($this->get('content')); + } + + function getContent() { + if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret'); + + return sprintf('%s', $this->document_srl, $this->get('member_srl'), $this->get('content'), $this->document_srl, $this->get('member_srl')); + } + + function getRegdate($format = 'Y.m.d H:i:s') { + return zdate($this->get('regdate'), $format); + } + + function getPermanentUrl() { + return getUrl('','document_srl',$this->document_srl); + } + + function getTrackbackUrl() { + return getUrl('','document_srl',$this->document_srl,'act','trackback'); + } + + function updateReadedCount() { + $oDocumentController = &getController('document'); + if($oDocumentController->updateReadedCount($this)) { + $readed_count = $this->get('readed_count'); + $readed_count++; + $this->add('readed_count', $readed_count); + } + } + + function getCommentCount() { + return $this->get('comment_count'); + } + + function getComments() { + if(!$this->allowComment() || !$this->get('comment_count')) return; + + $oCommentModel = &getModel('comment'); + return $oCommentModel->getCommentList($this->document_srl, $is_admin); + } + + function getTrackbackCount() { + return $this->get('trackback_count'); + } + + function getTrackbacks() { + if(!$this->allowTrackback() || !$this->get('trackback_count')) return; + + $oTrackbackModel = &getModel('trackback'); + return $oTrackbackModel->getTrackbackList($this->document_srl, $is_admin); + } + + function hasUploadedFiles() { + return $this->get('uploaded_count')? true : false; + } + + function getUploadedFiles() { + if(!$this->get('uploaded_count')) return; + + $oFileModel = &getModel('file'); + $file_list = $oFileModel->getFiles($this->document_srl, $is_admin); + return $file_list; + } + } +?> diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 7b6383742..b74761ec7 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -23,71 +23,17 @@ /** * @brief 문서 가져오기 **/ - function getDocument($document_srl, $is_admin=false, $get_extra_info=false) { - // DB에서 가져옴 - $args->document_srl = $document_srl; - $output = executeQuery('document.getDocument', $args); - $document = $output->data; - if(!$document) return; + function getDocument($document_srl, $is_admin = false) { + $oDocument = new documentItem($document_srl); + if($is_admin) $oDocument->setGrant(); - // 이 문서에 대한 권한이 있는지 확인 - if($this->isGranted($document->document_srl) || $is_admin) { - $document->is_granted = true; - } elseif($document->member_srl) { - $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getLoggedMemberSrl(); - if($member_srl && $member_srl ==$document->member_srl) $document->is_granted = true; - } - - // 비밀글이고 권한이 없을 경우 제목과 내용을 숨김 - if($document->is_secret=='Y' && !$document->is_granted) { - $document->title = $document->content = Context::getLang('msg_is_secret'); - } - - // 확장 정보(코멘트나 기타 등등) 플래그가 false이면 기본 문서 정보만 return - if(!$get_extra_info) return $document; - - // document controller 객체 생성 - $oDocumentController = &getController('document'); - - // 조회수 업데이트 - if($buff = $oDocumentController->updateReadedCount($document)) $document->readed_count++; - - // 댓글 가져오기 - if($document->comment_count && $document->allow_comment == 'Y') { - $oCommentModel = &getModel('comment'); - $document->comment_list = $oCommentModel->getCommentList($document_srl, $is_admin); - } - - // 트랙백 가져오기 - if($document->trackback_count && $document->allow_trackback == 'Y') { - $oTrackbackModel = &getModel('trackback'); - $document->trackback_list = $oTrackbackModel->getTrackbackList($document_srl, $is_admin); - } - - // 첨부파일 가져오기 - if($document->uploaded_count) { - $oFileModel = &getModel('file'); - $file_list = $oFileModel->getFiles($document_srl, $is_admin); - $document->uploaded_list = $file_list; - } - - // 태그 정리 - if($document->tags) { - $tag_list = explode(',',$document->tags); - $tag_count = count($tag_list); - for($i=0;$i<$tag_count;$i++) if(trim($tag_list[$i])) $document->tag_list[] = trim($tag_list[$i]); - } - - $document->content = sprintf('%s', $document_srl, $document->member_srl, $document->content, $document_srl, $document->member_srl); - - return $document; - } + return $oDocument; + } /** * @brief 여러개의 문서들을 가져옴 (페이징 아님) **/ - function getDocuments($document_srl_list, $is_admin=false) { + function getDocuments($document_srl_list, $is_admin = false) { if(is_array($document_srl_list)) $document_srls = implode(',',$document_srl_list); // DB에서 가져옴 @@ -97,21 +43,17 @@ if(!$document_list) return; if(!is_array($document_list)) $document_list = array($document_list); - // 권한 체크 - $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getLoggedMemberSrl(); - $document_count = count($document_list); for($i=0;$i<$document_count;$i++) { - $document = $document_list[$i]; - $is_granted = false; + $document_srl = $attribute->document_srl; + $attribute = $document_list[$i]; - if($this->isGranted($document->document_srl) || $is_admin) { - $is_granted = true; - } elseif($member_srl && $member_srl == $document->member_srl) { - $is_granted = true; - } - $document_list[$i]->is_granted = $is_granted; + $oDocument = null; + $oDocument = new documentItem(); + $oDocument->setAttribute($attribute); + if($is_admin) $oDocument->setGrant(); + + $document_list[$document_srl] = $oDocument; } return $document_list; } @@ -119,9 +61,9 @@ /** * @brief module_srl값을 가지는 문서의 목록을 가져옴 **/ - function getDocumentList($obj, $get_extra_info = false) { - - if(!in_array($obj->sort_index, array('list_order','regdate','update_order','readed_count','voted_count'))) $obj->sort_index = 'list_order'; ///< 소팅 값 + function getDocumentList($obj) { + // 정렬 대상과 순서 체크 + if(!in_array($obj->sort_index, array('list_order','regdate','update_order','readed_count','voted_count'))) $obj->sort_index = 'list_order'; if(!in_array($obj->order_type, array('desc','asc'))) $obj->order_type = 'asc'; // module_srl 대신 mid가 넘어왔을 경우는 직접 module_srl을 구해줌 @@ -135,8 +77,8 @@ if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl); else $args->module_srl = $obj->module_srl; + // 변수 체크 $args->category_srl = $obj->category_srl?$obj->category_srl:''; - $args->sort_index = $obj->sort_index; $args->order_type = $obj->order_type; $args->page = $obj->page?$obj->page:1; @@ -232,55 +174,15 @@ // 결과가 없거나 오류 발생시 그냥 return if(!$output->toBool()||!count($output->data)) return $output; - // 권한 체크 - $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getLoggedMemberSrl(); + foreach($output->data as $key => $attribute) { + $document_srl = $attribute->document_srl; - // document controller 객체 생성 - $oDocumentController = &getController('document'); + $oDocument = null; + $oDocument = new documentItem(); + $oDocument->setAttribute($attribute); + if($is_admin) $oDocument->setGrant(); - foreach($output->data as $key => $document) { - // 권한 부여 - $is_granted = false; - - if($this->isGranted($document->document_srl)) $is_granted = true; - elseif($member_srl && $member_srl == $document->member_srl) $is_granted = true; - - $document->is_granted = $is_granted; - - $document_srl = $document->document_srl; - - if($get_extra_info) { - // 댓글 가져오기 - if($document->comment_count && $document->allow_comment == 'Y') { - $oCommentModel = &getModel('comment'); - $document->comment_list = $oCommentModel->getCommentList($document_srl, $is_admin); - } - - // 트랙백 가져오기 - if($document->trackback_count && $document->allow_trackback == 'Y') { - $oTrackbackModel = &getModel('trackback'); - $document->trackback_list = $oTrackbackModel->getTrackbackList($document_srl, $is_admin); - } - - // 첨부파일 가져오기 - if($document->uploaded_count) { - $oFileModel = &getModel('file'); - $file_list = $oFileModel->getFiles($document_srl, $is_admin); - $document->uploaded_list = $file_list; - } - - // 태그 정리 - if($document->tags) { - $tag_list = explode(',',$document->tags); - $tag_count = count($tag_list); - for($i=0;$i<$tag_count;$i++) if(trim($tag_list[$i])) $document->tag_list[] = trim($tag_list[$i]); - } - } - - $document->content = sprintf('%s', $document_srl, $document->member_srl, $document->content, $document_srl, $document->member_srl); - - $output->data[$key] = $document; + $output->data[$key] = $oDocument; } return $output; diff --git a/modules/document/tpl/document_list.html b/modules/document/tpl/document_list.html index c98fa9357..197b3a1c7 100644 --- a/modules/document/tpl/document_list.html +++ b/modules/document/tpl/document_list.html @@ -24,26 +24,26 @@
- + - - + + - - - - + + + + diff --git a/plugins/newest_document/skins/blog_newest_document/list.html b/plugins/newest_document/skins/blog_newest_document/list.html index 8b9767d06..e60c984e7 100644 --- a/plugins/newest_document/skins/blog_newest_document/list.html +++ b/plugins/newest_document/skins/blog_newest_document/list.html @@ -14,11 +14,11 @@
- + diff --git a/plugins/newest_document/skins/default/list.html b/plugins/newest_document/skins/default/list.html index f26cfccc1..cd06004c2 100644 --- a/plugins/newest_document/skins/default/list.html +++ b/plugins/newest_document/skins/default/list.html @@ -17,18 +17,18 @@
- +
-
{zdate($val->regdate, "Y-m-d")}
+
{$oDocument->getRegdate("Y-m-d")}
{$lang->writer}
{$lang->password}
{$lang->email_address}
{$lang->homepage}
{$lang->title}
- is_notice== "Y")-->checked="true" id="is_notice" /> + isNotice())-->checked="true" id="is_notice" /> - is_secret== "Y")-->checked="true" id="is_secret" /> + isSecret())-->checked="true" id="is_secret" /> - allow_comment != "N")-->checked="true" id="allow_comment" /> + allowComment())-->checked="true" id="allow_comment" /> - lock_comment == "Y")-->checked="true" id="lock_comment" /> + isLocked())-->checked="true" id="lock_comment" /> - allow_trackback != "N")-->checked="true" id="allow_trackback" /> + allowTrackback())-->checked="true" id="allow_trackback" />
{$lang->tag} -
+
{$lang->about_tag}
{$lang->title}{$document->title}{$oDocument->getTitleText()}
diff --git a/modules/board/skins/xe_list/list.html b/modules/board/skins/xe_list/list.html index cd2362e74..5807e73e0 100644 --- a/modules/board/skins/xe_list/list.html +++ b/modules/board/skins/xe_list/list.html @@ -5,7 +5,7 @@ - + @@ -56,9 +56,9 @@
{$lang->notice} {$category_list[$val->category_srl]->title}{$category_list[$document->get('category_srl')]->title} - document_srl])-->checked="true" /> - - - - {@ $val->title = cut_str($val->title,$module_info->subject_cut_size)} + document_srl])-->checked="true" /> - {htmlspecialchars($val->title)} + {$document->getTitleText($module_info->subject_cut_size)} - {htmlspecialchars($val->title)} + {$document->getTitleText($module_info->subject_cut_size)} - {htmlspecialchars($val->title)} + {$document->getTitleText($module_info->subject_cut_size)} - - {$val->comment_count} + + {$document->getCommentCount()} - - {$val->trackback_count} + + {$document->getTrackbackCount()}
{$val->nick_name}
{$val->readed_count}{$val->voted_count}{zdate($val->regdate,"Y-m-d")}
{$document->getNickName()}
{$document->get('readed_count')}{$document->get('voted_count')}{$document->getRegdate('Y-m-d')}
{$lang->date}
{$no}{htmlspecialchars($module_list[$val->module_srl]->browser_title)}{htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)} - {htmlspecialchars($val->title)} + {$oDocument->getTitleText()} - - [{$val->comment_count}] + + [{$oDocument->getCommentCount()}] - - [{$val->trackback_count}] + + [{$oDocument->getTrackbackCount()}]
{htmlspecialchars($val->user_name)}
{$val->readed_count}{$val->voted_count}{zdate($val->regdate,"Y-m-d")}
{$oDocument->getUserName()}
{$oDocument->get('readed_count')}{$oDocument->get('voted_count')}{$oDocument->getRegdate("Y-m-d")}