/**
  * @brief 위젯의 실행 부분
  *
  * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다
  * 결과를 만든후 print가 아니라 return 해주어야 한다
  **/
 function proc($args)
 {
     // 제목
     $title = $args->title;
     // 출력된 목록 수
     $list_count = (int) $args->list_count;
     if (!$list_count) {
         $list_count = 5;
     }
     $args->list_count = $list_count;
     // 중복 허용/ 비허용 체크
     if ($args->allow_repetition != 'Y') {
         $output = executeQueryArray('widgets.planet_document.getUniqueNewestDocuments', $args);
     } else {
         $output = executeQueryArray('widgets.planet_document.getNewestDocuments', $args);
     }
     // 플래닛 글 목록 구함
     $oPlanetModel =& getModel('planet');
     Context::set('planet', $planet = $oPlanetModel->getPlanet());
     if (count($output->data)) {
         foreach ($output->data as $key => $val) {
             $document_srl = $val->document_srl;
             $oPlanet = null;
             $oPlanet = new PlanetItem();
             $oPlanet->setAttribute($val);
             $planet_list[] = $oPlanet;
         }
     } else {
         $planet_list = array();
     }
     Context::set('planet_list', $planet_list);
     // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
     $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
     Context::set('colorset', $args->colorset);
     // 템플릿 파일을 지정
     $tpl_file = 'list';
     if (!$args->thumbnail_width) {
         $args->thumbnail_width = 50;
     }
     if (!$args->thumbnail_height) {
         $args->thumbnail_height = 50;
     }
     $widget_info->thumbnail_width = $args->thumbnail_width;
     $widget_info->thumbnail_height = $args->thumbnail_height;
     $widget_info->domain = Context::getDefaultUrl();
     if (!$args->show_number_of_comments) {
         $args->show_number_of_comments = "N";
     }
     if (!$args->show_author_name) {
         $args->show_author_name = "N";
     }
     $widget_info->show_number_of_comments = $args->show_number_of_comments;
     $widget_info->show_author_name = $args->show_author_name;
     $widget_info->content_cut_size = $args->content_cut_size;
     Context::set('widget_info', $widget_info);
     // 템플릿 컴파일
     $oTemplate =& TemplateHandler::getInstance();
     $output = $oTemplate->compile($tpl_path, $tpl_file);
     return $output;
 }
Example #2
0
 /**
  * @brief 위젯의 실행 부분
  *
  * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다
  * 결과를 만든후 print가 아니라 return 해주어야 한다
  **/
 function proc($args)
 {
     $oModuleModel =& getModel('module');
     // 대상 모듈 (mid_list는 기존 위젯의 호환을 위해서 처리하는 루틴을 유지. module_srl로 위젯에서 변경)
     if ($args->mid_list) {
         $tmp_mid = explode(",", $args->mid_list);
         $args->mid = $tmp_mid[0];
     }
     if ($args->mid) {
         $args->srl = $oModuleModel->getModuleSrlByMid($args->mid);
         if (is_array($args->srl)) {
             $args->srl = $args->srl[0];
         }
     }
     $obj->module_srl = $args->srl;
     // 선택된 모듈이 없으면 실행 취소
     if (!$obj->module_srl) {
         return Context::getLang('msg_not_founded');
     }
     // 모듈의 정보를 구함
     $module_info = $oModuleModel->getModuleInfoByModuleSrl($obj->module_srl);
     // 대상 모듈의 카테고리 파일을 불러옴
     $oDocumentModel =& getModel('document');
     $category_list = $oDocumentModel->getCategoryList($obj->module_srl);
     // 전체 개수를 구함
     $widget_info->total_document_count = $oDocumentModel->getDocumentCount($obj->module_srl);
     $widget_info->module_info = $module_info;
     $widget_info->mid = $module_info->mid;
     $widget_info->document_category = $document_category;
     $widget_info->category_list = $category_list;
     $widget_info->total_title = $args->total_title;
     if ($module_info->site_srl) {
         $site_module_info = Context::get('site_module_info');
         if ($site_module_info->site_srl == $module_info->site_srl) {
             $widget_info->domain = $site_module_info->domain;
         } else {
             $site_info = $oModuleModel->getSiteInfo($module_info->site_srl);
             $widget_info->domain = $site_info->domain;
         }
     } else {
         $widget_info->domain = Context::getDefaultUrl();
     }
     Context::set('colorset', $args->colorset);
     Context::set('widget_info', $widget_info);
     // 템플릿 컴파일
     $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
     $tpl_file = 'category';
     $oTemplate =& TemplateHandler::getInstance();
     return $oTemplate->compile($tpl_path, $tpl_file);
 }
 function setTextyle($module_srl)
 {
     $oTextyleModel =& getModel('textyle');
     $this->oTextyle = $oTextyleModel->getTextyle($module_srl);
     $this->module_srl = $module_srl;
     $this->site_srl = $oTextyle->site_srl;
     $oModuleModel =& getModel('module');
     $this->site_info = $oModuleModel->getSiteInfo($this->site_srl);
     // setting
     $setting->language = $oTextyle->default_language;
     $setting->domain = Context::getDefaultUrl();
     $setting->timezone = $oTextyle->timezone;
     $this->setting = $setting;
 }
 /**
  * 기본설정 페이지
  */
 function dispTextmessageAdminConfig()
 {
     $config = textmessageModel::getConfig();
     $callback_url = Context::getDefaultUrl();
     $callback_url_style = "";
     if ($config->callback_url) {
         $callback_url = $config->callback_url;
     } else {
         $callback_url_style = 'style="color:red;"';
     }
     Context::set('callback_url', $callback_url);
     Context::set('callback_url_style', $callback_url_style);
     Context::set('config', $config);
     // 템플릿 파일 지정
     $this->setTemplateFile('config');
 }
 /**
  * @brief 위젯의 실행 부분
  *
  * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다
  * 결과를 만든후 print가 아니라 return 해주어야 한다
  **/
 function proc($args)
 {
     $oModuleModel =& getModel('module');
     // 대상 모듈 추출
     if ($args->mid_list) {
         $tmp_mid = explode(",", $args->mid_list);
         $args->mid = $tmp_mid[0];
     }
     if ($args->mid) {
         $args->srl = $oModuleModel->getModuleSrlByMid($args->mid);
     }
     // 선택된 모듈이 없으면 실행 취소
     $obj->module_srl = $args->srl;
     if (!$obj->module_srl) {
         return Context::getLang('msg_not_founded');
     }
     // 모듈의 정보를 구함
     $module_info = $oModuleModel->getModuleInfoByModuleSrl($obj->module_srl);
     // document 모듈의 model 객체를 받아서 getMonthlyArchivedList() method를 실행
     $oDocumentModel =& getModel('document');
     $output = $oDocumentModel->getMonthlyArchivedList($obj);
     // 템플릿 파일에서 사용할 변수들을 세팅
     if ($module_info->site_srl) {
         $site_module_info = Context::get('site_module_info');
         if ($site_module_info->site_srl == $module_info->site_srl) {
             $widget_info->domain = $site_module_info->domain;
         } else {
             $site_info = $oModuleModel->getSiteInfo($module_info->site_srl);
             $widget_info->domain = $site_info->domain;
         }
     } else {
         $widget_info->domain = Context::getDefaultUrl();
     }
     $widget_info->module_info = $module_info;
     $widget_info->mid = $module_info->mid;
     $widget_info->archive_list = $output->data;
     Context::set('widget_info', $widget_info);
     // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
     $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
     Context::set('colorset', $args->colorset);
     // 템플릿 파일을 지정
     $tpl_file = 'archive_list';
     // 템플릿 컴파일
     $oTemplate =& TemplateHandler::getInstance();
     return $oTemplate->compile($tpl_path, $tpl_file);
 }
 /**
  * @brief bookmark url return 
  **/
 function getBookmarkUrl($member_srl)
 {
     if (!$member_srl) {
         return '';
     }
     $base_url = Context::getDefaultUrl();
     if (!$base_url) {
         $base_url = Context::getRequestUrl();
     }
     $html_url = str_replace('&', '&', $base_url . '?act=dispMaterialPopup&module=material');
     $js_url = Context::getRequestUri() . 'modules/material/tpl/js/material_grabber.js';
     $auth = $this->getAuthByMemberSrl($member_srl);
     if (!$auth) {
         $oMaterialController =& getController('material');
         $output = $oMaterialController->insertMaterialAuth($member_srl);
         $auth = $this->getAuthByMemberSrl($member_srl);
     }
     $bookmark_url = "javascript:(function(){var w=window,d=document,x=w.open('about:blank','XE_materialGrabWin','width=300,height=0,location=0,scrollbars=0,toolbar=0,status=0,menubar=0,resizable'),s=d.createElement('script');s.setAttribute('src','" . $js_url . "');w.auth='" . $auth . "';w.__xe_root='" . $html_url . "';d.body.appendChild(s);w.setTimeout(function(){x.focus()},100);})();";
     return $bookmark_url;
 }
 public function dispSyndicationAdminConfig()
 {
     $oModuleModel = getModel('module');
     $module_config = $oModuleModel->getModuleConfig('syndication');
     if (!$module_config->target_services) {
         $module_config->target_services = array();
     }
     foreach ($this->services as $key => $val) {
         unset($obj);
         $obj = new stdClass();
         $obj->service = $key;
         $obj->ping = $val;
         $obj->selected = in_array($key, $module_config->target_services) ? true : false;
         $services[] = $obj;
     }
     Context::set('services', $services);
     if (!$module_config->site_url) {
         $module_config->site_url = Context::getDefaultUrl() ? Context::getDefaultUrl() : getFullUrl();
     }
     Context::set('site_url', preg_replace('/^(http|https):\\/\\//i', '', $module_config->site_url));
     if (!$module_config->year) {
         $module_config->year = date("Y");
     }
     Context::set('year', $module_config->year);
     $output = executeQueryArray('syndication.getExceptModules');
     $except_module_list = array();
     if ($output->data && count($output->data) > 0) {
         foreach ($output->data as $item) {
             $except_module_list[] = $item;
         }
     }
     Context::set('except_module', $except_module_list);
     //Security
     $security = new Security();
     $security->encodeHTML('services..service', 'except_module..ping');
     $security->encodeHTML('except_module..mid', 'except_module..browser_title');
     $this->setTemplatePath($this->module_path . 'tpl');
     $this->setTemplateFile('config');
 }
 public function dispSyndicationAdminConfig()
 {
     $oModuleModel = getModel('module');
     $module_config = $oModuleModel->getModuleConfig('syndication');
     $oSyndicationModel = getModel('syndication');
     Context::set('ping_log', $oSyndicationModel->getResentPingLog());
     if (!$module_config->syndication_use) {
         $module_config->syndication_use = 'Y';
     }
     if (!$module_config->site_url) {
         $module_config->site_url = Context::getDefaultUrl() ? Context::getDefaultUrl() : getFullUrl();
     }
     if (!$module_config->year) {
         $module_config->year = date("Y");
     }
     if (!isset($module_config->syndication_password)) {
         $module_config->syndication_password = uniqid();
     }
     Context::set('syndication_use', $module_config->syndication_use);
     Context::set('site_url', preg_replace('/^(http|https):\\/\\//i', '', $module_config->site_url));
     Context::set('year', $module_config->year);
     Context::set('syndication_token', $module_config->syndication_token);
     Context::set('syndication_password', $module_config->syndication_password);
     $output = executeQueryArray('syndication.getExceptModules');
     $except_module_list = array();
     if ($output->data && count($output->data) > 0) {
         foreach ($output->data as $item) {
             $except_module_list[] = $item;
         }
     }
     Context::set('except_module', $except_module_list);
     //Security
     $security = new Security();
     $security->encodeHTML('services..service', 'except_module..ping');
     $security->encodeHTML('except_module..mid', 'except_module..browser_title');
     $this->setTemplatePath($this->module_path . 'tpl');
     $this->setTemplateFile('config');
 }
 /**
  * Initialization. It finds the target module based on module, mid, document_srl, and prepares to execute an action
  * @return boolean true: OK, false: redirected
  * */
 public function init()
 {
     $oModuleModel = getModel('module');
     $site_module_info = Context::get('site_module_info');
     // if success_return_url and error_return_url is incorrect
     $urls = array(Context::get('success_return_url'), Context::get('error_return_url'));
     foreach ($urls as $url) {
         if (empty($url)) {
             continue;
         }
         $urlInfo = parse_url($url);
         $host = $urlInfo['host'];
         $defaultUrl = Context::getDefaultUrl();
         if ($defaultUrl) {
             $defaultUrlInfo = parse_url($defaultUrl);
             $defaultHost = $defaultUrlInfo['host'];
         } else {
             $defaultHost = $_SERVER['HTTP_HOST'];
         }
         if ($host && ($host != $defaultHost && $host != $site_module_info->domain)) {
             throw new Exception('msg_default_url_is_null');
         }
     }
     if (!$this->document_srl && $this->mid && $this->entry) {
         $oDocumentModel = getModel('document');
         $this->document_srl = $oDocumentModel->getDocumentSrlByAlias($this->mid, $this->entry);
         if ($this->document_srl) {
             Context::set('document_srl', $this->document_srl);
         }
     }
     // Get module's information based on document_srl, if it's specified
     if ($this->document_srl) {
         $module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl);
         // If the document does not exist, remove document_srl
         if (!$module_info) {
             unset($this->document_srl);
         } else {
             // If it exists, compare mid based on the module information
             // if mids are not matching, set it as the document's mid
             if (!$this->mid || $this->mid != $module_info->mid) {
                 if (Context::getRequestMethod() == 'GET') {
                     $this->mid = $module_info->mid;
                     header('location:' . getNotEncodedSiteUrl($site_module_info->domain, 'mid', $this->mid, 'document_srl', $this->document_srl));
                     return FALSE;
                 } else {
                     $this->mid = $module_info->mid;
                     Context::set('mid', $this->mid);
                 }
             }
             // if requested module is different from one of the document, remove the module information retrieved based on the document number
             if ($this->module && $module_info->module != $this->module) {
                 unset($module_info);
             }
         }
     }
     // If module_info is not set yet, and there exists mid information, get module information based on the mid
     if (!$module_info && $this->mid) {
         $module_info = $oModuleModel->getModuleInfoByMid($this->mid, $site_module_info->site_srl);
         //if($this->module && $module_info->module != $this->module) unset($module_info);
     }
     // redirect, if module_site_srl and site_srl are different
     if (!$this->module && !$module_info && $site_module_info->site_srl == 0 && $site_module_info->module_site_srl > 0) {
         $site_info = $oModuleModel->getSiteInfo($site_module_info->module_site_srl);
         header("location:" . getNotEncodedSiteUrl($site_info->domain, 'mid', $site_module_info->mid));
         return FALSE;
     }
     // If module_info is not set still, and $module does not exist, find the default module
     if (!$module_info && !$this->module && !$this->mid) {
         $module_info = $site_module_info;
     }
     if (!$module_info && !$this->module && $site_module_info->module_site_srl) {
         $module_info = $site_module_info;
     }
     // redirect, if site_srl of module_info is different from one of site's module_info
     if ($module_info && $module_info->site_srl != $site_module_info->site_srl && !isCrawler()) {
         // If the module is of virtual site
         if ($module_info->site_srl) {
             $site_info = $oModuleModel->getSiteInfo($module_info->site_srl);
             $redirect_url = getNotEncodedSiteUrl($site_info->domain, 'mid', Context::get('mid'), 'document_srl', Context::get('document_srl'), 'module_srl', Context::get('module_srl'), 'entry', Context::get('entry'));
             // If it's called from a virtual site, though it's not a module of the virtual site
         } else {
             if (!Context::getDefaultUrl()) {
                 return Context::getLang('msg_default_url_is_not_defined');
             } else {
                 $redirect_url = getNotEncodedSiteUrl($db_info->default_url, 'mid', Context::get('mid'), 'document_srl', Context::get('document_srl'), 'module_srl', Context::get('module_srl'), 'entry', Context::get('entry'));
             }
         }
         header("Location: {$redirect_url}");
         return FALSE;
     }
     // If module info was set, retrieve variables from the module information
     if ($module_info) {
         $this->module = $module_info->module;
         $this->mid = $module_info->mid;
         $this->module_info = $module_info;
         Context::setBrowserTitle($module_info->browser_title);
         $viewType = Mobile::isFromMobilePhone() ? 'M' : 'P';
         $targetSrl = Mobile::isFromMobilePhone() ? 'mlayout_srl' : 'layout_srl';
         // use the site default layout.
         if ($module_info->{$targetSrl} == -1) {
             $oLayoutAdminModel = getAdminModel('layout');
             $layoutSrl = $oLayoutAdminModel->getSiteDefaultLayout($viewType, $module_info->site_srl);
         } else {
             $layoutSrl = $module_info->{$targetSrl};
         }
         // reset a layout_srl in module_info.
         $module_info->{$targetSrl} = $layoutSrl;
         $part_config = $oModuleModel->getModulePartConfig('layout', $layoutSrl);
         Context::addHtmlHeader($part_config->header_script);
     }
     // Set module and mid into module_info
     if (!isset($this->module_info)) {
         $this->module_info = new stdClass();
     }
     $this->module_info->module = $this->module;
     $this->module_info->mid = $this->mid;
     // Set site_srl add 2011 08 09
     $this->module_info->site_srl = $site_module_info->site_srl;
     // Still no module? it's an error
     if (!$this->module) {
         $this->error = 'msg_module_is_not_exists';
         $this->httpStatusCode = '404';
     }
     // If mid exists, set mid into context
     if ($this->mid) {
         Context::set('mid', $this->mid, TRUE);
     }
     // Call a trigger after moduleHandler init
     $output = self::triggerCall('moduleHandler.init', 'after', $this->module_info);
     if (!$output->toBool()) {
         $this->error = $output->getMessage();
         return TRUE;
     }
     // Set current module info into context
     Context::set('current_module_info', $this->module_info);
     return TRUE;
 }
