function execute($request)
 {
     parent::execute($request);
     $cat_data = $this->currentCategoryObj->getData();
     $breadcrumbsObj =& AltsysBreadcrumbs::getInstance();
     // get $history_profile from the id
     $older_profile = pico_get_content_history_profile($this->mydirname, $request['older_history_id']);
     if (empty($request['newer_history_id'])) {
         $newer_profile = pico_get_content_history_profile($this->mydirname, 0, intval($older_profile[1]));
     } else {
         $newer_profile = pico_get_content_history_profile($this->mydirname, $request['newer_history_id']);
     }
     // check each content_ids
     if ($older_profile[1] != $newer_profile[1]) {
         die('Differenct content_ids each other');
     }
     $this->contentObj = new PicoContent($this->mydirname, $request['content_id'], $this->currentCategoryObj);
     // add breadcrumbs if the content exists
     if (!$this->contentObj->isError()) {
         $content_data = $this->contentObj->getData();
         $this->assign['content'] = $this->contentObj->getData4html();
         $breadcrumbsObj->appendPath(XOOPS_URL . '/modules/' . $this->mydirname . '/' . $this->assign['content']['link'], $this->assign['content']['subject']);
         $breadcrumbsObj->appendPath(XOOPS_URL . '/modules/' . $this->mydirname . '/index.php?page=contentmanager&content_id=' . $content_data['id'], _MD_PICO_CONTENTMANAGER);
     }
     // permission check by 'can_edit'
     if (empty($cat_data['can_edit'])) {
         redirect_header(XOOPS_URL . '/', 2, _MD_PICO_ERR_EDITCONTENT);
         exit;
     }
     // get diff
     $diff_from_file4disp = '';
     $original_error_level = error_reporting();
     error_reporting($original_error_level & ~E_NOTICE & ~E_WARNING);
     $diff = new Text_Diff(explode("\n", $older_profile[2]), explode("\n", $newer_profile[2]));
     //$renderer = new Text_Diff_Renderer_unified();
     //$diff_str = htmlspecialchars( $renderer->render( $diff ) , ENT_QUOTES ) ;
     $renderer = new Text_Diff_Renderer_inline();
     $this->assign['diff_str'] = $renderer->render($diff);
     error_reporting($original_error_level);
     // breadcrumbs
     $breadcrumbsObj->appendPath('', 'DIFF');
     $this->assign['xoops_breadcrumbs'] = $breadcrumbsObj->getXoopsbreadcrumbs();
     $this->assign['xoops_pagetitle'] = _MD_PICO_HISTORY;
     // view
     $this->view = $request['view'];
     switch ($this->view) {
         case 'diffhistories':
             $this->template_name = $this->mydirname . '_main_diffhistories.html';
             $this->is_need_header_footer = true;
             break;
         default:
             $this->is_need_header_footer = false;
             break;
     }
 }
 function execute($request)
 {
     parent::execute($request);
     $cat_data = $this->currentCategoryObj->getData();
     $breadcrumbsObj =& AltsysBreadcrumbs::getInstance();
     $this->contentObj =& new PicoContent($this->mydirname, $request['content_id'], $this->currentCategoryObj);
     // add breadcrumbs if the content exists
     if (!$this->contentObj->isError()) {
         $content_data = $this->contentObj->getData();
         $this->assign['content'] = $this->contentObj->getData4html();
         $breadcrumbsObj->appendPath(XOOPS_URL . '/modules/' . $this->mydirname . '/' . $this->assign['content']['link'], $this->assign['content']['subject']);
         $breadcrumbsObj->appendPath(XOOPS_URL . '/modules/' . $this->mydirname . '/index.php?page=contentmanager&content_id=' . $content_data['id'], _MD_PICO_CONTENTMANAGER);
     }
     // permission check by 'can_edit'
     if (empty($cat_data['can_edit'])) {
         redirect_header(XOOPS_URL . '/', 2, _MD_PICO_ERR_EDITCONTENT);
         exit;
     }
     // get $history_profile from the id
     $this->assign['content_history_id'] = $request['content_history_id'];
     list(, , $history_body) = pico_get_content_history_profile($this->mydirname, $request['content_history_id']);
     $this->assign['history_body_raw'] = $history_body;
     // breadcrumbs
     $breadcrumbsObj->appendPath('', _MD_PICO_HISTORY);
     $this->assign['xoops_breadcrumbs'] = $breadcrumbsObj->getXoopsbreadcrumbs();
     $this->assign['xoops_pagetitle'] = _MD_PICO_HISTORY;
     // view
     $this->view = $request['view'];
     switch ($this->view) {
         case 'viewhistory':
             $this->template_name = $this->mydirname . '_main_viewhistory.html';
             $this->is_need_header_footer = true;
             break;
         case 'download':
         default:
             $this->is_need_header_footer = false;
             break;
     }
 }
<?php

require_once dirname(dirname(__FILE__)) . '/include/main_functions.php';
require_once dirname(dirname(__FILE__)) . '/include/history_functions.php';
// set $cat_id,$content_id from $older_history_id
list($_REQUEST['cat_id'], $_REQUEST['content_id'], ) = pico_get_content_history_profile($mydirname, intval(@$_GET['older_history_id']));
// common prepend
require dirname(dirname(__FILE__)) . '/include/common_prepend.inc.php';
// global $breadcrumbsObj, $picoRequest, $permissions, $currenCategoryObj
// global $xoopsModuleConfig(overridden)
// add request
$picoRequest['older_history_id'] = intval(@$_GET['older_history_id']);
$picoRequest['newer_history_id'] = intval(@$_GET['newer_history_id']);
$picoRequest['view'] = @$_GET['view'] == 'single' ? 'single' : 'diffhistories';
// controller
require_once dirname(dirname(__FILE__)) . '/controllers/PicoControllerDiffHistories.class.php';
$controller =& new PicoControllerDiffHistories($currentCategoryObj);
$controller->execute($picoRequest);
// render
if ($controller->isNeedHeaderFooter()) {
    $xoopsOption['template_main'] = $controller->getTemplateName();
    include XOOPS_ROOT_PATH . '/header.php';
    $xoopsTpl->assign($controller->getAssign());
    $xoopsTpl->assign('xoops_module_header', pico_main_render_moduleheader($mydirname, $xoopsModuleConfig, $controller->getHtmlHeader()) . $xoopsTpl->get_template_vars('xoops_module_header'));
    include XOOPS_ROOT_PATH . '/footer.php';
} else {
    $controller->render();
}
exit;
<?php

require_once dirname(dirname(__FILE__)) . '/include/main_functions.php';
require_once dirname(dirname(__FILE__)) . '/include/history_functions.php';
// set $cat_id,$content_id from $content_history_id
$content_history_id = intval(@$_GET['content_history_id']);
list($_REQUEST['cat_id'], $_REQUEST['content_id'], ) = pico_get_content_history_profile($mydirname, $content_history_id);
// common prepend
require dirname(dirname(__FILE__)) . '/include/common_prepend.inc.php';
// global $breadcrumbsObj, $picoRequest, $permissions, $currenCategoryObj
// global $xoopsModuleConfig(overridden)
// add request
$picoRequest['content_history_id'] = $content_history_id;
$picoRequest['view'] = 'viewhistory';
// controller
require_once dirname(dirname(__FILE__)) . '/controllers/PicoControllerGetHistory.class.php';
$controller =& new PicoControllerGetHistory($currentCategoryObj);
$controller->execute($picoRequest);
// render
if ($controller->isNeedHeaderFooter()) {
    $xoopsOption['template_main'] = $controller->getTemplateName();
    include XOOPS_ROOT_PATH . '/header.php';
    $xoopsTpl->assign($controller->getAssign());
    $xoopsTpl->assign('xoops_module_header', pico_main_render_moduleheader($mydirname, $xoopsModuleConfig, $controller->getHtmlHeader()) . $xoopsTpl->get_template_vars('xoops_module_header'));
    include XOOPS_ROOT_PATH . '/footer.php';
} else {
    $controller->render();
}
exit;