mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-14 00:39:57 +09:00
Module의 업데이트 필요 현황을 파악하고 업데이트를 할 수 있는 코드 추가. db의 column exists정보와 add column 기능 추가
git-svn-id: http://xe-core.googlecode.com/svn/trunk@1974 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
cb2254ef96
commit
a2eb5d62bf
38 changed files with 299 additions and 64 deletions
|
|
@ -203,6 +203,36 @@
|
|||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블에 특정 column 추가
|
||||
**/
|
||||
function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) {
|
||||
$type = $this->column_type[$type];
|
||||
if(strtoupper($type)=='INTEGER') $size = '';
|
||||
|
||||
$query = sprintf("alter class %s%s add %s ", $this->prefix, $table_name, $column_name);
|
||||
if($size) $query .= sprintf(" %s(%s) ", $type, $size);
|
||||
else $query .= sprintf(" %s ", $type);
|
||||
if($default) $query .= sprintf(" default '%s' ", $default);
|
||||
if($notnull) $query .= " not null ";
|
||||
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 column의 정보를 return
|
||||
**/
|
||||
function isColumnExists($table_name, $column_name) {
|
||||
$query = sprintf("select %s from db_attribute where class_name = '%s%s'", $column_name, $this->prefix, $table_name);
|
||||
$result = $this->_query($query);
|
||||
if(cubrid_num_rows($result)>0) $output = true;
|
||||
else $output = false;
|
||||
|
||||
if($result) cubrid_close_request($result);
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief xml 을 받아서 테이블을 생성
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -197,6 +197,41 @@
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블에 특정 column 추가
|
||||
**/
|
||||
function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) {
|
||||
$type = $this->column_type[$type];
|
||||
if(strtoupper($type)=='INTEGER') $size = '';
|
||||
|
||||
$query = sprintf("alter table %s%s add %s ", $this->prefix, $table_name, $column_name);
|
||||
if($size) $query .= sprintf(" %s(%s) ", $type, $size);
|
||||
else $query .= sprintf(" %s ", $type);
|
||||
if($default) $query .= sprintf(" default '%s' ", $default);
|
||||
if($notnull) $query .= " not null ";
|
||||
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 column의 정보를 return
|
||||
**/
|
||||
function isColumnExists($table_name, $column_name) {
|
||||
$query = sprintf("show fields from %s%s", $this->prefix, $table_name);
|
||||
$result = $this->_query($query);
|
||||
if($this->isError()) return;
|
||||
$output = $this->_fetch($result);
|
||||
if($output) {
|
||||
$column_name = strtolower($column_name);
|
||||
foreach($output as $key => $val) {
|
||||
$name = strtolower($val->Field);
|
||||
if($column_name == $name) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief xml 을 받아서 테이블을 생성
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -206,6 +206,43 @@
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블에 특정 column 추가
|
||||
**/
|
||||
function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) {
|
||||
$type = $this->column_type[$type];
|
||||
if(strtoupper($type)=='INTEGER') $size = '';
|
||||
|
||||
$query = sprintf("alter table %s%s add %s ", $this->prefix, $table_name, $column_name);
|
||||
if($size) $query .= sprintf(" %s(%s) ", $type, $size);
|
||||
else $query .= sprintf(" %s ", $type);
|
||||
if($default) $query .= sprintf(" default '%s' ", $default);
|
||||
if($notnull) $query .= " not null ";
|
||||
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 column의 정보를 return
|
||||
**/
|
||||
function isColumnExists($table_name, $column_name) {
|
||||
$query = sprintf("show fields from %s%s", $this->prefix, $table_name);
|
||||
$result = $this->_query($query);
|
||||
if($this->isError()) return;
|
||||
$output = $this->_fetch($result);
|
||||
if($output) {
|
||||
$column_name = strtolower($column_name);
|
||||
foreach($output as $key => $val) {
|
||||
$name = strtolower($val->Field);
|
||||
if($column_name == $name) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief xml 을 받아서 테이블을 생성
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -191,6 +191,42 @@
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블에 특정 column 추가
|
||||
**/
|
||||
function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) {
|
||||
$type = $this->column_type[$type];
|
||||
if(strtoupper($type)=='INTEGER') $size = '';
|
||||
|
||||
$query = sprintf("alter table %s%s add %s ", $this->prefix, $table_name, $column_name);
|
||||
if($size) $query .= sprintf(" %s(%s) ", $type, $size);
|
||||
else $query .= sprintf(" %s ", $type);
|
||||
if($default) $query .= sprintf(" default '%s' ", $default);
|
||||
if($notnull) $query .= " not null ";
|
||||
|
||||
$this->_prepare($query);
|
||||
return $this->_execute();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 column의 정보를 return
|
||||
**/
|
||||
function isColumnExists($table_name, $column_name) {
|
||||
$query = sprintf("pragma table_info(%s%s)", $this->prefix, $table_name);
|
||||
$this->_prepare($query);
|
||||
$output = $this->_execute();
|
||||
|
||||
if($output) {
|
||||
$column_name = strtolower($column_name);
|
||||
foreach($output as $key => $val) {
|
||||
$name = strtolower($val->name);
|
||||
if($column_name == $name) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief xml 을 받아서 테이블을 생성
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -213,6 +213,41 @@
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블에 특정 column 추가
|
||||
**/
|
||||
function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) {
|
||||
$type = $this->column_type[$type];
|
||||
if(strtoupper($type)=='INTEGER') $size = '';
|
||||
|
||||
$query = sprintf("alter table %s%s add %s ", $this->prefix, $table_name, $column_name);
|
||||
if($size) $query .= sprintf(" %s(%s) ", $type, $size);
|
||||
else $query .= sprintf(" %s ", $type);
|
||||
if($default) $query .= sprintf(" default '%s' ", $default);
|
||||
if($notnull) $query .= " not null ";
|
||||
|
||||
$this->_prepare($query);
|
||||
return $this->_execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 column의 정보를 return
|
||||
**/
|
||||
function isColumnExists($table_name, $column_name) {
|
||||
$query = sprintf("pragma table_info(%s%s)", $this->prefix, $table_name);
|
||||
$this->_prepare($query);
|
||||
$output = $this->_execute();
|
||||
|
||||
if($output) {
|
||||
$column_name = strtolower($column_name);
|
||||
foreach($output as $key => $val) {
|
||||
$name = strtolower($val->name);
|
||||
if($column_name == $name) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief xml 을 받아서 테이블을 생성
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -29,14 +29,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
$oDB = &DB::getInstance();
|
||||
|
||||
// 테이블 검사
|
||||
if(!$oDB->isTableExists('counter_log')) return new Object(-1,'fail');
|
||||
if(!$oDB->isTableExists('counter_status ')) return new Object(-1,'fail');
|
||||
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -30,15 +30,33 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
|
||||
/**
|
||||
* 2007. 7. 23 : 확장변수(extra_vars1~20까지 추가)
|
||||
**/
|
||||
if(!$oDB->isColumnExists("documents","extra_vars20")) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
return new Object();
|
||||
/**
|
||||
* 2007. 7. 23 : 확장변수(extra_vars1~20까지 추가)
|
||||
**/
|
||||
$oDB = &DB::getInstance();
|
||||
if(!$oDB->isColumnExists("documents","extra_vars20")) {
|
||||
for($i=1;$i<=20;$i++) {
|
||||
$column_name = "extra_vars".$i;
|
||||
$oDB->addColumn('documents',$column_name,'text');
|
||||
}
|
||||
}
|
||||
|
||||
return new Object(0,'success_updated');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,4 +31,24 @@
|
|||
<column name="allow_comment" type="char" size="1" default="Y" notnull="notnull" />
|
||||
<column name="lock_comment" type="char" size="1" default="N" notnull="notnull" />
|
||||
<column name="allow_trackback" type="char" size="1" default="Y" notnull="notnull" />
|
||||
<column name="extra_vars1" type="text" />
|
||||
<column name="extra_vars2" type="text" />
|
||||
<column name="extra_vars3" type="text" />
|
||||
<column name="extra_vars4" type="text" />
|
||||
<column name="extra_vars5" type="text" />
|
||||
<column name="extra_vars6" type="text" />
|
||||
<column name="extra_vars7" type="text" />
|
||||
<column name="extra_vars8" type="text" />
|
||||
<column name="extra_vars9" type="text" />
|
||||
<column name="extra_vars10" type="text" />
|
||||
<column name="extra_vars11" type="text" />
|
||||
<column name="extra_vars12" type="text" />
|
||||
<column name="extra_vars13" type="text" />
|
||||
<column name="extra_vars14" type="text" />
|
||||
<column name="extra_vars15" type="text" />
|
||||
<column name="extra_vars16" type="text" />
|
||||
<column name="extra_vars17" type="text" />
|
||||
<column name="extra_vars18" type="text" />
|
||||
<column name="extra_vars19" type="text" />
|
||||
<column name="extra_vars20" type="text" />
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -35,8 +35,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -43,8 +43,8 @@
|
|||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
* 설치시 필수 체크 부분이 있다면 검토하는 코드를 추가할 수 있다.
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
<action name="procInstall" type="controller" standalone="true" />
|
||||
<action name="procInstallAdminInstall" type="controller" standalone="true" />
|
||||
<action name="procInstallAdminUpdate" type="controller" standalone="true" />
|
||||
<action name="procInstallAdminSaveTimeZone" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -27,6 +27,20 @@
|
|||
$this->setMessage('success_installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 모듈 업데이트
|
||||
**/
|
||||
function procInstallAdminUpdate() {
|
||||
$module_name = Context::get('module_name');
|
||||
if(!$module_name) return new object(-1, 'invalid_request');
|
||||
|
||||
$oModule = &getModule($module_name, 'class');
|
||||
if($oModule) $output = $oModule->moduleUpdate();
|
||||
else $output = new Object(-1, 'invalid_request');
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief time zone변경
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -112,8 +112,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -514,8 +514,14 @@
|
|||
$info->path = $path;
|
||||
$info->admin_index_act = $info->admin_index_act;
|
||||
|
||||
if($table_count > $created_table_count) $info->is_installed = false;
|
||||
else $info->is_installed = true;
|
||||
// 설치 유무 체크 (설치는 DB의 설치만 관리)
|
||||
if($table_count > $created_table_count) $info->need_installed = false;
|
||||
else $info->need_installed = true;
|
||||
|
||||
// 각 모듈의 module.class.php로 upgrade 유무 체크
|
||||
$oDummy = null;
|
||||
$oDummy = &getModule($module_name, 'class');
|
||||
if($oDummy) $info->need_update = $oDummy->checkUpdate();
|
||||
|
||||
$list[] = $info;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,3 +43,10 @@ function completeInstallModule(ret_obj) {
|
|||
alert(ret_obj['message']);
|
||||
location.href = location.href;
|
||||
}
|
||||
|
||||
/* 모듈 업그레이드 */
|
||||
function doUpdateModule(module) {
|
||||
var params = new Array();
|
||||
params['module_name'] = module;
|
||||
exec_xml('install','procInstallAdminUpdate',params, completeInstallModule);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,9 +40,11 @@
|
|||
<td class="blue"><a href="#" onclick="popopen('{getUrl('','module','module','act','dispModuleAdminInfo','selected_module',$val->module)}','module_info');return false">{$lang->cmd_view}</a></td>
|
||||
<td class="red">
|
||||
<!--@if($val->need_update)-->
|
||||
<a href="#">{$lang->cmd_update}</a>
|
||||
<!--@else-->
|
||||
<a href="#" onclick="doUpdateModule('{$val->module}'); return false;">{$lang->cmd_update}</a>
|
||||
<!--@elseif($val->need_install)-->
|
||||
<a href="#" onclick="doInstallModule('{$val->module}');return false;">{$lang->cmd_install}</a>
|
||||
<!--@else-->
|
||||
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td>
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
添付ファイルは、元のアドレスからダウンロードします。
|
||||
</description>
|
||||
<description xml:lang="en">
|
||||
Module for inputting TattertTools' backup file to ZeroboardXE.
|
||||
Module for inputting TattertTools backup file to ZeroboardXE.
|
||||
Backup file without attachment is required.
|
||||
Attachments will be downloaded from the original address.
|
||||
</description>
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@
|
|||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
function checkUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue