function b_pico_subcategories_show($options)
{
    global $xoopsUser;
    $mydirname = empty($options[0]) ? 'pico' : $options[0];
    $categories = trim(@$options[1]) === '' ? array() : array_map('intval', explode(',', $options[1]));
    $this_template = empty($options[2]) ? 'db:' . $mydirname . '_block_subcategories.html' : trim($options[2]);
    if (preg_match('/[^0-9a-zA-Z_-]/', $mydirname)) {
        die('Invalid mydirname');
    }
    $db =& Database::getInstance();
    $myts =& MyTextSanitizer::getInstance();
    $uid = is_object(@$xoopsUser) ? $xoopsUser->getVar('uid') : 0;
    $module_handler =& xoops_gethandler('module');
    $module =& $module_handler->getByDirname($mydirname);
    $config_handler =& xoops_gethandler('config');
    $configs = $config_handler->getConfigList($module->mid());
    // categories can be read by current viewer (check by category_permissions)
    $whr_read4cat = 'c.`cat_id` IN (' . implode(",", pico_common_get_categories_can_read($mydirname)) . ')';
    // categories
    if ($categories === array()) {
        $whr_categories = 'WHERE pid=0';
        $categories4assign = '';
    } else {
        $whr_categories = 'c.pid IN (' . implode(',', $categories) . ')';
        $categories4assign = implode(',', $categories);
    }
    $sql = "SELECT c.cat_id,c.cat_title,c.cat_vpath FROM " . $db->prefix($mydirname . "_categories") . " c WHERE ({$whr_read4cat}) AND ({$whr_categories}) ORDER BY c.cat_weight";
    if (!($result = $db->query($sql))) {
        echo $db->logger->dumpQueries();
        exit;
    }
    $constpref = '_MB_' . strtoupper($mydirname);
    $block = array('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'));
    $cat4assign = array();
    while ($cat_row = $db->fetchArray($result)) {
        $cat4assign[] = array('id' => intval($cat_row['cat_id']), 'link' => pico_common_make_category_link4html($configs, $cat_row), 'title' => $myts->makeTboxData4Show($cat_row['cat_title'], 1, 1));
    }
    $block['categories'] = $cat4assign;
    if (empty($options['disable_renderer'])) {
        require_once XOOPS_ROOT_PATH . '/class/template.php';
        $tpl =& new XoopsTpl();
        $tpl->assign('block', $block);
        $ret['content'] = $tpl->fetch($this_template);
        return $ret;
    } else {
        return $block;
    }
}
 function getCategoryLatestContents(&$categoryObj, $num = 10, $fetch_from_subcategories = false)
 {
     $db =& Database::getInstance();
     $cat_data = $categoryObj->getData();
     $child_categories = $categoryObj->getChildIds();
     $readable_categories = pico_common_get_categories_can_read($this->mydirname);
     $target_categories = array_intersect(array_merge($child_categories, array($cat_data['id'])), $readable_categories);
     $whr_cid = 'cat_id IN (' . implode(',', $target_categories) . ')';
     $sql = "SELECT content_id FROM " . $db->prefix($this->mydirname . "_contents") . " WHERE ({$whr_cid}) AND visible AND created_time <= UNIX_TIMESTAMP() AND expiring_time > UNIX_TIMESTAMP() ORDER BY modified_time DESC, content_id LIMIT {$num}";
     if (!($result = $db->query($sql))) {
         if ($GLOBALS['xoopsUser']->isAdmin()) {
             echo $db->logger->dumpQueries();
         }
         exit;
     }
     $ret = array();
     while (list($content_id) = $db->fetchRow($result)) {
         $objTemp =& new PicoContent($this->mydirname, $content_id);
         $ret[$content_id] =& $objTemp;
         //if( $objTemp->data['can_read'] ) $ret[ $content_id ] =& $objTemp ;
     }
     return $ret;
 }
Example #3
0
function pico_common_get_submenu($mydirname, $caller = 'xoops_version')
{
    static $submenus_cache;
    if (!empty($submenus_cache[$caller][$mydirname])) {
        return $submenus_cache[$caller][$mydirname];
    }
    $module_handler =& xoops_gethandler('module');
    $module =& $module_handler->getByDirname($mydirname);
    if (!is_object($module)) {
        return array();
    }
    $config_handler =& xoops_gethandler('config');
    $mod_config =& $config_handler->getConfigsByCat(0, $module->getVar('mid'));
    $db =& Database::getInstance();
    $myts =& MyTextSanitizer::getInstance();
    $whr_read = '`cat_id` IN (' . implode(",", pico_common_get_categories_can_read($mydirname)) . ')';
    $categories = array(0 => array('pid' => -1, 'name' => '', 'url' => '', 'sub' => array()));
    // categories query
    $sql = "SELECT cat_id,pid,cat_title,cat_vpath FROM " . $db->prefix($mydirname . "_categories") . " WHERE ({$whr_read}) ORDER BY cat_order_in_tree";
    $crs = $db->query($sql);
    if ($crs) {
        while ($cat_row = $db->fetchArray($crs)) {
            $cat_id = intval($cat_row['cat_id']);
            $categories[$cat_id] = array('name' => $myts->makeTboxData4Show($cat_row['cat_title'], 1, 1), 'url' => pico_common_make_category_link4html($mod_config, $cat_row), 'is_category' => true, 'pid' => $cat_row['pid']);
        }
    }
    if (!($caller == 'sitemap_plugin' && !@$mod_config['sitemap_showcontents']) && !($caller == 'xoops_version' && !@$mod_config['submenu_showcontents'])) {
        // contents query
        $ors = $db->query("SELECT cat_id,content_id,vpath,subject FROM " . $db->prefix($mydirname . "_contents") . " WHERE show_in_menu AND visible AND created_time <= UNIX_TIMESTAMP() AND expiring_time > UNIX_TIMESTAMP() AND {$whr_read} ORDER BY weight,content_id");
        if ($ors) {
            while ($content_row = $db->fetchArray($ors)) {
                $cat_id = intval($content_row['cat_id']);
                $categories[$cat_id]['sub'][] = array('name' => $myts->makeTboxData4Show($content_row['subject'], 1, 1), 'url' => pico_common_make_content_link4html($mod_config, $content_row), 'is_category' => false);
            }
        }
    }
    // restruct categories
    $top_sub = !empty($categories[0]['sub']) ? $categories[0]['sub'] : array();
    $submenus_cache[$caller][$mydirname] = array_merge($top_sub, pico_common_restruct_categories($categories, 0));
    return $submenus_cache[$caller][$mydirname];
}
Example #4
0
 function picoGetContent4Assign()
 {
     $db =& Database::getInstance();
     $mydirname = $this->mydirname;
     $content_id = intval($this->item_id);
     $module_handler =& xoops_gethandler('module');
     $module =& $module_handler->getByDirname($mydirname);
     $config_handler =& xoops_gethandler('config');
     $configs = $config_handler->getConfigList($module->mid());
     // categories can be read by current viewer (check by category_permissions)
     $whr_read4content = 'o.`cat_id` IN (' . implode(",", pico_common_get_categories_can_read($mydirname)) . ')';
     $sql = "SELECT o.content_id FROM " . $db->prefix($mydirname . "_contents") . " o WHERE ({$whr_read4content}) AND o.content_id='{$content_id}' AND o.visible AND o.created_time <= UNIX_TIMESTAMP()";
     if (!($result = $db->query($sql))) {
         return array();
     }
     if (!$db->getRowsNum($result)) {
         return array();
     }
     list($content_id) = $db->fetchRow($result);
     // assigning
     $content4assign = pico_common_get_content4assign($mydirname, $content_id, $configs, array());
     // convert links from relative to absolute (wraps mode only)
     if ($configs['use_wraps_mode']) {
         $parsed_url = parse_url(XOOPS_URL);
         $path = strlen(@$parsed_url['path']) > 1 ? $parsed_url['path'] : '';
         $content_url = $path . '/modules/' . $mydirname . '/' . $content4assign['link'];
         $wrap_base_url = substr($content_url, 0, strrpos($content_url, '/'));
         $pattern = "/(href|src)\\=(\"|\\')?(?![a-z]+:|\\/|\\#)([^, \r\n\"\\(\\)'<>]+)/i";
         $replacement = "\\1=\\2{$wrap_base_url}/\\3";
         $content4assign['body'] = preg_replace($pattern, $replacement, $content4assign['body']);
     }
     return $content4assign;
 }