따로 포인트 관리 애드온을 사용하고 있는데
특정 횟수 미만일때에는 포인트 차감이 되지 않도록
포인트 모듈에 트리거가 개입해서 동작하는 애드온인데
PHP Fatal error: Cannot make static method ModuleHandler::triggerCall() non static in class TriggerModuleHandler in /home/addons/control_download_trigger/class/TriggerModuleHandler.php on line 0
이런식으로 애러가나네요..
라인이 0번째 줄인건 처음보네요..
해당 에러가 난 소스는 이런식으로 시작되는데
라이믹스의 호출명이 XE와는 다른가요..?
$output = TriggerModuleHandler::triggerCall('file.downloadFile', 'before', $file_obj);
<?php /* Copyright (C) UPGLE <http://www.upgle.com> */ class TriggerModuleHandler extends ModuleHandler { /** * call a trigger * @param string $trigger_name trigger's name to call * @param string $called_position called position * @param object $obj an object as a parameter to trigger * @return Object * */ function triggerCall($trigger_name, $called_position, &$obj) { // skip if not installed if(!Context::isInstalled()) { return new Object(); } $oModuleModel = getModel('module'); $triggers = $oModuleModel->getTriggers($trigger_name, $called_position); if(!$triggers || count($triggers) < 1) { return new Object(); } foreach($triggers as $item) { $module = $item->module; $type = $item->type; $called_method = $item->called_method; // 포인트 모듈인 경우 패스 if($module == 'point') continue; $oModule = getModule($module, $type); if(!$oModule || !method_exists($oModule, $called_method)) { continue; } $before_each_trigger_time = microtime(true); $output = $oModule->{$called_method}($obj); $after_each_trigger_time = microtime(true); $elapsed_time_trigger = $after_each_trigger_time - $before_each_trigger_time; $slowlog = new stdClass; $slowlog->caller = $trigger_name . '.' . $called_position; $slowlog->called = $module . '.' . $called_method; $slowlog->called_extension = $module; if($trigger_name != 'XE.writeSlowlog') writeSlowlog('trigger', $elapsed_time_trigger, $slowlog); if(is_object($output) && method_exists($output, 'toBool') && !$output->toBool()) { return $output; } unset($oModule); } return new Object(); } } /* End of file TriggerModuleHandler.class.php */ /* Location: ./addons/control_download_trigger/class/TriggerModuleHandler.class.php */
아무튼 저런 식으로 애드온에서 코어를 주물러대는 기능은 앞으로 라이믹스와 호환되지 않게 될 가능성이 높습니다. 라이믹스에서는 저렇게 하지 않아도 애드온에서 트리거를 사용하는 새로운 방법을 제공합니다.