Example #10
0
 /**
  * Check if a URL is internal to this site.
  * 
  * @param string $url
  * @return bool
  */
 public static function isInternalURL($url)
 {
     $domain = self::getDomainFromURL($url);
     if ($domain === false) {
         return true;
     }
     if ($domain === self::getDomainFromURL('http://' . $_SERVER['HTTP_HOST'])) {
         return true;
     }
     if ($domain === self::getDomainFromURL(\Context::getDefaultUrl())) {
         return true;
     }
     return false;
 }
Example #11
0
 /**
  * @brief Get the defaul mid according to the domain
  */
 function getDefaultMid()
 {
     $default_url = Context::getDefaultUrl();
     if ($default_url && substr_compare($default_url, '/', -1) === 0) {
         $default_url = substr($default_url, 0, -1);
     }
     $request_url = Context::getRequestUri();
     if ($request_url && substr_compare($request_url, '/', -1) === 0) {
         $request_url = substr($request_url, 0, -1);
     }
     $default_url_parse = parse_url($default_url);
     $request_url_parse = parse_url($request_url);
     $vid = Context::get('vid');
     $mid = Context::get('mid');
     // Set up
     $domain = '';
     $site_info = NULL;
     if ($default_url && $default_url_parse['host'] != $request_url_parse['host']) {
         $url_info = parse_url($request_url);
         $hostname = $url_info['host'];
         $path = $url_info['path'];
         if (strlen($path) >= 1 && substr_compare($path, '/', -1) === 0) {
             $path = substr($path, 0, -1);
         }
         $domain = sprintf('%s%s%s', $hostname, $url_info['port'] && $url_info['port'] != 80 ? ':' . $url_info['port'] : '', $path);
     }
     if ($domain === '') {
         if (!$vid) {
             $vid = $mid;
         }
         if ($vid) {
             $domain = $vid;
         }
     }
     $oCacheHandler = CacheHandler::getInstance('object', null, true);
     // If domain is set, look for subsite
     if ($domain !== '') {
         $site_info = false;
         if ($oCacheHandler->isSupport()) {
             $object_key = 'site_info:' . md5($domain);
             $domain_cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
             $site_info = $oCacheHandler->get($domain_cache_key);
         }
         if ($site_info === false) {
             $args = new stdClass();
             $args->domain = $domain;
             $output = executeQuery('module.getSiteInfoByDomain', $args);
             $site_info = $output->data;
             if ($oCacheHandler->isSupport()) {
                 $oCacheHandler->put($domain_cache_key, $site_info);
             }
         }
         if ($site_info && $vid) {
             Context::set('vid', $site_info->domain, true);
             if (strtolower($mid) == strtolower($site_info->domain)) {
                 Context::set('mid', $site_info->mid, true);
             }
         }
         if (!$site_info || !$site_info->domain) {
             $domain = '';
             unset($site_info);
         }
     }
     // If no virtual website was found, get default website
     if ($domain === '') {
         $site_info = false;
         if ($oCacheHandler->isSupport()) {
             $object_key = 'default_site';
             $default_site_cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
             $site_info = $oCacheHandler->get($default_site_cache_key);
         }
         if ($site_info === false) {
             $args = new stdClass();
             $args->site_srl = 0;
             $output = executeQuery('module.getSiteInfo', $args);
             // Update the related informaion if there is no default site info
             if (!$output->data) {
                 // Create a table if sites table doesn't exist
                 $oDB =& DB::getInstance();
                 if (!$oDB->isTableExists('sites')) {
                     $oDB->createTableByXmlFile(_XE_PATH_ . 'modules/module/schemas/sites.xml');
                 }
                 if (!$oDB->isTableExists('sites')) {
                     return;
                 }
                 // Get mid, language
                 $mid_output = $oDB->executeQuery('module.getDefaultMidInfo', $args);
                 $db_info = Context::getDBInfo();
                 $domain = Context::getDefaultUrl();
                 $url_info = parse_url($domain);
                 $domain = $url_info['host'] . (!empty($url_info['port']) && $url_info['port'] != 80 ? ':' . $url_info['port'] : '') . $url_info['path'];
                 $site_args = new stdClass();
                 $site_args->site_srl = 0;
                 $site_args->index_module_srl = $mid_output->data->module_srl;
                 $site_args->domain = $domain;
                 $site_args->default_language = $db_info->lang_type;
                 if ($output->data && !$output->data->index_module_srl) {
                     $output = executeQuery('module.updateSite', $site_args);
                 } else {
                     $output = executeQuery('module.insertSite', $site_args);
                     if (!$output->toBool()) {
                         return $output;
                     }
                 }
                 $output = executeQuery('module.getSiteInfo', $args);
             }
             $site_info = $output->data;
             if ($oCacheHandler->isSupport()) {
                 $oCacheHandler->put($default_site_cache_key, $site_info);
             }
         }
     }
     if (!$site_info->module_srl) {
         return $site_info;
     }
     if (is_array($site_info) && $site_info->data[0]) {
         $site_info = $site_info[0];
     }
     return $this->addModuleExtraVars($site_info);
 }
