/** * @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; }
/** * @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; }
/** * 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; }
/** * @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); }
/** * 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'); }
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; }
function setDomain($domain) { static $default_domain = null; if (!$domain) { if (is_null($default_domain)) { $default_domain = Context::getDefaultUrl(); } $domain = $default_domain; } $this->domain = $domain; }
/** * 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; }
/** * 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; }
/** * @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); }
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); }
/** * @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'); }
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); }
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; }
/** * @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"); ?>
/** * @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; }
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'); }
/** * @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); }