mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
tool 기능을 개선하여 전체 tool관리 가능하도록 변경(주소/tools 로 접속하여 선택). 빈 디렉토리 삭제 기능 추가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4378 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
b206a07524
commit
0fddaf252f
12 changed files with 196 additions and 340 deletions
|
|
@ -12,7 +12,11 @@ RewriteRule ^(.+)/common/tpl/(.*) ./common/tpl/$2 [L]
|
|||
RewriteRule ^(.+)/widgets/(.*) ./widgets/$2 [L]
|
||||
RewriteRule ^(.+)/layouts/(.*) ./layouts/$2 [L]
|
||||
RewriteRule ^(.+)/addons/(.*) ./addons/$2 [L]
|
||||
RewriteRule ^(.+)/tools/(.*) ./tools/$2 [L]
|
||||
|
||||
# tools
|
||||
RewriteRule ^tools/([a-zA-Z0-9_]+)$ ./tools/$1 [L]
|
||||
RewriteRule ^tools/$ ./tools/index.php [L]
|
||||
RewriteRule ^tools$ ./tools/index.php [L]
|
||||
|
||||
# page
|
||||
RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)page$ ./index.php?mid=$1&page=$2 [L]
|
||||
|
|
|
|||
16
tools/blank_cleaner/blank_cleaner.php
Normal file
16
tools/blank_cleaner/blank_cleaner.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
/**
|
||||
* @file tools/blank_cache.php
|
||||
* @author zero <zero@zeroboard.com>
|
||||
* @brief 첨부파일 디렉토리의 빈 디렉토리 삭제
|
||||
**/
|
||||
|
||||
// 인증이 되지 않은 접근이면 종료
|
||||
if(!defined('__XE_TOOL_AUTH__') || !__XE_TOOL_AUTH__) exit();
|
||||
|
||||
// 캐시 파일 제거
|
||||
FileHandler::removeBlankDir(_XE_PATH_.'files');
|
||||
$output = Context::getLang('success_deleted');
|
||||
|
||||
Context::set('output', $output);
|
||||
?>
|
||||
3
tools/blank_cleaner/lang/ko.lang.php
Normal file
3
tools/blank_cleaner/lang/ko.lang.php
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
$lang->blank_cleaner = '빈디렉토리 삭제';
|
||||
?>
|
||||
17
tools/cache_cleaner/cache_cleaner.php
Normal file
17
tools/cache_cleaner/cache_cleaner.php
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
/**
|
||||
* @file tools/clear_cache.php
|
||||
* @author zero <zero@zeroboard.com>
|
||||
* @brief XE 캐시파일 및 불필요한 파일 정리
|
||||
**/
|
||||
|
||||
// 인증이 되지 않은 접근이면 종료
|
||||
if(!defined('__XE_TOOL_AUTH__') || !__XE_TOOL_AUTH__) exit();
|
||||
|
||||
// 캐시 파일 제거
|
||||
$oAdminController = &getAdminController('admin');
|
||||
$oAdminController->procAdminRecompileCacheFile();
|
||||
$output = Context::getLang('success_reset');
|
||||
|
||||
Context::set('output', $output);
|
||||
?>
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="Generator" content="XE" />
|
||||
<title>XE Cache Cleaner</title>
|
||||
<link rel="stylesheet" href="./style.css" type="text/css" charset="UTF-8" media="all" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>XE Cache Cleaner</h1>
|
||||
<hr />
|
||||
|
||||
<!--@if($msg)-->
|
||||
<blockquote>{$msg}</blockquote>
|
||||
<!--@end-->
|
||||
|
||||
<form action="./index.php" method="post">
|
||||
<code>
|
||||
<label for="db_id">{$lang->db_userid}</label>
|
||||
<input type="text" id="db_id" name="id" />
|
||||
</code>
|
||||
<code>
|
||||
<label for="db_pw">{$lang->db_password}</label>
|
||||
<input type="password" id="db_pw" name="pw" />
|
||||
</code>
|
||||
|
||||
<input type="submit" value="{$lang->cmd_reset}" class="submit"/>
|
||||
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @file tools/clear_cache.php
|
||||
* @author zero <zero@zeroboard.com>
|
||||
* @brief XE 캐시파일 및 불필요한 파일 정리
|
||||
**/
|
||||
|
||||
/**
|
||||
* @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언
|
||||
**/
|
||||
define('__ZBXE__', true);
|
||||
|
||||
/**
|
||||
* @brief 필요한 설정 파일들을 include
|
||||
**/
|
||||
require_once('../../config/config.inc.php');
|
||||
|
||||
// id/ password 구함
|
||||
$id = $_POST['id'];
|
||||
$pw = $_POST['pw'];
|
||||
|
||||
// 저장되어 있는 비밀번호와 비교
|
||||
$oContext = &Context::getInstance();
|
||||
$oContext->init();
|
||||
$db_info = $oContext->getDBInfo();
|
||||
|
||||
// install 모듈의 언어파일을 로드
|
||||
Context::loadLang(_XE_PATH_.'modules/install/lang');
|
||||
|
||||
// 설치가 되어 있지 않을 경우
|
||||
if(!Context::isInstalled()) {
|
||||
|
||||
$msg = Context::getLang('msg_db_not_setted');
|
||||
|
||||
// 인증 정보가 없을 경우
|
||||
} elseif(!isset($id) || !isset($pw)) {
|
||||
|
||||
|
||||
// 입력된 정보와 저장된 정보 비교
|
||||
} else if($id !== $db_info->db_userid || $pw !== $db_info->db_password) {
|
||||
|
||||
if($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id'));
|
||||
else $msg = sprintf($lang->filter->equalto, Context::getLang('password'));
|
||||
|
||||
// 캐시 파일 제거
|
||||
} else if($id === $db_info->db_userid && $pw === $db_info->db_password) {
|
||||
|
||||
$oAdminController = &getAdminController('admin');
|
||||
$oAdminController->procAdminRecompileCacheFile();
|
||||
$msg = Context::getLang('success_reset');
|
||||
|
||||
}
|
||||
|
||||
Context::set('msg', $msg);
|
||||
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
print $oTemplate->compile('./tools/cache_cleaner/','form');
|
||||
?>
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; }
|
||||
hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; }
|
||||
blockquote { border:1px solid red; color:red; width:280px; margin:0 0 10px 0; padding:10px;}
|
||||
|
||||
code { display:block; clear:both; margin-bottom:10px;}
|
||||
code label { float:left; display:block; width:150px; }
|
||||
code input { display:block; width:150px; border:1px solid #AAAAAA; }
|
||||
|
||||
input.submit { width:300px; border:1px solid #AAAAAA;}
|
||||
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @file tools/validator.php
|
||||
* @author zero <zero@zeroboard.com>
|
||||
* @brief 현재 설치된 버전에 해당하는 XE 파일 비교
|
||||
**/
|
||||
|
||||
/**
|
||||
* @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언
|
||||
**/
|
||||
define('__ZBXE__', true);
|
||||
|
||||
/**
|
||||
* @brief 필요한 설정 파일들을 include
|
||||
**/
|
||||
require_once('../../config/config.inc.php');
|
||||
|
||||
// id/ password 구함
|
||||
$id = $_POST['id'];
|
||||
$pw = $_POST['pw'];
|
||||
|
||||
// 저장되어 있는 비밀번호와 비교
|
||||
$oContext = &Context::getInstance();
|
||||
$oContext->init();
|
||||
$db_info = $oContext->getDBInfo();
|
||||
|
||||
// install 모듈의 언어파일을 로드
|
||||
Context::loadLang(_XE_PATH_.'modules/install/lang');
|
||||
Context::loadLang(_XE_PATH_.'modules/admin/lang');
|
||||
Context::loadLang(_XE_PATH_.'tools/validator/lang');
|
||||
|
||||
// 설치가 되어 있지 않을 경우
|
||||
if(!Context::isInstalled()) {
|
||||
|
||||
$msg = Context::getLang('msg_db_not_setted');
|
||||
|
||||
// 인증 정보가 없을 경우
|
||||
} elseif(!isset($id) || !isset($pw)) {
|
||||
|
||||
|
||||
// 입력된 정보와 저장된 정보 비교
|
||||
} else if($id !== $db_info->db_userid || $pw !== $db_info->db_password) {
|
||||
|
||||
if($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id'));
|
||||
else $msg = sprintf($lang->filter->equalto, Context::getLang('password'));
|
||||
|
||||
// 출력
|
||||
} else if($id === $db_info->db_userid && $pw === $db_info->db_password) {
|
||||
|
||||
// 현재 버전을 구함
|
||||
$ver = __ZBXE_VERSION__;
|
||||
|
||||
// 현재 버전에 맞는 배포 정보를 구함
|
||||
$header = "GET /validatorLogs/{$ver}.log HTTP/1.0\r\nHost: news.zeroboard.com\r\n\r\n";
|
||||
$is_started = false;
|
||||
$f = fsockopen('news.zeroboard.com', 80);
|
||||
fputs($f, $header);
|
||||
while($buff = fgets($f, 1024)) {
|
||||
if(!trim($buff)) $is_started = true;
|
||||
if($is_started && trim($buff)) {
|
||||
$buff = trim($buff);
|
||||
$pos = strpos($buff,',');
|
||||
$size = (int)substr($buff,0,$pos);
|
||||
$filename = substr($buff,$pos+1);
|
||||
if($filename && $size) $source[$filename] = $size;
|
||||
}
|
||||
}
|
||||
fclose($f);
|
||||
|
||||
if(!count($source)) $msg = Context::getLang('msg_cannot_get_source_files');
|
||||
else {
|
||||
|
||||
// 현재 설치된 디렉토리와 비교
|
||||
$avoid_path = array(_XE_PATH_.'files');
|
||||
getFiles(_XE_PATH_, _XE_PATH_, $avoid_path, $target);
|
||||
if(!count($target)) $msg = Context::getLang('msg_cannot_get_target_files');
|
||||
else {
|
||||
// 파일 수를 지정
|
||||
Context::set('source_cnt', count($source));
|
||||
Context::set('target_cnt', count($target));
|
||||
|
||||
// 최신 버전 정보 구함
|
||||
$oAdminView = &getAdminView('admin');
|
||||
$oAdminView->dispAdminIndex();
|
||||
|
||||
// 누락된 파일 구함
|
||||
$leaveouts = array();
|
||||
foreach($source as $key => $val) {
|
||||
if(!isset($target[$key])) $leaveouts[] = $key;
|
||||
}
|
||||
Context::set('leaveouts', $leaveouts);
|
||||
|
||||
// 수정된 파일 구함
|
||||
$modified = array();
|
||||
foreach($source as $key => $val) {
|
||||
if(isset($target[$key]) && $val!=$target[$key]) $modified[] = $key;
|
||||
}
|
||||
Context::set('modified', $modified);
|
||||
|
||||
// 추가된 파일 구함
|
||||
$added = array();
|
||||
foreach($target as $key => $val) {
|
||||
if(!isset($source[$key])) $added[] = $key;
|
||||
}
|
||||
Context::set('added', $added);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('msg', $msg);
|
||||
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
print $oTemplate->compile('./tools/validator/','validator');
|
||||
|
||||
// recursive하게 돌면서 파일 정보 수집
|
||||
function getFiles($path, $base_path, $avoid_path, &$buff) {
|
||||
if(substr($path,-1)=='/') $path = substr($path,0,-1);
|
||||
if(substr($base_path,-1)=='/') $base_path = substr($base_path,0,-1);
|
||||
if(in_array($path, $avoid_path)) return;
|
||||
|
||||
$oDir = dir($path);
|
||||
while($item = $oDir->read()) {
|
||||
if(substr($item,0,1)=='.' && $item != '.htaccess' ) continue;
|
||||
$new_path = $path.'/'.$item;
|
||||
if(!is_dir($new_path)) {
|
||||
$filesize = filesize($new_path);
|
||||
$filename = substr($new_path, strlen($base_path)+1);
|
||||
$buff[$filename] = $filesize;
|
||||
} else {
|
||||
getFiles($new_path, $base_path, $avoid_path, $buff);
|
||||
}
|
||||
}
|
||||
$oDir->close();
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
$lang->validator = '설치파일 검증';
|
||||
|
||||
$lang->msg_cannot_get_source_files = '원본 파일을 다운로드 하지 못했습니다';
|
||||
$lang->msg_cannot_get_target_files = '설치된 대상 파일의 목록을 구하지 못했습니다';
|
||||
|
|
|
|||
|
|
@ -1,18 +1,5 @@
|
|||
h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; }
|
||||
hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; }
|
||||
blockquote { border:1px solid red; color:red; width:280px; margin:0 0 10px 0; padding:10px;}
|
||||
|
||||
code { display:block; clear:both; margin-bottom:10px;}
|
||||
code label { float:left; display:block; width:150px; }
|
||||
code input { display:block; width:150px; border:1px solid #AAAAAA; }
|
||||
|
||||
input.submit { width:300px; border:1px solid #AAAAAA;}
|
||||
|
||||
div.back { font-size:9pt; text-align:right; margin-bottom:10px; }
|
||||
div.back a { text-decoration:none; color:#888888; }
|
||||
|
||||
table { width:100%; border:none; font-size:9pt; background-color:#CCCCCC; }
|
||||
table thead th { background-color:#EFEFEF; padding:3px 0 3px 0; }
|
||||
table tbody th { background-color:#F3F3F3; vertical-align:top; color:#888888; padding:3px 0 3px 0; }
|
||||
table tbody td { background-color:#FFFFFF; font-family:verdana; padding:3px; }
|
||||
table tbody td { font-weight:normal; background-color:#FFFFFF; font-family:verdana; padding:3px; }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,92 +1,55 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="Generator" content="XE" />
|
||||
<title>XE Cache Cleaner</title>
|
||||
<link rel="stylesheet" href="./style.css" type="text/css" charset="UTF-8" media="all" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>XE File Validator</h1>
|
||||
<hr />
|
||||
|
||||
<!--@if($msg)-->
|
||||
<blockquote>{$msg}</blockquote>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>{$lang->source_files}</th>
|
||||
<th>{$lang->target_files}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>{$lang->current_version}</th>
|
||||
<td colspan="2">{__ZBXE_VERSION__}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->released_version}</th>
|
||||
<td colspan="2"><a href="{$download_link}" onclick="window.open(this.href);return false;">{$released_version}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->current_path}</th>
|
||||
<td colspan="2">{_XE_PATH_}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->files_count}</th>
|
||||
<td>{$source_cnt}</td>
|
||||
<td>{$target_cnt}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->leaveout_files} ({count($leaveouts)})</th>
|
||||
<td>
|
||||
<!--@foreach($leaveouts as $val)-->
|
||||
{$val}<br />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($source_cnt && $target_cnt)-->
|
||||
<div class="back">[<a href="./">{$lang->cmd_back}</a>]</div>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>{$lang->source_files}</th>
|
||||
<th>{$lang->target_files}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>{$lang->current_version}</th>
|
||||
<td colspan="2">{__ZBXE_VERSION__}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->released_version}</th>
|
||||
<td colspan="2"><a href="{$download_link}" onclick="window.open(this.href);return false;">{$released_version}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->current_path}</th>
|
||||
<td colspan="2">{_XE_PATH_}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->files_count}</th>
|
||||
<td>{$source_cnt}</td>
|
||||
<td>{$target_cnt}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->leaveout_files} ({count($leaveouts)})</th>
|
||||
<td>
|
||||
<!--@foreach($leaveouts as $val)-->
|
||||
{$val}<br />
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->modified_files} ({count($modified)})</th>
|
||||
<td> </td>
|
||||
<td>
|
||||
<!--@foreach($modified as $val)-->
|
||||
{$val}<br />
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->additional_files} ({count($added)})</th>
|
||||
<td> </td>
|
||||
<td>
|
||||
<!--@foreach($added as $val)-->
|
||||
{$val}<br />
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!--@else-->
|
||||
<form action="./index.php" method="post">
|
||||
<code>
|
||||
<label for="db_id">{$lang->db_userid}</label>
|
||||
<input type="text" id="db_id" name="id" />
|
||||
</code>
|
||||
<code>
|
||||
<label for="db_pw">{$lang->db_password}</label>
|
||||
<input type="password" id="db_pw" name="pw" />
|
||||
</code>
|
||||
|
||||
<input type="submit" value="validate" class="submit"/>
|
||||
|
||||
</form>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->modified_files} ({count($modified)})</th>
|
||||
<td> </td>
|
||||
<td>
|
||||
<!--@foreach($modified as $val)-->
|
||||
{$val}<br />
|
||||
<!--@end-->
|
||||
</body>
|
||||
</html>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->additional_files} ({count($added)})</th>
|
||||
<td> </td>
|
||||
<td>
|
||||
<!--@foreach($added as $val)-->
|
||||
{$val}<br />
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
100
tools/validator/validator.php
Normal file
100
tools/validator/validator.php
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
<?php
|
||||
/**
|
||||
* @file tools/validator.php
|
||||
* @author zero <zero@zeroboard.com>
|
||||
* @brief 현재 설치된 버전에 해당하는 XE 파일 비교
|
||||
**/
|
||||
|
||||
// 인증이 되지 않은 접근이면 종료
|
||||
if(!defined('__XE_TOOL_AUTH__') || !__XE_TOOL_AUTH__) exit();
|
||||
|
||||
// 언어파일을 로드
|
||||
Context::loadLang(_XE_PATH_.'modules/admin/lang');
|
||||
|
||||
// 현재 버전을 구함
|
||||
$ver = __ZBXE_VERSION__;
|
||||
|
||||
// 현재 버전에 맞는 배포 정보를 구함
|
||||
$header = "GET /validatorLogs/{$ver}.log HTTP/1.0\r\nHost: news.zeroboard.com\r\n\r\n";
|
||||
$is_started = false;
|
||||
$f = fsockopen('news.zeroboard.com', 80);
|
||||
fputs($f, $header);
|
||||
while($buff = fgets($f, 1024)) {
|
||||
if(!trim($buff)) $is_started = true;
|
||||
if($is_started && trim($buff)) {
|
||||
$buff = trim($buff);
|
||||
$pos = strpos($buff,',');
|
||||
$size = (int)substr($buff,0,$pos);
|
||||
$filename = substr($buff,$pos+1);
|
||||
if($filename && $size) $source[$filename] = $size;
|
||||
}
|
||||
}
|
||||
fclose($f);
|
||||
|
||||
if(!count($source)) $output = Context::getLang('msg_cannot_get_source_files');
|
||||
else {
|
||||
// 현재 설치된 디렉토리와 비교
|
||||
$avoid_path = array(_XE_PATH_.'files');
|
||||
getFiles(_XE_PATH_, _XE_PATH_, $avoid_path, $target);
|
||||
if(!count($target)) $output = Context::getLang('msg_cannot_get_target_files');
|
||||
else {
|
||||
// 파일 수를 지정
|
||||
Context::set('source_cnt', count($source));
|
||||
Context::set('target_cnt', count($target));
|
||||
|
||||
// 최신 버전 정보 구함
|
||||
$oAdminView = &getAdminView('admin');
|
||||
$oAdminView->dispAdminIndex();
|
||||
|
||||
// 누락된 파일 구함
|
||||
$leaveouts = array();
|
||||
foreach($source as $key => $val) {
|
||||
if(!isset($target[$key])) $leaveouts[] = $key;
|
||||
}
|
||||
Context::set('leaveouts', $leaveouts);
|
||||
|
||||
// 수정된 파일 구함
|
||||
$modified = array();
|
||||
foreach($source as $key => $val) {
|
||||
if(isset($target[$key]) && $val!=$target[$key]) $modified[] = $key;
|
||||
}
|
||||
Context::set('modified', $modified);
|
||||
|
||||
// 추가된 파일 구함
|
||||
$added = array();
|
||||
foreach($target as $key => $val) {
|
||||
if(!isset($source[$key])) $added[] = $key;
|
||||
}
|
||||
Context::set('added', $added);
|
||||
|
||||
// CSS 지정
|
||||
Context::addCssFile('./validator/style.css', false);
|
||||
|
||||
// 결과물을 구함
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$output = $oTemplate->compile('./tools/validator/','validator');
|
||||
}
|
||||
}
|
||||
Context::set('output', $output);
|
||||
|
||||
// recursive하게 돌면서 파일 정보 수집
|
||||
function getFiles($path, $base_path, $avoid_path, &$buff) {
|
||||
if(substr($path,-1)=='/') $path = substr($path,0,-1);
|
||||
if(substr($base_path,-1)=='/') $base_path = substr($base_path,0,-1);
|
||||
if(in_array($path, $avoid_path)) return;
|
||||
|
||||
$oDir = dir($path);
|
||||
while($item = $oDir->read()) {
|
||||
if(substr($item,0,1)=='.' && $item != '.htaccess' ) continue;
|
||||
$new_path = $path.'/'.$item;
|
||||
if(!is_dir($new_path)) {
|
||||
$filesize = filesize($new_path);
|
||||
$filename = substr($new_path, strlen($base_path)+1);
|
||||
$buff[$filename] = $filesize;
|
||||
} else {
|
||||
getFiles($new_path, $base_path, $avoid_path, $buff);
|
||||
}
|
||||
}
|
||||
$oDir->close();
|
||||
}
|
||||
?>
|
||||
Loading…
Add table
Add a link
Reference in a new issue