Example #12
0
 /**
  * Execute update
  * @return Object
  */
 function moduleUpdate()
 {
     $oDB =& DB::getInstance();
     // 2009. 02. 11 menu added to the table site_srl
     if (!$oDB->isColumnExists('menu', 'site_srl')) {
         $oDB->addColumn('menu', 'site_srl', 'number', 11, 0, true);
     }
     // 2012. 02. 01 title index check
     if (!$oDB->isIndexExists("menu", "idx_title")) {
         $oDB->addIndex('menu', 'idx_title', array('title'));
     }
     // 2015. 06. 15 add column desc
     if (!$oDB->isColumnExists('menu_item', 'desc')) {
         $oDB->addColumn('menu_item', 'desc', 'varchar', 250, "", true);
     }
     // 1.7(maserati) shortcut column add and mirgration
     if (!$oDB->isColumnExists('menu_item', 'is_shortcut')) {
         $oDB->addColumn('menu_item', 'is_shortcut', 'char', 1, 'N');
         // check empty url and change shortcut type
         $oMenuAdminModel = getAdminModel('menu');
         $output = $oMenuAdminModel->getMenus();
         if (is_array($output)) {
             $menuItemUniqueList = array();
             $menuItemAllList = array();
             foreach ($output as $key => $value) {
                 unset($args);
                 $args->menu_srl = $value->menu_srl;
                 $output2 = executeQueryArray('menu.getMenuItems', $args);
                 if (is_array($output2->data)) {
                     foreach ($output2->data as $key2 => $value2) {
                         $menuItemAllList[$value2->menu_item_srl] = $value2->url;
                         if (!in_array($value2->url, $menuItemUniqueList)) {
                             $menuItemUniqueList[$value2->menu_item_srl] = $value2->url;
                         }
                         // if url is empty, change type to shortcurt
                         if ($value2->is_shortcut == 'N' && (!$value2->url || strncasecmp('http', $value2->url, 4) === 0)) {
                             $value2->is_shortcut = 'Y';
                             $output3 = executeQuery('menu.updateMenuItem', $value2);
                         }
                     }
                 }
             }
             $oModuleModel = getModel('module');
             // if duplicate reference, change type to shortcut
             $shortcutItemList = array_diff_assoc($menuItemAllList, $menuItemUniqueList);
             foreach ($output as $key => $value) {
                 unset($args);
                 $args->menu_srl = $value->menu_srl;
                 $output2 = executeQueryArray('menu.getMenuItems', $args);
                 if (is_array($output2->data)) {
                     foreach ($output2->data as $key2 => $value2) {
                         if (!empty($value2->url) && strncasecmp('http', $value2->url, 4) !== 0) {
                             $moduleInfo = $oModuleModel->getModuleInfoByMid($value2->url);
                             if (!$moduleInfo->module_srl) {
                                 $value2->url = Context::getDefaultUrl();
                                 if (!$value2->url) {
                                     $value2->url = '#';
                                 }
                                 $value2->is_shortcut = 'Y';
                                 $updateOutput = executeQuery('menu.updateMenuItem', $value2);
                             }
                         }
                         if ($shortcutItemList[$value2->menu_item_srl]) {
                             $value2->is_shortcut = 'Y';
                             $output3 = executeQuery('menu.updateMenuItem', $value2);
                         }
                     }
                 }
             }
         }
         $this->recompileCache();
     }
     // for 1.7.4 update, 기존에 생성된 Temporary menu 항목 정리
     $oMenuAdminModel = getAdminModel('menu');
     $args = new stdClass();
     $args->title = array("Temporary menu");
     $temp_menus = executeQueryArray('menu.getMenuByTitle', $args);
     $args = new stdClass();
     if ($temp_menus->toBool() && count($temp_menus->data)) {
         $oMenuAdminController = getAdminController('menu');
         foreach ($temp_menus->data as $menu) {
             $args->current_menu_srl = $menu->menu_srl;
             $args->menu_srl = $oMenuAdminController->getUnlinkedMenu();
             $output3 = executeQuery('menu.updateMenuItems', $args);
             if ($output3->toBool()) {
                 // delete
                 $oMenuAdminController->deleteMenu($menu->menu_srl);
             }
         }
         $this->recompileCache();
     }
     return new Object(0, 'success_updated');
 }
Example #13
0
 function iconUrlCheck($iconname, $default_icon_name, $default)
 {
     $site_info = Context::get('site_module_info');
     $virtual_site = '';
     if ($site_info->site_srl) {
         $virtual_site = $site_info->site_srl . '/';
     }
     $file_exsit = FileHandler::readFile(_XE_PATH_ . 'files/attach/xeicon/' . $virtual_site . $iconname);
     if (!$file_exsit && $default === true) {
         $icon_url = './modules/admin/tpl/img/' . $default_icon_name;
     } elseif ($file_exsit) {
         $default_url = Context::getDefaultUrl();
         $icon_url = $default_url . 'files/attach/xeicon/' . $virtual_site . $iconname;
     }
     return $icon_url;
 }
Example #14
0
 function setDomain($domain)
 {
     static $default_domain = null;
     if (!$domain) {
         if (is_null($default_domain)) {
             $default_domain = Context::getDefaultUrl();
         }
         $domain = $default_domain;
     }
     $this->domain = $domain;
 }
Example #15
0
 /**
  * Initialization. It finds the target module based on module, mid, document_srl, and prepares to execute an action
  * @return boolean true: OK, false: redirected
  * */
 public function init()
 {
     $oModuleModel = getModel('module');
     $site_module_info = Context::get('site_module_info');
     // if success_return_url and error_return_url is incorrect
     $urls = array(Context::get('success_return_url'), Context::get('error_return_url'));
     foreach ($urls as $url) {
         if (empty($url)) {
             continue;
         }
         if ($host = parse_url($url, PHP_URL_HOST)) {
             $defaultHost = parse_url(Context::getDefaultUrl(), PHP_URL_HOST);
             if ($host !== $defaultHost) {
                 $siteModuleHost = $site_module_info->domain;
                 if (strpos($siteModuleHost, '/') !== false) {
                     $siteModuleHost = parse_url($siteModuleHost, PHP_URL_HOST);
                 }
                 if ($host !== $siteModuleHost) {
                     Context::set('success_return_url', null);
                     Context::set('error_return_url', null);
                 }
             }
         }
     }
     if (!$this->document_srl && $this->mid && $this->entry) {
         $oDocumentModel = getModel('document');
         $this->document_srl = $oDocumentModel->getDocumentSrlByAlias($this->mid, $this->entry);
         if ($this->document_srl) {
             Context::set('document_srl', $this->document_srl);
         }
     }
     // Get module's information based on document_srl, if it's specified
     if ($this->document_srl) {
         $module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl);
         // If the document does not exist, remove document_srl
         if (!$module_info) {
             if (Context::getRequestMethod() == 'GET') {
                 $this->error = 'The document does not exist';
                 $this->httpStatusCode = '404';
                 return true;
             } else {
                 unset($this->document_srl);
             }
         } else {
             // If it exists, compare mid based on the module information
             // if mids are not matching, set it as the document's mid
             if (!$this->mid || $this->mid != $module_info->mid) {
                 if (Context::getRequestMethod() == 'GET') {
                     Context::setCacheControl(0);
                     header('location: ' . getNotEncodedSiteUrl($site_module_info->domain, 'mid', $module_info->mid, 'document_srl', $this->document_srl), true, 301);
                     return false;
                 } else {
                     $this->mid = $module_info->mid;
                     Context::set('mid', $this->mid);
                 }
             }
             // if requested module is different from one of the document, remove the module information retrieved based on the document number
             if ($this->module && $module_info->module != $this->module) {
                 unset($module_info);
             }
             // if the secret document permission does not have, specify HTTP 403
             if (Context::getRequestMethod() == 'GET') {
                 $oDocumentModel = getModel('document');
                 $oDocument = $oDocumentModel->getDocument($this->document_srl);
                 if ($oDocument->isSecret() || $oDocument->get('status') === $oDocumentModel->getConfigStatus('temp')) {
                     if (!$oDocument->isGranted() && !$oDocument->isAccessible()) {
                         $this->httpStatusCode = '403';
                     }
                 }
             }
         }
     }
     // If module_info is not set yet, and there exists mid information, get module information based on the mid
     if (!$module_info && $this->mid) {
         $module_info = $oModuleModel->getModuleInfoByMid($this->mid, $site_module_info->site_srl);
         //if($this->module && $module_info->module != $this->module) unset($module_info);
     }
     // redirect, if module_site_srl and site_srl are different
     if (!$this->module && !$module_info && $site_module_info->site_srl == 0 && $site_module_info->module_site_srl > 0) {
         Context::setCacheControl(0);
         $site_info = $oModuleModel->getSiteInfo($site_module_info->module_site_srl);
         header('location: ' . getNotEncodedSiteUrl($site_info->domain, 'mid', $site_module_info->mid), true, 301);
         return false;
     }
     // If module_info is not set still, and $module does not exist, find the default module
     if (!$module_info && !$this->module && !$this->mid) {
         $module_info = $site_module_info;
     }
     if (!$module_info && !$this->module && $site_module_info->module_site_srl) {
         $module_info = $site_module_info;
     }
     // redirect, if site_srl of module_info is different from one of site's module_info
     if ($module_info && $module_info->site_srl != $site_module_info->site_srl && !Rhymix\Framework\UA::isRobot()) {
         // If the module is of virtual site
         if ($module_info->site_srl) {
             $site_info = $oModuleModel->getSiteInfo($module_info->site_srl);
             $redirect_url = getNotEncodedSiteUrl($site_info->domain, 'mid', Context::get('mid'), 'document_srl', Context::get('document_srl'), 'module_srl', Context::get('module_srl'), 'entry', Context::get('entry'));
             // If it's called from a virtual site, though it's not a module of the virtual site
         } else {
             $redirect_url = getNotEncodedSiteUrl(Context::getDefaultUrl(), 'mid', Context::get('mid'), 'document_srl', Context::get('document_srl'), 'module_srl', Context::get('module_srl'), 'entry', Context::get('entry'));
         }
         Context::setCacheControl(0);
         header("Location: {$redirect_url}", true, 301);
         return false;
     }
     // redirect, if site start module
     if (Context::getRequestMethod() === 'GET' && isset($_GET['mid']) && $_GET['mid'] === $site_module_info->mid && count($_GET) === 1) {
         Context::setCacheControl(0);
         header('location: ' . getNotEncodedSiteUrl($site_module_info->domain), true, 301);
         return false;
     }
     // If module info was set, retrieve variables from the module information
     if ($module_info) {
         $this->module = $module_info->module;
         $this->mid = $module_info->mid;
         $this->module_info = $module_info;
         if ($module_info->mid == $site_module_info->mid) {
             $seo_title = config('seo.main_title') ?: '$SITE_TITLE - $SITE_SUBTITLE';
         } else {
             $seo_title = config('seo.subpage_title') ?: '$SITE_TITLE - $SUBPAGE_TITLE';
         }
         getController('module')->replaceDefinedLangCode($seo_title);
         Context::setBrowserTitle($seo_title, array('site_title' => Context::getSiteTitle(), 'site_subtitle' => Context::getSiteSubtitle(), 'subpage_title' => $module_info->browser_title, 'page' => Context::get('page') ?: 1));
         $module_config = $oModuleModel->getModuleConfig('module');
         if ($module_info->meta_keywords) {
             Context::addMetaTag('keywords', $module_info->meta_keywords);
         } elseif ($module_config->meta_keywords) {
             Context::addMetaTag('keywords', $module_config->meta_keywords);
         }
         if ($module_info->meta_description) {
             Context::addMetaTag('description', $module_info->meta_description);
         } elseif ($module_config->meta_description) {
             Context::addMetaTag('description', $module_config->meta_description);
         }
         $viewType = Mobile::isFromMobilePhone() ? 'M' : 'P';
         $targetSrl = Mobile::isFromMobilePhone() ? 'mlayout_srl' : 'layout_srl';
         // use the site default layout.
         if ($module_info->{$targetSrl} == -1) {
             $oLayoutAdminModel = getAdminModel('layout');
             $layoutSrl = $oLayoutAdminModel->getSiteDefaultLayout($viewType, $module_info->site_srl);
         } else {
             $layoutSrl = $module_info->{$targetSrl};
         }
         // reset a layout_srl in module_info.
         $module_info->{$targetSrl} = $layoutSrl;
         $part_config = $oModuleModel->getModulePartConfig('layout', $layoutSrl);
         Context::addHtmlHeader($part_config->header_script);
     }
     // Set module and mid into module_info
     if (!isset($this->module_info)) {
         $this->module_info = new stdClass();
     }
     $this->module_info->module = $this->module;
     $this->module_info->mid = $this->mid;
     // Set site_srl add 2011 08 09
     $this->module_info->site_srl = $site_module_info->site_srl;
     // Still no module? it's an error
     if (!$this->module) {
         $this->error = 'msg_module_is_not_exists';
         $this->httpStatusCode = '404';
         return true;
     }
     // If mid exists, set mid into context
     if ($this->mid) {
         Context::set('mid', $this->mid, TRUE);
     }
     // Call a trigger after moduleHandler init
     $output = self::triggerCall('moduleHandler.init', 'after', $this->module_info);
     if (!$output->toBool()) {
         $this->error = $output->getMessage();
         return true;
     }
     // Set current module info into context
     Context::set('current_module_info', $this->module_info);
     return true;
 }
Example #16
0
/**
 * Check for CSRF attacks
 * 
 * @return bool
 */
function checkCSRF()
{
    if ($_SERVER['REQUEST_METHOD'] != 'POST') {
        return FALSE;
    }
    $default_url = Context::getDefaultUrl();
    $referer = $_SERVER["HTTP_REFERER"];
    if (strpos($default_url, 'xn--') !== FALSE && strpos($referer, 'xn--') === FALSE) {
        $referer = Context::encodeIdna($referer);
    }
    $default_url = parse_url($default_url);
    $referer = parse_url($referer);
    $oModuleModel = getModel('module');
    $siteModuleInfo = $oModuleModel->getDefaultMid();
    if ($siteModuleInfo->site_srl == 0) {
        if ($default_url['host'] !== $referer['host']) {
            return FALSE;
        }
    } else {
        $virtualSiteInfo = $oModuleModel->getSiteInfo($siteModuleInfo->site_srl);
        if (strtolower($virtualSiteInfo->domain) != strtolower(Context::get('vid')) && !strstr(strtolower($virtualSiteInfo->domain), strtolower($referer['host']))) {
            return FALSE;
        }
    }
    return TRUE;
}
Example #17
0
 /**
  * @brief Execute update
  */
 function moduleUpdate()
 {
     $oDB =& DB::getInstance();
     // 2008. 10. 27 module_part_config Add a multi-index to the table and check all information of module_configg
     if (!$oDB->isIndexExists("module_part_config", "idx_module_part_config")) {
         $oModuleModel = getModel('module');
         $oModuleController = getController('module');
         $modules = $oModuleModel->getModuleList();
         foreach ($modules as $key => $module_info) {
             $module = $module_info->module;
             if (!in_array($module, array('point', 'trackback', 'layout', 'rss', 'file', 'comment', 'editor'))) {
                 continue;
             }
             $config = $oModuleModel->getModuleConfig($module);
             $module_config = null;
             switch ($module) {
                 case 'point':
                     $module_config = $config->module_point;
                     unset($config->module_point);
                     break;
                 case 'trackback':
                 case 'rss':
                 case 'file':
                 case 'comment':
                 case 'editor':
                     $module_config = $config->module_config;
                     unset($config->module_config);
                     if (is_array($module_config) && count($module_config)) {
                         foreach ($module_config as $key => $val) {
                             if (isset($module_config[$key]->module_srl)) {
                                 unset($module_config[$key]->module_srl);
                             }
                         }
                     }
                     break;
                 case 'layout':
                     $tmp = $config->header_script;
                     if (is_array($tmp) && count($tmp)) {
                         foreach ($tmp as $k => $v) {
                             if (!$v && !trim($v)) {
                                 continue;
                             }
                             $module_config[$k]->header_script = $v;
                         }
                     }
                     $config = null;
                     break;
             }
             $oModuleController->insertModuleConfig($module, $config);
             if (is_array($module_config) && count($module_config)) {
                 foreach ($module_config as $module_srl => $module_part_config) {
                     $oModuleController->insertModulePartConfig($module, $module_srl, $module_part_config);
                 }
             }
         }
         $oDB->addIndex("module_part_config", "idx_module_part_config", array("module", "module_srl"));
     }
     // 2008. 11. 13 drop index(unique_mid). Add a column and index on site_srl and mid columns
     if (!$oDB->isIndexExists('modules', "idx_site_mid")) {
         $oDB->dropIndex("modules", "unique_mid", true);
         $oDB->addColumn('modules', 'site_srl', 'number', 11, 0, true);
         $oDB->addIndex("modules", "idx_site_mid", array("site_srl", "mid"), true);
     }
     // document extra vars
     if (!$oDB->isTableExists('document_extra_vars')) {
         $oDB->createTableByXmlFile('./modules/document/schemas/document_extra_vars.xml');
     }
     if (!$oDB->isTableExists('document_extra_keys')) {
         $oDB->createTableByXmlFile('./modules/document/schemas/document_extra_keys.xml');
     }
     // Move permission, skin info, extection info, admin ID of all modules to the table, grants
     if ($oDB->isColumnExists('modules', 'grants')) {
         $oModuleController = getController('module');
         $oDocumentController = getController('document');
         // Get a value of the current system language code
         $lang_code = Context::getLangType();
         // Get module_info of all modules
         $output = executeQueryArray('module.getModuleInfos');
         if (count($output->data)) {
             foreach ($output->data as $module_info) {
                 // Separate information about permission granted to the module, extra vars, skin vars, super-admin's authority
                 $module_srl = trim($module_info->module_srl);
                 // grant an authority
                 $grants = unserialize($module_info->grants);
                 if ($grants) {
                     $oModuleController->insertModuleGrants($module_srl, $grants);
                 }
                 // Insert skin vars
                 $skin_vars = unserialize($module_info->skin_vars);
                 if ($skin_vars) {
                     $oModuleController->insertModuleSkinVars($module_srl, $skin_vars);
                 }
                 // Insert super admin's ID
                 $admin_id = trim($module_info->admin_id);
                 if ($admin_id && $admin_id != 'Array') {
                     $admin_ids = explode(',', $admin_id);
                     if (count($admin_id)) {
                         foreach ($admin_ids as $admin_id) {
                             $oModuleController->insertAdminId($module_srl, $admin_id);
                         }
                     }
                 }
                 // Save extra configurations for each module(column data which doesn't exist in the defaut modules)
                 $extra_vars = unserialize($module_info->extra_vars);
                 $document_extra_keys = null;
                 if ($extra_vars->extra_vars && count($extra_vars->extra_vars)) {
                     $document_extra_keys = $extra_vars->extra_vars;
                     unset($extra_vars->extra_vars);
                 }
                 if ($extra_vars) {
                     $oModuleController->insertModuleExtraVars($module_srl, $extra_vars);
                 }
                 /**
                  * Move document extra vars(it should have conducted in the documents module however extra vars in modules table should be listed up in this module)
                  */
                 // Insert extra vars if planet module is
                 if ($module_info->module == 'planet') {
                     if (!$document_extra_keys || !is_array($document_extra_keys)) {
                         $document_extra_keys = array();
                     }
                     $planet_extra_keys->name = 'postscript';
                     $planet_extra_keys->type = 'text';
                     $planet_extra_keys->is_required = 'N';
                     $planet_extra_keys->search = 'N';
                     $planet_extra_keys->default = '';
                     $planet_extra_keys->desc = '';
                     $document_extra_keys[20] = $planet_extra_keys;
                 }
                 // Register keys for document extra vars
                 if (count($document_extra_keys)) {
                     foreach ($document_extra_keys as $var_idx => $val) {
                         $oDocumentController->insertDocumentExtraKey($module_srl, $var_idx, $val->name, $val->type, $val->is_required, $val->search, $val->default, $val->desc, 'extra_vars' . $var_idx);
                     }
                     // 2009-04-14 Fixed a bug that only 100 extra vars are moved
                     $oDocumentModel = getModel('document');
                     $total_count = $oDocumentModel->getDocumentCount($module_srl);
                     if ($total_count > 0) {
                         $per_page = 100;
                         $total_pages = (int) (($total_count - 1) / $per_page) + 1;
                         // Get extra vars if exist
                         $doc_args = null;
                         $doc_args->module_srl = $module_srl;
                         $doc_args->list_count = $per_page;
                         $doc_args->sort_index = 'list_order';
                         $doc_args->order_type = 'asc';
                         for ($doc_args->page = 1; $doc_args->page <= $total_pages; $doc_args->page++) {
                             $output = executeQueryArray('document.getDocumentList', $doc_args);
                             if ($output->toBool() && $output->data && count($output->data)) {
                                 foreach ($output->data as $document) {
                                     if (!$document) {
                                         continue;
                                     }
                                     foreach ($document as $key => $var) {
                                         if (strpos($key, 'extra_vars') !== 0 || !trim($var) || $var == 'N;') {
                                             continue;
                                         }
                                         $var_idx = str_replace('extra_vars', '', $key);
                                         $oDocumentController->insertDocumentExtraVar($module_srl, $document->document_srl, $var_idx, $var, 'extra_vars' . $var_idx, $lang_code);
                                     }
                                 }
                             }
                         }
                         // for total_pages
                     }
                     // if count
                 }
                 // Additional variables of the module, remove
                 $module_info->grant = null;
                 $module_info->extra_vars = null;
                 $module_info->skin_vars = null;
                 $module_info->admin_id = null;
                 executeQuery('module.updateModule', $module_info);
                 $oCacheHandler = CacheHandler::getInstance('object', null, true);
                 if ($oCacheHandler->isSupport()) {
                     $oCacheHandler->invalidateGroupKey('site_and_module');
                 }
             }
         }
         // Various column drop
         $oDB->dropColumn('modules', 'grants');
         $oDB->dropColumn('modules', 'admin_id');
         $oDB->dropColumn('modules', 'skin_vars');
         $oDB->dropColumn('modules', 'extra_vars');
     }
     // Rights of all modules/skins transferring the information into a table Update grants
     if (!$oDB->isColumnExists('sites', 'default_language')) {
         $oDB->addColumn('sites', 'default_language', 'varchar', 255, 0, false);
     }
     // extra_vars * Remove Column
     for ($i = 1; $i <= 20; $i++) {
         if (!$oDB->isColumnExists("documents", "extra_vars" . $i)) {
             continue;
         }
         $oDB->dropColumn('documents', 'extra_vars' . $i);
     }
     // Enter the main site information sites on the table
     $args = new stdClass();
     $args->site_srl = 0;
     $output = $oDB->executeQuery('module.getSite', $args);
     if (!$output->data) {
         // Basic mid, language Wanted
         $mid_output = $oDB->executeQuery('module.getDefaultMidInfo', $args);
         $domain = Context::getDefaultUrl();
         $url_info = parse_url($domain);
         $domain = $url_info['host'] . (!empty($url_info['port']) && $url_info['port'] != 80 ? ':' . $url_info['port'] : '') . $url_info['path'];
         $site_args->site_srl = 0;
         $site_args->index_module_srl = $mid_output->data->module_srl;
         $site_args->domain = $domain;
         $site_args->default_language = config('locale.default_lang');
         $output = executeQuery('module.insertSite', $site_args);
         if (!$output->toBool()) {
             return $output;
         }
     }
     if ($oDB->isIndexExists('sites', 'idx_domain')) {
         $oDB->dropIndex('sites', 'idx_domain');
     }
     if (!$oDB->isIndexExists('sites', 'unique_domain')) {
         $this->updateForUniqueSiteDomain();
         $oDB->addIndex('sites', 'unique_domain', array('domain'), true);
     }
     if (!$oDB->isColumnExists("modules", "use_mobile")) {
         $oDB->addColumn('modules', 'use_mobile', 'char', 1, 'N');
     }
     if (!$oDB->isColumnExists("modules", "mlayout_srl")) {
         $oDB->addColumn('modules', 'mlayout_srl', 'number', 11, 0);
     }
     if (!$oDB->isColumnExists("modules", "mcontent")) {
         $oDB->addColumn('modules', 'mcontent', 'bigtext');
     }
     if (!$oDB->isColumnExists("modules", "mskin")) {
         $oDB->addColumn('modules', 'mskin', 'varchar', 250);
     }
     if (!$oDB->isColumnExists("modules", "is_skin_fix")) {
         $oDB->addColumn('modules', 'is_skin_fix', 'char', 1, 'N');
         $output = executeQuery('module.updateSkinFixModules');
     }
     if (!$oDB->isColumnExists("module_config", "site_srl")) {
         $oDB->addColumn('module_config', 'site_srl', 'number', 11, 0, true);
     }
     FileHandler::makeDir('./files/ruleset');
     $args->skin = '.';
     $output = executeQueryArray('module.getModuleSkinDotList', $args);
     if ($output->data && count($output->data) > 0) {
         foreach ($output->data as $item) {
             $skin_path = explode('.', $item->skin);
             if (count($skin_path) != 2) {
                 continue;
             }
             if (is_dir(sprintf(_XE_PATH_ . 'themes/%s/modules/%s', $skin_path[0], $skin_path[1]))) {
                 unset($args);
                 $args->skin = $item->skin;
                 $args->new_skin = implode('|@|', $skin_path);
                 $output = executeQuery('module.updateSkinAll', $args);
             }
         }
     }
     // XE 1.7
     if (!$oDB->isColumnExists("modules", "is_mskin_fix")) {
         $oDB->addColumn('modules', 'is_mskin_fix', 'char', 1, 'N');
         $output = executeQuery('module.updateMobileSkinFixModules');
     }
     $oModuleModel = getModel('module');
     $moduleConfig = $oModuleModel->getModuleConfig('module');
     if (!$moduleConfig->isUpdateFixedValue) {
         $output = executeQuery('module.updateSkinFixModules');
         $output = executeQuery('module.updateMobileSkinFixModules');
         $oModuleController = getController('module');
         if (!$moduleConfig) {
             $moduleConfig = new stdClass();
         }
         $moduleConfig->isUpdateFixedValue = TRUE;
         $output = $oModuleController->updateModuleConfig('module', $moduleConfig);
     }
     return new Object(0, 'success_updated');
 }
 /**
  * @brief 아이디 클릭시 나타나는 팝업메뉴에 "플래닛" 메뉴를 추가하는 trigger
  **/
 function triggerMemberMenu(&$obj)
 {
     $member_srl = Context::get('target_srl');
     if (!$member_srl) {
         return new Object();
     }
     $args->member_srl = $member_srl;
     $output = executeQuery('planet.getMemberPlanet', $args);
     if (!$output->toBool() || !$output->data) {
         return new Object();
     }
     $site_module_info = Context::get('site_module_info');
     $default_url = Context::getDefaultUrl();
     if ($site_module_info->site_srl && !$default_url) {
         return new Object();
     }
     $url = getSiteUrl($default_url, '', 'mid', $output->data->mid);
     $oMemberController =& getController('member');
     $oMemberController->addMemberPopupMenu($url, 'planet', './modules/planet/tpl/images/planet.gif');
     return new Object();
 }
 /**
  * Get all act list for admin menu
  * @return void|object
  */
 function procMenuAdminInsertItemForAdminMenu()
 {
     $requestArgs = Context::getRequestVars();
     $tmpMenuName = explode(':', $requestArgs->menu_name);
     $moduleName = $tmpMenuName[0];
     $menuName = $tmpMenuName[1];
     // variable setting
     $logged_info = Context::get('logged_info');
     //$oMenuAdminModel = getAdminModel('menu');
     $oMemberModel = getModel('member');
     //$parentMenuInfo = $oMenuAdminModel->getMenuItemInfo($requestArgs->parent_srl);
     $groupSrlList = $oMemberModel->getMemberGroups($logged_info->member_srl);
     //preg_match('/\{\$lang->menu_gnb\[(.*?)\]\}/i', $parentMenuInfo->name, $m);
     $oModuleModel = getModel('module');
     //$info = $oModuleModel->getModuleInfoXml($moduleName);
     $info = $oModuleModel->getModuleActionXml($moduleName);
     $url = getNotEncodedFullUrl('', 'module', 'admin', 'act', $info->menu->{$menuName}->index);
     if (empty($url)) {
         $url = getNotEncodedFullUrl('', 'module', 'admin', 'act', $info->admin_index_act);
     }
     if (empty($url)) {
         $url = getNotEncodedFullUrl('', 'module', 'admin');
     }
     $args = new stdClass();
     $args->menu_item_srl = !$requestArgs->menu_item_srl ? getNextSequence() : $requestArgs->menu_item_srl;
     $args->parent_srl = $requestArgs->parent_srl;
     $args->menu_srl = $requestArgs->menu_srl;
     $args->name = sprintf('{$lang->menu_gnb_sub[\'%s\']}', $menuName);
     //if now page is https...
     if (strpos($url, 'https') !== false) {
         $args->url = str_replace('https' . substr(Context::getDefaultUrl(), 4), '', $url);
     } else {
         $args->url = str_replace(Context::getDefaultUrl(), '', $url);
     }
     $args->open_window = 'N';
     $args->expand = 'N';
     $args->normal_btn = '';
     $args->hover_btn = '';
     $args->active_btn = '';
     $args->group_srls = implode(',', array_keys($groupSrlList));
     $args->listorder = -1 * $args->menu_item_srl;
     // Check if already exists
     $oMenuModel = getAdminModel('menu');
     $item_info = $oMenuModel->getMenuItemInfo($args->menu_item_srl);
     // Update if exists
     if ($item_info->menu_item_srl == $args->menu_item_srl) {
         $output = $this->_updateMenuItem($args);
         if (!$output->toBool()) {
             return $output;
         }
     } else {
         $args->listorder = -1 * $args->menu_item_srl;
         $output = executeQuery('menu.insertMenuItem', $args);
         if (!$output->toBool()) {
             return $output;
         }
     }
     // Get information of the menu
     $menu_info = $oMenuModel->getMenu($args->menu_srl);
     $menu_title = $menu_info->title;
     // Update the xml file and get its location
     $xml_file = $this->makeXmlFile($args->menu_srl);
     $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminSetup');
     $this->setRedirectUrl($returnUrl);
 }
