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; } }
function execute($request) { parent::execute($request); $categoryHandler = new PicoCategoryHandler($this->mydirname, $this->permissions); $categories = $categoryHandler->getAllCategories(); // auto-register foreach ($categories as $categoryObj) { $mod_config = $categoryObj->getOverriddenModConfig(); $register_class = empty($mod_config['auto_register_class']) ? 'PicoAutoRegisterWraps' : $mod_config['auto_register_class']; require_once dirname(__FILE__) . '/' . $register_class . '.class.php'; if (!empty($mod_config['wraps_auto_register'])) { $register_obj = new $register_class($this->mydirname, $mod_config); $register_obj->registerByCatvpath($categoryObj->getData()); } } $categories4assign = array(); foreach ($categories as $cat_id => $categoryObj) { // assign categories $categories4assign[$cat_id] = $categoryObj->getData4html(); // contents loop $contentObjs = $categoryObj->getContents(true); $private_contents_counter = 0; foreach ($contentObjs as $contentObj) { $content_data = $contentObj->getData(); if (!$content_data['public']) { $private_contents_counter++; } else { if ($content_data['show_in_menu'] && $content_data['can_read']) { $categories4assign[$cat_id]['contents'][] = $contentObj->getData4html(); } } } $categories4assign[$cat_id]['private_contents_counter'] = $private_contents_counter; } $this->assign['categories'] = $categories4assign; // breadcrumbs and pagetitle $lastnode4assign = @$_GET['page'] == 'menu' ? _MD_PICO_MENU : $GLOBALS['xoopsModule']->getVar('name'); $breadcrumbsObj =& AltsysBreadcrumbs::getInstance(); $breadcrumbsObj->appendPath('', $lastnode4assign); $this->assign['xoops_breadcrumbs'] = $breadcrumbsObj->getXoopsbreadcrumbs(); $this->assign['xoops_pagetitle'] = $lastnode4assign; // views (no views other than 'menu') $this->template_name = $this->mydirname . '_main_menu.html'; $this->is_need_header_footer = true; }
function execute($request) { parent::execute($request); // makecontent/contentmanager $page = empty($request['makecontent']) ? 'contentmanager' : 'makecontent'; // $contentObj $contentObj = new PicoContent($this->mydirname, $request['content_id'], $this->currentCategoryObj, $page == 'makecontent'); // check existence if ($contentObj->isError()) { redirect_header(XOOPS_URL . "/modules/{$this->mydirname}/index.php", 2, _MD_PICO_ERR_READCONTENT); exit; } // fetch data from DB $cat_data = $this->currentCategoryObj->getData(); $this->assign['category'] = $this->currentCategoryObj->getData4html(); $content_data = $contentObj->getData(); $this->assign['content_base'] = $contentObj->getData4html(true); $this->contentObjs['content_base'] =& $contentObj; $this->assign['content'] = $contentObj->getData4edit(); // permission check if ($page == 'makecontent') { if (empty($cat_data['can_post'])) { redirect_header(XOOPS_URL . '/', 2, _MD_PICO_ERR_CREATECONTENT); } } else { if (empty($content_data['can_edit'])) { redirect_header(XOOPS_URL . '/', 2, $content_data['locked'] ? _MD_PICO_ERR_LOCKEDCONTENT : _MD_PICO_ERR_EDITCONTENT); } } // category list can be read for category jumpbox etc. $categoryHandler = new PicoCategoryHandler($this->mydirname, $this->permissions); $categories = $categoryHandler->getAllCategories(); $this->assign['categories_can_post'] = array(); foreach ($categories as $tmpObj) { $tmp_data = $tmpObj->getData(); if (empty($tmp_data['can_post']) && empty($tmp_data['can_edit'])) { continue; } $this->assign['categories_can_post'][$tmp_data['id']] = str_repeat('--', $tmp_data['cat_depth_in_tree']) . $tmp_data['cat_title']; } // vpath options $this->assign['content']['wraps_files'] = array('' => '---') + pico_main_get_wraps_files_recursively($this->mydirname, '/'); // breadcrumbs $breadcrumbsObj =& AltsysBreadcrumbs::getInstance(); if ($page == 'makecontent') { $breadcrumbsObj->appendPath('', _MD_PICO_LINK_MAKECONTENT); $this->assign['xoops_pagetitle'] = _MD_PICO_LINK_MAKECONTENT; } else { $breadcrumbsObj->appendPath(XOOPS_URL . '/modules/' . $this->mydirname . '/' . $this->assign['content']['link'], $this->assign['content']['subject']); $breadcrumbsObj->appendPath('', _MD_PICO_CONTENTMANAGER); $this->assign['xoops_pagetitle'] = _MD_PICO_CONTENTMANAGER; } $this->assign['xoops_breadcrumbs'] = $breadcrumbsObj->getXoopsbreadcrumbs(); // misc assigns $this->assign['content_histories'] = pico_get_content_histories4assign($this->mydirname, $content_data['id']); $this->assign['page'] = $page; $this->assign['formtitle'] = $page == 'makecontent' ? _MD_PICO_LINK_MAKECONTENT : _MD_PICO_LINK_EDITCONTENT; $this->assign['gticket_hidden'] = $GLOBALS['xoopsGTicket']->getTicketHtml(__LINE__, 1800, 'pico'); // views $this->template_name = $this->mydirname . '_main_content_form.html'; $this->is_need_header_footer = true; // preview $this->processPreview($request); // editor (wysiwyg etc) $editor_assigns = $this->getEditorAssigns('body', $this->assign['content']['body_raw']); $this->assign['body_wysiwyg'] = $editor_assigns['body']; $this->html_header .= $editor_assigns['header']; }
function execute($request) { parent::execute($request); // $contentObj $contentObj = new PicoContent($this->mydirname, $request['content_id'], $this->currentCategoryObj); // check existence if ($contentObj->isError()) { redirect_header(XOOPS_URL . "/modules/{$this->mydirname}/index.php", 2, _MD_PICO_ERR_READCONTENT); exit; } $cat_data = $this->currentCategoryObj->getData(); $this->assign['category'] = $this->currentCategoryObj->getData4html(); $content_data = $contentObj->getData(); $this->assign['content'] = $contentObj->getData4html(true); $this->contentObjs['content'] =& $contentObj; // permission check if (empty($content_data['can_read']) || empty($content_data['can_readfull'])) { if ($this->uid > 0) { redirect_header(XOOPS_URL . '/', 2, _MD_PICO_ERR_PERMREADFULL); } else { redirect_header(XOOPS_URL . '/user.php', 2, _MD_PICO_ERR_LOGINTOREADFULL); } exit; } // auto-register if (!empty($this->mod_config['wraps_auto_register']) && @$cat_data['cat_vpath'][0] == '/' && $content_data['poster_uid'] == 0 && $content_data['vpath'] != '') { $register_class = empty($this->mod_config['auto_register_class']) ? 'PicoAutoRegisterWraps' : $this->mod_config['auto_register_class']; require_once dirname(__FILE__) . '/' . $register_class . '.class.php'; $register_obj = new $register_class($this->mydirname, $this->mod_config); $is_updated = $register_obj->updateContent($content_data['content_id'], $content_data['vpath']); if ($is_updated > 0) { // reload if the content is updated header('Location: ' . pico_common_unhtmlspecialchars($this->assign['mod_url']) . '/' . pico_common_unhtmlspecialchars($this->assign['content']['link'])); exit; } } // prev/next content $prevContentObj =& $contentObj->getPrevContent(); $this->assign['prev_content'] = is_object($prevContentObj) ? $prevContentObj->getData4html() : array(); $this->contentObjs['prev_content'] =& $prevContentObj; $nextContentObj =& $contentObj->getNextContent(); $this->assign['next_content'] = is_object($nextContentObj) ? $nextContentObj->getData4html() : array(); $this->contentObjs['next_content'] =& $nextContentObj; // link for "tell to friends" if ($this->mod_config['use_taf_module']) { $this->assign['content']['tellafriend_uri'] = XOOPS_URL . '/modules/tellafriend/index.php?target_uri=' . rawurlencode(XOOPS_URL . "/modules/{$this->mydirname}/" . pico_common_make_content_link4html($this->mod_config, $content_data)) . '&subject=' . rawurlencode(sprintf(_MD_PICO_FMT_TELLAFRIENDSUBJECT, @$GLOBALS['xoopsConfig']['sitename'])); } else { $this->assign['content']['tellafriend_uri'] = 'mailto:?subject=' . pico_main_escape4mailto(sprintf(_MD_PICO_FMT_TELLAFRIENDSUBJECT, @$GLOBALS['xoopsConfig']['sitename'])) . '&body=' . pico_main_escape4mailto(sprintf(_MD_PICO_FMT_TELLAFRIENDBODY, $content_data['subject'])) . '%0A' . XOOPS_URL . "/modules/{$this->mydirname}/" . rawurlencode(pico_common_make_content_link4html($this->mod_config, $content_data)); } // category list can be read for category jumpbox etc. $categoryHandler = new PicoCategoryHandler($this->mydirname, $this->permissions); $categories = $categoryHandler->getAllCategories(); $this->assign['categories_can_read'] = array(); foreach ($categories as $tmpObj) { $tmp_data = $tmpObj->getData(); $this->assign['categories_can_read'][$tmp_data['id']] = str_repeat('--', $tmp_data['cat_depth_in_tree']) . $tmp_data['cat_title']; } // count up 'viewed' if ($content_data['modifier_ip'] != @$_SERVER['REMOTE_ADDR']) { $contentObj->incrementViewed(); } // breadcrumbs $breadcrumbsObj =& AltsysBreadcrumbs::getInstance(); $breadcrumbsObj->appendPath('', $this->assign['content']['subject']); $this->assign['xoops_breadcrumbs'] = $breadcrumbsObj->getXoopsbreadcrumbs(); $this->assign['xoops_pagetitle'] = $this->assign['content']['subject']; // views switch ($request['view']) { case 'singlecontent': $this->template_name = 'db:' . $this->mydirname . '_independent_singlecontent.html'; $this->is_need_header_footer = false; break; case 'print': $this->template_name = 'db:' . $this->mydirname . '_independent_print.html'; $this->is_need_header_footer = false; break; default: $this->template_name = $this->mydirname . '_main_viewcontent.html'; $this->is_need_header_footer = true; break; } // htmlheader if (!empty($this->mod_config['allow_each_htmlheader'])) { $this->html_header .= $content_data['htmlheader']; } }
function execute($request) { parent::execute($request); // makecategory/categorymanager $page = empty($request['makecategory']) ? 'categorymanager' : 'makecategory'; // $categoryObj (not parent) $picoPermission =& PicoPermission::getInstance(); $categoryObj = new PicoCategory($this->mydirname, $request['cat_id'], $picoPermission->getPermissions($this->mydirname), $page == 'makecategory', $this->currentCategoryObj); // check existence if ($categoryObj->isError()) { redirect_header(XOOPS_URL . "/modules/{$this->mydirname}/index.php", 2, _MD_PICO_ERR_READCONTENT); exit; } // fetch data from DB $cat_data = $categoryObj->getData(); $this->assign['category_base'] = $categoryObj->getData4html(true); $this->categoryObjs['category_base'] =& $categoryObj; $this->assign['category'] = $categoryObj->getData4edit(); // permission check if ($page == 'makecategory') { $pcat_data = $this->currentCategoryObj->getData(); if (empty($pcat_data['can_makesubcategory'])) { redirect_header(XOOPS_URL . '/', 2, _MD_PICO_ERR_CREATECATEGORY); } } else { if (empty($cat_data['isadminormod'])) { redirect_header(XOOPS_URL . '/', 2, _MD_PICO_ERR_CATEGORYMANAGEMENT); } } // category list can be read for category jumpbox etc. $categoryHandler = new PicoCategoryHandler($this->mydirname, $this->permissions); $categories = $categoryHandler->getAllCategories(); $this->assign['categories_can_post'] = array(); foreach ($categories as $tmpObj) { $tmp_data = $tmpObj->getData(); if (empty($tmp_data['can_makesubcategory'])) { continue; } $this->assign['categories_can_makesubcategory'][$tmp_data['id']] = str_repeat('--', $tmp_data['cat_depth_in_tree']) . $tmp_data['cat_title']; } // breadcrumbs $breadcrumbsObj =& AltsysBreadcrumbs::getInstance(); if ($page == 'makecategory') { $breadcrumbsObj->appendPath('', _MD_PICO_LINK_MAKECATEGORY); $this->assign['xoops_pagetitle'] = _MD_PICO_LINK_MAKECATEGORY; } else { // $breadcrumbsObj->appendPath( XOOPS_URL.'/modules/'.$this->mydirname.'/'.$this->assign['category']['link'] , $this->assign['category']['title'] ) ; $breadcrumbsObj->appendPath('', _MD_PICO_CATEGORYMANAGER); $this->assign['xoops_pagetitle'] = _MD_PICO_CATEGORYMANAGER; } $this->assign['xoops_breadcrumbs'] = $breadcrumbsObj->getXoopsbreadcrumbs(); // misc assigns $this->assign['page'] = $page; $this->assign['formtitle'] = $page == 'makecategory' ? _MD_PICO_LINK_MAKECATEGORY : _MD_PICO_CATEGORYMANAGER; $this->assign['gticket_hidden'] = $GLOBALS['xoopsGTicket']->getTicketHtml(__LINE__, 1800, 'pico'); $this->assign['category']['option_desc'] = $this->getCategoryOptions4edit(); $this->assign['category']['wraps_directories'] = array('' => '---') + pico_main_get_wraps_directories_recursively($this->mydirname, '/'); // views $this->template_name = $this->mydirname . '_main_category_form.html'; $this->is_need_header_footer = true; }