mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-12 06:52:12 +09:00
Virtual Site 생성시 도메인 단위(서브도메인 또는 독립 도메인)이 아닌 ID 형식으로 생성 가능하도록 기능 개선.
SID 로 불리는 이 사이트ID는 MID와 중복이 불가능함. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6051 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
40e1740839
commit
bb97446dfc
40 changed files with 313 additions and 189 deletions
|
|
@ -34,6 +34,14 @@
|
|||
$lang->lang_code = "언어 코드";
|
||||
$lang->filebox = "파일박스";
|
||||
|
||||
$lang->access_type = '접속 방법';
|
||||
$lang->access_domain = 'Doamin 접속';
|
||||
$lang->access_sid = 'Site ID 접속';
|
||||
$lang->about_domain = "In order to create more than one virtual site, each of them needs to have own domain name.<br />Sub-domain (e.g., aaa.bbb.com of bbb.com) also can be used. Input the address including the path installed xe. <br /> ex) www.xpressengine.com/xe";
|
||||
$lang->about_sid = '별도의 도메인이 아닌 http://XE주소/ID 로 접속할 수 있습니다. 모듈명(mid)와 중복될 수 없습니다.<br/>첫글자는 영문으로 시작해야 하고 영문과 숫자 그리고 _ 만 사용할 수 있습니다';
|
||||
$lang->msg_already_registed_sid = '이미 등록된 사이트 ID 입니다. 게시판등의 mid와도 중복이 되지 않습니다. 다른 ID를 입력해주세요.';
|
||||
$lang->msg_already_registed_domain = "It is already registered domain name. Please use the different one.";
|
||||
|
||||
$lang->header_script = "Header Script";
|
||||
$lang->about_header_script = "You can input the html script between <header> and </header> by yourself.<br />You can use <script, <style or <meta tag";
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,14 @@
|
|||
$lang->lang_code = "언어 코드";
|
||||
$lang->filebox = "파일박스";
|
||||
|
||||
$lang->access_type = '접속 방법';
|
||||
$lang->access_domain = 'Doamin 접속';
|
||||
$lang->access_sid = 'Site ID 접속';
|
||||
$lang->about_domain = 'Para crear un dominio privado de la site requiere. <br/> Independiente de dominio o subdominio, y XE está instalado, el camino que en su conjunto. <br /> Ej.) www.xpressengine.com / zbxe';
|
||||
$lang->about_sid = '별도의 도메인이 아닌 http://XE주소/ID 로 접속할 수 있습니다. 모듈명(mid)와 중복될 수 없습니다.<br/>첫글자는 영문으로 시작해야 하고 영문과 숫자 그리고 _ 만 사용할 수 있습니다';
|
||||
$lang->msg_already_registed_sid = '이미 등록된 사이트 ID 입니다. 게시판등의 mid와도 중복이 되지 않습니다. 다른 ID를 입력해주세요.';
|
||||
$lang->msg_already_registed_domain = 'Ya es de dominio registrado. Por favor, use un dominio diferente';
|
||||
|
||||
$lang->header_script = "헤더 스크립트";
|
||||
$lang->about_header_script = "html의 <header>와 </header> 사이에 들어가는 코드를 직접 입력할 수 있습니다.<br /><script, <style 또는 <meta 태그등을 이용하실 수 있습니다";
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,13 @@
|
|||
$lang->lang_code = "언어 코드";
|
||||
$lang->filebox = "파일박스";
|
||||
|
||||
$lang->access_type = '접속 방법';
|
||||
$lang->access_domain = 'Doamin 접속';
|
||||
$lang->access_sid = 'Site ID 접속';
|
||||
$lang->about_sid = '별도의 도메인이 아닌 http://XE주소/ID 로 접속할 수 있습니다. 모듈명(mid)와 중복될 수 없습니다.<br/>첫글자는 영문으로 시작해야 하고 영문과 숫자 그리고 _ 만 사용할 수 있습니다';
|
||||
$lang->msg_already_registed_sid = '이미 등록된 사이트 ID 입니다. 게시판등의 mid와도 중복이 되지 않습니다. 다른 ID를 입력해주세요.';
|
||||
$lang->msg_already_registed_domain = '이미 등록된 도메인입니다. 다른 도메인을 사용해주세요';
|
||||
|
||||
$lang->header_script = "Script en-tête";
|
||||
$lang->about_header_script = "Vous pouvez entrer un script en html par vous-même entre <header> et </header>.<br />Vous pouvez utiliser <script, <style ou <meta tag";
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,14 @@
|
|||
$lang->lang_code = "言語コード";
|
||||
$lang->filebox = "ファイルボックス";
|
||||
|
||||
$lang->access_type = '접속 방법';
|
||||
$lang->access_domain = 'Doamin 접속';
|
||||
$lang->access_sid = 'Site ID 접속';
|
||||
$lang->about_domain = "複数のホームページを作成するためには、「オリジナルドメイン」や「サブ ドメイン」のような専用のドメインが必要です。<br />また、 XEインストールパスも一緒に記入して下さい。<br />ex) www.xpressengine.com/xe";
|
||||
$lang->about_sid = '별도의 도메인이 아닌 http://XE주소/ID 로 접속할 수 있습니다. 모듈명(mid)와 중복될 수 없습니다.<br/>첫글자는 영문으로 시작해야 하고 영문과 숫자 그리고 _ 만 사용할 수 있습니다';
|
||||
$lang->msg_already_registed_sid = '이미 등록된 사이트 ID 입니다. 게시판등의 mid와도 중복이 되지 않습니다. 다른 ID를 입력해주세요.';
|
||||
$lang->msg_already_registed_domain = "既に登録されているドメインです。異なるドメインを利用して下さい。";
|
||||
|
||||
$lang->header_script = "ヘッダースクリプト";
|
||||
$lang->about_header_script = "HTMLの<header>と</header>の間に入れるコードを直接入力出来ます。<br /><script、<styleまたは<metaタグなどが利用出来ます";
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,14 @@
|
|||
$lang->lang_code = '언어 코드';
|
||||
$lang->filebox = '파일박스';
|
||||
|
||||
$lang->access_type = '접속 방법';
|
||||
$lang->access_domain = 'Doamin 접속';
|
||||
$lang->access_sid = 'Site ID 접속';
|
||||
$lang->about_domain = '1개 이상의 사이트를 만들기 위해서는 전용 도메인이 있어야 합니다.<br/>독립 도메인이나 서브 도메인이 있으면 되고 XE가 설치된 경로까지 같이 넣어주세요.<br />ex) www.xpressengine.com/xe';
|
||||
$lang->about_sid = '별도의 도메인이 아닌 http://XE주소/ID 로 접속할 수 있습니다. 모듈명(mid)와 중복될 수 없습니다.<br/>첫글자는 영문으로 시작해야 하고 영문과 숫자 그리고 _ 만 사용할 수 있습니다';
|
||||
$lang->msg_already_registed_sid = '이미 등록된 사이트 ID 입니다. 게시판등의 mid와도 중복이 되지 않습니다. 다른 ID를 입력해주세요.';
|
||||
$lang->msg_already_registed_domain = '이미 등록된 도메인입니다. 다른 도메인을 사용해주세요';
|
||||
|
||||
$lang->header_script = '헤더 스크립트';
|
||||
$lang->about_header_script = 'html의 <head>와 </head> 사이에 들어가는 코드를 직접 입력할 수 있습니다.<br /><script, <style 또는 <meta 태그등을 이용하실 수 있습니다';
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,13 @@
|
|||
$lang->lang_code = "언어 코드";
|
||||
$lang->filebox = "파일박스";
|
||||
|
||||
$lang->access_type = '접속 방법';
|
||||
$lang->access_domain = 'Doamin 접속';
|
||||
$lang->access_sid = 'Site ID 접속';
|
||||
$lang->about_sid = '별도의 도메인이 아닌 http://XE주소/ID 로 접속할 수 있습니다. 모듈명(mid)와 중복될 수 없습니다.<br/>첫글자는 영문으로 시작해야 하고 영문과 숫자 그리고 _ 만 사용할 수 있습니다';
|
||||
$lang->msg_already_registed_sid = '이미 등록된 사이트 ID 입니다. 게시판등의 mid와도 중복이 되지 않습니다. 다른 ID를 입력해주세요.';
|
||||
$lang->msg_already_registed_domain = '이미 등록된 도메인입니다. 다른 도메인을 사용해주세요';
|
||||
|
||||
$lang->module_copy = "Копировать модуль";
|
||||
|
||||
$lang->header_script = "헤더 스크립트";
|
||||
|
|
|
|||
|
|
@ -34,6 +34,14 @@
|
|||
$lang->lang_code = "语言变量";
|
||||
$lang->filebox = "文件管理";
|
||||
|
||||
$lang->access_type = '접속 방법';
|
||||
$lang->access_domain = 'Doamin 접속';
|
||||
$lang->access_sid = 'Site ID 접속';
|
||||
$lang->about_domain = "要创建一个站点必须有一个专用域名。<br/>一级域名或二级域名皆可。输入的时候请把XE安装路径也一起输入。<br />ex) www.xpressengine.com/xe";
|
||||
$lang->about_sid = '별도의 도메인이 아닌 http://XE주소/ID 로 접속할 수 있습니다. 모듈명(mid)와 중복될 수 없습니다.<br/>첫글자는 영문으로 시작해야 하고 영문과 숫자 그리고 _ 만 사용할 수 있습니다';
|
||||
$lang->msg_already_registed_sid = '이미 등록된 사이트 ID 입니다. 게시판등의 mid와도 중복이 되지 않습니다. 다른 ID를 입력해주세요.';
|
||||
$lang->msg_already_registed_domain = "对不起!已有相同的域名。请重新输入。";
|
||||
|
||||
$lang->header_script = "文件头部脚本";
|
||||
$lang->about_header_script = "可以直接输入插入到html中<head>区的代码。<br />可使用<script, <style 或 <meta 等标签。";
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,13 @@
|
|||
$lang->bundle_grant_setup = '批次設定-權限管理';
|
||||
$lang->lang_code = '語言代碼';
|
||||
$lang->filebox = '檔案管理';
|
||||
$lang->access_type = '접속 방법';
|
||||
$lang->access_domain = 'Doamin 접속';
|
||||
$lang->access_sid = 'Site ID 접속';
|
||||
$lang->about_domain = "要建立網站必須要有個專屬域名。<br/>頂級域名或次級域名都可以。輸入時,請將XE安裝路徑也一起輸入。<br />例) www.xpressengine.com/xe";
|
||||
$lang->about_sid = '별도의 도메인이 아닌 http://XE주소/ID 로 접속할 수 있습니다. 모듈명(mid)와 중복될 수 없습니다.<br/>첫글자는 영문으로 시작해야 하고 영문과 숫자 그리고 _ 만 사용할 수 있습니다';
|
||||
$lang->msg_already_registed_sid = '이미 등록된 사이트 ID 입니다. 게시판등의 mid와도 중복이 되지 않습니다. 다른 ID를 입력해주세요.';
|
||||
$lang->msg_already_registed_domain = "已註冊的域名。請使用其他的網域。";
|
||||
|
||||
$lang->header_script = "Header Script";
|
||||
$lang->about_header_script = "可以直接輸入,並插入到HTML的<head>之間。<br />可使用<script>,<style>或<meta>等標籤。";
|
||||
|
|
|
|||
|
|
@ -113,20 +113,26 @@
|
|||
* @brief virtual site 생성
|
||||
**/
|
||||
function insertSite($domain, $index_module_srl) {
|
||||
if(isSiteID($domain)) {
|
||||
$oModuleModel = &getModel('module');
|
||||
if($oModuleModel->isIDExists($domain, 0)) return new Object(-1,'msg_already_registed_sid');
|
||||
}
|
||||
$args->site_srl = getNextSequence();
|
||||
$args->domain = preg_replace('/\/$/','',$domain);
|
||||
$args->index_module_srl = $index_module_srl;
|
||||
$output = executeQuery('module.insertSite', $args);
|
||||
if(!$output->toBool()) return null;
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
return $args->site_srl;
|
||||
$output->add('site_srl', $args->site_srl);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief virtual site 수정
|
||||
**/
|
||||
function updateSite($args) {
|
||||
return executeQuery('module.updateSite', $args);
|
||||
$output = executeQuery('module.updateSite', $args);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -170,18 +176,15 @@
|
|||
$output = $this->arrangeModuleInfo($args, $extra_vars);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 이미 존재하는 모듈 이름인지 체크
|
||||
if(!$args->site_srl) $args->site_srl = 0;
|
||||
$oModuleModel = &getModel('module');
|
||||
if($oModuleModel->isIDExists($args->mid, $args->site_srl)) return new Object(-1, 'msg_module_name_exists');
|
||||
|
||||
// begin transaction
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// 이미 존재하는 모듈 이름인지 체크
|
||||
if(!$args->site_srl) $args->site_srl = 0;
|
||||
$output = executeQuery('module.isExistsModuleName', $args);
|
||||
if(!$output->toBool() || $output->data->count) {
|
||||
$oDB->rollback();
|
||||
return new Object(-1, 'msg_module_name_exists');
|
||||
}
|
||||
|
||||
// is_default 의 값에 따라서 처리
|
||||
if($args->site_srl!=0) $args->is_default = 'N';
|
||||
else {
|
||||
|
|
@ -190,7 +193,6 @@
|
|||
}
|
||||
|
||||
// 선택된 스킨정보에서 colorset을 구함
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_path = ModuleHandler::getModulePath($args->module);
|
||||
$skin_info = $oModuleModel->loadSkinInfo($module_path, $args->skin);
|
||||
$skin_vars->colorset = $skin_info->colorset[0]->name;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,33 @@
|
|||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief mid, sid 사용할 수 있는지 검사
|
||||
**/
|
||||
function isIDExists($id, $site_srl = 0) {
|
||||
// directory 및 rss/atom/api 등 예약어 검사
|
||||
$dirs = FileHandler::readDir(_XE_PATH_);
|
||||
$dirs[] = 'rss';
|
||||
$dirs[] = 'atom';
|
||||
$dirs[] = 'api';
|
||||
if(in_array($id, $dirs)) return true;
|
||||
|
||||
// mid 검사
|
||||
$args->mid = $id;
|
||||
$args->site_srl = $site_srl;
|
||||
$output = executeQuery('module.isExistsModuleName', $args);
|
||||
if($output->data->count) return true;
|
||||
|
||||
// sid 검사 (site_srl이 0일때 즉 가상사이트가 아닌 경우 mid != sid임을 체크)
|
||||
if(!$site_srl) {
|
||||
$site_args->domain = $id;
|
||||
$output = executeQuery('module.isExistsSiteDomain', $site_args);
|
||||
if($output->data->count) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief site 정보를 구함
|
||||
**/
|
||||
|
|
@ -42,19 +69,35 @@
|
|||
* @brief domain에 따른 기본 mid를 구함
|
||||
**/
|
||||
function getDefaultMid() {
|
||||
// domain 으로 등록된 virtual site가 있는지 확인
|
||||
$url_info = parse_url(Context::getRequestUri());
|
||||
$hostname = $url_info['host'];
|
||||
$path = preg_replace('/\/$/','',$url_info['path']);
|
||||
$sites_args->domain = sprintf('%s%s%s', $hostname, $url_info['port']&&$url_info['port']!=80?':'.$url_info['port']:'',$path);
|
||||
$default_url = preg_replace('/\/$/','',Context::getDefaultUrl());
|
||||
$request_url = preg_replace('/\/$/','',Context::getRequestUri());
|
||||
$sid = Context::get('sid');
|
||||
$mid = Context::get('mid');
|
||||
|
||||
$output = executeQuery('module.getSiteDefaultInfo', $sites_args);
|
||||
// 기본 URL이 설정되어 있고 이 기본 URL과 요청 URL이 다르면 가상 사이트 확인
|
||||
if($default_url && $default_url != $request_url) {
|
||||
$url_info = parse_url($request_url);
|
||||
$hostname = $url_info['host'];
|
||||
$path = preg_replace('/\/$/','',$url_info['path']);
|
||||
$sites_args->domain = sprintf('%s%s%s', $hostname, $url_info['port']&&$url_info['port']!=80?':'.$url_info['port']:'',$path);
|
||||
$output = executeQuery('module.getSiteDefaultInfo', $sites_args);
|
||||
} else {
|
||||
if(!$sid) $sid = $mid;
|
||||
if($sid) {
|
||||
$sid_args->domain = $sid;
|
||||
$output = executeQuery('module.getSiteInfoByDomain', $sid_args);
|
||||
if($output->toBool() && $output->data) {
|
||||
Context::set('sid', $output->data->domain, true);
|
||||
if($mid==$output->data->domain) Context::set('mid',$output->data->mid,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// virtual site를 못 찾으면 가장 기본 모듈 추출
|
||||
if(!$output->toBool() || !$output->data) {
|
||||
if(!$output->data) {
|
||||
$args->site_srl = 0;
|
||||
$output = executeQuery('module.getDefaultMidInfo', $args);
|
||||
}
|
||||
|
||||
$module_info = $output->data;
|
||||
if(!$module_info->module_srl) return;
|
||||
if(is_array($module_info) && $module_info->data[0]) $module_info = $module_info[0];
|
||||
|
|
@ -66,7 +109,7 @@
|
|||
**/
|
||||
function getModuleInfoByMid($mid, $site_srl = 0) {
|
||||
$args->mid = $mid;
|
||||
$args->site_srl = $site_srl;
|
||||
$args->site_srl = (int)$site_srl;
|
||||
$output = executeQuery('module.getMidInfo', $args);
|
||||
$module_info = $output->data;
|
||||
if(!$module_info->module_srl && $module_info->data[0]) $module_info = $module_info->data[0];
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@
|
|||
<conditions>
|
||||
<condition operation="equal" column="mid" var="mid" />
|
||||
<condition operation="equal" column="module_srl" var="module_srl" pipe="and" />
|
||||
<condition operation="equal" column="site_srl" var="site_srl" default="0" pipe="and" />
|
||||
<condition operation="equal" column="site_srl" var="site_srl" default="0" pipe="and" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue