* 폴더가 이미 존재할 경우 생성하지 않고 경로만 반환합니다. * * @return string */ public static function createCacheDirectory() { $cache_dir = './files/pdbig/addons/' . AddonFunction::getAddonName(2) . '/'; if(!is_dir($cache_dir)) { mkdir($cache_dir, 0777, true); } return $cache_dir; } /** * setDefaultAddonInfo * * 넘겨받은 $addon_info 의 기본값을 설정합니다. * * @param object $addon_info 현재 애드온의 $addon_info * @param array $value_map 기본값에 대한 매핑 배열 { $key => $value } * * @return object */ public static function setDefaultAddonInfo($addon_info, $value_map) { foreach($value_map as $key => $value) { if(!isset($addon_info->$key) || trim($addon_info->$key) == '') { // 설정 타입 지정 시 if(is_array($value)) { if(isset($value['type'])) { switch($value['type']) { case 'YN': if(is_bool($value['default'])) { $value = $value['default']; } elseif(in_array($value['default'], ['Y', 'N'])) { $value = ($value['default'] == 'Y'); } break; case 'INT': $value = intval($value['default']); break; } } } $addon_info->$key = $value; } else { // 설정 타입 지정 시 if(is_array($value)) { if(isset($value['type'])) { switch($value['type']) { case 'YN': $addon_info->$key = ($addon_info->$key == 'Y'); break; case 'INT': $addon_info->$key = intval($addon_info->$key); break; } } } } } return $addon_info; } /** * compareAct * * 현재 act 의 값을 비교합니다. * * @param string|array $act 비교할 act 값 * * @return bool */ public static function compareAct($act) { $current_act = Context::get('act'); if(!is_array($act)) { return $current_act == $act; } else { return in_array($current_act, $act); } } /** * compareAddonAct * * 현재 addon_act 의 값을 비교합니다. * * @param string|array $addon_act 비교할 addon_act 값 * * @return bool */ public static function compareAddonAct($addon_act) { $current_act = Context::get('addon_act'); if(!is_array($addon_act)) { return $current_act == $addon_act; } else { return in_array($current_act, $addon_act); } } /** * compareSubAct * * 현재 sub_act 의 값을 비교합니다. * * @param string|array $sub_act 비교할 sub_act 값 * * @return bool */ public static function compareSubAct($sub_act) { $current_act = Context::get('sub_act'); if(!is_array($sub_act)) { return $current_act == $sub_act; } else { return in_array($current_act, $sub_act); } } /** * getDocument * * 게시글 객체를 가져옵니다. * document_srl 이 지정되지 않았을 경우, 현재 활성화된 게시글을 가져옵니다. * * @param int $document_srl * * @return documentItem */ public static function getDocument($document_srl = null) { if($document_srl === null) { $oDocument = Context::get('oDocument'); if($oDocument !== null) { return $oDocument; } $document_srl = Context::get('document_srl'); if($document_srl == null) { return null; } } $oDocumentModel = getModel('document'); $oDocument = $oDocumentModel->getDocument($document_srl); return $oDocument; } /** * setGlobalAddonInfo * * $addon_info 를 $GLOBALS 에 등록합니다. * 함수 등에서 $addon_info 로 접근할 수 없을 때 사용할 수 있습니다. * * @param object $addon_info * @param string $addon_name 애드온 이름 */ public static function setGlobalAddonInfo($addon_info, $addon_name = null) { if($addon_name === null) { $addon_name = AddonFunction::getAddonName(1); } AddonFunction::setGlobal('_addon_info', $addon_info, $addon_name); } /** * getGlobalAddonInfo * * setGlobalAddonInfo 로 등록한 글로벌 $addon_info 를 반환합니다. * * @param string $addon_name 애드온 이름 * * @return object */ public static function getGlobalAddonInfo($addon_name = null) { if($addon_name === null) { $addon_name = AddonFunction::getAddonName(1); } return AddonFunction::getGlobal('_addon_info', null, $addon_name); } /** * setGlobal * * 변수를 $GLOBALS 에 등록합니다. * 함수 등에서 외부 변수에 접근해야 할 때 이용할 수 있습니다. * * @param string $key 변수 키 * @param string $value 변수 값 * @param string $addon_name 애드온 이름 */ public static function setGlobal($key, $value = null, $addon_name = null) { if($addon_name === null) { $addon_name = AddonFunction::getAddonName(1); } $GLOBALS['pdbig']['addons'][$addon_name]['variables'][$key] = $value; } /** * getGlobal * * 변수를 $GLOBALS 에서 가져옵니다. * 함수 등에서 외부 변수에 접근해야 할 때 이용할 수 있습니다. * * @param string $key 변수 키 * @param string $addon_name 애드온 이름 */ public static function getGlobal($key, $default = null, $addon_name = null) { if($addon_name === null) { $addon_name = AddonFunction::getAddonName(1); } return $GLOBALS['pdbig']['addons'][$addon_name]['variables'][$key] ? : $default; } /** * setGlobalVariable [LEGACY] * * setGlobal 의 alias */ public static function setGlobalVariable($key, $value = null, $addon_name = null) { return AddonFunction::setGlobal($key, $value, $addon_name); } /** * getGlobalVariable [LEGACY] * * getGlobal 의 alias */ public static function getGlobalVariable($key, $addon_name = null) { return AddonFunction::getGlobal($key, null, $addon_name); } /** * setSession * * 애드온 전용 세션값을 설정합니다. * * @param string $key 세션 키 * @param mixed $value 저장할 세션 값 */ public static function setSession($key, $value, $addon_name = null) { if(is_null($addon_name)) { $addon_name = AddonFunction::getAddonName(1); } $_SESSION['pdbig']['addons'][$addon_name][$key] = $value; } /** * getSession * * setSession 으로 설정된 애드온 전용 세션값을 반환합니다. * * @param string $key 세션 키 * * @return mixed */ public static function getSession($key, $default = null, $addon_name = null) { if(is_null($addon_name)) { $addon_name = AddonFunction::getAddonName(1); } $session_block = $_SESSION['pdbig']['addons'][$addon_name]; if(isset($session_block[$key])) { return $session_block[$key]; } return null; } /** * deleteSession * * setSession 으로 설정된 애드온 전용 세션값을 삭제합니다. * * @param string $key 세션 키 */ public static function deleteSession($key, $addon_name) { if(is_null($addon_name)) { $addon_name = AddonFunction::getAddonName(1); } unset($_SESSION['pdbig']['addons'][$addon_name]); } /** * setAddonSession [LEGACY] * * setSession 의 alias */ public static function setAddonSession($key, $value) { $addon_name = AddonFunction::getAddonName(1); return AddonFunction::setSession($key, $value, $addon_name); } /** * getAddonSession [LEGACY] * * getSession 의 alias */ public static function getAddonSession($key) { $addon_name = AddonFunction::getAddonName(1); return AddonFunction::getSession($key, null, $addon_name); } /** * deleteAddonSession [LEGACY] * * deleteSession 의 alias */ public static function deleteAddonSession($key) { $addon_name = AddonFunction::getAddonName(1); return AddonFunction::deleteSession($key, $addon_name); } /** * setJSLocation * * location.href 값을 설정하는 스크립트를 출력합니다. * * @param string $url */ public static function setJSLocation($url) { $script = ''; echo $script; } /** * replaceJSLocation * * location.replace 를 실행하는 스크립트를 출력합니다. * * @param string $url */ public static function replaceJSLocation($url) { $script = ''; echo $script; } /** * setJSVariable * * 변수 묶음을 JS 로 전달합니다. * JS 파일에서 window.wst_addon_name 형식으로 접근할 수 있습니다. * * @param array $variable */ public static function setJSVariable($variable) { $raw_data = base64_encode(json_encode($variable)); $script = ''; Context::addHtmlHeader($script); } /** * responseJSON * * JSON 형식으로 응답을 발송합니다. * * @param (object|array) $json_body */ public static function responseJSON($json_body) { $json_raw = json_encode($json_body); header('Content-Type: application/json'); print($json_raw); exit(); } /** * loadFile * * CSS/JS 파일을 첨부합니다. * * @param string $path * @param boolean $is_body */ public static function loadFile($path, $is_body = false) { if(end(explode('.', $path)) == 'css') { Context::loadFile($path); } else { Context::loadFile(array($path, $is_body ? 'body' : 'head', '', null), true); } } } }