Esempio n. 1
0
 /**
  * Make URL with args_list upon request URL
  *
  * @param int $num_args Arguments nums
  * @param array $args_list Argument list for set url
  * @param string $domain Domain
  * @param bool $encode If TRUE, use url encode.
  * @param bool $autoEncode If TRUE, url encode automatically, detailed. Use this option, $encode value should be TRUE
  * @return string URL
  */
 public static function getUrl($num_args = 0, $args_list = array(), $domain = null, $encode = TRUE, $autoEncode = FALSE)
 {
     static $site_module_info = null;
     static $current_info = null;
     // retrieve virtual site information
     if (is_null($site_module_info)) {
         $site_module_info = self::get('site_module_info');
     }
     // If $domain is set, handle it (if $domain is vid type, remove $domain and handle with $vid)
     if ($domain && isSiteID($domain)) {
         $vid = $domain;
         $domain = '';
     }
     // If $domain, $vid are not set, use current site information
     if (!$domain && !$vid) {
         if ($site_module_info->domain && isSiteID($site_module_info->domain)) {
             $vid = $site_module_info->domain;
         } else {
             $domain = $site_module_info->domain;
         }
     }
     // if $domain is set, compare current URL. If they are same, remove the domain, otherwise link to the domain.
     if ($domain) {
         $domain_info = parse_url($domain);
         if (is_null($current_info)) {
             $current_info = parse_url((RX_SSL ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . RX_BASEURL);
         }
         if ($domain_info['host'] . $domain_info['path'] == $current_info['host'] . $current_info['path']) {
             unset($domain);
         } else {
             $domain = rtrim(preg_replace('/^(http|https):\\/\\//i', '', trim($domain)), '/') . '/';
         }
     }
     $get_vars = array();
     // If there is no GET variables or first argument is '' to reset variables
     if (!self::$_instance->get_vars || $args_list[0] == '') {
         // rearrange args_list
         if (is_array($args_list) && $args_list[0] == '') {
             array_shift($args_list);
         }
     } else {
         // Otherwise, make GET variables into array
         $get_vars = get_object_vars(self::$_instance->get_vars);
     }
     // arrange args_list
     for ($i = 0, $c = count($args_list); $i < $c; $i += 2) {
         $key = $args_list[$i];
         $val = trim($args_list[$i + 1]);
         // If value is not set, remove the key
         if (!isset($val) || !strlen($val)) {
             unset($get_vars[$key]);
             continue;
         }
         // set new variables
         $get_vars[$key] = $val;
     }
     // remove vid, rnd
     unset($get_vars['rnd']);
     if ($vid) {
         $get_vars['vid'] = $vid;
     } else {
         unset($get_vars['vid']);
     }
     // for compatibility to lower versions
     $act = $get_vars['act'];
     $act_alias = array('dispMemberFriend' => 'dispCommunicationFriend', 'dispMemberMessages' => 'dispCommunicationMessages', 'dispDocumentAdminManageDocument' => 'dispDocumentManageDocument', 'dispModuleAdminSelectList' => 'dispModuleSelectList');
     if (isset($act_alias[$act])) {
         $get_vars['act'] = $act_alias[$act];
     }
     // organize URL
     $query = '';
     if (count($get_vars) > 0) {
         // if using rewrite mod
         if (self::$_instance->allow_rewrite) {
             $var_keys = array_keys($get_vars);
             sort($var_keys);
             $target = join('.', $var_keys);
             $act = $get_vars['act'];
             $vid = $get_vars['vid'];
             $mid = $get_vars['mid'];
             $key = $get_vars['key'];
             $srl = $get_vars['document_srl'];
             $tmpArray = array('rss' => 1, 'atom' => 1, 'api' => 1);
             $is_feed = isset($tmpArray[$act]);
             $target_map = array('vid' => $vid, 'mid' => $mid, 'mid.vid' => "{$vid}/{$mid}", 'entry.mid' => "{$mid}/entry/" . $get_vars['entry'], 'entry.mid.vid' => "{$vid}/{$mid}/entry/" . $get_vars['entry'], 'document_srl' => $srl, 'document_srl.mid' => "{$mid}/{$srl}", 'document_srl.vid' => "{$vid}/{$srl}", 'document_srl.mid.vid' => "{$vid}/{$mid}/{$srl}", 'act' => $is_feed && $act !== 'api' ? $act : '', 'act.mid' => $is_feed ? "{$mid}/{$act}" : '', 'act.mid.vid' => $is_feed ? "{$vid}/{$mid}/{$act}" : '', 'act.document_srl.key' => $act == 'trackback' ? "{$srl}/{$key}/{$act}" : '', 'act.document_srl.key.mid' => $act == 'trackback' ? "{$mid}/{$srl}/{$key}/{$act}" : '', 'act.document_srl.key.vid' => $act == 'trackback' ? "{$vid}/{$srl}/{$key}/{$act}" : '', 'act.document_srl.key.mid.vid' => $act == 'trackback' ? "{$vid}/{$mid}/{$srl}/{$key}/{$act}" : '');
             $query = $target_map[$target];
         }
         if (!$query && count($get_vars) > 0) {
             $query = 'index.php?' . http_build_query($get_vars);
         }
     }
     // If using SSL always
     $_use_ssl = self::get('_use_ssl');
     if ($_use_ssl == 'always') {
         $query = self::getRequestUri(ENFORCE_SSL, $domain) . $query;
     } elseif ($_use_ssl == 'optional') {
         $ssl_mode = self::get('module') === 'admin' || $get_vars['module'] === 'admin' || isset($get_vars['act']) && self::isExistsSSLAction($get_vars['act']) ? ENFORCE_SSL : RELEASE_SSL;
         $query = self::getRequestUri($ssl_mode, $domain) . $query;
     } else {
         // currently on SSL but target is not based on SSL
         if (RX_SSL) {
             $query = self::getRequestUri(ENFORCE_SSL, $domain) . $query;
         } else {
             if ($domain) {
                 $query = self::getRequestUri(FOLLOW_REQUEST_SSL, $domain) . $query;
             } else {
                 $query = RX_BASEURL . $query;
             }
         }
     }
     if (!$encode) {
         return $query;
     }
     if (!$autoEncode) {
         return htmlspecialchars($query, ENT_COMPAT | ENT_HTML401, 'UTF-8', FALSE);
     }
     $output = array();
     $encode_queries = array();
     $parsedUrl = parse_url($query);
     parse_str($parsedUrl['query'], $output);
     foreach ($output as $key => $value) {
         if (preg_match('/&([a-z]{2,}|#\\d+);/', urldecode($value))) {
             $value = urlencode(htmlspecialchars_decode(urldecode($value)));
         }
         $encode_queries[] = $key . '=' . $value;
     }
     return htmlspecialchars($parsedUrl['path'] . '?' . join('&', $encode_queries), ENT_COMPAT | ENT_HTML401, 'UTF-8', FALSE);
 }
 /**
  * @brie display textule tool post manage write
  **/
 function dispTextyleToolPostManageWrite()
 {
     // set filter
     Context::addJsFilter($this->module_path . 'tpl/filter', 'save_post.xml');
     $oDocumentModel =& getModel('document');
     $document_srl = Context::get('document_srl');
     $material_srl = Context::get('material_srl');
     if ($document_srl) {
         $oDocument = $oDocumentModel->getDocument($document_srl, false, false);
     } else {
         $document_srl = 0;
         $oDocument = $oDocumentModel->getDocument(0);
         if ($material_srl) {
             $oMaterialModel =& getModel('material');
             $output = $oMaterialModel->getMaterial($material_srl);
             if ($output->data) {
                 $material_content = $output->data[0]->content;
                 Context::set('material_content', $material_content);
             }
         }
     }
     $category_list = $oDocumentModel->getCategoryList($this->module_srl);
     Context::set('category_list', $category_list);
     $oTagModel =& getModel('tag');
     $args->module_srl = $this->module_srl;
     $args->list_count = 20;
     $output = $oTagModel->getTagList($args);
     Context::set('tag_list', $output->data);
     $oEditorModel =& getModel('editor');
     $option->skin = $this->textyle->getPostEditorSkin();
     $option->primary_key_name = 'document_srl';
     $option->content_key_name = 'content';
     $option->allow_fileupload = true;
     $option->enable_autosave = true;
     $option->enable_default_component = true;
     $option->enable_component = $option->skin == 'dreditor' ? false : true;
     $option->resizable = true;
     $option->height = 500;
     $option->content_font = $this->textyle->getFontFamily();
     $option->content_font_size = $this->textyle->getFontSize();
     $editor = $oEditorModel->getEditor($document_srl, $option);
     Context::set('editor', $editor);
     Context::set('editor_skin', $option->skin);
     // permalink
     $permalink = '';
     if (isSiteID($this->textyle->domain)) {
         if (Context::isAllowRewrite()) {
             $permalink = getFullSiteUrl($this->textyle->domain, '') . '/entry/';
         } else {
             $permalink = getFullSiteUrl($this->textyle->domain) . '?vid=' . $this->textyle->domain . '&mid=' . Context::get('mid') . '&entry=';
         }
     } else {
         if (Context::isAllowRewrite()) {
             $permalink = getFullSiteUrl($this->textyle->domain, '') . 'entry/';
         } else {
             $premalink = getFullSiteUrl($this->textyle->domain, '', 'mid', Context::get('mid')) . '&entry=';
         }
     }
     Context::set('permalink', $permalink);
     $oTextyleModel =& getModel('textyle');
     $alias = $oDocumentModel->getAlias($document_srl);
     Context::set('alias', $alias);
     $output = $oTextyleModel->getSubscriptionByDocumentSrl($document_srl);
     if ($output->data) {
         $publish_date = $output->data[0]->publish_date;
         $publish_date = sscanf($publish_date, '%04d%02d%02d%02d%02d');
         Context::set('publish_date_yyyymmdd', sprintf("%s-%02d-%02d", $publish_date[0], $publish_date[1], $publish_date[2]));
         Context::set('publish_date_hh', sprintf("%02d", $publish_date[3]));
         Context::set('publish_date_ii', sprintf("%02d", $publish_date[4]));
         Context::set('subscription', 'Y');
     }
     if ($oDocument->get('module_srl') != $this->module_srl && !$document_srl) {
         Context::set('from_saved', true);
     }
     $oPublish = $oTextyleModel->getPublishObject($this->module_srl, $oDocument->document_srl);
     if (count($oPublish->trackbacks)) {
         $trackbacks = $oPublish->getTrackbacks();
     }
     if (count($oPublish->blogapis)) {
         $_apis = $oPublish->getApis();
     }
     Context::set('oDocument', $oDocument);
     Context::set('oTextyle', $oTextyleModel->getTextyle($this->module_srl));
     Context::set('oPublish', $oPublish);
     Context::set('category_list', $oDocumentModel->getCategoryList($this->module_srl));
     Context::set('trackbacks', $trackbacks);
     Context::set('_apis', $_apis);
 }
Esempio n. 3
0
 /**
  * @brief modify virtual site
  **/
 function updateSite($args)
 {
     $oModuleModel =& getModel('module');
     $columnList = array('sites.site_srl', 'sites.domain');
     $site_info = $oModuleModel->getSiteInfo($args->site_srl, $columnList);
     if ($site_info->domain != $args->domain) {
         $info = $oModuleModel->getSiteInfoByDomain($args->domain, $columnList);
         if ($info->site_srl && $info->site_srl != $args->site_srl) {
             return new Object(-1, 'msg_already_registed_domain');
         }
         if (isSiteID($args->domain) && $oModuleModel->isIDExists($args->domain)) {
             return new Object(-1, 'msg_already_registed_vid');
         }
         if ($args->domain && !isSiteID($args->domain)) {
             $args->domain = strtolower($args->domain);
         }
     }
     $output = executeQuery('module.updateSite', $args);
     //clear cache for default mid
     if ($args->site_srl == 0) {
         $vid = '';
     } else {
         $vid = $args->domain;
     }
     $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->index_module_srl);
     $mid = $module_info->mid;
     $oCacheHandler =& CacheHandler::getInstance('object');
     if ($oCacheHandler->isSupport()) {
         if ($args->site_srl == 0) {
             $cache_key = 'object_default_mid:_';
             $oCacheHandler->delete($cache_key);
         }
         $cache_key = 'object_default_mid:' . $vid . '_' . $mid;
         $oCacheHandler->delete($cache_key);
     }
     return $output;
 }
Esempio n. 4
0
 /**
  * @brief modify virtual site
  */
 function updateSite($args)
 {
     $oModuleModel = getModel('module');
     $columnList = array('sites.site_srl', 'sites.domain');
     $site_info = $oModuleModel->getSiteInfo($args->site_srl, $columnList);
     if (!$args->domain && $site_info->site_srl == $args->site_srl) {
         $args->domain = $site_info->domain;
     }
     if ($site_info->domain != $args->domain) {
         $info = $oModuleModel->getSiteInfoByDomain($args->domain, $columnList);
         if ($info->site_srl && $info->site_srl != $args->site_srl) {
             return new Object(-1, 'msg_already_registed_domain');
         }
         if (isSiteID($args->domain) && $oModuleModel->isIDExists($args->domain)) {
             return new Object(-1, 'msg_already_registed_vid');
         }
         if ($args->domain && !isSiteID($args->domain)) {
             $args->domain = strlen($args->domain) >= 1 && substr_compare($args->domain, '/', -1) === 0 ? substr($args->domain, 0, -1) : $args->domain;
         }
     }
     $output = executeQuery('module.updateSite', $args);
     //clear cache for default mid
     if ($args->site_srl == 0) {
         $vid = '';
     } else {
         $vid = $args->domain;
     }
     $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->index_module_srl);
     $mid = $module_info->mid;
     Rhymix\Framework\Cache::clearGroup('site_and_module');
     return $output;
 }
Esempio n. 5
0
 /**
  * Make URL with args_list upon request URL
  *
  * @param int $num_args Arguments nums
  * @param array $args_list Argument list for set url
  * @param string $domain Domain
  * @param bool $encode If true, use url encode.
  * @param bool $autoEncode If true, url encode automatically, detailed. Use this option, $encode value should be true
  * @return string URL
  */
 function getUrl($num_args = 0, $args_list = array(), $domain = null, $encode = true, $autoEncode = false)
 {
     static $site_module_info = null;
     static $current_info = null;
     is_a($this, 'Context') ? $self =& $this : ($self =& Context::getInstance());
     // retrieve virtual site information
     if (is_null($site_module_info)) {
         $site_module_info = Context::get('site_module_info');
     }
     // If $domain is set, handle it (if $domain is vid type, remove $domain and handle with $vid)
     if ($domain && isSiteID($domain)) {
         $vid = $domain;
         $domain = '';
     }
     // If $domain, $vid are not set, use current site information
     if (!$domain && !$vid) {
         if ($site_module_info->domain && isSiteID($site_module_info->domain)) {
             $vid = $site_module_info->domain;
         } else {
             $domain = $site_module_info->domain;
         }
     }
     // if $domain is set, compare current URL. If they are same, remove the domain, otherwise link to the domain.
     if ($domain) {
         $domain_info = parse_url($domain);
         if (is_null($current_info)) {
             $current_info = parse_url(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . getScriptPath());
         }
         if ($domain_info['host'] . $domain_info['path'] == $current_info['host'] . $current_info['path']) {
             unset($domain);
         } else {
             $domain = preg_replace('/^(http|https):\\/\\//i', '', trim($domain));
             if (substr($domain, -1) != '/') {
                 $domain .= '/';
             }
         }
     }
     $get_vars = null;
     // If there is no GET variables or first argument is '' to reset variables
     if (!$self->get_vars || $args_list[0] == '') {
         // rearrange args_list
         if (is_array($args_list) && $args_list[0] == '') {
             array_shift($args_list);
         }
     } else {
         // Otherwise, make GET variables into array
         $get_vars = get_object_vars($self->get_vars);
     }
     // arrange args_list
     for ($i = 0, $c = count($args_list); $i < $c; $i = $i + 2) {
         $key = $args_list[$i];
         $val = trim($args_list[$i + 1]);
         // If value is not set, remove the key
         if (!isset($val) || !strlen($val)) {
             unset($get_vars[$key]);
             continue;
         }
         // set new variables
         $get_vars[$key] = $val;
     }
     // remove vid, rnd
     unset($get_vars['rnd']);
     if ($vid) {
         $get_vars['vid'] = $vid;
     } else {
         unset($get_vars['vid']);
     }
     // for compatibility to lower versions
     $act = $get_vars['act'];
     $act_alias = array('dispMemberFriend' => 'dispCommunicationFriend', 'dispMemberMessages' => 'dispCommunicationMessages', 'dispDocumentAdminManageDocument' => 'dispDocumentManageDocument', 'dispModuleAdminSelectList' => 'dispModuleSelectList');
     if ($act_alias[$act]) {
         $get_vars['act'] = $act_alias[$act];
     }
     // organize URL
     $query = '';
     if (count($get_vars)) {
         // if using rewrite mod
         if ($self->allow_rewrite) {
             $var_keys = array_keys($get_vars);
             sort($var_keys);
             $target = implode('.', $var_keys);
             $act = $get_vars['act'];
             $vid = $get_vars['vid'];
             $mid = $get_vars['mid'];
             $key = $get_vars['key'];
             $srl = $get_vars['document_srl'];
             $tmpArray = array('rss' => 1, 'atom' => 1, 'api' => 1);
             $is_feed = isset($tmpArray[$act]);
             $target_map = array('vid' => $vid, 'mid' => $mid, 'mid.vid' => "{$vid}/{$mid}", 'entry.mid' => "{$mid}/entry/" . $get_vars['entry'], 'entry.mid.vid' => "{$vid}/{$mid}/entry/" . $get_vars['entry'], 'document_srl' => $srl, 'document_srl.mid' => "{$mid}/{$srl}", 'document_srl.vid' => "{$vid}/{$srl}", 'document_srl.mid.vid' => "{$vid}/{$mid}/{$srl}", 'act.mid' => $is_feed ? "{$mid}/{$act}" : '', 'act.mid.vid' => $is_feed ? "{$vid}/{$mid}/{$act}" : '', 'act.document_srl.key' => $act == 'trackback' ? "{$srl}/{$key}/{$act}" : '', 'act.document_srl.key.vid' => $act == 'trackback' ? "{$vid}/{$srl}/{$key}/{$act}" : '');
             $query = $target_map[$target];
         }
         if (!$query) {
             $queries = array();
             foreach ($get_vars as $key => $val) {
                 if (is_array($val) && count($val)) {
                     foreach ($val as $k => $v) {
                         $queries[] = $key . '[' . $k . ']=' . urlencode($v);
                     }
                 } else {
                     $queries[] = $key . '=' . urlencode($val);
                 }
             }
             if (count($queries)) {
                 $query = 'index.php?' . implode('&', $queries);
             }
         }
     }
     // If using SSL always
     $_use_ssl = $self->get('_use_ssl');
     if ($_use_ssl == 'always') {
         $query = $self->getRequestUri(ENFORCE_SSL, $domain) . $query;
         // optional SSL use
     } elseif ($_use_ssl == 'optional') {
         $ssl_mode = RELEASE_SSL;
         if ($get_vars['act'] && $self->isExistsSSLAction($get_vars['act'])) {
             $ssl_mode = ENFORCE_SSL;
         }
         $query = $self->getRequestUri($ssl_mode, $domain) . $query;
         // no SSL
     } else {
         // currently on SSL but target is not based on SSL
         if ($_SERVER['HTTPS'] == 'on') {
             $query = $self->getRequestUri(ENFORCE_SSL, $domain) . $query;
         } else {
             if ($domain) {
                 $query = $self->getRequestUri(FOLLOW_REQUEST_SSL, $domain) . $query;
             } else {
                 $query = getScriptPath() . $query;
             }
         }
     }
     if ($encode) {
         if ($autoEncode) {
             $parsedUrl = parse_url($query);
             parse_str($parsedUrl['query'], $output);
             $encode_queries = array();
             foreach ($output as $key => $value) {
                 if (preg_match('/&([a-z]{2,}|#\\d+);/', urldecode($value))) {
                     $value = urlencode(htmlspecialchars_decode(urldecode($value)));
                 }
                 $encode_queries[] = $key . '=' . $value;
             }
             $encode_query = implode('&', $encode_queries);
             return htmlspecialchars($parsedUrl['path'] . '?' . $encode_query);
         } else {
             return htmlspecialchars($query);
         }
     } else {
         return $query;
     }
 }
 function insertHomepage($title, $domain)
 {
     $oModuleController =& getController('module');
     $oModuleModel =& getModel('module');
     $info->title = $title;
     $info->domain = $domain;
     // 언어 코드 추출
     $files = FileHandler::readDir('./modules/homepage/lang');
     foreach ($files as $filename) {
         $lang_code = str_replace('.lang.php', '', $filename);
         $lang = null;
         @(include './modules/homepage/lang/' . $filename);
         if (count($lang->default_menus)) {
             foreach ($lang->default_menus as $key => $val) {
                 $defined_lang[$lang_code]->{$key} = $val;
             }
         }
     }
     $lang = null;
     // virtual site 생성하고 site_srl을 보관
     $output = $oModuleController->insertSite($domain, 0);
     if (!$output->toBool()) {
         return $output;
     }
     $info->site_srl = $output->get('site_srl');
     // 언어 코드 등록 (홈, 공지사항, 등업신청, 자유게시판, 전체 글 보기, 한줄이야기, 카페앨범, 메뉴등)
     foreach ($defined_lang as $lang_code => $v) {
         foreach ($v as $key => $val) {
             unset($lang_args);
             $lang_args->site_srl = $info->site_srl;
             $lang_args->name = $key;
             $lang_args->lang_code = $lang_code;
             $lang_args->value = $val;
             executeQuery('module.insertLang', $lang_args);
         }
     }
     $oModuleAdminController =& getAdminController('module');
     $oModuleAdminController->makeCacheDefinedLangCode($info->site_srl);
     $oHomepageModel =& getModel('homepage');
     $homepage_config = $oHomepageModel->getConfig(0);
     if (!$homepage_config->default_layout) {
         $homepage_config->default_layout = 'cafeXE';
     }
     // 레이아웃 생성
     $info->layout_srl = $this->makeLayout($info->site_srl, $title, $homepage_config->default_layout);
     // 기본 게시판+페이지 생성
     $info->module->home_srl = $this->makePage($info->site_srl, 'home', '$user_lang->home', $info->layout_srl, $this->getHomeContent());
     $info->module->notice_srl = $this->makeBoard($info->site_srl, 'notice', '$user_lang->notice', $info->layout_srl);
     $info->module->notice_srl = $this->makeBoard($info->site_srl, 'levelup', '$user_lang->levelup', $info->layout_srl);
     $info->module->freeboard_srl = $this->makeBoard($info->site_srl, 'freeboard', '$user_lang->freeboard', $info->layout_srl);
     // 메뉴 생성
     $info->menu_srl = $this->makeMenu($info->site_srl, $title, 'Main Menu');
     // menu 설정
     $this->insertMenuItem($info->menu_srl, 0, 'home', '$user_lang->home');
     $this->insertMenuItem($info->menu_srl, 0, 'notice', '$user_lang->notice');
     $this->insertMenuItem($info->menu_srl, 0, 'levelup', '$user_lang->levelup');
     $this->insertMenuItem($info->menu_srl, 0, 'freeboard', '$user_lang->freeboard');
     // layout의 설정
     $oLayoutModel =& getModel('layout');
     $layout_args = $oLayoutModel->getLayout($info->layout_srl);
     $layout->colorset = 'white';
     // vid 형식일 경우
     if (isSiteID($domain)) {
         $layout->index_url = getSiteUrl($domain, '');
     } else {
         $layout->index_url = 'http://' . $domain;
     }
     $layout->main_menu = $info->menu_srl;
     $layout_args->extra_vars = serialize($layout);
     $oLayoutController =& getAdminController('layout');
     $oLayoutController->updateLayout($layout_args);
     // 생성된 게시판/ 페이지들의 레이아웃 변경
     $menu_args->menu_srl = $info->menu_srl;
     $output = executeQueryArray('layout.getLayoutModules', $menu_args);
     $modules = array();
     foreach ($info->module 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);
     // 홈페이지 등록
     $args->site_srl = $info->site_srl;
     $args->title = $info->title;
     $args->layout_srl = $info->layout_srl;
     $args->first_menu_srl = $info->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->module->home_srl;
     $oModuleController->updateSite($site_args);
     // 기본그룹 추가
     $oMemberAdminController =& getAdminController('member');
     unset($args);
     $args->title = '$user_lang->default_group1';
     $args->is_default = 'Y';
     $args->is_admin = 'N';
     $args->site_srl = $info->site_srl;
     $oMemberAdminController->insertGroup($args);
     unset($args);
     $args->title = '$user_lang->default_group2';
     $args->is_default = 'N';
     $args->is_admin = 'N';
     $args->site_srl = $info->site_srl;
     $oMemberAdminController->insertGroup($args);
     unset($args);
     $args->title = '$user_lang->default_group3';
     $args->is_default = 'N';
     $args->is_admin = 'N';
     $args->site_srl = $info->site_srl;
     $oMemberAdminController->insertGroup($args);
     // 기본 애드온 On
     $oAddonController =& getAdminController('addon');
     $oAddonController->doInsert('autolink', $info->site_srl);
     $oAddonController->doInsert('counter', $info->site_srl);
     $oAddonController->doInsert('member_communication', $info->site_srl);
     $oAddonController->doInsert('member_extra_info', $info->site_srl);
     $oAddonController->doInsert('referer', $info->site_srl);
     $oAddonController->doInsert('resize_image', $info->site_srl);
     $oAddonController->doActivate('autolink', $info->site_srl);
     $oAddonController->doActivate('counter', $info->site_srl);
     $oAddonController->doActivate('member_communication', $info->site_srl);
     $oAddonController->doActivate('member_extra_info', $info->site_srl);
     $oAddonController->doActivate('referer', $info->site_srl);
     $oAddonController->doActivate('resize_image', $info->site_srl);
     $oAddonController->makeCacheFile($info->site_srl);
     // 기본 에디터 컴포넌트 On
     $oEditorController =& getAdminController('editor');
     $oEditorController->insertComponent('colorpicker_text', true, $info->site_srl);
     $oEditorController->insertComponent('colorpicker_bg', true, $info->site_srl);
     $oEditorController->insertComponent('emoticon', true, $info->site_srl);
     $oEditorController->insertComponent('url_link', true, $info->site_srl);
     $oEditorController->insertComponent('image_link', true, $info->site_srl);
     $oEditorController->insertComponent('multimedia_link', true, $info->site_srl);
     $oEditorController->insertComponent('quotation', true, $info->site_srl);
     $oEditorController->insertComponent('table_maker', true, $info->site_srl);
     $oEditorController->insertComponent('poll_maker', true, $info->site_srl);
     $oEditorController->insertComponent('image_gallery', true, $info->site_srl);
     // 메뉴 XML 파일 생성
     $oMenuAdminController =& getAdminController('menu');
     $oMenuAdminController->makeXmlFile($info->menu_srl, $info->site_srl);
     $this->add('site_srl', $info->site_srl);
     $this->add('url', getSiteUrl($info->domain, ''));
 }
Esempio n. 7
0
 /**
  * @brief virtual site 수정
  **/
 function updateSite($args)
 {
     $oModuleModel =& getModel('module');
     $site_info = $oModuleModel->getSiteInfo($args->site_srl);
     if ($site_info->domain != $args->domain) {
         $info = $oModuleModel->getSiteInfoByDomain($args->domain);
         if ($info->site_srl && $info->site_srl != $args->site_srl) {
             return new Object(-1, 'msg_already_registed_domain');
         }
         if (isSiteID($args->domain) && $oModuleModel->isIDExists($args->domain)) {
             return new Object(-1, 'msg_already_registed_vid');
         }
     }
     $output = executeQuery('module.updateSite', $args);
     return $output;
 }
Esempio n. 8
0
 /**
  * @brief 요청받은 url에 args_list를 적용하여 return
  **/
 function _getUrl($num_args = 0, $args_list = array(), $domain = null, $encode = true)
 {
     static $site_module_info = null;
     static $current_info = null;
     // 가상 사이트 정보를 구함
     if (is_null($site_module_info)) {
         $site_module_info = Context::get('site_module_info');
     }
     // SiteID 요청시 전처리 ($domain이 vid 형식일 경우 $domain값을 없애고 vid로 처리하도록 함)
     if ($domain && isSiteID($domain)) {
         $vid = $domain;
         $domain = '';
     }
     // $domain, $vid값이 없을 경우(= 현재 사이트 정보를 이용함)
     if (!$domain && !$vid) {
         if ($site_module_info->domain && isSiteID($site_module_info->domain)) {
             $vid = $site_module_info->domain;
         } else {
             $domain = $site_module_info->domain;
         }
     }
     // $domain값이 있을 경우 현재 요청된 도메인과 비교해서 동일할 경우 제거 그렇지 않으면 http 프로토콜을 제거하고 제일 뒤에 / 를 붙임
     if ($domain) {
         $domain_info = parse_url($domain);
         if (is_null($current_info)) {
             $current_info = parse_url(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . getScriptPath());
         }
         if ($domain_info['host'] . $domain_info['path'] == $current_info['host'] . $current_info['path']) {
             unset($domain);
         } else {
             $domain = preg_replace('/^(http|https):\\/\\//i', '', trim($domain));
             if (substr($domain, -1) != '/') {
                 $domain .= '/';
             }
         }
     }
     // 변수 정리
     $get_vars = null;
     // GET 변수가 없거나 변수 초기화 지정이 되었을 경우
     if (!$this->get_vars || $args_list[0] == '') {
         // 요청받은 변수가 있고 첫번째 인자가 '' 라서 초기화를 해야 할 경우 요청받은 변수를 정리
         if (is_array($args_list) && $args_list[0] == '') {
             array_shift($args_list);
         }
         // 초기화를 원하지 않을 경우 GET 변수를 배열로 처리
     } else {
         $get_vars = get_object_vars($this->get_vars);
     }
     // 새로 꾸미기를 원하는 변수를 정리
     for ($i = 0, $c = count($args_list); $i < $c; $i = $i + 2) {
         $key = $args_list[$i];
         $val = trim($args_list[$i + 1]);
         // 값이 없으면 GET변수에서 해당 키를 제거
         if (!isset($val)) {
             unset($get_vars[$key]);
             continue;
         }
         // 새로운 변수를 정리
         $get_vars[$key] = $val;
     }
     // 변수중 vid, rnd값 제거
     unset($get_vars['rnd']);
     if ($vid) {
         $get_vars['vid'] = $vid;
     } else {
         unset($get_vars['vid']);
     }
     if (count($get_vars)) {
         foreach ($get_vars as $key => $val) {
             if (!trim($val)) {
                 unset($get_vars[$key]);
             }
         }
     }
     // action명이 변경되었던 것에 대해 호환성을 유지하기 위한 강제 값 변경
     switch ($get_vars['act']) {
         case 'dispMemberFriend':
             $get_vars['act'] = 'dispCommunicationFriend';
             break;
         case 'dispMemberMessages':
             $get_vars['act'] = 'dispCommunicationMessages';
             break;
         case 'dispDocumentAdminManageDocument':
             $get_vars['act'] = 'dispDocumentManageDocument';
             break;
         case 'dispModuleAdminSelectList':
             $get_vars['act'] = 'dispModuleSelectList';
             break;
     }
     // URL 구성
     $query = null;
     if ($var_count = count($get_vars)) {
         // rewrite mod 사용시
         if ($this->allow_rewrite) {
             $var_keys = array_keys($get_vars);
             asort($var_keys);
             $target = implode('.', $var_keys);
             switch ($target) {
                 case 'vid':
                     $query = $get_vars['vid'];
                     break;
                 case 'mid':
                     $query = $get_vars['mid'];
                     break;
                 case 'document_srl':
                     $query = $get_vars['document_srl'];
                     break;
                 case 'document_srl.mid':
                     $query = $get_vars['mid'] . '/' . $get_vars['document_srl'];
                     break;
                 case 'entry.mid':
                     $query = $get_vars['mid'] . '/entry/' . $get_vars['entry'];
                     break;
                 case 'act.document_srl.key':
                     $query = $get_vars['act'] == 'trackback' ? $get_vars['document_srl'] . '/' . $get_vars['key'] . '/' . $get_vars['act'] : '';
                     break;
                 case 'mid.vid':
                     $query = $get_vars['vid'] . '/' . $get_vars['mid'];
                     break;
                 case 'document_srl.vid':
                     $query = $get_vars['vid'] . '/' . $get_vars['document_srl'];
                     break;
                 case 'document_srl.mid.vid':
                     $query = $get_vars['vid'] . '/' . $get_vars['mid'] . '/' . $get_vars['document_srl'];
                     break;
                 case 'entry.mid.vid':
                     $query = $get_vars['vid'] . '/' . $get_vars['mid'] . '/entry/' . $get_vars['entry'];
                     break;
                 case 'act.document_srl.key.vid':
                     $query = $get_vars['act'] == 'trackback' ? $get_vars['vid'] . '/' . $get_vars['document_srl'] . '/' . $get_vars['key'] . '/' . $get_vars['act'] : '';
                     break;
             }
         }
         // rewrite mod 미사용 또는 query값이 생성되지 않았을 경우 get argument로 생성
         if (!$query) {
             foreach ($get_vars as $key => $val) {
                 if (is_array($val) && count($val)) {
                     foreach ($val as $k => $v) {
                         $query .= ($query ? '&' : '') . $key . '[' . $k . ']=' . urlencode($v);
                     }
                 } else {
                     $query .= ($query ? '&' : '') . $key . '=' . urlencode($val);
                 }
             }
             if ($query) {
                 $query = '?' . $query;
             }
         }
     }
     // 항상 SSL을 이용하고 현재 SSL이 아닌 경우 https에 대한 prefix를 붙임
     if (Context::get('_use_ssl') == 'always') {
         $query = $this->getRequestUri(ENFORCE_SSL, $domain) . $query;
         // 상황에 따라 혹은 지정된 대상만 SSL 취급될 경우
     } elseif (Context::get('_use_ssl') == 'optional') {
         $ssl_mode = RELEASE_SSL;
         if ($get_vars['act'] && $this->_isExistsSSLAction($get_vars['act'])) {
             $ssl_mode = ENFORCE_SSL;
         }
         $query = $this->getRequestUri($ssl_mode, $domain) . $query;
         // SSL 을 사용하지 않을 경우
     } else {
         // SSL상태인데 대상이 SSL이 아닌 경우
         if ($_SERVER['HTTPS'] == 'on') {
             $query = $this->getRequestUri(ENFORCE_SSL, $domain) . $query;
         } else {
             if ($domain) {
                 $query = $this->getRequestUri(FOLLOW_REQUEST_SSL, $domain) . $query;
             } else {
                 $query = getScriptPath() . $query;
             }
         }
     }
     if ($encode) {
         return htmlspecialchars($query);
     }
     return $query;
 }