";
print_r($str);
echo "";
}
/*****************************************************************************************
* Alert 창을 띄우고 특정 URL로 이동합니다.
* @param string $msg
* @param string $url
****************************************************************************************/
function alert($msg = '', $url = '')
{
$CI =&get_instance();
if (empty($msg)) {
$msg = lang('common_invalid_request');
}
echo '';
echo '';
exit;
}
/*****************************************************************************************
* Alert 창을 띄우고 현재 팝업창을 닫습니다.
* @param string $msg
****************************************************************************************/
function alert_close($msg='', $refresh_parent = FALSE)
{
$CI =&get_instance();
if (empty($msg)) {
$msg = lang('common_invalid_request');
}
echo '';
echo '';
exit;
}
/*****************************************************************************************
* 로그인이 필요한 페이지임을 알리고, 로그인 페이지로 이동합니다.
* @param string $msg
****************************************************************************************/
function alert_login($url="members/login")
{
$CI =&get_instance();
$url = base_url($url)."?reurl=".current_full_url(TRUE);
echo '';
echo '';
exit;
}
/*****************************************************************************************
* 관리자용 MODAL 창을 닫고, 메시지를 띄운다.
* @param string $msg
* @param mixed $refresh TRUE : 부모창을 새로고침 FALSE : 아무행동안함 String : 입력한 String을 자바스크립트로 실행
****************************************************************************************/
function alert_modal_close($msg="", $refresh=FALSE)
{
if (empty($msg)) {
$msg = lang('common_invalid_request');
}
echo '';
echo '';
exit;
}
/*****************************************************************************************
* 관리자용 MODAL 창을 닫고, 메시지를 띄운다.
* @param string $msg
* @param mixed $refresh TRUE : 부모창을 새로고침 FALSE : 아무행동안함 String : 입력한 String을 자바스크립트로 실행
****************************************************************************************/
function alert_modal2_close($msg="", $refresh=TRUE)
{
$CI =&get_instance();
if (empty($msg)) {
$msg = lang('common_invalid_request');
}
echo '';
echo '';
exit;
}
/******************************************************************************************
* 특정문자열을 암호화하여 내보낸다.
* @param $string
* @return string
*****************************************************************************************/
function get_password_hash($string)
{
$CI =& get_instance();
return hash('md5', $CI->config->item('encryption_key') . $string );
}
/****************************************************************************************
* 배열의 특정 키값을 가져옵니다.
* @param $item
* @param $array
* @param null $default
* @return mixed|null
***************************************************************************************/
function element($item, $array, $default = NULL)
{
return is_array($array) && array_key_exists($item, $array) && $array[$item] ? $array[$item] : $default;
}
/*****************************************************************************************
* 현재 주소를 Parameter 포함해서 가져온다.
* @return string
****************************************************************************************/
function current_full_url($urlencode = FALSE)
{
$CI =& get_instance();
$url = $CI->config->site_url($CI->uri->uri_string());
$return = ($CI->input->server('QUERY_STRING'))
? $url . '?' . $CI->input->server('QUERY_STRING') : $url;
return $urlencode ? urlencode($return) : $return;
}
/******************************************************************************************
* 해당 URL이 우리 서버 도메인을 가르키는지 확인한다.
* @param $url 체크할 URL
* @param bool $check_file_exist 파일존재 여부까지 확인한다.
* @return bool
*****************************************************************************************/
function is_my_domain($url, $check_file_exist = TRUE) {
// 처음 시작이 / 이고 두번제 문자가 /이 아닐경우
if( substr($url,0,1) === '/' && substr($url,1,1) !== '/' )
{
if( $check_file_exist ) {
return file_exists( FCPATH . $url );
}
return TRUE;
}
if( strpos( $url, base_url()) !== FALSE ) {
if( $check_file_exist ) {
return file_exists( FCPATH . str_replace( base_url(), "", $url ));
}
return TRUE;
}
return FALSE;
}
/******************************************************************************************
* 업로드를 위한 폴더를 생성한다.
* @param string $dir
*****************************************************************************************/
function make_dir($dir = "", $make_date = TRUE, $return_only_filepath = FALSE)
{
$dir = str_replace("/", DIRECTORY_SEPARATOR, $dir);
$dirs = explode(DIRECTORY_SEPARATOR, $dir);
$now_dir = FCPATH;
foreach($dirs as $dr)
{
if( empty($dr) ) continue;
$now_dir .= DIRECTORY_SEPARATOR . $dr;
if (is_dir($now_dir) === false) {
$old = umask(0);
mkdir($now_dir, 0777);
umask($old);
}
}
if( $make_date )
{
$now_dir .= DIRECTORY_SEPARATOR . date('Y');
if( is_dir($now_dir) === false )
{
$old = umask(0);
mkdir($now_dir, 0777);
umask($old);
}
$now_dir .= DIRECTORY_SEPARATOR . date('m');
if( is_dir($now_dir) === false )
{
$old = umask(0);
mkdir($now_dir, 0777);
umask($old);
}
}
$now_dir .= DIRECTORY_SEPARATOR;
$now_dir = str_replace(DIRECTORY_SEPARATOR, "/", $now_dir);
if($return_only_filepath) {
$fcpath = str_replace(DIRECTORY_SEPARATOR, "/", FCPATH);
$now_dir = str_replace($fcpath, "", $now_dir);
$now_dir = str_replace(FCPATH, "", $now_dir);
}
return $now_dir;
}
/******************************************************************************************
* HTML 태그를 제거하고 일반 텍스트로 변경
*****************************************************************************************/
function get_text($str, $html=0, $restore=false)
{
$source[] = "<";
$target[] = "<";
$source[] = ">";
$target[] = ">";
$source[] = "\"";
$target[] = """;
$source[] = "\'";
$target[] = "'";
if($restore)
$str = str_replace($target, $source, $str);
// 3.31
// TEXT 출력일 경우 & 등의 코드를 정상으로 출력해 주기 위함
if ($html === 0) {
$str = html_symbol($str);
}
if ($html) {
$source[] = "\n";
$target[] = "
";
}
return str_replace($source, $target, $str);
}
/**
* HTML 이 포함된 내용에서 요약본을 TEXT 형태로 뽑아낸다.
* @param $str
* @param bool $nl2br
* @return mixed
*/
function get_summary($str, $nl2br = FALSE)
{
$str = html_entity_decode($str);
$str = strip_tags($str);
if($nl2br) {
$str = nl2br($str);
}
else {
$str = str_replace("\n","",$str);
}
return get_text($str, $nl2br);
}
/**
* 파일 사이즈를 알기쉽게 표기
* @param $bytes
* @param int $decimals
* @return string
*/
function format_size($bytes, $decimals = 2) {
$size = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
$factor = floor((strlen($bytes) - 1) / 3);
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];
}
/******************************************************************************************
* HTML SYMBOL 변환
* & · 등을 정상으로 출력
*****************************************************************************************/
function html_symbol($str)
{
return preg_replace("/\&([a-z0-9]{1,20}|\#[0-9]{0,3});/i", "&\\1;", $str);
}
/******************************************************************************************
* 에디터를 호출한다.
*****************************************************************************************/
function get_editor($name, $contents="", $class="", $is_dhtml_editor = true, $editor_type = 'ckeditor')
{
$param['id'] = $name;
$param['name'] = $name;
$param['height'] = '300px';
$param['contents'] = $contents;
$CI =& get_instance();
if( $editor_type == 'smarteditor' && $is_dhtml_editor )
{
$param['editor_url'] = base_url('/plugins/smarteditor-2.9.0');
$CI->site->add_js( $param['editor_url'] . "/js/service/HuskyEZCreator.js");
$return = $CI->load->view("tools/".$editor_type, $param, TRUE);
}
else if ( $editor_type == 'ckeditor' && $is_dhtml_editor )
{
$param['editor_url'] = base_url('/plugins/ckeditor');
$CI->site->add_js( $param['editor_url'] . "/ckeditor.js");
$CI->site->add_js( $param['editor_url'] . "/config.js");
$return = $CI->load->view("tools/".$editor_type, $param, TRUE);
}
else {
$return = "\n";
}
return $return;
}
/*****************************************************************************************
* 글자수를 잘라서 보여줍니다.
* @param string $msg
****************************************************************************************/
function cut_str($str = '', $len = '', $suffix = '…')
{
return mb_substr($str,0,$len) . $suffix;
}
/***************************************************************************************
* 날짜를 일정 형식으로 보여줍니다.
* @param $date
* @return false|string
**************************************************************************************/
function display_datetime($datetime = '', $type = '', $custom = '')
{
$CI =& get_instance();
if (empty($datetime)) {
return false;
}
$datetime = is_int($datetime) ? $datetime : strtotime($datetime);
if ($type === 'sns') {
$diff = time() - $datetime;
$s = 60; //1분 = 60초
$h = $s * 60; //1시간 = 60분
$d = $h * 24; //1일 = 24시간
$y = $d * 10; //1년 = 1일 * 10일
if ($diff < $s) {
$result = $diff . langs('공통/time/second_ago');
} elseif ($h > $diff && $diff >= $s) {
$result = round($diff/$s) . langs('공통/time/minute_ago');
} elseif ($d > $diff && $diff >= $h) {
$result = round($diff/$h) . langs('공통/time/hour_ago');
} elseif ($y > $diff && $diff >= $d) {
$result = round($diff/$d) . langs('공통/time/days_ago');
} else {
if (date('Y-m-d', $datetime) == date('Y-m-d')) {
$result = date('H:i', $datetime);
} else {
$result = date('Y.m.d', $datetime);
}
}
} elseif ($type === 'user' && $custom) {
return date($custom, $datetime);
} elseif ($type === 'full') {
if (date('Y-m-d', $datetime) == date('Y-m-d')) {
$result = date('H:i', $datetime);
} elseif (date('Y', $datetime) === date('Y')) {
$result = date('m-d H:i', $datetime);
} else {
$result = date('Y-m-d', $datetime);
}
} else {
if (date('Y-m-d', $datetime) === date('Y-m-d')) {
$result = date('H:i', $datetime);
} else {
$result = date('Y.m.d', $datetime);
}
}
return $result;
}
/****************************************************
* IP를 일정형식으로 변환하여 보여줍니다.
* @param string $ip
* @param string $type
* @return bool|mixed
***************************************************/
function display_ipaddress($ip = '', $type = '0001')
{
if( empty($type) )
{
$CI =& get_instance();
$type = $CI->site->config('style_ip_display');
}
if (empty($ip)) {
return false;
}
$regex = '';
$regex .= ($type[0] === '1') ? '\\1' : '♡';
$regex .= '.';
$regex .= ($type[1] === '1') ? '\\2' : '♡';
$regex .= '.';
$regex .= ($type[2] === '1') ? '\\3' : '♡';
$regex .= '.';
$regex .= ($type[3] === '1') ? '\\4' : '♡';
return preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", $regex, $ip);
}
/**
* HTML 스타일의 내용을 가공해서 가져온다.
* @param string $content HTML태그를 포함한 내용
* @param int $thumb_width 썸네일 너비
* @param bool $autolink URL에 자동링크 여부
* @param bool $popup 링크를 팝업으로 띄울것인가?
* @param bool $writer_is_admin 글 작성자가 관리자인가?
* @return mixed|string
*/
function display_html_content($content = '', $thumb_width=700)
{
$source = array();
$target = array();
$source[] = '//';
$target[] = '';
$source[] = "/<\?xml:namespace prefix = o ns = \"urn:schemas-microsoft-com:office:office\" \/>/";
$target[] = '';
// 테이블 태그의 갯수를 세어 테이블이 깨지지 않도록 한다.
$table_begin_count = substr_count(strtolower($content), '