$CountDir = "$DataDir/count"; # by gypark. Stores view-counts
... ############### ### added by gypark ### 패치를 위해 추가된 환경설정 변수 use vars qw( $UserGotoBar $UserGotoBar2 $UserGotoBar3 $UserGotoBar4 ... $LogoPage $CheckTime $LinkDir $IconDir $CountDir # $CountDir 추가 ); ### ############### ... ############### ### added by gypark ### 패치를 위해 추가된 내부 전역 변수 use vars qw(%RevisionTs $FS_lt $FS_gt $StartTime $Sec_Revision $Sec_Ts $ViewCount); # ViewCount 변수 추가 ### ############### ...
sub BrowsePage { my ($id) = @_; my ($fullHtml, $oldId, $allDiff, $showDiff, $openKept); my ($revision, $goodRevision, $diffRevision, $newText); &OpenPage($id); &OpenDefaultText(); ############### ### added by gypark ### page count if (-f &GetPageFile($id)) { $ViewCount = &GetPageCount($id) if (-f &GetPageFile($id)); } ### ############### $openKept = 0; ... }
sub GetEditGuide { ... if ($UseDiff) { $result .= ' ' . &ScriptLinkDiff(4, $id, T('(diff)'), $rev); } $result .= '<br>'; ############### ### added by gypark ### page count $result .= Ts('%s hit' . (($ViewCount > 1)?'s':'') , $ViewCount)." | " if ($ViewCount ne ""); ### ############### $result .= &GetHistoryLink($id, T('History')); if ($rev ne '') { ... }
sub DeletePage { ... ### cache 화일도 같이 삭제 &UnlinkHtmlCache($page); ### page count 화일도 같이 삭제 (추가할 단락) $fname = &GetCountFile($page); unlink ($fname) if (-f $fname); ### ... }
sub RenamePage { ... ### cache 화일은 삭제 &UnlinkHtmlCache($old); ### page count 화일도 변경 (추가할 단락) my ($oldcnt, $newcnt); $oldcnt = &GetCountFile($old); if (-f $oldcnt) { $newcnt = &GetCountFile($new); &CreatePageDir($CountDir, $new); # It might not exist yet rename($oldcnt, $newcnt) || die "error while renaming count file"; } ### ... }
### 아래 두 함수를 추가 sub GetCountFile { my ($id) = @_; return $CountDir . "/" . &GetPageDirectory($id) . "/$id.cnt"; } sub GetPageCount { my ($id) = @_; my ($pagecount, $countfile, $status); my ($edit_user, $edit_ip, $view_user, $view_ip, $add) = ($Section{'username'}, $Section{'ip'}, &GetParam('username', ""), $ENV{REMOTE_ADDR}, 0); # 카운트 읽어옴 &CreatePageDir($CountDir, $id); $countfile = &GetCountFile($id); ($status, $pagecount) = &ReadFile($countfile); $pagecount = 0 if ($status == 0); # 카운트 갱신 여부 결정 if ($view_user eq "") { if ($edit_ip ne $view_ip) { $add = 1; } } elsif ($edit_user ne $view_user) { $add = 1; } if (&GetParam('InFrame',"") ne "") { $add = 0; } $pagecount += $add; # 카운트 기록 if ($add == 1) { &RequestLockDir('count', 1, 1, 0) || return $pagecount; &WriteStringToFile($countfile, $pagecount); &ReleaseLockDir('count'); } return $pagecount; } ### 통채로 추가한 함수들의 끝 ############### &DoWikiRequest() if ($RunCGI && ($_ ne 'nocgi')); # Do everything. 1; # In case we are loaded from elsewhere # == End of UseModWiki script. ===========================================
sub DoMaintain { ... foreach $name (&AllPagesList()) { &OpenPage($name); &OpenDefaultText(); &ExpireKeepFile(); ############### ### added by gypark ### 링크 목록을 별도로 관리 &SaveLinkFile($name); ### page count (추가할 단락) if (!(-f &GetCountFile($name))) { &CreatePageDir($CountDir, $name); # It might not exist yet &WriteStringToFile(&GetCountFile($name), "0"); } ### ############### print ".... " if ($name =~ m|/|); print &GetPageLink($name), "<br>\n"; } ... }
조회수가 0 또는 1일 때는 hits 대신 hit 라고 나오게 다시 고쳤습니다.
$result .= Ts('%s hit' . (($ViewCount > 1)?'s':'') , $ViewCount)." | " if ($ViewCount ne "");