Example #20
0
 function iconUrlCheck($iconname, $default_icon_name)
 {
     $file_exsit = FileHandler::readFile(_XE_PATH_ . 'files/attach/xeicon/' . $iconname);
     if (!$file_exsit) {
         $icon_url = './modules/admin/tpl/img/' . $default_icon_name;
     } else {
         $default_url = Context::getDefaultUrl();
         $icon_url = $default_url . 'files/attach/xeicon/' . $iconname;
     }
     return $icon_url;
 }
 /**
  * @brief 위젯의 실행 부분
  *
  * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다
  * 결과를 만든후 print가 아니라 return 해주어야 한다
  **/
 function proc($args)
 {
     // 대상 모듈 (mid_list는 기존 위젯의 호환을 위해서 처리하는 루틴을 유지. module_srls로 위젯에서 변경)
     $oModuleModel =& getModel('module');
     if ($args->mid_list) {
         $mid_list = explode(",", $args->mid_list);
         if (count($mid_list)) {
             $module_srls = $oModuleModel->getModuleSrlByMid($mid_list);
             if (count($module_srls)) {
                 $args->module_srls = implode(',', $module_srls);
             } else {
                 $args->module_srls = null;
             }
         }
     }
     // 선택된 모듈이 없으면 실행 취소
     if (!$args->module_srls) {
         return Context::getLang('msg_not_founded');
     }
     // 정렬 대상
     $widget_info->order_target = $args->order_target;
     if (!in_array($widget_info->order_target, array('list_order', 'update_order'))) {
         $widget_info->order_target = 'list_order';
     }
     // 정렬 순서
     $widget_info->order_type = $args->order_type;
     if (!in_array($widget_info->order_type, array('asc', 'desc'))) {
         $widget_info->order_type = 'asc';
     }
     // 글자 제목 길이
     $widget_info->subject_cut_size = (int) $args->subject_cut_size;
     // 목록 수
     $widget_info->list_count = $args->list_count;
     if (!$widget_info->list_count) {
         $widget_info->list_count = 5;
     }
     // 썸네일 생성 방법
     $widget_info->thumbnail_type = $args->thumbnail_type;
     if (!$widget_info->thumbnail_type) {
         $widget_info->thumbnail_type = 'crop';
     }
     // 썸네일 가로 크기
     $widget_info->thumbnail_width = (int) $args->thumbnail_width;
     if (!$widget_info->thumbnail_width) {
         $widget_info->thumbnail_width = 100;
     }
     // 썸네일 세로 크기
     $widget_info->thumbnail_height = (int) $args->thumbnail_height;
     if (!$widget_info->thumbnail_height) {
         $widget_info->thumbnail_height = 100;
     }
     // 노출 여부 체크
     if ($args->display_author != 'Y') {
         $widget_info->display_author = 'N';
     } else {
         $widget_info->display_author = 'Y';
     }
     if ($args->display_regdate != 'Y') {
         $widget_info->display_regdate = 'N';
     } else {
         $widget_info->display_regdate = 'Y';
     }
     if ($args->display_readed_count != 'Y') {
         $widget_info->display_readed_count = 'N';
     } else {
         $widget_info->display_readed_count = 'Y';
     }
     if ($args->display_voted_count != 'Y') {
         $widget_info->display_voted_count = 'N';
     } else {
         $widget_info->display_voted_count = 'Y';
     }
     // 최근 글 표시 시간
     $widget_info->duration_new = (int) $args->duration_new * 60 * 60;
     if (!$widget_info->duration_new) {
         $widget_info->duration_new = 12 * 60 * 60;
     }
     $oModuleModel =& getModel('module');
     $oDocumentModel =& getModel('document');
     // 모듈 목록을 구함
     $module_list = $oModuleModel->getModulesInfo($args->module_srls);
     if (!count($module_list)) {
         return Context::getLang('msg_not_founded');
     }
     // 각 모듈별로 먼저 정리 시작
     $site_domain = array(0 => Context::getDefaultUrl());
     $site_module_info = Context::get('site_module_info');
     if ($site_module_info) {
         $site_domain[$site_module_info->site_srl] = $site_module_info->domain;
     }
     foreach ($module_list as $key => $val) {
         if (!$site_domain[$val->site_srl]) {
             $site_info = $oModuleModel->getSiteInfo($val->site_srl);
             $site_domain[$site_info->site_srl] = $site_info->domain;
         }
         $module_list[$key]->domain = $site_domain[$val->site_srl];
         $mid_module_list[$val->module_srl] = $key;
     }
     $module_srl = explode(',', $args->module_srls);
     for ($i = 0; $i < count($module_srl); $i++) {
         $tab_list[$mid_module_list[$module_srl[$i]]] = $module_list[$mid_module_list[$module_srl[$i]]];
     }
     // 각 모듈에 해당하는 문서들을 구함
     $obj = null;
     $obj->list_count = $widget_info->list_count;
     $obj->sort_index = $widget_info->order_target;
     $obj->order_type = $widget_info->order_type == "desc" ? "asc" : "desc";
     if (is_array($tab_list)) {
         foreach ($tab_list as $mid => $module) {
             $obj->module_srl = $module->module_srl;
             $output = executeQueryArray("widgets.tab_newest_document.getNewestDocuments", $obj);
             unset($data);
             if ($output->data && count($output->data)) {
                 foreach ($output->data as $k => $v) {
                     $oDocument = null;
                     $oDocument = $oDocumentModel->getDocument();
                     $oDocument->setAttribute($v, false);
                     $GLOBALS['XE_DOCUMENT_LIST'][$oDocument->document_srl] = $oDocument;
                     $tab_list[$mid]->document_list[] = $oDocument;
                 }
                 $oDocumentModel->setToAllDocumentExtraVars();
             } else {
                 $tab_list[$mid]->document_list = array();
             }
         }
     }
     Context::set('widget_info', $widget_info);
     Context::set('tab_list', $tab_list);
     // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
     $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
     Context::set('colorset', $args->colorset);
     // 템플릿 파일을 지정
     $tpl_file = 'list';
     // 템플릿 컴파일
     $oTemplate =& TemplateHandler::getInstance();
     return $oTemplate->compile($tpl_path, $tpl_file);
 }
Example #22
0
 /**
  * @brief 업데이트 실행
  **/
 function moduleUpdate()
 {
     $oDB =& DB::getInstance();
     // 2008. 10. 27 module_part_config 테이블의 결합 인덱스 추가하고 기존에 module_config에 몰려 있던 모든 정보를 재점검
     if (!$oDB->isIndexExists("module_part_config", "idx_module_part_config")) {
         $oModuleModel =& getModel('module');
         $oModuleController =& getController('module');
         $modules = $oModuleModel->getModuleList();
         foreach ($modules as $key => $module_info) {
             $module = $module_info->module;
             if (!in_array($module, array('point', 'trackback', 'layout', 'rss', 'file', 'comment', 'editor'))) {
                 continue;
             }
             $config = $oModuleModel->getModuleConfig($module);
             $module_config = null;
             switch ($module) {
                 case 'point':
                     $module_config = $config->module_point;
                     unset($config->module_point);
                     break;
                 case 'trackback':
                 case 'rss':
                 case 'file':
                 case 'comment':
                 case 'editor':
                     $module_config = $config->module_config;
                     unset($config->module_config);
                     if (is_array($module_config) && count($module_config)) {
                         foreach ($module_config as $key => $val) {
                             if (isset($module_config[$key]->module_srl)) {
                                 unset($module_config[$key]->module_srl);
                             }
                         }
                     }
                     break;
                 case 'layout':
                     $tmp = $config->header_script;
                     if (is_array($tmp) && count($tmp)) {
                         foreach ($tmp as $k => $v) {
                             if (!$v && !trim($v)) {
                                 continue;
                             }
                             $module_config[$k]->header_script = $v;
                         }
                     }
                     $config = null;
                     break;
             }
             $oModuleController->insertModuleConfig($module, $config);
             if (is_array($module_config) && count($module_config)) {
                 foreach ($module_config as $module_srl => $module_part_config) {
                     $oModuleController->insertModulePartConfig($module, $module_srl, $module_part_config);
                 }
             }
         }
         $oDB->addIndex("module_part_config", "idx_module_part_config", array("module", "module_srl"));
     }
     // 2008. 11. 13 modules 의 mid를 unique를 없애고 site_srl을 추가 후에 site_srl + mid unique index
     if (!$oDB->isIndexExists('modules', "idx_site_mid")) {
         $oDB->dropIndex("modules", "unique_mid", true);
         $oDB->addColumn('modules', 'site_srl', 'number', 11, 0, true);
         $oDB->addIndex("modules", "idx_site_mid", array("site_srl", "mid"), true);
     }
     // document 확장변수의 확장을 위한 처리
     if (!$oDB->isTableExists('document_extra_vars')) {
         $oDB->createTableByXmlFile('./modules/document/schemas/document_extra_vars.xml');
     }
     if (!$oDB->isTableExists('document_extra_keys')) {
         $oDB->createTableByXmlFile('./modules/document/schemas/document_extra_keys.xml');
     }
     // 모든 모듈의 권한, 스킨정보, 확장정보, 관리자 아이디를 grants 테이블로 이전시키는 업데이트
     if ($oDB->isColumnExists('modules', 'grants')) {
         $oModuleController =& getController('module');
         $oDocumentController =& getController('document');
         // 현재 시스템 언어 코드값을 가져옴
         $lang_code = Context::getLangType();
         // 모든 모듈의 module_info를 가져옴
         $output = executeQueryArray('module.getModuleInfos');
         if (count($output->data)) {
             foreach ($output->data as $module_info) {
                 // 모듈들의 권한/ 확장변수(게시글 확장 포함)/ 스킨 변수/ 최고관리권한 정보 분리
                 $module_srl = trim($module_info->module_srl);
                 // 권한 등록
                 $grants = unserialize($module_info->grants);
                 if ($grants) {
                     $oModuleController->insertModuleGrants($module_srl, $grants);
                 }
                 // 스킨 변수 등록
                 $skin_vars = unserialize($module_info->skin_vars);
                 if ($skin_vars) {
                     $oModuleController->insertModuleSkinVars($module_srl, $skin_vars);
                 }
                 // 최고 관리자 아이디 등록
                 $admin_id = trim($module_info->admin_id);
                 if ($admin_id && $admin_id != 'Array') {
                     $admin_ids = explode(',', $admin_id);
                     if (count($admin_id)) {
                         foreach ($admin_ids as $admin_id) {
                             $oModuleController->insertAdminId($module_srl, $admin_id);
                         }
                     }
                 }
                 // 모듈별 추가 설정 저장 (기본 modules에 없던 컬럼 데이터)
                 $extra_vars = unserialize($module_info->extra_vars);
                 $document_extra_keys = null;
                 if ($extra_vars->extra_vars && count($extra_vars->extra_vars)) {
                     $document_extra_keys = $extra_vars->extra_vars;
                     unset($extra_vars->extra_vars);
                 }
                 if ($extra_vars) {
                     $oModuleController->insertModuleExtraVars($module_srl, $extra_vars);
                 }
                 /**
                  * 게시글 확장변수 이동 (documents모듈에서 해야 하지만 modules 테이블의 추가 변수들이 정리되기에 여기서 함)
                  **/
                 // 플래닛모듈의 경우 직접 추가 변수 입력
                 if ($module_info->module == 'planet') {
                     if (!$document_extra_keys || !is_array($document_extra_keys)) {
                         $document_extra_keys = array();
                     }
                     $planet_extra_keys->name = 'postscript';
                     $planet_extra_keys->type = 'text';
                     $planet_extra_keys->is_required = 'N';
                     $planet_extra_keys->search = 'N';
                     $planet_extra_keys->default = '';
                     $planet_extra_keys->desc = '';
                     $document_extra_keys[20] = $planet_extra_keys;
                 }
                 // 게시글 확장변수 키 등록
                 if (count($document_extra_keys)) {
                     foreach ($document_extra_keys as $var_idx => $val) {
                         $oDocumentController->insertDocumentExtraKey($module_srl, $var_idx, $val->name, $val->type, $val->is_required, $val->search, $val->default, $val->desc, 'extra_vars' . $var_idx);
                     }
                     // 2009-04-14 #17923809 게시물 100개의 확장 변수만 이전되는 문제점 수정
                     $oDocumentModel =& getModel('document');
                     $total_count = $oDocumentModel->getDocumentCount($module_srl);
                     if ($total_count > 0) {
                         $per_page = 100;
                         $total_pages = (int) (($total_count - 1) / $per_page) + 1;
                         // 확장변수가 존재하면 확장변수 가져오기
                         $doc_args = null;
                         $doc_args->module_srl = $module_srl;
                         $doc_args->list_count = $per_page;
                         $doc_args->sort_index = 'list_order';
                         $doc_args->order_type = 'asc';
                         for ($doc_args->page = 1; $doc_args->page <= $total_pages; $doc_args->page++) {
                             $output = executeQueryArray('document.getDocumentList', $doc_args);
                             if ($output->toBool() && $output->data && count($output->data)) {
                                 foreach ($output->data as $document) {
                                     if (!$document) {
                                         continue;
                                     }
                                     foreach ($document as $key => $var) {
                                         if (strpos($key, 'extra_vars') !== 0 || !trim($var) || $var == 'N;') {
                                             continue;
                                         }
                                         $var_idx = str_replace('extra_vars', '', $key);
                                         $oDocumentController->insertDocumentExtraVar($module_srl, $document->document_srl, $var_idx, $var, 'extra_vars' . $var_idx, $lang_code);
                                     }
                                 }
                             }
                         }
                         // for total_pages
                     }
                     // if count
                 }
                 // 해당 모듈들의 추가 변수들 제거
                 $module_info->grant = null;
                 $module_info->extra_vars = null;
                 $module_info->skin_vars = null;
                 $module_info->admin_id = null;
                 executeQuery('module.updateModule', $module_info);
             }
         }
         // 각종 column drop
         $oDB->dropColumn('modules', 'grants');
         $oDB->dropColumn('modules', 'admin_id');
         $oDB->dropColumn('modules', 'skin_vars');
         $oDB->dropColumn('modules', 'extra_vars');
     }
     // 모든 모듈의 권한/스킨정보를 grants 테이블로 이전시키는 업데이트
     if (!$oDB->isColumnExists('sites', 'default_language')) {
         $oDB->addColumn('sites', 'default_language', 'varchar', 255, 0, false);
     }
     // extra_vars* 컬럼 제거
     for ($i = 1; $i <= 20; $i++) {
         if (!$oDB->isColumnExists("documents", "extra_vars" . $i)) {
             continue;
         }
         $oDB->dropColumn('documents', 'extra_vars' . $i);
     }
     // sites 테이블에 기본 사이트 정보 입력
     $args->site_srl = 0;
     $output = $oDB->executeQuery('module.getSite', $args);
     if (!$output->data) {
         // 기본 mid, 언어 구함
         $mid_output = $oDB->executeQuery('module.getDefaultMidInfo', $args);
         $db_info = Context::getDBInfo();
         $domain = Context::getDefaultUrl();
         $url_info = parse_url($domain);
         $domain = $url_info['host'] . (!empty($url_info['port']) && $url_info['port'] != 80 ? ':' . $url_info['port'] : '') . $url_info['path'];
         $site_args->site_srl = 0;
         $site_args->index_module_srl = $mid_output->data->module_srl;
         $site_args->domain = $domain;
         $site_args->default_language = $db_info->lang_type;
         $output = executeQuery('module.insertSite', $site_args);
         if (!$output->toBool()) {
             return $output;
         }
     }
     return new Object(0, 'success_updated');
 }
Example #23
0
 function __construct()
 {
     Context::set('xe_default_url', Context::getDefaultUrl());
 }
 public function procMemberAdminInsertSignupConfig()
 {
     $oMemberModel = getModel('member');
     $oModuleController = getController('module');
     $args = Context::gets('limit_day', 'limit_day_description', 'agreement', 'redirect_url', 'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'image_name', 'image_name_max_width', 'image_name_max_height', 'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'signature_editor_skin', 'sel_editor_colorset');
     $list_order = Context::get('list_order');
     $usable_list = Context::get('usable_list');
     $all_args = Context::getRequestVars();
     $args->limit_day = (int) $args->limit_day;
     if (!trim(strip_tags($args->agreement))) {
         $agreement_file = _XE_PATH_ . 'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
         FileHandler::removeFile($agreement_file);
         $args->agreement = NULL;
     }
     if ($args->redirect_url) {
         $oModuleModel = getModel('module');
         $redirectModuleInfo = $oModuleModel->getModuleInfoByModuleSrl($args->redirect_url, array('mid'));
         if (!$redirectModuleInfo) {
             return new Object('-1', 'msg_exist_selected_module');
         }
         $args->redirect_url = Context::getDefaultUrl() . $redirectModuleInfo->mid;
     }
     $args->profile_image = $args->profile_image ? 'Y' : 'N';
     $args->image_name = $args->image_name ? 'Y' : 'N';
     $args->image_mark = $args->image_mark ? 'Y' : 'N';
     $args->signature = $args->signature != 'Y' ? 'N' : 'Y';
     $args->identifier = $all_args->identifier;
     // set default
     $all_args->is_nick_name_public = 'Y';
     $all_args->is_find_account_question_public = 'N';
     // signupForm
     global $lang;
     $signupForm = array();
     $items = array('user_id', 'password', 'user_name', 'nick_name', 'email_address', 'find_account_question', 'homepage', 'blog', 'birthday', 'signature', 'profile_image', 'image_name', 'image_mark', 'profile_image_max_width', 'profile_image_max_height', 'image_name_max_width', 'image_name_max_height', 'image_mark_max_width', 'image_mark_max_height');
     $mustRequireds = array('email_address', 'nick_name', 'password', 'find_account_question');
     $extendItems = $oMemberModel->getJoinFormList();
     foreach ($list_order as $key) {
         $signupItem = new stdClass();
         $signupItem->isIdentifier = $key == $all_args->identifier;
         $signupItem->isDefaultForm = in_array($key, $items);
         $signupItem->name = $key;
         if (!in_array($key, $items)) {
             $signupItem->title = $key;
         } else {
             $signupItem->title = $lang->{$key};
         }
         $signupItem->mustRequired = in_array($key, $mustRequireds);
         $signupItem->imageType = strpos($key, 'image') !== false;
         $signupItem->required = $all_args->{$key} == 'required' || $signupItem->mustRequired || $signupItem->isIdentifier;
         $signupItem->isUse = in_array($key, $usable_list) || $signupItem->required;
         $signupItem->isPublic = $all_args->{'is_' . $key . '_public'} == 'Y' && $signupItem->isUse ? 'Y' : 'N';
         if ($signupItem->imageType) {
             $signupItem->max_width = $all_args->{$key . '_max_width'};
             $signupItem->max_height = $all_args->{$key . '_max_height'};
         }
         // set extends form
         if (!$signupItem->isDefaultForm) {
             $extendItem = $extendItems[$all_args->{$key . '_member_join_form_srl'}];
             $signupItem->type = $extendItem->column_type;
             $signupItem->member_join_form_srl = $extendItem->member_join_form_srl;
             $signupItem->title = $extendItem->column_title;
             $signupItem->description = $extendItem->description;
             // check usable value change, required/option
             if ($signupItem->isUse != ($extendItem->is_active == 'Y') || $signupItem->required != ($extendItem->required == 'Y')) {
                 unset($update_args);
                 $update_args = new stdClass();
                 $update_args->member_join_form_srl = $extendItem->member_join_form_srl;
                 $update_args->is_active = $signupItem->isUse ? 'Y' : 'N';
                 $update_args->required = $signupItem->required ? 'Y' : 'N';
                 $update_output = executeQuery('member.updateJoinForm', $update_args);
             }
             unset($extendItem);
         }
         $signupForm[] = $signupItem;
     }
     $args->signupForm = $signupForm;
     // create Ruleset
     $this->_createSignupRuleset($signupForm, $args->agreement);
     $this->_createLoginRuleset($args->identifier);
     $this->_createFindAccountByQuestion($args->identifier);
     // check agreement value exist
     if ($args->agreement) {
         $agreement_file = _XE_PATH_ . 'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
         $output = FileHandler::writeFile($agreement_file, $args->agreement);
         unset($args->agreement);
     }
     $output = $oModuleController->updateModuleConfig('member', $args);
     // default setting end
     $this->setMessage('success_updated');
     $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminSignUpConfig');
     $this->setRedirectUrl($returnUrl);
 }
Example #25
0
function checkCSRF()
{
    if ($_SERVER['REQUEST_METHOD'] != 'POST') {
        return FALSE;
    }
    $default_url = Context::getDefaultUrl();
    $referer = $_SERVER["HTTP_REFERER"];
    if (strpos($default_url, 'xn--') !== FALSE && strpos($referer, 'xn--') === FALSE) {
        require_once _XE_PATH_ . 'libs/idna_convert/idna_convert.class.php';
        $IDN = new idna_convert(array('idn_version' => 2008));
        $referer = $IDN->encode($referer);
    }
    $default_url = parse_url($default_url);
    $referer = parse_url($referer);
    $oModuleModel = getModel('module');
    $siteModuleInfo = $oModuleModel->getDefaultMid();
    if ($siteModuleInfo->site_srl == 0) {
        if ($default_url['host'] !== $referer['host']) {
            return FALSE;
        }
    } else {
        $virtualSiteInfo = $oModuleModel->getSiteInfo($siteModuleInfo->site_srl);
        if (strtolower($virtualSiteInfo->domain) != strtolower(Context::get('vid')) && !strstr(strtolower($virtualSiteInfo->domain), strtolower($referer['host']))) {
            return FALSE;
        }
    }
    return TRUE;
}
Example #26
0
 /**
  * @brief domain에 따른 기본 mid를 구함
  **/
 function getDefaultMid()
 {
     $default_url = preg_replace('/\\/$/', '', Context::getDefaultUrl());
     $request_url = preg_replace('/\\/$/', '', Context::getRequestUri());
     $vid = Context::get('vid');
     $mid = Context::get('mid');
     // 기본 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 (!$vid) {
             $vid = $mid;
         }
         if ($vid) {
             $vid_args->domain = $vid;
             $output = executeQuery('module.getSiteInfoByDomain', $vid_args);
             if ($output->toBool() && $output->data) {
                 Context::set('vid', $output->data->domain, true);
                 if ($mid == $output->data->domain) {
                     Context::set('mid', $output->data->mid, true);
                 }
             }
         }
     }
     // 가상 사이트가 아닐 경우 기본 사이트 정보를 구함
     if (!$output->data) {
         $args->site_srl = 0;
         $output = executeQuery('module.getSiteInfo', $args);
         // 기본 사이트 정보가 없으면 관련된 정보를 갱신
         if (!$output->data) {
             // sites 테이블이 없을 경우 생성
             $oDB =& DB::getInstance();
             if (!$oDB->isTableExists('sites')) {
                 $oDB->createTableByXmlFile(_XE_PATH_ . 'modules/module/schemas/sites.xml');
             }
             if (!$oDB->isTableExists('sites')) {
                 return;
             }
             // 기본 mid, 언어 구함
             $mid_output = $oDB->executeQuery('module.getDefaultMidInfo', $args);
             $db_info = Context::getDBInfo();
             $domain = Context::getDefaultUrl();
             $url_info = parse_url($domain);
             $domain = $url_info['host'] . (!empty($url_info['port']) && $url_info['port'] != 80 ? ':' . $url_info['port'] : '') . $url_info['path'];
             $site_args->site_srl = 0;
             $site_args->index_module_srl = $mid_output->data->module_srl;
             $site_args->domain = $domain;
             $site_args->default_language = $db_info->lang_type;
             if ($output->data && !$output->data->index_module_srl) {
                 $output = executeQuery('module.updateSite', $site_args);
             } else {
                 $output = executeQuery('module.insertSite', $site_args);
                 if (!$output->toBool()) {
                     return $output;
                 }
             }
             $output = executeQuery('module.getSiteInfo', $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];
     }
     return $this->addModuleExtraVars($module_info);
 }
