insertHomepage($title, $domain); return $output; } function insertHomepage($title, $domain) { $oModuleController = &getController('module'); $oModuleModel = &getModel('module'); $default_menus = Context::getLang('homepage_default_menus'); $info->title = $title; $info->domain = $domain; // 도메인 검사 $domain_info = $oModuleModel->getSiteInfoByDomain($domain); if($domain_info) return new Object(-1,'msg_already_registed_domain'); // virtual site 생성 $info->site_srl = $oModuleController->insertSite($domain, $info->first->home_srl); // 레이아웃 생성 $info->layout_srl = $this->makeLayout($title,'xe_official'); // 기본 게시판+페이지 생성 $info->first->home_srl = $this->makePage($info->site_srl, 'home', $default_menus['first']['home'], $this->getHomeContent($default_menus), $content, $info->layout_srl); $info->first->notice_srl = $this->makeBoard($info->site_srl, 'notice', $default_menus['first']['notice'], $info->layout_srl); $info->first->download_srl = $this->makeBoard($info->site_srl, 'download', $default_menus['first']['download'], $info->layout_srl); $info->first->gallery_srl = $this->makeBoard($info->site_srl, 'gallery', $default_menus['first']['gallery'], $info->layout_srl); $info->first->community_srl = $this->makePage($info->site_srl, 'community', $default_menus['first']['community'], $content, $info->layout_srl); $info->first->freeboard_srl = $this->makeBoard($info->site_srl, 'freeboard', $default_menus['first']['freeboard'], $info->layout_srl); $info->first->humor_srl = $this->makeBoard($info->site_srl, 'humor', $default_menus['first']['humor'], $info->layout_srl); $info->first->qa_srl = $this->makeBoard($info->site_srl, 'qa', $default_menus['first']['qa'], $info->layout_srl); $info->second->profile = $this->makePage($info->site_srl, 'profile', $default_menus['second']['profile'], $content, $info->layout_srl); $info->second->rule = $this->makePage($info->site_srl, 'rule', $default_menus['second']['rule'], $content, $info->layout_srl); // 메뉴 생성 $info->first_menu_srl = $this->makeMenu($title, $default_menus['menu']['first']); $info->second_menu_srl = $this->makeMenu($title, $default_menus['menu']['second']); // first menu 설정 $item_srl = $this->insertMenuItem($info->first_menu_srl, 0, 'home', $default_menus['first']['home']); $this->insertMenuItem($info->first_menu_srl, $item_srl, 'notice', $default_menus['first']['notice']); $this->insertMenuItem($info->first_menu_srl, 0, 'download', $default_menus['first']['download']); $this->insertMenuItem($info->first_menu_srl, 0, 'gallery', $default_menus['first']['gallery']); $item_srl = $this->insertMenuItem($info->first_menu_srl, 0, 'community', $default_menus['first']['community']); $this->insertMenuItem($info->first_menu_srl, $item_srl, 'freeboard', $default_menus['first']['freeboard']); $this->insertMenuItem($info->first_menu_srl, $item_srl, 'humor', $default_menus['first']['humor']); $this->insertMenuItem($info->first_menu_srl, $item_srl, 'qa', $default_menus['first']['qa']); // second menu 설정 $this->insertMenuItem($info->second_menu_srl, 0, 'profile', $default_menus['second']['profile']); $this->insertMenuItem($info->second_menu_srl, 0, 'rule', $default_menus['second']['rule']); // layout의 설정 $oLayoutModel = &getModel('layout'); $layout_args = $oLayoutModel->getLayout($info->layout_srl); $layout->colorset = 'default'; if($domain) $layout->index_url = 'http://'.$domain; else $layout->index_url = Context::getRequestUri(); $layout->main_menu = $info->first_menu_srl; $layout->bottom_menu = $info->second_menu_srl; $layout_args->extra_vars = serialize($layout); $oLayoutController = &getAdminController('layout'); $oLayoutController->updateLayout($layout_args); // 생성된 게시판/ 페이지들의 레이아웃 변경 $menu_args = null; $menu_args->menu_srl = $info->first_menu_srl; $output = executeQueryArray('layout.getLayoutModules', $menu_args); $menu_args->menu_srl = $info->second_menu_srl; $output = executeQueryArray('layout.getLayoutModules', $menu_args); $modules = array(); foreach($info->first as $module_srl) $modules[] = $module_srl; foreach($info->second as $module_srl) $modules[] = $module_srl; $layout_module_args->layout_srl = $info->layout_srl; $layout_module_args->module_srls = implode(',',$modules); $output = executeQuery('layout.updateModuleLayout', $layout_module_args); // 메뉴 XML 파일 생성 $oMenuAdminController = &getAdminController('menu'); $oMenuAdminController->makeXmlFile($info->first_menu_srl); $oMenuAdminController->makeXmlFile($info->second_menu_srl); $args->site_srl = $info->site_srl; $args->title = $info->title; $args->layout_srl = $info->layout_srl; $args->first_menu_srl = $info->first_menu_srl; $args->second_menu_srl = $info->second_menu_srl; $args->list_order = $info->site_srl * -1; $output = executeQuery('homepage.insertHomepage', $args); // site의 index_module_srl 을 변경 $site_args->site_srl = $info->site_srl; $site_args->index_module_srl = $info->first->home_srl; $oModuleController->updateSite($site_args); // 기본 그룹 (준회원, 정회원)을 추가 $oMemberAdminController = &getAdminController('member'); unset($args); $args->title = Context::getLang('default_group_1'); $args->is_default = 'Y'; $args->is_admin = 'N'; $args->site_srl = $info->site_srl; $oMemberAdminController->insertGroup($args); unset($args); $args->title = Context::getLang('default_group_2'); $args->is_default = 'N'; $args->is_admin = 'N'; $args->site_srl = $info->site_srl; $oMemberAdminController->insertGroup($args); $this->add('site_srl', $info->site_srl); $this->add('url', getSiteUrl($info->domain, '')); } function makeBoard($site_srl, $mid, $browser_title, $layout_srl) { $args->site_srl = $site_srl; $args->module_srl = getNextSequence(); $args->module = 'board'; $args->mid = $mid; $args->browser_title = $browser_title; $args->is_default = 'N'; $args->layout_srl = $layout_srl; $args->skin = 'xe_board'; $oModuleController = &getController('module'); $output = $oModuleController->insertModule($args); return $output->get('module_srl'); } function makePage($site_srl, $mid, $browser_title, $content, $layout_srl) { $args->site_srl = $site_srl; $args->module_srl = getNextSequence(); $args->module = 'page'; $args->mid = $mid; $args->browser_title = $browser_title; $args->is_default = 'N'; $args->layout_srl = $layout_srl; $args->content = $content; $oModuleController = &getController('module'); $output = $oModuleController->insertModule($args); return $output->get('module_srl'); } function makeMenu($title, $menu_title) { $args->title = $title.' - '.$menu_title; $args->menu_srl = getNextSequence(); $args->listorder = $args->menu_srl * -1; $output = executeQuery('menu.insertMenu', $args); if(!$output->toBool()) return $output; return $args->menu_srl; } function makeLayout($title, $layout) { $args->layout_srl = getNextSequence(); $args->layout = $layout; $args->title = $title; $output = executeQuery("layout.insertLayout", $args); if(!$output->toBool()) return $output; return $args->layout_srl; } function insertMenuItem($menu_srl, $parent_srl = 0, $mid, $name) { // 변수를 다시 정리 (form문의 column과 DB column이 달라서) $args->menu_srl = $menu_srl; $args->menu_item_srl = getNextSequence(); $args->parent_srl = $parent_srl; $args->name = $name; $args->url = $mid; $args->open_window = 'N'; $args->expand = 'N'; $args->normal_btn = null; $args->hover_btn = null; $args->active_btn = null; $args->group_srls = null; $args->listorder = $args->menu_item_srl*-1; $output = executeQuery('menu.insertMenuItem', $args); return $args->menu_item_srl; } function getHomeContent( $default_menus) { return '
'; } function procHomepageAdminUpdateHomepage() { $args = Context::gets('site_srl','title','domain','homepage_admin'); if(!$args->site_srl) return new Object(-1,'msg_invalid_request'); $oHomepageModel = &getModel('homepage'); $homepage_info = $oHomepageModel->getHomepageInfo($args->site_srl); if(!$homepage_info->site_srl) return new Object(-1,'msg_invalid_request'); $output = executeQuery('homepage.updateHomepageTitle', $args); if(!$output->toBool()) return $output; $oModuleController = &getController('module'); $output = $oModuleController->updateSite($args); if(!$output->toBool()) return $output; $admin_list = explode(',',$args->homepage_admin); $output = $oModuleController->insertSiteAdmin($args->site_srl, $admin_list); if(!$output->toBool()) return $output; $this->setMessage('success_updated'); } function procHomepageAdminDeleteHomepage() { $site_srl = Context::get('site_srl'); if(!$site_srl) return new Object(-1,'msg_invalid_request'); $oHomepageModel = &getModel('homepage'); $homepage_info = $oHomepageModel->getHomepageInfo($site_srl); if(!$homepage_info->site_srl) return new Object(-1,'msg_invalid_request'); $args->site_srl = $site_srl; // 홈페이지 정보 삭제 executeQuery('homepage.deleteHomepage', $args); // 사이트 정보 삭제 executeQuery('module.deleteSite', $args); // 사이트 관리자 삭제 executeQuery('module.deleteSiteAdmin', $args); // 회원 그룹 매핑 데이터 삭제 executeQuery('member.deleteMemberGroup', $args); // 회원 그룹 삭제 executeQuery('member.deleteSiteGroup', $args); // 메뉴 삭제 $oMenuAdminController = &getAdminController('menu'); Context::set('menu_srl', $homepage_info->first_menu_srl); $oMenuAdminController->procMenuAdminDelete(); Context::set('menu_srl', $homepage_info->second_menu_srl); $oMenuAdminController->procMenuAdminDelete(); // 레이아웃 삭제 Context::set('layout_srl', $homepage_info->layout_srl); $oLayoutAdminController = &getAdminController('layout'); $oLayoutAdminController->procLayoutAdminDelete(); // 게시판 & 페이지 삭제 $oModuleModel = &getModel('module'); $mid_list = $oModuleModel->getMidList($args); $oBoardAdminController = &getAdminController('board'); $oPageAdminController = &getAdminController('page'); foreach($mid_list as $key => $val) { Context::set('module_srl', $val->module_srl); if($val->module == 'page') { $oPageAdminController->procPageAdminDelete(); } elseif($val->module == 'board') { $oBoardAdminController->procBoardAdminDeleteBoard(); } } $this->setMessage('success_deleted'); } } ?>