[첫화면으로]UseModWiki소스수정/페이지삭제시keep화일보존

마지막으로 [b]

2 번째 수정본

페이지를 삭제할 때 keep 화일은 지우지 않도록 함

sub SaveKeepSection {
    my $file = &KeepFileName();
    my $data;

###############
### replaced by gypark
### 페이지 삭제 시에 keep 화일은 보존해 둠
#   return  if ($Section{'revision'} < 1);  # Don't keep "empty" revision
    if ($Section{'revision'} < 1) {
        if (-f $file) {
            unlink($file) || die "error while removing obsolete keep file [$file]";
        }
        return;
    }
###
###############

    $Section{'keepts'} = $Now;
    $data = $FS1 . join($FS2, %Section);
    &CreatePageDir($KeepDir, $OpenPageName);
    &AppendStringToFile($file, $data);
}

sub DeletePage {
    my ($page, $doRC, $doText) = @_;
    my ($fname, $status);

    $page =~ s/ /_/g;
    $page =~ s/\[+//;
    $page =~ s/\]+//;
    $status = &ValidId($page);
    if ($status ne "") {
#       print "Delete-Page: page $page is invalid, error is: $status<br>\n";
        print Ts('Delete-Page: page %s is invalid', $page) . ".<br>" . Ts('error is: %s', $status) . "<br>\n";
        return;
    }

###############
### added by gypark
### 아래의 네 줄이 제일 불안한 부분이다. 이 부분에서 문제의 소지를 발견하면 제보해 주기 바람.
    &OpenPage($page);
    &OpenDefaultText();
    &SaveKeepSection();
    &ExpireKeepFile();
###
###############
    $fname = &GetPageFile($page);
    unlink($fname)  if (-f $fname);
###############
### commented by gypark
### 페이지 삭제 시에 keep 화일은 보존해 둠
#   $fname = $KeepDir . "/" . &GetPageDirectory($page) .  "/$page.kp";
#   unlink($fname)  if (-f $fname);
###
###############

#########################################################3
### 이 단락은 다른 패치에서 추가한 부분
### lck 화일도 같이 삭제
    $fname = &GetLockedPageFile($page);
    unlink($fname) if (-f $fname);
### cache 화일도 같이 삭제
    &UnlinkHtmlCache($page);
###
#########################################################3
    unlink($IndexFile)  if ($UseIndex);
###############
### commented by gypark
### 페이지 삭제 시에 keep 화일은 보존해 둠
#   &EditRecentChanges(1, $page, "")  if ($doRC);  # Delete page
###
###############
    # Currently don't do anything with page text
}

Note

에.. history가 꼬이는 것은 SavePage같은 곳에 kp화일의 revision을 따로 체크하는 방법이 있지 않을까요? 저는 이패치 적용 후에 일반 사용자들에게도 삭제권한을 줄 생각인데, 그렇게 되면 지금의 방법으로는 악의적인 사용자을을 막기 힘들지 않을까 싶네요. garbage kp화일은 어차피 따로 지우는 루틴을 두면 될테니까요. 세벌식 치기가 너무 힘드네요 ㅠㅠ. 좋은하루 되세요.
-- Bab2 2003-2-15 3:10 am

위키위키분류

이 수정본 편집일: 2003-2-15 3:10 am (변경사항 [d])
1008 hits | Permalink | 변경내역 보기 [h] | 현재 수정본 보기 | 2 번째 수정본 소스 보기