Example #1
0
 function procWAP(&$oMobile)
 {
     $content = '';
     // 플래닛의 기본 단위인 날짜를 미리 계산 모듈에 있는 동작인데... 애드온이 모듈보다 일찍 실행된다;
     $last_date = $this->planet->getContentLastDay();
     $date = Context::get('date');
     if (!$date || $date > $last_date) {
         $date = $last_date;
     }
     Context::set('date', $date);
     Context::set('prev_date', $this->planet->getPrevDate($date));
     Context::set('next_date', $this->planet->getNextDate($date));
     $type = Context::get('type');
     if (!$type) {
         $type = 'all';
     }
     Context::set('type', $type);
     $tagtab = null;
     switch ($type) {
         case 'wantyou':
             $sort_index = 'documents.voted_count';
             $order = 'desc';
             break;
         case 'best':
             $sort_index = 'documents.comment_count';
             $order = 'desc';
             break;
         case 'all':
             $sort_index = 'documents.list_order';
             $order = 'asc';
             break;
     }
     $page = Context::get('page');
     $oPlanetModel =& getModel('planet');
     $output = $oPlanetModel->getNewestContentList(null, $date, $page, 9, $sort_index, $order, $tagtab);
     $title = Context::getBrowserTitle() . ' [' . zdate($date, 'Y') . Context::getLang('unit_year') . zdate($date, 'm') . Context::getLang('unit_month') . zdate($date, 'd') . Context::getLang('unit_day') . ']';
     // 댓글 보기 일 경우
     if ($this->act == 'dispPlanetContentCommentList') {
         $page = Context::get('page');
         $document_srl = Context::get('document_srl');
         $oPlanetModel =& getModel('planet');
         $output = $oPlanetModel->getReplyList($document_srl, $page);
         $reply_list = $output->data;
         $title .= ' - ' . Context::getLang('comment');
         if (is_array($reply_list)) {
             foreach ($reply_list as $key => $reply) {
                 $content .= '[<strong>' . $reply->nick_name . '</strong>] ';
                 $content .= $reply->content;
             }
         }
         // 상위 페이지를 목록으로 돌아가기로 지정
         $oMobile->setUpperUrl(getUrl('act', ''), Context::getLang('cmd_go_upper'));
     } else {
         if ($output->page_navigation->total_page > 1) {
             if ($output->page_navigation->cur_page < $output->page_navigation->last_page) {
                 // next/prevUrl 지정
                 $oMobile->setPrevUrl(getUrl('page', $output->page_navigation->cur_page + 1), sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $output->page_navigation->cur_page + 1, $output->page_navigation->total_page));
             }
             if ($output->page_navigation->cur_page > 1) {
                 $oMobile->setNextUrl(getUrl('page', $output->page_navigation->cur_page - 1), sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $output->page_navigation->cur_page - 1, $output->page_navigation->total_page));
             }
         }
         if (!$output->data || !count($output->data)) {
             $content .= Context::getLang('no_documents');
         }
         foreach ($output->data as $no => $item) {
             $obj = null;
             $obj['href'] = getUrl('mid', $_GET['mid'], 'document_srl', $item->get('document_srl'), 'act', 'dispPlanetContentCommentList');
             $obj['link'] = '[' . htmlspecialchars($item->getNickName()) . '] ' . "\n";
             $obj['link'] .= htmlspecialchars(strip_tags($item->getContent()));
             if ($item->getPostScript()) {
                 $obj['extra'] = Context::getLang('planet_postscript') . htmlspecialchars($item->getPostScript());
             }
             if (is_array($item->getArrTags())) {
                 $obj['extra'] .= '<br />TAG:';
                 $obj['extra'] .= implode(', ', $item->getArrTags());
             }
             $obj['link'] = $obj['text'] = $obj['link'];
             $childs[] = $obj;
         }
         $oMobile->setChilds($childs);
         $prev_date = Context::get('prev_date');
         if ($prev_date) {
             $oMobile->setEtcBtn(getUrl('date', $prev_date, 'document_srl', ''), '<');
         }
         $next_date = Context::get('next_date');
         if ($next_date) {
             $oMobile->setEtcBtn(getUrl('date', $next_date, 'document_srl', ''), '>');
         }
     }
     $oMobile->setTitle($title);
     $oMobile->setContent($content);
 }
