public function show_error($heading, $message, $template = 'error_general', $status_code = 500)
{
$templates_path = config_item('error_views_path');
if (empty($templates_path))
{
$templates_path = VIEWPATH.'errors'.DIRECTORY_SEPARATOR;
}
if (is_cli())
{
$message = "\t".(is_array($message) ? implode("\n\t", $message) : $message);
$template = 'cli'.DIRECTORY_SEPARATOR.$template;
}
else
{
set_status_header($status_code);
$message = '<p>'.(is_array($message) ? implode('</p><p>', $message) : $message).'</p>';
$template = 'html'.DIRECTORY_SEPARATOR.$template;
}
if (ob_get_level() > $this->ob_level + 1)
{
ob_end_flush();
}
ob_start();
if (is_cli())
{
include($templates_path.$template.'.php');
}
else
{
$CI =& get_instance();
// CI super object not available in some cases
if( $CI === NULL )
{
new CI_Controller();
$CI =& get_instance();
}
$view_data = [
'heading' => $heading,
'message' => $message
];
$data = [
'title' => WEBSITE_NAME . ' - ' . $heading,
'remove_top_bar_menu' => 1,
'content' => $CI->load->view( 'errors/' . $template, $view_data, TRUE )
];
echo $CI->load->view( 'templates/main_template', $data, TRUE );
}
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}