• XE 가리기보기
  • 파워볼게임 가리기보기
  • 엑셀_PDF게시판2 가리기보기

XE에서 함수라이브러리는 어디에 있나요?

XE의 함수라이브러리는 어디에 있나요?

XE에서 함수라이브러리는 어디에 있나요?

XE의 함수라이브러리는 어디에 있나요?

XE의 함수라이브러리는 어디에 있나요?

  • 부제목
  • 본문 제목 글꼴
  • 본문 커버 높이
  • label
  • starate
  • coverimage
  • vidmp4
  • vidwebm
웹기프트 by
웹기프트
 관리그룹 
댓글1
로그인 후 댓글 작성이 가능합니다.
로그인 후 댓글 작성이 가능합니다.
    1
  • lkm_webgift
    lkm_webgift 2018.12.29 02:48

    XE코어의 함수라이브러리 파일 func.inc.php

     

    - XE 전역 함수 -

     

    함수 목록 :

     

     

    clone($object) 

    iconv($in_charset, $out_charset, $str) 

    &getModule($module_name, $type = 'view', $kind = '') 

    &getController($module_name) 

    &getAdminController($module_name) 

    &getView($module_name) 

    &getMobile($module_name) 

    &getAdminView($module_name) 

    &getModel($module_name) 

    &getAdminModel($module_name) 

    &getAPI($module_name) 

    &getWAP($module_name) 

    &getClass($module_name) 

    executeQuery($query_id, $args = null) 

    executeQueryArray($query_id, $args = null) 

    getNextSequence() 

    getUrl() 

    getNotEncodedUrl() 

    getFullUrl() 

    getNotEncodedFullUrl() 

    getSiteUrl() 

    getNotEncodedSiteUrl() 

    getFullSiteUrl() 

    isSiteID($domain) 

    cut_str($string,$cut_size=0,$tail = '...') 

    zgap() 

    ztime($str) 

    getTimeGap($date, $format = 'Y.m.d') 

    getMonthName($month, $short = true) 

    zdate($str, $format = 'Y-m-d H:i:s', $conversion=true) 

    debugPrint($debug_output = null, $display_option = true, $file = '_debug_message.php') 

    getMicroTime() 

    delObjectVars($target_obj, $del_obj) 

    handleError($errno, $errstr, $file, $line) 

    getNumberingPath($no, $size=3) 

    url_decode($str) 

    removeHackTag($content) 

    checkXmpTag($content) 

    removeSrcHack($matches) 

    _isHackedSrcExp($style) 

    _isHackedSrc($src) 

    fixQuotation($matches) 

    hexrgb($hexstr) 

    mysql_pre4_hash_password($password) 

    getScriptPath() 

    utf8RawUrlDecode ($source) 

    _code2utf($num)

    detectUTF8($string, $return_convert = false, $urldecode = true) 

    json_encode2($data) 

    isCrawler($agent = null) 

    stripEmbedTagForAdmin(&$content, $writer_member_srl)

    requirePear()

     

    [ 기본 함수 ] 

    XE 위키(Wiki)에서 SMaker, 하늘03, sol님의 설명글의 내용을 가져왔다. 함수의 쓰임새와 방법 등을 이해하는데 기초적인 자료가 된다. 

     

    지금 당장 이해할 수 없어도 일단 노트에 적어보자.(나는 전공자가 아니다...^^) 나중에 다시 찾아보기 쉽도록 정리해 두고 이해한 만큼 주석을 달아보자! 

     

    (■는 위키문서에 없는 부분을 추가해 보았다.)

     

    관련자료 : http://xe.xpressengine.net/18252055

     

     

     

    모듈(Module) 관련 함수 정의 :

    ModuleHandler::getModuleObject($module_name, $type)을 쓰기 쉽게 함수로 선언

     

    // module_name은 모듈의 이름이다. 

     

    // 타입은 disp, proc, controller, class 이다. 

     

    // 종류(Kind)는 admin, null 로 구분한다. 

     

    // 반환(return)은 module instance(모듈 인스턴스)이다. 

     

     

     

    function &getModule($module_name, $type = 'view', $kind = '') {

       return ModuleHandler::getModuleInstance($module_name, $type, $kind);

    }

    instance getController(string MODULE_NAME)

    모듈의 Controller 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getController($module_name) {

            return getModule($module_name, 'controller');

        }

     

    // document.controller.class 인스턴스를 갖고 오고 싶다면

    $oDocumentController = &getController('document');

     

     

    instance getAdminController(string MODULE_NAME)

    모듈의 Admin Controller 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getAdminController($module_name) {

            return getModule($module_name, 'controller','admin');

        }

     

    // documentAdminController 인스턴스를 갖고 오고 싶다면

    $oDocumentAdminController = &getAdminController('document');

     

     

     

    instance getView(string MODULE_NAME)

    모듈의 View 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getView($module_name) {

            return getModule($module_name, 'view');

        }

     

     

    // rssView 인스턴스를 갖고 오고 싶다면

    $oRssView = &getView('rss');

     

     

     

    instance getMobile(string MODULE_NAME) ■

    모듈의 Mobile 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getMobile($module_name) {

            return getModule($module_name, 'mobile');

        }

     

     

     

    instance getAdminView(string MODULE_NAME)

    모듈의 Admin View 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getAdminView($module_name) {

            return getModule($module_name, 'view','admin');

        }

     

     

    // adminAdminView 인스턴스를 갖고 오고 싶다면

    $oAdminAdminView = &getAdminView('admin');

     

     

     

    instance getModel(string MODULE_NAME)

    모듈의 Model 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getModel($module_name) {

            return getModule($module_name, 'model');

        }

     

     

    // documentModel 인스턴스를 갖고 오고 싶다면

    $oDocumentModel = &getModel('document');

     

     

     

    instrance getAdminModel(string MODULE_NAME)

    모듈의 Admin Model 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getAdminModel($module_name) {

            return getModule($module_name, 'model','admin');

        }

     

     

    // documentAdminModel 인스턴스를 갖고 오고 싶다면

    $oDocumentAdminModel = &getAdminModel('document');

     

     

     

    instance getAPI(string MODULE_NAME)

    모듈의 API 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getAPI($module_name) {

            return getModule($module_name, 'api');

        }

     

     

    // boardAPI 인스턴스를 갖고 오고 싶다면

    $oBoardAPI = &getAPI('board');

     

     

     

    instance getWAP(string MODULE_NAME)

    모듈의 WAP 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getWAP($module_name) {

            return getModule($module_name, 'wap');

        }

     

     

    // boardWAP 인스턴스를 갖고 오고 싶다면

    $oBoardWAP = &getWAP('board');

     

     

     

    instance getClass(string MODULE_NAME)

    모듈의 Class 인스턴스를 가져오기 위한 함수입니다.

     

     

     

        function &getClass($module_name) {

            return getModule($module_name, 'class');

        }

     

     

    // documentClass 인스턴스를 갖고 오고 싶다면

    $oDocumentClass = &getClass('document');

     

     

     

    DB 관련 함수 정의 :

    Object executeQuery(string QUERY_ID, stdClass PARAM)

        /**

         * @brief DB::executeQuery() 의 alias

         * @param query_id 쿼리 ID ( 모듈명.쿼리XML파일 )

         * @param args object 변수로 선언된 인자값

         * @return 처리결과

         **/

        function executeQuery($query_id, $args = null) {

            $oDB = &DB::getInstance();

            return $oDB->executeQuery($query_id, $args);

        }

     

     

     

    XML Query를 실행하기 위한 함수입니다. 결과는 Object class의 객체로 return 됩니다.

    쿼리 실패는 Object::toBool()이 false일 경우이고 true라면 쿼리는 정상적으로 실행이 된 것을 의미합니다.

    select문의 결과 데이터는 Object::data 변수에 담겨져 return 됩니다.

     

     

     

    Object executeQueryArray(string QUERY_ID, stdClass PARAM)

        /**

         * @brief DB::executeQuery() 의 결과값을 무조건 배열로 처리하도록 하는 함수

         * @param query_id 쿼리 ID ( 모듈명.쿼리XML파일 )

         * @param args object 변수로 선언된 인자값

         * @return 처리결과

         **/

        function executeQueryArray($query_id, $args = null) {

            $oDB = &DB::getInstance();

            $output = $oDB->executeQuery($query_id, $args);

            if(!is_array($output->data) && count($output->data) > 0){

                $output->data = array($output->data);

            }

            return $output;

        }

     

     

     

    executeQuery()와 기능이 같으나 select 시 Object::data 변수에 결과 row가 1개라도 array로 반환됩니다.

     

     

     

    int getNextSequence()

        /**

         * @brief DB::getNextSequence() 의 alias

         * @return big int

         **/

        function getNextSequence() {

            $oDB = &DB::getInstance();

            return $oDB->getNextSequence();

        }

     

     

     

    다음 Sequence 번호를 가져오기 위한 함수 입니다.

    XE 에서는 내부적으로 하나의 Sequence 를 쓰는데요 member_srl, module_srl, document_srl 등 모든 키는 다 이 함수로 받아 설정됩니다. 

     

    document_srl이 +1씩 순차적으로 늘어나지 않지만 이점이 많이 XE에서는 이러한 방법으로 Sequence를 쓰고 있습니다.

     

     

     

    URL 관련 함수 정의 :

    string getUrl(['',] string KEY, string VALUE [,string KEY, string VALUE ...])

        /**

         * @brief Context::getUrl()를 쓰기 쉽게 함수로 선언

         * @return string

         *

         * getUrl()은 현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴한다.

         * 1. 인자는 (key, value)... 의 형식으로 주어져야 한다.

         *    ex) getUrl('key1','val1', 'key2', '') : key1, key2를 val1과 '' 로 변형

         * 2. 아무런 인자가 없으면 argument를 제외한 url을 리턴

         * 3. 첫 인자값이 '' 이면 RequestUri에다가 추가된 args_list로 url을 만듬

         **/

        function getUrl() {

            $num_args = func_num_args();

            $args_list = func_get_args();

     

            if(!$num_args) return Context::getRequestUri();

     

            return Context::getUrl($num_args, $args_list);

        }

     

     

     

    Url을 만드는 함수 입니다. 

     

    현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴을 하고 첫 인자값이 '' 이면 RequestUri에다가 추가된 args_list로 url을 만듭니다.

     

     

     

    string getFullUrl(['',] string KEY, string VALUE [,string KEY, string VALUE ...])

        /**

         * @brief getUrl()의 값에 request uri를 추가하여 reutrn

         * full url을 얻기 위함

         **/

        function getFullUrl() {

            $num_args = func_num_args();

            $args_list = func_get_args();

            $request_uri = Context::getRequestUri();

            if(!$num_args) return $request_uri;

     

            $url = Context::getUrl($num_args, $args_list);

            if(!preg_match('/^http/i',$url)){

                preg_match('/^(http|https):\/\/([^\/]+)\//',$request_uri,$match);

                return substr($match[0],0,-1).$url;

            }

            return $url;

        }

     

     

     

    http:// 로 시작하는 Url을 만드는 함수입니다.

     

     

    string getNotEncodedFullUrl(['',] string KEY, string VALUE [,string KEY, string VALUE ...])

        function getNotEncodedFullUrl() {

            $num_args = func_num_args();

            $args_list = func_get_args();

            $request_uri = Context::getRequestUri();

            if(!$num_args) return $request_uri;

     

            $url = Context::getUrl($num_args, $args_list);

            if(!preg_match('/^http/i',$url)){

                preg_match('/^(http|https):\/\/([^\/]+)\//',$request_uri,$match);

                $url = Context::getUrl($num_args, $args_list, null, false);

                return substr($match[0],0,-1).$url;

            }

            return $url;

        }

     

     

     

    encode 되지 않은 Url을 만드는 함수입니다.

    getFullUrl()와 기능이 같습니다.

     

     

    string getSiteUrl(string DOMAIN, ['',] string KEY, string VALUE [,string KEY, string VALUE ...])

        /**

         * @brief Context::getUrl()를 쓰기 쉽게 함수로 선언

         * @return string

         *

         * getSiteUrl()은 지정된 도메인에 대해 주어진 인자의 값으로 변형하여 url을 리턴한다\n

         * 첫 인자는 도메인(http://등이 제외된)+path 여야 함.

         **/

        function getSiteUrl() {

            $num_args = func_num_args();

            $args_list = func_get_args();

     

            if(!$num_args) return Context::getRequestUri();

     

            $domain = array_shift($args_list);

            $num_args = count($args_list);

     

            return Context::getUrl($num_args, $args_list, $domain);

        }

     

     

     

    가상사이트를 위한 Url을 만드는 함수입니다. 첫 인자 DOMAIN에는 도메인 또는 vid를 받습니다.

     

     

    string getNotEncodedSiteUrl(string DOMAIN, ['',] string KEY, string VALUE[,string KEY, string VALUE...])

        function getNotEncodedSiteUrl() {

            $num_args = func_num_args();

            $args_list = func_get_args();

     

            if(!$num_args) return Context::getRequestUri();

     

            $domain = array_shift($args_list);

            $num_args = count($args_list);

     

            return Context::getUrl($num_args, $args_list, $domain, false);

        }

     

     

     

    encode 되지 않은 URL을 만드는 함수입니다. getSiteUrl()와 기능이 같습니다.

     

     

    string getFullSiteUrl(string DOMAIN, ['',] string KEY, string VALUE [,string KEY, string VALUE ...])

        /**

         * @brief getSiteUrl()의 값에 request uri를 추가하여 reutrn

         * full url을 얻기 위함

         **/

        function getFullSiteUrl() {

            $num_args = func_num_args();

            $args_list = func_get_args();

     

            $request_uri = Context::getRequestUri();

            if(!$num_args) return $request_uri;

     

            $domain = array_shift($args_list);

            $num_args = count($args_list);

     

            $url = Context::getUrl($num_args, $args_list, $domain);

            if(!preg_match('/^http/i',$url)){

                preg_match('/^(http|https):\/\/([^\/]+)\//',$request_uri,$match);

                return substr($match[0],0,-1).$url;

            }

            return $url;

        }

     

     

     

    가상사이트를 위한 http:// 로 시작하는 Url을 만드는 함수입니다.

     

     

    string isSiteID(string DOMAIN) ■

        /**

         * @brief 가상사이트의 Domain이 url형식인지 site id인지 return

         **/

        function isSiteID($domain) {

            return preg_match('/^([a-z0-9\_]+)$/i', $domain);

        }

     

     

     

     

    문자열 관련 함수 정의 :

    string cut_str(string STRING, int CUT_SIZE, string TAIL)

        /**

         * @brief 주어진 문자를 주어진 크기로 자르고 잘라졌을 경우 주어진 꼬리를 담

         * @param string 자를 원 문자열

         * @param cut_size 주어진 원 문자열을 자를 크기

         * @param tail 잘라졌을 경우 문자열의 제일 뒤에 붙을 꼬리

         * @return string

         **/

     

     

     

    문자열을 일정한 길이에 맞게 잘라서 뒤에 꼬리를 붙여주는 함수입니다.

     

     

     

    시간 관련 함수 정의 :

    int ztime(string STR)

     

     

    YYYYMMDDHHIISS 형식의 시간값을 unix time으로 변경

    // str : YYYYMMDDHHIISS 형식의 시간값

    // return : int

     

     

    string getTimeGap(string DATE, string FORMAT)

     

     

    YmdHis의 시간 형식을 지금으로 부터 몇분/몇시간전인지를 문자열로 출력하는 함수입니다.

    // YmdHis의 시간 형식을 지금으로 부터 몇분/몇시간전, 1일 이상 차이나면 format string return

     

     

    string getMonthName(int MONTH, bool SHORT)

     

     

    월 이름을 출력하는 함수입니다.

    // 예) 1월 → January, 7월 → July

     

     

    string zdate(string STR, string FORMAT, bool CONVERSION)

        /**

         * @brief YYYYMMDDHHIISS 형식의 시간값을 원하는 시간 포맷으로 변형

         * @param string|int str YYYYMMDDHHIISS 형식의 시간 값

         * @param string format php date()함수의 시간 포맷

         * @param bool conversion 언어에 따라 날짜 포맷의 자동변환 여부

         * @return string

         **/

     

     

     

    YYYYMMDDHHIISS 형식의 시간값을 원하는 시간 포맷으로 만들어 주는 함수입니다.

     

     

    string getMicroTime() ■

        function getMicroTime() {

            list($time1, $time2) = explode(' ', microtime());

            return (float)$time1 + (float)$time2;

        }

     

     

     

    // microtime() return

     

     

     

    기타 함수 정의 :

    debugPrint(mixed OBJECT)

     

     

    디버깅을 하기 위한  함수 입니다.

    XE_ROOT/config/config.inc.php 파일에 __DEBUG__ 값이 1이상으로 정의되어 있어야 합니다.

    __DEBUG_OUTPUT__ 값에 따라 결과값을 받을 방법을 선택할 수 있습니다.

     

         * 0 : files/_debug_message.php 에 연결하여 출력

         * 1 : HTML 최하단에 주석으로 출력 (Response Method가 HTML 일 때)

         * 2 : Firebug 콘솔에 출력 (PHP >= 5.2.0. Firebug/FirePHP 플러그인 필요)

     

     

     

     

     

    delObjectVars($target_obj, $del_obj) ■

        /**

         * @brief 첫번째 인자로 오는 object var에서 2번째 object의 var들을 제거

         * @param target_obj 원 object

         * @param del_obj 원 object의 vars에서 del_obj의 vars를 제거한다

         * @return object

         **/

     

     

     

    handleError($errno, $errstr, $file, $line) ■

        /**

         * @brief php5 이상에서 error_handing을 debugPrint로 변경

         * @param errno

         * @param errstr

         * @return file

         * @return line

         **/

        function handleError($errno, $errstr, $file, $line) {

            if(!__DEBUG__) return;

            $errors = array(E_USER_ERROR, E_ERROR, E_PARSE);

            if(!in_array($errno, $errors)) return;

     

            $output = sprintf("Fatal error : %s - %d", $file, $line);

            $output .= sprintf("%d - %s", $errno, $errstr);

     

            debugPrint($output);

        }

     

     

     

    getNumberingPath($no, $size=3) ■

        /**

         * @brief 주어진 숫자를 주어진 크기로 recursive하게 잘라줌

         * @param no 주어진 숫자

         * @param size 잘라낼 크기

         **/

        function getNumberingPath($no, $size=3) {

            $mod = pow(10, $size);

            $output = sprintf('%0'.$size.'d/', $no%$mod);

            if($no >= $mod) $output .= getNumberingPath((int)$no/$mod, $size);

            return $output;

        }

     

     

     

    url_decode($str) ■

        /**

         * @brief 한글이 들어간 url의 decode

         **/

        function url_decode($str) {

            return preg_replace('/%u([[:alnum:]]{4})/', '&#x\\1;',$str);

        }

     

     

     

    보안관련 함수 정의 :

    string removeHackTag(string CONTENT)

        /**

         * @brief 해킹 시도로 의심되는 코드들을 미리 차단

         **/

        function removeHackTag($content) {

            // 특정 태그들을 일반 문자로 변경

            $content = preg_replace('/<(\/?)(iframe|script|meta|style|applet|link|base|html|body)/is', '&lt;$1$2', $content);

     

            /**

             * 이미지나 동영상등의 태그에서 src에 관리자 세션을 악용하는 코드를 제거

             * - 취약점 제보 : 김상원님

             **/

            $content = preg_replace_callback("!<(/?)([a-z]+)(.*?)>!is", removeSrcHack, $content);

     

            // xmp tag 확인 및 추가

            $content = checkXmpTag($content);

     

            return $content;

        }

     

     

     

    해킹 시도로 의심될만한 코드들을 걸러주는 함수입니다.

     

     

     

    checkXmpTag($content)

    // xmp tag 확인 및 닫히지 않은 경우 추가

     

     

     

    removeSrcHack($matches)

    // xmp tag 정리

     

    // src값에 module=admin이라는 값이 입력되어 있으면 이 값을 무효화 시킴

     

     

     

    fixQuotation($matches)

    // attribute의 value를 " 로 둘러싸도록 처리하는 함수

     

     

     

    bool isCrawler(string AGENT)

        function isCrawler($agent = null) {

            if(!$agent) $agent = $_SERVER['HTTP_USER_AGENT'];

            $check_agent = array('bot', 'spider', 'google', 'yahoo', 'daum', 'teoma', 'fish', 'hanrss', 'facebook');

            $check_ip = array(

                '211.245.21.11*' /* mixsh */

            );

     

            foreach($check_agent as $str) {

                if(stristr($agent, $str) != FALSE) return true;

            }

     

            $check_ip = '/^('.implode($check_ip, '|').')/';

            $check_ip = str_replace('.', '\.', $check_ip);

            $check_ip = str_replace('*', '.+', $check_ip);

            $check_ip = str_replace('?', '.?', $check_ip);

     

            if(preg_match($check_ip, $_SERVER['REMOTE_ADDR'], $matches)) return true;

     

            return false;

        }

     

     

     

    접속자의 User Agent와 IP를 검사하여 로봇 여부를 확인하는 함수입니다.

     

     

     

    stripEmbedTagForAdmin(&$content, $writer_member_srl) ■

        function stripEmbedTagForAdmin(&$content, $writer_member_srl) {

            if(!Context::get('is_logged')) return;

            $oModuleModel = &getModel('module');

            $logged_info = Context::get('logged_info');

     

            if($writer_member_srl != $logged_info->member_srl && ($logged_info->is_admin == "Y" || $oModuleModel->isSiteAdmin($logged_info)) )

            {

                if($writer_member_srl)

                {

                    $oMemberModel =& getModel('member');

                    $member_info = $oMemberModel->getMemberInfoByMemberSrl($writer_member_srl);

                    if($member_info->is_admin == "Y")

                    {

                        return;

                    }

                }

                $security_msg = "

    ".Context::getLang('security_warning_embed')."

     

    ";

                $content = preg_replace('/<object[^>]+>?(.*?<\/object>)?/is', $security_msg, $content);

                $content = preg_replace('/<embed[^>]+>?(\s*<\/embed>)?/is', $security_msg, $content);

                $content = preg_replace('/<img[^>]+editor_component="multimedia_link"[^>]*>?(\s*<\/img>)?/is', $security_msg, $content);

            }

     

            return;

        }

        

        

        

        

       | 원본문서 http://xecenter.com/xe/18959

검색어 입력
전체검색, 사이트 전체를 검색합니다.