Example #2
0
 function triggerBeforeDisplay(&$output_content)
 {
     if (Context::getResponseMethod() != 'HTML') {
         return;
     }
     if (Context::get('module') == 'admin') {
         return;
     }
     $oModuleModel = getModel('module');
     $config = $this->getConfig();
     $logged_info = Context::get('logged_info');
     $current_module_info = Context::get('current_module_info');
     $site_module_info = Context::get('site_module_info');
     $document_srl = Context::get('document_srl');
     $is_article = false;
     $is_index = $current_module_info->module_srl == $site_module_info->module_srl ? true : false;
     $piece = new stdClass();
     $piece->document_title = null;
     $piece->type = 'website';
     $piece->url = getFullUrl('');
     $piece->title = Context::getBrowserTitle();
     $piece->description = $config->site_description;
     $piece->keywords = $config->site_keywords;
     $piece->image = array();
     $piece->author = null;
     if ($document_srl) {
         $oDocument = Context::get('oDocument');
         if (!is_a($oDocument, 'documentItem')) {
             $oDocumentModel = getModel('document');
             $oDocument = $oDocumentModel->getDocument($document_srl);
         }
         if (is_a($oDocument, 'documentItem') && $document_srl == $oDocument->document_srl) {
             $is_article = true;
         }
     }
     // 문서 데이터 수집
     if ($is_article) {
         if (!$oDocument->isSecret()) {
             $piece->document_title = $oDocument->getTitleText();
             $piece->url = getFullUrl('', 'mid', $current_module_info->mid, 'document_srl', $document_srl);
             $piece->type = 'article';
             $piece->description = trim(str_replace('&nbsp;', ' ', $oDocument->getContentText(400)));
             $piece->author = $oDocument->getNickName();
             if (count($oDocument->get('tag_list'))) {
                 $tags = implode(',', $oDocument->get('tag_list'));
                 if ($tags) {
                     $piece->keywords = $tags;
                 }
             }
             if ($oDocument->hasUploadedFiles()) {
                 $image_ext = array('bmp', 'gif', 'jpg', 'jpeg', 'png');
                 foreach ($oDocument->getUploadedFiles() as $file) {
                     if ($file->isvalid != 'Y') {
                         continue;
                     }
                     $ext = array_pop(explode('.', $file->uploaded_filename));
                     if (!in_array(strtolower($ext), $image_ext)) {
                         continue;
                     }
                     $piece->image[] = Context::get('request_uri') . $file->uploaded_filename;
                 }
             }
         } else {
             $piece->url = getFullUrl('', 'mid', $current_module_info->mid);
         }
     } else {
         if (!$is_index) {
             $page = Context::get('page') > 1 ? Context::get('page') : null;
             $piece->url = getNotEncodedFullUrl('mid', $current_module_info->mid, 'page', $page);
         }
     }
     $piece->title = $this->getBrowserTitle($piece->document_title);
     if ($config->site_image_url) {
         $piece->image[] = $config->site_image_url;
     }
     $this->addLink('canonical', $piece->url);
     $this->addMeta('keywords', $piece->keywords);
     $this->addMeta('description', $piece->description);
     // Open Graph
     $this->addMeta('og:type', $piece->type);
     $this->addMeta('og:url', $piece->url);
     $this->addMeta('og:site_name', $config->site_name);
     $this->addMeta('og:title', $piece->title);
     $this->addMeta('og:description', $piece->description);
     $this->addMeta('og:article:author', $piece->author);
     foreach ($piece->image as $img) {
         $this->addMeta('og:image', $img);
     }
     $this->canonical_url = $piece->url;
     $this->applySEO();
     if ($config->use_optimize_title == 'Y') {
         Context::setBrowserTitle($piece->title);
     }
 }
Example #3
0
 /**
  * @brief display
  */
 function display()
 {
     // Home button assignments
     $this->setHomeUrl(getUrl(), Context::getLang('cmd_go_home'));
     // Specify the title
     if (!$this->title) {
         $this->setTitle(Context::getBrowserTitle());
     }
     ob_start();
     // Output header
     $this->printHeader();
     // Output title
     $this->printTitle();
     // Information output
     $this->printContent();
     // Button output
     $this->printBtn();
     // Footer output
     $this->printFooter();
     $content = ob_get_clean();
     // After conversion output
     if (strtolower($this->charset) == 'utf-8') {
         print $content;
     } else {
         print iconv('UTF-8', $this->charset . "//TRANSLIT//IGNORE", $content);
     }
     exit;
 }
<?php

