https://www.minitalk.kr/ko/download/others/view/24
제작자분이 공개해주신 XE용 위젯인데, XE 및 라이믹스 최신버전에서는 '위젯 생성' 버튼을 눌러도 반응이 없고
코드를 강제로 페이지에 삽입하게 되면 서버 오류가 발생하더라구요.
코드를 쓱 훑어보니 php7.2이후부터 수정해야하는 object -> BaseObject 도 딱히 해당되지 않는것 같고..
혹시 해당 위젯을 수정하여 사용하시거나 정상 작동하시는 분 계신가요?
아래는 코드 전문입니다(무료로 배포되는 자료라 코드를 올려도 된다고 판단하여 올립니다. 문제시 삭제하겠습니다)
<?php class minitalk extends WidgetHandler { function proc($args) { $logged_info = Context::get('logged_info'); $obj = null; /* widget configs */ $obj->url = isset($args->url) ? $args->url : null; $obj->url = preg_match('/\/$/',$obj->url) == true ? $obj->url : $obj->url.'/'; $obj->channel = isset($args->channel) ? $args->channel : null; $obj->key = isset($args->key) && strlen($args->key) == 32 ? $args->key : null; $obj->skin = isset($args->skins) ? $args->skins : 'default'; $obj->language = isset($args->language) ? $args->language : 'ko'; $obj->type = isset($args->type) ? $args->type : 'auto'; $obj->m_width = isset($args->m_width) && preg_match('/[1-9]+[0-9]*%?$/',$args->m_width) == true ? $args->m_width : '100%'; $obj->m_height = isset($args->m_height) && preg_match('/[1-9]+[0-9]*%?$/',$args->m_height) == true ? $args->m_height : '500'; $obj->view_user = isset($args->view_user) ? $args->view_user : 'true'; $obj->view_user_limit = isset($args->view_user_limit) ? $args->view_user_limit : 'ALL'; $obj->view_alert_limit = isset($args->view_alert_limit) ? $args->view_alert_limit : 'ALL'; $obj->log_limit = isset($args->log_limit) ? $args->log_limit : '15'; $obj->plugin = isset($args->plugin) ? $args->plugin : 'ALL'; $obj->admin_user = isset($args->admin_user) ? explode(',',$args->admin_user) : array(); $obj->notice = isset($args->notice) ? $args->notice : ''; $obj->split_string = isset($args->split_string) ? $args->split_string : ' : '; $obj->tool_type = isset($args->tool_type) ? $args->tool_type : 'icon'; $obj->nickname_type = isset($args->nickname_type) ? $args->nickname_type : 'nickname'; $obj->icon_type = isset($args->icon_type) ? $args->icon_type : '0'; $obj->nickcon_type = isset($args->nickcon_type) ? $args->nickcon_type : 'true'; $obj->popup_menu = isset($args->popup_menu) ? explode(',',$args->popup_menu) : array(); /* values */ $obj->wwwroot = getFullUrl(); $obj->wwwroot = preg_match('/\/$/',$obj->wwwroot) == true ? $obj->wwwroot : $ob->wwwroot.'/'; $obj->width = preg_match('/%$/',$obj->m_width) == true ? $obj->m_width : $obj->m_width.'px'; $obj->height = preg_match('/%$/',$obj->m_height) == true ? $obj->m_height : $obj->m_height.'px'; $obj->nickname = null; $obj->nickcon = null; $obj->opperCode = null; $obj->info = array(); if (in_array('communication',$obj->popup_menu) == true) $obj->info['communication'] = ''; if (in_array('homepage',$obj->popup_menu) == true) $obj->info['homepage'] = ''; if (in_array('blog',$obj->popup_menu) == true) $obj->info['blog'] = ''; if ($logged_info->member_srl) { $oModuleModel = &getModel('module'); $oPointModel = &getModel('point'); $config = $oModuleModel->getModuleConfig('point'); $point = $oPointModel->getPoint($logged_info->member_srl); $level = $oPointModel->getLevel($point,$config->level_step); if ($obj->nickname_type == 'nickname') { $obj->nickname = $logged_info->nick_name; } elseif ($obj->nickname_type == 'name') { $obj->nickname = $logged_info->user_name; } elseif ($obj->nickname_type == 'user_id') { $obj->nickname = $logged_info->user_id; } elseif ($obj->nickname_type == 'all') { $obj->nickname = $logged_info->nick_name.'('.$logged_info->user_id.')'; } $obj->nickcon = ''; if ($obj->icon_type == 1) { // 레벨아이콘 $obj->nickcon = Context::getRequestUri().'modules/point/icons/'.$config->level_icon.'/'.$level.'.gif,'; } elseif ($obj->icon_type == 2) { // 그룹아이콘 $obj->nickcon = $logged_info->group_mark->src ? $logged_info->group_mark->src.',' : ''; } elseif ($obj->icon_type == 3) { // 아이콘샵 $oIconshopModel = &getModel('iconshop'); $icon = $oIconshopModel->getMemberIconBySelected($logged_info->member_srl); $obj->nickcon = $icon->file1 ? Context::getRequestUri().$icon->file1.',' : ''; } elseif ($obj->icon_type == 4) { // 회원아이콘 $obj->nickcon = $logged_info->image_mark->src ? $logged_info->image_mark->src.',' : ''; } $popup_menu = explode(",",$args->popup_menu); $info = array(); if (in_array('communication',$obj->popup_menu) == true) { $obj->info['communication'] = str_replace("&","&",getFullUrl('','module','communication','act','dispCommunicationSendMessage','receiver_srl',$logged_info->member_srl)); } if (in_array('homepage',$obj->popup_menu) == true) { $obj->info['homepage'] = $logged_info->homepage; } if (in_array('blog',$obj->popup_menu) == true) { $obj->info['blog'] = $logged_info->blog; } if (isset($logged_info->profile_image) && isset($logged_info->profile_image->src)) { $obj->info['photo'] = $logged_info->profile_image->src; } // 이미지이름 연동 if ($obj->nickcon_type == 'true' && $logged_info->image_name->src) { $obj->nickcon.= $logged_info->image_name->src; } else { $obj->nickcon.= '{nickname}'; } // 관리자라면 if (in_array($logged_info->user_id,$obj->admin_user) == true) { $obj->opperCode = $this->GetOpperCode('ADMIN',$obj->key); } else { $obj->opperCode = $this->GetOpperCode('MEMBER',$obj->key); } } if (count($obj->info) > 0) { $obj->info = json_encode($obj->info); } else { $obj->info = null; } Context::set('minitalk',$obj); $act = Context::get('act'); $tpl_path = sprintf('%sskins/%s',$this->widget_path,'default'); $tpl_file = ($act == "dispPageAdminContentModify" || $act == "procWidgetGenerateCodeInPage")? "preview" : "minitalk"; $oTemplate = &TemplateHandler::getInstance(); return $oTemplate->compile($tpl_path, $tpl_file); } function MiniTalkEncoder($value,$key) { $padSize = 16 - (strlen($value) % 16); $value = $value.str_repeat(chr($padSize),$padSize); $output = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$value,MCRYPT_MODE_CBC,str_repeat(chr(0),16)); return base64_encode($output); } function MiniTalkDecoder($value,$key) { $value = base64_decode($value); $output = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key,$value,MCRYPT_MODE_CBC,str_repeat(chr(0),16)); $valueLen = strlen($output); if ($valueLen % 16 > 0) return false; $padSize = ord($output{$valueLen - 1}); if (($padSize < 1) || ($padSize > 16)) return false; for ($i=0;$i<$padSize;$i++) { if (ord($output{$valueLen - $i - 1}) != $padSize) return false; } return substr($output,0,$valueLen-$padSize); } function GetOpperCode($opper,$key) { $value = json_encode(array('opper'=>$opper,'ip'=>$_SERVER['REMOTE_ADDR'])); return urlencode($this->MiniTalkEncoder($value,$key)); } } ?>
정상작동합니다.
https://www.minitalk.kr/ko/service/manual 메뉴얼대로 하시면되요