示例#1
0
文件: menu.php 项目: nouphet/rata
function b_pico_menu_show($options)
{
    // options
    $mytrustdirname = basename(dirname(dirname(__FILE__)));
    $mydirname = empty($options[0]) ? $mytrustdirname : $options[0];
    $cat_ids = trim(@$options[1]) === '' ? array() : array_map('intval', explode(',', $options[1]));
    $this_template = empty($options[2]) ? 'db:' . $mydirname . '_block_menu.html' : trim($options[2]);
    // mydirname check
    if (preg_match('/[^0-9a-zA-Z_-]/', $mydirname)) {
        die('Invalid mydirname');
    }
    // category handler
    $categoryHandler = new PicoCategoryHandler($mydirname);
    // category objects
    if ($cat_ids === array()) {
        $categoryObjs = $categoryHandler->getAllCategories();
    } else {
        $categoryObjs = array();
        foreach ($cat_ids as $cat_id) {
            $categoryObjs[] = $categoryHandler->get($cat_id);
        }
    }
    // categories loop
    $categories4assign = array();
    foreach ($categoryObjs as $cat_id => $categoryObj) {
        // assign categories
        $categories4assign[$cat_id] = $categoryObj->getData4html();
        // contents loop
        $contentObjs = $categoryObj->getContents();
        foreach ($contentObjs as $contentObj) {
            $content_data = $contentObj->getData();
            if ($content_data['show_in_menu']) {
                $categories4assign[$cat_id]['contents'][] = $contentObj->getData4html();
            }
        }
    }
    // module config (not overridden yet)
    $module_handler =& xoops_gethandler('module');
    $module =& $module_handler->getByDirname($mydirname);
    $config_handler =& xoops_gethandler('config');
    $configs = $config_handler->getConfigList($module->mid());
    // constpref
    $constpref = '_MB_' . strtoupper($mydirname);
    // make an array named 'block'
    $block = array('mytrustdirname' => $mytrustdirname, 'mydirname' => $mydirname, 'mod_url' => XOOPS_URL . '/modules/' . $mydirname, 'mod_imageurl' => XOOPS_URL . '/modules/' . $mydirname . '/' . $configs['images_dir'], 'mod_config' => $configs, 'categories' => $categories4assign, 'lang_category' => constant($constpref . '_CATEGORY'), 'lang_topcategory' => constant($constpref . '_TOPCATEGORY'));
    if (empty($options['disable_renderer'])) {
        // render it
        require_once XOOPS_ROOT_PATH . '/class/template.php';
        $tpl = new XoopsTpl();
        $tpl->assign('block', $block);
        $ret['content'] = $tpl->fetch($this_template);
        return $ret;
    } else {
        // just assign it
        return $block;
    }
}