if (!defined('__XE__')) {
    exit;
}
if ($called_position != "before_display_content") {
    return;
}
// 컨텐츠를 표시하는 시점에 호출되어야 합니다.
$title = Context::getBrowserTitle() . ' ' . $addon_info->title_sep . ' ' . $addon_info->homepage_title;
// 문서의 제목을 가져옵니다.
$title = htmlspecialchars($title);
// 이스케이프는 언제 어디서나 필수!
Context::setBrowserTitle($title);
// 설정.
Example #5
0
 /**
  * Feed output.
  * When trying to directly print out the RSS, the results variable can be directly specified through $oRssView->rss($document_list)
  *
  * @param Object $document_list Document list 
  * @param string $rss_title Rss title
  * @param string $add_description Add description
  */
 function rss($document_list = null, $rss_title = null, $add_description = null)
 {
     $oDocumentModel = getModel('document');
     $oModuleModel = getModel('module');
     $oModuleController = getController('module');
     // Get the content and information for the current requested module if the method is not called from another module
     if (!$document_list) {
         $site_module_info = Context::get('site_module_info');
         $site_srl = $site_module_info->site_srl;
         $mid = Context::get('mid');
         // The target module id, if absent, then all
         $start_date = (int) Context::get('start_date');
         $end_date = (int) Context::get('end_date');
         $module_srls = array();
         $rss_config = array();
         $total_config = '';
         $total_config = $oModuleModel->getModuleConfig('rss');
         // If one is specified, extract only for this mid
         if ($mid) {
             $module_srl = $this->module_info->module_srl;
             $config = $oModuleModel->getModulePartConfig('rss', $module_srl);
             if ($config->open_rss && $config->open_rss != 'N') {
                 $module_srls[] = $module_srl;
                 $open_rss_config[$module_srl] = $config->open_rss;
             }
             // If mid is not selected, then get all
         } else {
             if ($total_config->use_total_feed != 'N') {
                 $rss_config = $oModuleModel->getModulePartConfigs('rss', $site_srl);
                 if ($rss_config) {
                     foreach ($rss_config as $module_srl => $config) {
                         if ($config && $config->open_rss != 'N' && $config->open_total_feed != 'T_N') {
                             $module_srls[] = $module_srl;
                             $open_rss_config[$module_srl] = $config->open_rss;
                         }
                     }
                 }
             }
         }
         if (!count($module_srls) && !$add_description) {
             return $this->dispError();
         }
         $info = new stdClass();
         $args = new stdClass();
         if ($module_srls) {
             $args->module_srl = implode(',', $module_srls);
             //$module_list = $oModuleModel->getMidList($args);	//perhaps module_list varialbles not use
             $args->search_target = 'is_secret';
             $args->search_keyword = 'N';
             $args->page = (int) Context::get('page');
             $args->list_count = 15;
             if ($total_config->feed_document_count) {
                 $args->list_count = $total_config->feed_document_count;
             }
             if (!$args->page || $args->page < 1) {
                 $args->page = 1;
             }
             if ($start_date || $start_date != 0) {
                 $args->start_date = $start_date;
             }
             if ($end_date || $end_date != 0) {
                 $args->end_date = $end_date;
             }
             if ($start_date == 0) {
                 unset($start_date);
             }
             if ($end_date == 0) {
                 unset($end_date);
             }
             $args->sort_index = 'list_order';
             $args->order_type = 'asc';
             $output = $oDocumentModel->getDocumentList($args);
             $document_list = $output->data;
             // Extract the feed title and information with Context::getBrowserTitle
             if ($mid) {
                 $info->title = Context::getBrowserTitle();
                 $oModuleController->replaceDefinedLangCode($info->title);
                 $info->title = str_replace('\'', '&apos;', $info->title);
                 if ($config->feed_description) {
                     $info->description = str_replace('\'', '&apos;', htmlspecialchars($config->feed_description, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
                 } else {
                     $info->description = str_replace('\'', '&apos;', htmlspecialchars($this->module_info->description, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
                 }
                 $info->link = getUrl('', 'mid', $mid);
                 $info->feed_copyright = str_replace('\'', '&apos;', htmlspecialchars($feed_config->feed_copyright, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
                 if (!$info->feed_copyright) {
                     $info->feed_copyright = str_replace('\'', '&apos;', htmlspecialchars($total_config->feed_copyright, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
                 }
             }
         }
     }
     if (!$info->title) {
         if ($rss_title) {
             $info->title = $rss_title;
         } else {
             if ($total_config->feed_title) {
                 $info->title = $total_config->feed_title;
             } else {
                 $site_module_info = Context::get('site_module_info');
                 $info->title = $site_module_info->browser_title;
             }
         }
         $oModuleController->replaceDefinedLangCode($info->title);
         $info->title = str_replace('\'', '&apos;', htmlspecialchars($info->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
         $info->description = str_replace('\'', '&apos;', htmlspecialchars($total_config->feed_description, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
         $info->link = Context::getRequestUri();
         $info->feed_copyright = str_replace('\'', '&apos;', htmlspecialchars($total_config->feed_copyright, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
     }
     if ($add_description) {
         $info->description .= "\r\n" . $add_description;
     }
     if ($total_config->image) {
         $info->image = Context::getRequestUri() . str_replace('\'', '&apos;', htmlspecialchars($total_config->image, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
     }
     switch (Context::get('format')) {
         case 'atom':
             $info->date = date('Y-m-d\\TH:i:sP');
             if ($mid) {
                 $info->id = getUrl('', 'mid', $mid, 'act', 'atom', 'page', Context::get('page'), 'start_date', Context::get('start_date'), 'end_date', Context::get('end_date'));
             } else {
                 $info->id = getUrl('', 'module', 'rss', 'act', 'atom', 'page', Context::get('page'), 'start_date', Context::get('start_date'), 'end_date', Context::get('end_date'));
             }
             break;
         case 'rss1.0':
             $info->date = date('Y-m-d\\TH:i:sP');
             break;
         default:
             $info->date = date("D, d M Y H:i:s") . ' ' . $GLOBALS['_time_zone'];
             break;
     }
     if ($_SERVER['HTTPS'] == 'on') {
         $proctcl = 'https://';
     } else {
         $proctcl = 'http://';
     }
     $temp_link = explode('/', $info->link);
     if ($temp_link[0] == '' && $info->link) {
         $info->link = $proctcl . $_SERVER['HTTP_HOST'] . $info->link;
     }
     $temp_id = explode('/', $info->id);
     if ($temp_id[0] == '' && $info->id) {
         $info->id = $proctcl . $_SERVER['HTTP_HOST'] . $info->id;
     }
     $info->language = str_replace('jp', 'ja', Context::getLangType());
     // Set the variables used in the RSS output
     Context::set('info', $info);
     Context::set('feed_config', $config);
     Context::set('open_rss_config', $open_rss_config);
     Context::set('document_list', $document_list);
     // Force the result output to be of XMLRPC
     Context::setResponseMethod("XMLRPC");
     // Perform the preprocessing function of the editor component as the results are obtained
     $path = $this->module_path . 'tpl/';
     //if($args->start_date || $args->end_date) $file = 'xe_rss';
     //else $file = 'rss20';
     switch (Context::get('format')) {
         case 'xe':
             $file = 'xe_rss';
             break;
         case 'atom':
             $file = 'atom10';
             break;
         case 'rss1.0':
             $file = 'rss10';
             break;
         default:
             $file = 'rss20';
             break;
     }
     $oTemplate = new TemplateHandler();
     $content = $oTemplate->compile($path, $file);
     Context::set('content', $content);
     // Set the template file
     $this->setTemplatePath($path);
     $this->setTemplateFile('display');
 }
 /**
  * get a module instance and execute an action
  * @return ModuleObject executed module instance
  * */
 function procModule()
 {
     $oModuleModel = getModel('module');
     $display_mode = Mobile::isFromMobilePhone() ? 'mobile' : 'view';
     // If error occurred while preparation, return a message instance
     if ($this->error) {
         $this->_setInputErrorToContext();
         $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
         $oMessageObject->setError(-1);
         $oMessageObject->setMessage($this->error);
         $oMessageObject->dispMessage();
         if ($this->httpStatusCode) {
             $oMessageObject->setHttpStatusCode($this->httpStatusCode);
         }
         return $oMessageObject;
     }
     // Get action information with conf/module.xml
     $xml_info = $oModuleModel->getModuleActionXml($this->module);
     // If not installed yet, modify act
     if ($this->module == "install") {
         if (!$this->act || !$xml_info->action->{$this->act}) {
             $this->act = $xml_info->default_index_act;
         }
     }
     // if act exists, find type of the action, if not use default index act
     if (!$this->act) {
         $this->act = $xml_info->default_index_act;
     }
     // still no act means error
     if (!$this->act) {
         $this->error = 'msg_module_is_not_exists';
         $this->httpStatusCode = '404';
         $this->_setInputErrorToContext();
         $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
         $oMessageObject->setError(-1);
         $oMessageObject->setMessage($this->error);
         $oMessageObject->dispMessage();
         if ($this->httpStatusCode) {
             $oMessageObject->setHttpStatusCode($this->httpStatusCode);
         }
         return $oMessageObject;
     }
     // get type, kind
     $type = $xml_info->action->{$this->act}->type;
     $ruleset = $xml_info->action->{$this->act}->ruleset;
     $kind = stripos($this->act, 'admin') !== FALSE ? 'admin' : '';
     if (!$kind && $this->module == 'admin') {
         $kind = 'admin';
     }
     // check REQUEST_METHOD in controller
     if ($type == 'controller') {
         $allowedMethod = $xml_info->action->{$this->act}->method;
         if (!$allowedMethod) {
             $allowedMethodList[0] = 'POST';
         } else {
             $allowedMethodList = explode('|', strtoupper($allowedMethod));
         }
         if (!in_array(strtoupper($_SERVER['REQUEST_METHOD']), $allowedMethodList)) {
             $this->error = "msg_invalid_request";
             $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
             $oMessageObject->setError(-1);
             $oMessageObject->setMessage($this->error);
             $oMessageObject->dispMessage();
             return $oMessageObject;
         }
     }
     if ($this->module_info->use_mobile != "Y") {
         Mobile::setMobile(FALSE);
     }
     $logged_info = Context::get('logged_info');
     // check CSRF for POST actions
     if (Context::getRequestMethod() === 'POST' && Context::isInstalled() && $this->act !== 'procFileUpload' && !checkCSRF()) {
         $this->error = 'msg_invalid_request';
         $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
         $oMessageObject->setError(-1);
         $oMessageObject->setMessage($this->error);
         $oMessageObject->dispMessage();
         return $oMessageObject;
     }
     // Admin ip
     if ($kind == 'admin' && $_SESSION['denied_admin'] == 'Y') {
         $this->_setInputErrorToContext();
         $this->error = "msg_not_permitted_act";
         $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
         $oMessageObject->setError(-1);
         $oMessageObject->setMessage($this->error);
         $oMessageObject->dispMessage();
         return $oMessageObject;
     }
     // if(type == view, and case for using mobilephone)
     if ($type == "view" && Mobile::isFromMobilePhone() && Context::isInstalled()) {
         $orig_type = "view";
         $type = "mobile";
         // create a module instance
         $oModule = $this->getModuleInstance($this->module, $type, $kind);
         if (!is_object($oModule) || !method_exists($oModule, $this->act)) {
             $type = $orig_type;
             Mobile::setMobile(FALSE);
             $oModule = $this->getModuleInstance($this->module, $type, $kind);
         }
     } else {
         // create a module instance
         $oModule = $this->getModuleInstance($this->module, $type, $kind);
     }
     if (!is_object($oModule)) {
         $this->_setInputErrorToContext();
         $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
         $oMessageObject->setError(-1);
         $oMessageObject->setMessage($this->error);
         $oMessageObject->dispMessage();
         if ($this->httpStatusCode) {
             $oMessageObject->setHttpStatusCode($this->httpStatusCode);
         }
         return $oMessageObject;
     }
     // If there is no such action in the module object
     if (!isset($xml_info->action->{$this->act}) || !method_exists($oModule, $this->act)) {
         if (!Context::isInstalled()) {
             $this->_setInputErrorToContext();
             $this->error = 'msg_invalid_request';
             $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
             $oMessageObject->setError(-1);
             $oMessageObject->setMessage($this->error);
             $oMessageObject->dispMessage();
             if ($this->httpStatusCode) {
                 $oMessageObject->setHttpStatusCode($this->httpStatusCode);
             }
             return $oMessageObject;
         }
         $forward = NULL;
         // 1. Look for the module with action name
         if (preg_match('/^([a-z]+)([A-Z])([a-z0-9\\_]+)(.*)$/', $this->act, $matches)) {
             $module = strtolower($matches[2] . $matches[3]);
             $xml_info = $oModuleModel->getModuleActionXml($module);
             if ($xml_info->action->{$this->act} && (stripos($this->act, 'admin') !== FALSE || $xml_info->action->{$this->act}->standalone != 'false')) {
                 $forward = new stdClass();
                 $forward->module = $module;
                 $forward->type = $xml_info->action->{$this->act}->type;
                 $forward->ruleset = $xml_info->action->{$this->act}->ruleset;
                 $forward->act = $this->act;
             } else {
                 $this->error = 'msg_invalid_request';
                 $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
                 $oMessageObject->setError(-1);
                 $oMessageObject->setMessage($this->error);
                 $oMessageObject->dispMessage();
                 return $oMessageObject;
             }
         }
         if (!$forward) {
             $forward = $oModuleModel->getActionForward($this->act);
         }
         if ($forward->module && $forward->type && $forward->act && $forward->act == $this->act) {
             $kind = stripos($forward->act, 'admin') !== FALSE ? 'admin' : '';
             $type = $forward->type;
             $ruleset = $forward->ruleset;
             $tpl_path = $oModule->getTemplatePath();
             $orig_module = $oModule;
             $xml_info = $oModuleModel->getModuleActionXml($forward->module);
             // SECISSUE also check foward act method
             // check REQUEST_METHOD in controller
             if ($type == 'controller') {
                 $allowedMethod = $xml_info->action->{$forward->act}->method;
                 if (!$allowedMethod) {
                     $allowedMethodList[0] = 'POST';
                 } else {
                     $allowedMethodList = explode('|', strtoupper($allowedMethod));
                 }
                 if (!in_array(strtoupper($_SERVER['REQUEST_METHOD']), $allowedMethodList)) {
                     $this->error = "msg_invalid_request";
                     $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
                     $oMessageObject->setError(-1);
                     $oMessageObject->setMessage($this->error);
                     $oMessageObject->dispMessage();
                     return $oMessageObject;
                 }
             }
             if ($type == "view" && Mobile::isFromMobilePhone()) {
                 $orig_type = "view";
                 $type = "mobile";
                 // create a module instance
                 $oModule = $this->getModuleInstance($forward->module, $type, $kind);
                 if (!is_object($oModule) || !method_exists($oModule, $this->act)) {
                     $type = $orig_type;
                     Mobile::setMobile(FALSE);
                     $oModule = $this->getModuleInstance($forward->module, $type, $kind);
                 }
             } else {
                 $oModule = $this->getModuleInstance($forward->module, $type, $kind);
             }
             if (!is_object($oModule)) {
                 $this->_setInputErrorToContext();
                 $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
                 $oMessageObject->setError(-1);
                 $oMessageObject->setMessage('msg_module_is_not_exists');
                 $oMessageObject->dispMessage();
                 if ($this->httpStatusCode) {
                     $oMessageObject->setHttpStatusCode($this->httpStatusCode);
                 }
                 return $oMessageObject;
             }
             if ($this->module == "admin" && $type == "view") {
                 if ($logged_info->is_admin == 'Y') {
                     if ($this->act != 'dispLayoutAdminLayoutModify') {
                         $oAdminView = getAdminView('admin');
                         $oAdminView->makeGnbUrl($forward->module);
                         $oModule->setLayoutPath("./modules/admin/tpl");
                         $oModule->setLayoutFile("layout.html");
                     }
                 } else {
                     $this->_setInputErrorToContext();
                     $this->error = 'msg_is_not_administrator';
                     $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
                     $oMessageObject->setError(-1);
                     $oMessageObject->setMessage($this->error);
                     $oMessageObject->dispMessage();
                     return $oMessageObject;
                 }
             }
             if ($kind == 'admin') {
                 $grant = $oModuleModel->getGrant($this->module_info, $logged_info);
                 if (!$grant->manager) {
                     $this->_setInputErrorToContext();
                     $this->error = 'msg_is_not_manager';
                     $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
                     $oMessageObject->setError(-1);
                     $oMessageObject->setMessage($this->error);
                     $oMessageObject->dispMessage();
                     return $oMessageObject;
                 } else {
                     if (!$grant->is_admin && $this->module != $this->orig_module->module && $xml_info->permission->{$this->act} != 'manager') {
                         $this->_setInputErrorToContext();
                         $this->error = 'msg_is_not_administrator';
                         $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode);
                         $oMessageObject->setError(-1);
                         $oMessageObject->setMessage($this->error);
                         $oMessageObject->dispMessage();
                         return $oMessageObject;
                     }
                 }
             }
         } else {
             if ($xml_info->default_index_act && method_exists($oModule, $xml_info->default_index_act)) {
                 $this->act = $xml_info->default_index_act;
             } else {
                 $this->error = 'msg_invalid_request';
                 $oModule->setError(-1);
                 $oModule->setMessage($this->error);
                 return $oModule;
             }
         }
     }
     // ruleset check...
     if (!empty($ruleset)) {
         $rulesetModule = $forward->module ? $forward->module : $this->module;
         $rulesetFile = $oModuleModel->getValidatorFilePath($rulesetModule, $ruleset, $this->mid);
         if (!empty($rulesetFile)) {
             if ($_SESSION['XE_VALIDATOR_ERROR_LANG']) {
                 $errorLang = $_SESSION['XE_VALIDATOR_ERROR_LANG'];
                 foreach ($errorLang as $key => $val) {
                     Context::setLang($key, $val);
                 }
                 unset($_SESSION['XE_VALIDATOR_ERROR_LANG']);
             }
             $Validator = new Validator($rulesetFile);
             $result = $Validator->validate();
             if (!$result) {
                 $lastError = $Validator->getLastError();
                 $returnUrl = Context::get('error_return_url');
                 $errorMsg = $lastError['msg'] ? $lastError['msg'] : 'validation error';
                 //for xml response
                 $oModule->setError(-1);
                 $oModule->setMessage($errorMsg);
                 //for html redirect
                 $this->error = $errorMsg;
                 $_SESSION['XE_VALIDATOR_ERROR'] = -1;
                 $_SESSION['XE_VALIDATOR_MESSAGE'] = $this->error;
                 $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = 'error';
                 $_SESSION['XE_VALIDATOR_RETURN_URL'] = $returnUrl;
                 $_SESSION['XE_VALIDATOR_ID'] = Context::get('xe_validator_id');
                 $this->_setInputValueToSession();
                 return $oModule;
             }
         }
     }
     $oModule->setAct($this->act);
     $this->module_info->module_type = $type;
     $oModule->setModuleInfo($this->module_info, $xml_info);
     $skipAct = array('dispEditorConfigPreview' => 1, 'dispLayoutPreviewWithModule' => 1);
     $db_use_mobile = Mobile::isMobileEnabled();
     if ($type == "view" && $this->module_info->use_mobile == "Y" && Mobile::isMobileCheckByAgent() && !isset($skipAct[Context::get('act')]) && $db_use_mobile === true) {
         global $lang;
         $header = '<style>div.xe_mobile{opacity:0.7;margin:1em 0;padding:.5em;background:#333;border:1px solid #666;border-left:0;border-right:0}p.xe_mobile{text-align:center;margin:1em 0}a.xe_mobile{color:#ff0;font-weight:bold;font-size:24px}@media only screen and (min-width:500px){a.xe_mobile{font-size:15px}}</style>';
         $footer = '<div class="xe_mobile"><p class="xe_mobile"><a class="xe_mobile" href="' . getUrl('m', '1') . '">' . $lang->msg_pc_to_mobile . '</a></p></div>';
         Context::addHtmlHeader($header);
         Context::addHtmlFooter($footer);
     }
     if ($type == "view" && $kind != 'admin') {
         $module_config = $oModuleModel->getModuleConfig('module');
         if ($module_config->htmlFooter) {
             Context::addHtmlFooter($module_config->htmlFooter);
         }
         if ($module_config->siteTitle) {
             $siteTitle = Context::getBrowserTitle();
             if (!$siteTitle) {
                 Context::setBrowserTitle($module_config->siteTitle);
             }
         }
     }
     // if failed message exists in session, set context
     $this->_setInputErrorToContext();
     $procResult = $oModule->proc();
     $methodList = array('XMLRPC' => 1, 'JSON' => 1, 'JS_CALLBACK' => 1);
     if (!$oModule->stop_proc && !isset($methodList[Context::getRequestMethod()])) {
         $error = $oModule->getError();
         $message = $oModule->getMessage();
         $messageType = $oModule->getMessageType();
         $redirectUrl = $oModule->getRedirectUrl();
         if ($messageType == 'error') {
             debugPrint($message, 'ERROR');
         }
         if (!$procResult) {
             $this->error = $message;
             if (!$redirectUrl && Context::get('error_return_url')) {
                 $redirectUrl = Context::get('error_return_url');
             }
             $this->_setInputValueToSession();
         } else {
         }
         $_SESSION['XE_VALIDATOR_ERROR'] = $error;
         $_SESSION['XE_VALIDATOR_ID'] = Context::get('xe_validator_id');
         if ($message != 'success') {
             $_SESSION['XE_VALIDATOR_MESSAGE'] = $message;
         }
         $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = $messageType;
         if (Context::get('xeVirtualRequestMethod') != 'xml') {
             $_SESSION['XE_VALIDATOR_RETURN_URL'] = $redirectUrl;
         }
     }
     unset($logged_info);
     return $oModule;
 }
 /**
  * @brief display item detail info
  */
 function dispNproductItemDetail()
 {
     if ($_COOKIE['mobile'] == "true") {
         Context::set('is_mobile', 'true');
     }
     $oDocumentModel =& getModel('document');
     $oFileModel =& getModel('file');
     $oNproductModel =& getModel('nproduct');
     $oStoreReviewModel =& getModel('store_review');
     $item_srl = Context::get('item_srl');
     $document_srl = Context::get('document_srl');
     Context::set('list_config', $oNproductModel->getDetailListConfig($this->module_info->module_srl));
     // get config
     $config = $oNproductModel->getModuleConfig();
     Context::set('config', $config);
     // item info
     if ($item_srl) {
         $args->item_srl = $item_srl;
     } else {
         if ($document_srl) {
             $args->document_srl = $document_srl;
         } else {
             return new Object(-1, 'Item Not Found.');
         }
     }
     $output = executeQuery('nproduct.getItemInfo', $args);
     if (!$output->toBool()) {
         return $output;
     }
     $item_info = $output->data;
     // thumbnail
     if ($item_info->thumb_file_srl) {
         $file = $oFileModel->getFile($item_info->thumb_file_srl);
         if ($file) {
             $item_info->thumbnail_url = getFullUrl() . $file->download_url;
         }
     }
     $item_info = new nproductItem($item_info, $config->currency, $config->as_sign, $config->decimals);
     // category
     $this->getCategoryTree($this->module_info->module_srl);
     // document
     $oDocument = $oDocumentModel->getDocument($item_info->document_srl);
     Context::set('oDocument', $oDocument);
     if ($item_info->item_srl) {
         $review_list = $oNproductModel->getReviews($item_info);
         Context::set('review_list', $review_list);
     }
     $output = $oNproductModel->discountItem($item_info);
     $item_info->discounted_price = $output->discounted_price;
     $item_info->discount_amount = $output->discount_amount;
     $item_info->discount_info = $output->discount_info;
     Context::set('discounted_price', $output->discounted_price);
     Context::set('discount_amount', $output->discount_amount);
     Context::set('discount_info', $output->discount_info);
     // get options
     $args->item_srl = $item_info->item_srl;
     $output = executeQueryArray('nproduct.getOptions', $args);
     Context::set('options', $output->data);
     // set browser title
     Context::setBrowserTitle(strip_tags($item_info->item_name) . ' - ' . Context::getBrowserTitle());
     // get related items information
     if ($item_info->related_items) {
         if (!$this->isJson($item_info->related_items)) {
             $item_info->related_items = $this->convertCsvToJson($item_info->related_items);
         }
         $relatedItems = json_decode($item_info->related_items);
         $relatedItemSrls = array();
         foreach ($relatedItems as $key => $val) {
             $relatedItemSrls[] = $val->item_srl;
         }
         if (count($relatedItemSrls)) {
             $item_info->related_items = $oNproductModel->getItemList(implode(',', $relatedItemSrls), 999);
         }
     }
     $trigger_output = ModuleHandler::triggerCall('nproduct.dispNproductItemDetail', 'before', $item_info);
     if (!$trigger_output->toBool()) {
         return $trigger_output;
     }
     // pass variables to html template
     Context::set('category', $item_info->category_id);
     Context::set('item_srl', $item_info->item_srl);
     Context::set('item_info', $item_info);
     $extra_vars = NExtraItemList::getList($item_info);
     Context::set('extra_vars', $extra_vars);
     $this->setTemplateFile('itemdetail');
 }
Example #8
0
 /**
  * Add OpenGraph metadata tags.
  * 
  * @param string $output
  * @return void
  */
 function _addOpenGraphMetadata()
 {
     // Get information about the current request.
     $page_type = 'website';
     $current_module_info = Context::get('current_module_info');
     $site_module_info = Context::get('site_module_info');
     $document_srl = Context::get('document_srl');
     if ($document_srl) {
         $oDocument = Context::get('oDocument') ?: getModel('document')->getDocument($document_srl, false, false);
         if ($oDocument instanceof documentItem && $oDocument->document_srl == $document_srl && !$oDocument->isSecret()) {
             $page_type = 'article';
         }
     }
     // Add basic metadata.
     Context::addOpenGraphData('og:title', Context::getBrowserTitle());
     Context::addOpenGraphData('og:site_name', Context::getSiteTitle());
     if ($page_type === 'article' && config('seo.og_extract_description')) {
         $description = trim(utf8_normalize_spaces($oDocument->getContentText(200)));
     } else {
         $description = Context::getMetaTag('description');
     }
     Context::addOpenGraphData('og:description', $description);
     Context::addMetaTag('description', $description);
     // Add metadata about this page.
     Context::addOpenGraphData('og:type', $page_type);
     if ($page_type === 'article') {
         $canonical_url = getFullUrl('', 'mid', $current_module_info->mid, 'document_srl', $document_srl);
     } elseif (($page = Context::get('page')) > 1) {
         $canonical_url = getFullUrl('', 'mid', $current_module_info->mid, 'page', $page);
     } elseif ($current_module_info->module_srl == $site_module_info->module_srl) {
         $canonical_url = getFullUrl('');
     } else {
         $canonical_url = getFullUrl('', 'mid', $current_module_info->mid);
     }
     Context::addOpenGraphData('og:url', $canonical_url);
     Context::setCanonicalURL($canonical_url);
     // Add metadata about the locale.
     $lang_type = Context::getLangType();
     $locales = (include \RX_BASEDIR . 'common/defaults/locales.php');
     if (isset($locales[$lang_type])) {
         Context::addOpenGraphData('og:locale', $locales[$lang_type]['locale']);
     }
     if ($page_type === 'article' && $oDocument->getLangCode() !== $lang_type && isset($locales[$oDocument->getLangCode()])) {
         Context::addOpenGraphData('og:locale:alternate', $locales[$oDocument->getLangCode()]);
     }
     // Add image.
     if ($page_type === 'article' && config('seo.og_extract_images')) {
         if (($document_images = Rhymix\Framework\Cache::get("seo:document_images:{$document_srl}")) === null) {
             $document_images = array();
             if ($oDocument->hasUploadedFiles()) {
                 foreach ($oDocument->getUploadedFiles() as $file) {
                     if ($file->isvalid !== 'Y' || !preg_match('/\\.(?:bmp|gif|jpe?g|png)$/i', $file->uploaded_filename)) {
                         continue;
                     }
                     list($width, $height) = @getimagesize($file->uploaded_filename);
                     if ($width < 100 && $height < 100) {
                         continue;
                     }
                     $image = array('filepath' => $file->uploaded_filename, 'width' => $width, 'height' => $height);
                     if ($file->cover_image === 'Y') {
                         array_unshift($document_images, $image);
                     } else {
                         $document_images[] = $image;
                     }
                     if (count($document_images) >= 1) {
                         break;
                     }
                 }
             }
             Rhymix\Framework\Cache::set("seo:document_images:{$document_srl}", $document_images, 0, true);
         }
     } else {
         $document_images = null;
     }
     if ($document_images) {
         $first_image = reset($document_images);
         $first_image['filepath'] = preg_replace('/^.\\/files\\//', \RX_BASEURL . 'files/', $first_image['filepath']);
         Context::addOpenGraphData('og:image', Rhymix\Framework\URL::getCurrentDomainURL($first_image['filepath']));
         Context::addOpenGraphData('og:image:width', $first_image['width']);
         Context::addOpenGraphData('og:image:height', $first_image['height']);
     } elseif ($default_image = getAdminModel('admin')->getSiteDefaultImageUrl($width, $height)) {
         Context::addOpenGraphData('og:image', Rhymix\Framework\URL::getCurrentDomainURL($default_image));
         if ($width && $height) {
             Context::addOpenGraphData('og:image:width', $width);
             Context::addOpenGraphData('og:image:height', $height);
         }
     }
     // Add datetime for articles.
     if ($page_type === 'article' && config('seo.og_use_timestamps')) {
         Context::addOpenGraphData('article:published_time', $oDocument->getRegdate('c'));
         Context::addOpenGraphData('article:modified_time', $oDocument->getUpdate('c'));
     }
 }
            echo $__Context->val['name'];
            ?>
"<?php 
        }
        ?>
 content="<?php 
        echo $__Context->val['content'];
        ?>
">
<?php 
    }
}
?>
<!-- TITLE -->
<title><?php 
echo Context::getBrowserTitle();
?>
</title>
<!-- CSS -->
<?php 
if ($__Context->css_files && count($__Context->css_files)) {
    foreach ($__Context->css_files as $__Context->key => $__Context->css_file) {
        if ($__Context->css_file['targetie']) {
            ?>
<!--[if <?php 
            echo $__Context->css_file['targetie'];
            ?>
]><?php 
        }
        ?>
<link rel="stylesheet" href="<?php 
 /**
  * @brief 엮인글을 발송
  *
  * 발송 후 결과처리는 하지 않는 구조임
  **/
 function sendTrackback($oDocument, $trackback_url, $charset)
 {
     $oModuleController =& getController('module');
     // 발송할 정보를 정리
     $http = parse_url($trackback_url);
     $obj->blog_name = str_replace(array('&lt;', '&gt;', '&amp;', '&quot;'), array('<', '>', '&', '"'), Context::getBrowserTitle());
     $oModuleController->replaceDefinedLangCode($obj->blog_name);
     $obj->title = $oDocument->getTitleText();
     $obj->excerpt = $oDocument->getSummary(200);
     $obj->url = getFullUrl('', 'document_srl', $oDocument->document_srl);
     // blog_name, title, excerpt, url의 문자열을 요청된 charset으로 변경
     if ($charset && function_exists('iconv')) {
         foreach ($obj as $key => $val) {
             $obj->{$key} = iconv('UTF-8', $charset, $val);
         }
     }
     // socket으로 발송할 내용 작성
     if ($http['query']) {
         $http['query'] .= "&";
     }
     if (!$http['port']) {
         $http['port'] = 80;
     }
     $content = sprintf("title=%s&" . "url=%s&" . "blog_name=%s&" . "excerpt=%s", urlencode($obj->title), urlencode($obj->url), urlencode($obj->blog_name), urlencode($obj->excerpt));
     if ($http['query']) {
         $content .= '&' . $http['query'];
     }
     $content_length = strlen($content);
     // header 정리
     $header = sprintf("POST %s HTTP/1.1\r\n" . "Host: %s\r\n" . "Content-Type: %s\r\n" . "Content-Length: %s\r\n\r\n" . "%s\r\n", $http['path'], $http['host'], "application/x-www-form-urlencoded", $content_length, $content);
     if (!$http['host'] || !$http['port']) {
         return new Object(-1, 'msg_trackback_url_is_invalid');
     }
     // 발송하려는 대상 서버의 socket을 연다
     $fp = @fsockopen($http['host'], $http['port'], $errno, $errstr, 5);
     if (!$fp) {
         return new Object(-1, 'msg_trackback_url_is_invalid');
     }
     // 작성한 헤더 정보를 발송
     fputs($fp, $header);
     // 결과를 기다림 (특정 서버의 경우 EOF가 떨어지지 않을 수가 있음
     while (!feof($fp)) {
         $line = trim(fgets($fp, 4096));
         if (preg_match("/^<error>/i", $line)) {
             break;
         }
     }
     // socket 닫음
     fclose($fp);
     return new Object(0, 'msg_trackback_send_success');
 }
Example #11
0
 /**
  * Trackbacks sent to
  * After sending the results are not sticky and handling
  * @param documentItem $oDocument
  * @param string $trackback_url
  * @param string $charset
  * @return Object
  */
 function sendTrackback($oDocument, $trackback_url, $charset)
 {
     $oModuleController =& getController('module');
     // Information sent by
     $http = parse_url($trackback_url);
     $obj->blog_name = str_replace(array('&lt;', '&gt;', '&amp;', '&quot;'), array('<', '>', '&', '"'), Context::getBrowserTitle());
     $oModuleController->replaceDefinedLangCode($obj->blog_name);
     $obj->title = $oDocument->getTitleText();
     $obj->excerpt = $oDocument->getSummary(200);
     $obj->url = getFullUrl('', 'document_srl', $oDocument->document_srl);
     // blog_name, title, excerpt, url charset of the string to the requested change
     if ($charset && function_exists('iconv')) {
         foreach ($obj as $key => $val) {
             $obj->{$key} = iconv('UTF-8', $charset, $val);
         }
     }
     // written information sent to socket
     if ($http['query']) {
         $http['query'] .= "&";
     }
     if (!$http['port']) {
         $http['port'] = 80;
     }
     $content = sprintf("title=%s&" . "url=%s&" . "blog_name=%s&" . "excerpt=%s", urlencode($obj->title), urlencode($obj->url), urlencode($obj->blog_name), urlencode($obj->excerpt));
     if ($http['query']) {
         $content .= '&' . $http['query'];
     }
     $content_length = strlen($content);
     // header by
     $header = sprintf("POST %s HTTP/1.1\r\n" . "Host: %s\r\n" . "Content-Type: %s\r\n" . "Content-Length: %s\r\n\r\n" . "%s\r\n", $http['path'], $http['host'], "application/x-www-form-urlencoded", $content_length, $content);
     if (!$http['host'] || !$http['port']) {
         return new Object(-1, 'msg_trackback_url_is_invalid');
     }
     // Opens a socket on the target server you want to send
     $fp = @fsockopen($http['host'], $http['port'], $errno, $errstr, 5);
     if (!$fp) {
         return new Object(-1, 'msg_trackback_url_is_invalid');
     }
     // Header information sent by
     fputs($fp, $header);
     // Waiting for the results (in particular the server may not be falling EOF
     while (!feof($fp)) {
         $line = trim(fgets($fp, 4096));
         if (preg_match("/^<error>/i", $line)) {
             $error = preg_replace('/[^0-9]/', '', $line);
             break;
         }
     }
     // Close socket
     fclose($fp);
     if ($error == "0") {
         return new Object(0, 'msg_trackback_send_success');
     }
     return new Object(-1, 'msg_trackback_send_failed');
 }
Example #12
0
 /**
  * @brief display
  **/
 function display()
 {
     // 홈버튼 지정
     $this->setHomeUrl(getUrl(), Context::getLang('cmd_go_home'));
     // 제목 지정
     if (!$this->title) {
         $this->setTitle(Context::getBrowserTitle());
     }
     ob_start();
     // 헤더를 출력
     $this->printHeader();
     // 제목을 출력
     $this->printTitle();
     // 내용 출력
     $this->printContent();
     // 버튼 출력
     $this->printBtn();
     // 푸터를 출력
     $this->printFooter();
     $content = ob_get_clean();
     // 변환 후 출력
     if (strtolower($this->charset) == 'utf-8') {
         print $content;
     } else {
         print iconv('UTF-8', $this->charset . "//TRANSLIT//IGNORE", $content);
     }
     exit;
 }