var waiting_message = "<?php 
echo $__Context->lang->msg_call_server;
?>
";
var ssl_actions = new Array(<?php 
if (count($__Context->ssl_actions)) {
    ?>
"<?php 
    echo implode('","', array_keys($__Context->ssl_actions));
    ?>
"<?php 
}
?>
);
var default_url = "<?php 
echo Context::getDefaultUrl();
?>
";
<?php 
if (Context::get('_http_port')) {
    ?>
var http_port = <?php 
    echo Context::get("_http_port");
    ?>
;<?php 
}
if (Context::get('_https_port')) {
    ?>
var https_port = <?php 
    echo Context::get("_https_port");
    ?>
Example #28
0
 /**
  * @brief 위젯의 실행 부분
  *
  * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다
  * 결과를 만든후 print가 아니라 return 해주어야 한다
  **/
 function proc($args)
 {
     // 대상 모듈 (mid_list는 기존 위젯의 호환을 위해서 처리하는 루틴을 유지. module_srls로 위젯에서 변경)
     $oModuleModel =& getModel('module');
     if ($args->mid_list) {
         $mid_list = explode(",", $args->mid_list);
         if (count($mid_list)) {
             $module_srls = $oModuleModel->getModuleSrlByMid($mid_list);
             if (count($module_srls)) {
                 $args->module_srls = implode(',', $module_srls);
             } else {
                 $args->module_srls = null;
             }
         }
     }
     // 선택된 모듈이 없으면 실행 취소
     if (!$args->module_srls) {
         return Context::getLang('msg_not_founded');
     }
     // 제목
     $title = $args->title;
     // 최근 글 표시 시간
     $duration_new = $args->duration_new;
     if (!$duration_new) {
         $duration_new = 12;
     }
     // 제목 길이 자르기
     $subject_cut_size = $args->subject_cut_size;
     if (!$subject_cut_size) {
         $subject_cut_size = 0;
     }
     // 대상 모듈 목록을 구함
     $module_list = $oModuleModel->getModulesInfo($args->module_srls);
     if (!count($module_list)) {
         return Context::getLang('msg_not_founded');
     }
     // 각 모듈별로 먼저 정리 시작
     $site_domain = array(0 => Context::getDefaultUrl());
     $site_module_info = Context::get('site_module_info');
     if ($site_module_info) {
         $site_domain[$site_module_info->site_srl] = $site_module_info->domain;
     }
     $module_srls = array();
     foreach ($module_list as $module) {
         $modules[$module->module_srl]->title = $module->browser_title;
         $modules[$module->module_srl]->mid = $module->mid;
         $modules[$module->module_srl]->description = $module->description;
         $modules[$module->module_srl]->document_count = 0;
         $modules[$module->module_srl]->comment_count = 0;
         if (!$site_domain[$module->site_srl]) {
             $site_info = $oModuleModel->getSiteInfo($module->site_srl);
             $site_domain[$site_info->site_srl] = $site_info->domain;
         }
         $modules[$module->module_srl]->domain = $site_domain[$module->site_srl];
         // 최근 등록된 댓글의 정보
         $last_comment = null;
         $last_args = null;
         $last_args->module_srl = $module->module_srl;
         $output = executeQuery('widgets.forum.getLatestComments', $last_args);
         if ($output->data && is_array($output->data)) {
             $last_comment = array_pop($output->data);
             $last_comment->content_type = 'comment';
         }
         // 최근 등록된 글의 정보
         $last_document = null;
         $last_args = null;
         $last_args->module_srl = $module->module_srl;
         $output = executeQuery('widgets.forum.getLatestDocuments', $last_args);
         if ($output->data && is_array($output->data)) {
             $last_document = array_pop($output->data);
             $last_document->content_type = 'document';
         }
         $last_item = null;
         if ($last_comment && $last_document) {
             if ($last_document->regdate > $last_comment->regdate) {
                 $last_item = $last_document;
             } else {
                 $last_item = $last_comment;
             }
         } elseif ($last_document) {
             $last_item = $last_document;
         } elseif ($last_comment) {
             $last_item = $last_comment;
         }
         $modules[$module->module_srl]->last_item = $last_item;
         if ($last_item && $last_item->regdate > date("YmdHis", time() - $duration_new * 60 * 60)) {
             $modules[$module->module_srl]->is_new = true;
         }
         $module_srls[] = $module->module_srl;
     }
     // 각 모듈별 전체글을 구함
     if ($module_srls) {
         $total_documents_args->module_srls = implode(',', $module_srls);
     }
     $total_documents_output = executeQueryArray('widgets.forum.getTotalDocuments', $total_documents_args);
     if ($total_documents_output->data) {
         foreach ($total_documents_output->data as $val) {
             $modules[$val->module_srl]->document_count = $val->count;
         }
     }
     // 각 모듈별 댓글 수를 구함
     $total_comments_args->module_srls = implode(',', $module_srls);
     $total_comments_output = executeQueryArray('widgets.forum.getTotalComments', $total_comments_args);
     if ($total_comments_output->data) {
         foreach ($total_comments_output->data as $val) {
             $modules[$val->module_srl]->comment_count = $val->count;
         }
     }
     $widget_info->title = $title;
     $widget_info->modules = $modules;
     $widget_info->subject_cut_size = $subject_cut_size;
     $widget_info->duration_new = $duration_new * 60 * 60;
     Context::set('widget_info', $widget_info);
     // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
     $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
     Context::set('colorset', $args->colorset);
     // 템플릿 파일을 지정
     $tpl_file = 'list';
     // 템플릿 컴파일
     $oTemplate =& TemplateHandler::getInstance();
     $output = $oTemplate->compile($tpl_path, $tpl_file);
     return $output;
 }
Example #29
0
 public function dispMemberAdminSignUpConfig()
 {
     $config = $this->memberConfig;
     if ($config->redirect_url) {
         $mid = str_ireplace(Context::getDefaultUrl(), '', $config->redirect_url);
         $siteModuleInfo = Context::get('site_module_info');
         $oModuleModel = getModel('module');
         $moduleInfo = $oModuleModel->getModuleInfoByMid($mid, (int) $siteModuleInfo->site_srl);
         $config->redirect_url = $moduleInfo->module_srl;
         Context::set('config', $config);
     }
     $oMemberModel = getModel('member');
     // retrieve skins of editor
     $oEditorModel = getModel('editor');
     Context::set('editor_skin_list', $oEditorModel->getEditorSkinList());
     // get an editor
     $option = new stdClass();
     $option->primary_key_name = 'temp_srl';
     $option->content_key_name = 'agreement';
     $option->allow_fileupload = false;
     $option->enable_autosave = false;
     $option->enable_default_component = true;
     $option->enable_component = true;
     $option->resizable = true;
     $option->height = 300;
     $editor = $oEditorModel->getEditor(0, $option);
     Context::set('editor', $editor);
     $signupForm = $config->signupForm;
     foreach ($signupForm as $val) {
         if ($val->name == 'user_id') {
             $userIdInfo = $val;
             break;
         }
     }
     $oSecurity = new Security();
     if ($userIdInfo->isUse) {
         // get denied ID list
         Context::set('useUserID', 1);
         $denied_list = $oMemberModel->getDeniedIDs();
         Context::set('deniedIDs', $denied_list);
         $oSecurity->encodeHTML('deniedIDs..user_id');
     }
     // get denied NickName List
     $deniedNickNames = $oMemberModel->getDeniedNickNames();
     Context::set('deniedNickNames', $deniedNickNames);
     $oSecurity->encodeHTML('deniedNickNames..nick_name');
     $this->setTemplateFile('signup_config');
 }
Example #30
0
 /**
  * @brief Get the defaul mid according to the domain
  **/
 function getDefaultMid()
 {
     $default_url = preg_replace('/\\/$/', '', Context::getDefaultUrl());
     $request_url = preg_replace('/\\/$/', '', Context::getRequestUri());
     $default_url_parse = parse_url($default_url);
     $request_url_parse = parse_url($request_url);
     $vid = Context::get('vid');
     $mid = Context::get('mid');
     // Set up
     // test.xe.com
     $domain = '';
     if ($default_url && $default_url_parse['host'] != $request_url_parse['host']) {
         $url_info = parse_url($request_url);
         $hostname = $url_info['host'];
         $path = preg_replace('/\\/$/', '', $url_info['path']);
         $domain = sprintf('%s%s%s', $hostname, $url_info['port'] && $url_info['port'] != 80 ? ':' . $url_info['port'] : '', $path);
     }
     // xe.com/blog
     if ($domain === '') {
         if (!$vid) {
             $vid = $mid;
         }
         if ($vid) {
             $domain = $vid;
         }
     }
     $oCacheHandler =& CacheHandler::getInstance('object');
     // If domain is set, look for subsite
     if ($domain !== '') {
         if ($oCacheHandler->isSupport()) {
             $output = $oCacheHandler->get('domain_' . $domain);
         }
         if (!$output) {
             $args->domain = $domain;
             $output = executeQuery('module.getSiteInfoByDomain', $args);
             if ($oCacheHandler->isSupport() && $output->data) {
                 $oCacheHandler->put('domain_' . $domain, $output);
             }
         }
         if ($output->toBool() && $output->data && $vid) {
             Context::set('vid', $output->data->domain, true);
             if (strtolower($mid) == strtolower($output->data->domain)) {
                 Context::set('mid', $output->data->mid, true);
             }
         }
         if (!$output || !$output->data) {
             $domain = '';
             unset($output);
         }
     }
     // If no virtual website was found, get default website
     if ($domain === '') {
         if ($oCacheHandler->isSupport()) {
             $output = $oCacheHandler->get('default_site');
         }
         if (!$output) {
             $args->site_srl = 0;
             $output = executeQuery('module.getSiteInfo', $args);
             // Update the related informaion if there is no default site info
             if (!$output->data) {
                 // Create a table if sites table doesn't exist
                 $oDB =& DB::getInstance();
                 if (!$oDB->isTableExists('sites')) {
                     $oDB->createTableByXmlFile(_XE_PATH_ . 'modules/module/schemas/sites.xml');
                 }
                 if (!$oDB->isTableExists('sites')) {
                     return;
                 }
                 // Get mid, language
                 $mid_output = $oDB->executeQuery('module.getDefaultMidInfo', $args);
                 $db_info = Context::getDBInfo();
                 $domain = Context::getDefaultUrl();
                 $url_info = parse_url($domain);
                 $domain = $url_info['host'] . (!empty($url_info['port']) && $url_info['port'] != 80 ? ':' . $url_info['port'] : '') . $url_info['path'];
                 $site_args->site_srl = 0;
                 $site_args->index_module_srl = $mid_output->data->module_srl;
                 $site_args->domain = $domain;
                 $site_args->default_language = $db_info->lang_type;
                 if ($output->data && !$output->data->index_module_srl) {
                     $output = executeQuery('module.updateSite', $site_args);
                 } else {
                     $output = executeQuery('module.insertSite', $site_args);
                     if (!$output->toBool()) {
                         return $output;
                     }
                 }
                 $output = executeQuery('module.getSiteInfo', $args);
             }
             if ($oCacheHandler->isSupport()) {
                 $oCacheHandler->put('default_site', $output);
             }
         }
     }
     $module_info = $output->data;
     if (!$module_info->module_srl) {
         return $module_info;
     }
     if (is_array($module_info) && $module_info->data[0]) {
         $module_info = $module_info[0];
     }
     return $this->addModuleExtraVars($module_info);
 }