function smarty_function_pico_category_search($params, &$smarty)
{
    $dir = @$params['dir'] . @$params['dirname'];
    $cat_title = @$params['title'] . @$params['cat_title'];
    $var_name = @$params['item'] . @$params['assign'];
    if (empty($var_name)) {
        echo 'error ' . __FUNCTION__ . ' [specify item]';
        return;
    }
    if (empty($dir)) {
        $dir = $smarty->get_template_vars('mydirname');
    }
    if (empty($dir)) {
        echo 'error ' . __FUNCTION__ . ' [specify dirname]';
        return;
    }
    $mydirnames = explode(',', $dir);
    $db =& Database::getInstance();
    $myts =& MyTextSanitizer::getInstance();
    $module_handler =& xoops_gethandler('module');
    $config_handler =& xoops_gethandler('config');
    $categories4assign = array();
    foreach ($mydirnames as $mydirname) {
        $module =& $module_handler->getByDirname($mydirname);
        $configs = $config_handler->getConfigList($module->getVar('mid'));
        $sql = "SELECT * FROM " . $db->prefix($mydirname . "_categories") . " c WHERE c.cat_title='" . mysql_real_escape_string($cat_title) . "'";
        $result = $db->query($sql);
        while ($cat_row = $db->fetchArray($result)) {
            $category4assign = array('mod_mid' => $module->getVar('mid'), 'mod_dirname' => $mydirname, 'mod_name' => $module->getVar('name'), 'id' => intval($cat_row['cat_id']), 'link' => pico_common_make_category_link4html($configs, $cat_row), 'title' => $myts->makeTboxData4Show($cat_row['cat_title']), 'desc' => $myts->displayTarea($cat_row['cat_desc'], 1), 'paths_raw' => pico_common_unserialize($cat_row['cat_path_in_tree']), 'paths_value' => array_values(pico_common_unserialize($cat_row['cat_path_in_tree'])), 'redundants' => pico_common_unserialize($cat_row['cat_redundants'])) + $cat_row;
            $categories4assign[] = $category4assign;
        }
    }
    $smarty->assign($var_name, $categories4assign);
}
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;
    }
}
示例#3
0

//
// display stage
//

xoops_cp_header();
include dirname(__FILE__) . '/mymenu.php';
$tpl = new XoopsTpl() ;
$tpl->assign( array(
	'mydirname' => $mydirname ,
	'mod_name' => $xoopsModule->getVar('name') ,
	'mod_url' => XOOPS_URL.'/modules/'.$mydirname ,
	'mod_imageurl' => XOOPS_URL.'/modules/'.$mydirname.'/'.$xoopsModuleConfig['images_dir'] ,
	'mod_config' => $xoopsModuleConfig ,
	'cat_id' => $cat_id ,
	'cat_permission_id' => $cat_permission_id ,
	'cat_link' => pico_common_make_category_link4html( $xoopsModuleConfig , $cat_id , $mydirname ) ,
	'cat_title' => htmlspecialchars( $cat_title , ENT_QUOTES ) ,
	'cat_options' => $cat_options ,
	'permissions' => $permissions4assign ,
	'groups' => $groups4assign ,
	'users' => $users4assign ,
	'new_users' => $new_users4assign ,
	'gticket_hidden' => $xoopsGTicket->getTicketHtml( __LINE__ , 1800 , 'pico_admin') ,
) ) ;
$tpl->display( 'db:'.$mydirname.'_admin_category_access.html' ) ;
xoops_cp_footer();

?>
示例#4
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];
}
    }
    redirect_header(XOOPS_URL . "/modules/{$mydirname}/admin/index.php?page=contents&amp;cat_id={$cat_id}", 3, _MD_A_PICO_MSG_CONTENTSEXPORTED);
    exit;
}
//
// form stage
//
// category options as array
$cat_options = pico_common_get_cat_options($mydirname);
// fetch contents
if ($cat_id == SPECIAL_CAT_ID_DELETED) {
    $ors = $db->query("SELECT oh.*,up.uname AS poster_uname,um.uname AS modifier_uname,c.cat_title,c.cat_depth_in_tree,1 AS is_deleted  FROM " . $db->prefix($mydirname . "_content_histories") . " oh LEFT JOIN " . $db->prefix("users") . " up ON oh.poster_uid=up.uid LEFT JOIN " . $db->prefix("users") . " um ON oh.modifier_uid=um.uid LEFT JOIN " . $db->prefix($mydirname . "_categories") . " c ON oh.cat_id=c.cat_id LEFT JOIN " . $db->prefix($mydirname . "_contents") . " o ON o.content_id=oh.content_id WHERE o.content_id IS NULL GROUP BY oh.content_id ORDER BY oh.modified_time DESC");
} else {
    $whr_cat_id = $cat_id == SPECIAL_CAT_ID_ALL ? "1" : "o.cat_id={$cat_id}";
    $ors = $db->query("SELECT o.*,up.uname AS poster_uname,um.uname AS modifier_uname,c.cat_title,c.cat_depth_in_tree,0 AS is_deleted  FROM " . $db->prefix($mydirname . "_contents") . " o LEFT JOIN " . $db->prefix("users") . " up ON o.poster_uid=up.uid LEFT JOIN " . $db->prefix("users") . " um ON o.modifier_uid=um.uid LEFT JOIN " . $db->prefix($mydirname . "_categories") . " c ON o.cat_id=c.cat_id WHERE ({$whr_cat_id}) ORDER BY c.cat_depth_in_tree,o.weight,o.content_id");
}
$contents4assign = array();
while ($content_row = $db->fetchArray($ors)) {
    $wrap_full_path = XOOPS_TRUST_PATH . _MD_PICO_WRAPBASE . '/' . $mydirname . str_replace('..', '', $content_row['vpath']);
    $content4assign = array('id' => intval($content_row['content_id']), 'link' => pico_common_make_content_link4html($xoopsModuleConfig, $content_row), 'cat_title' => $myts->makeTboxData4Show($content_row['cat_title'], 1, 1), 'created_time_formatted' => formatTimestamp($content_row['created_time'], 'm'), 'modified_time_formatted' => formatTimestamp($content_row['modified_time'], 'm'), 'expiring_time_formatted' => formatTimestamp(@$content_row['expiring_time'], 'm'), 'poster_uname' => $content_row['poster_uid'] ? $myts->makeTboxData4Show($content_row['poster_uname']) : _MD_PICO_REGISTERED_AUTOMATICALLY, 'modifier_uname' => $content_row['modifier_uid'] ? $myts->makeTboxData4Show($content_row['modifier_uname']) : _MD_PICO_REGISTERED_AUTOMATICALLY, 'subject' => $myts->makeTboxData4Edit($content_row['subject']), 'vpath' => htmlspecialchars($content_row['vpath']), 'wrap_file' => is_file($wrap_full_path) ? array('mtime_formatted' => formatTimestamp(filemtime($wrap_full_path), 'm'), 'size' => filesize($wrap_full_path)) : false, 'histories' => $content_row['is_deleted'] ? pico_get_content_histories4assign($mydirname, intval($content_row['content_id'])) : array(), 'ef' => pico_common_unserialize($content_row['extra_fields']));
    $contents4assign[] = $content4assign + $content_row;
}
//
// display stage
//
xoops_cp_header();
include dirname(__FILE__) . '/mymenu.php';
$tpl =& new XoopsTpl();
$tpl->assign(array('mydirname' => $mydirname, 'mod_name' => $xoopsModule->getVar('name'), 'mod_url' => XOOPS_URL . '/modules/' . $mydirname, 'mod_imageurl' => XOOPS_URL . '/modules/' . $mydirname . '/' . $xoopsModuleConfig['images_dir'], 'mod_config' => $xoopsModuleConfig, 'cat_id' => $cat_id, 'cat_link' => pico_common_make_category_link4html($xoopsModuleConfig, $cat_id, $mydirname), 'cat_title' => htmlspecialchars($cat_title, ENT_QUOTES), 'cat_options' => $cat_options + array(SPECIAL_CAT_ID_ALL => _MD_PICO_ALLCONTENTS, SPECIAL_CAT_ID_DELETED => _MD_PICO_DELETEDCONTENTS), 'cat_options4move' => $cat_options, 'module_options' => $exportable_modules, 'contents' => $contents4assign, 'gticket_hidden' => $xoopsGTicket->getTicketHtml(__LINE__, 1800, 'pico_admin')));
$tpl->display('db:' . $mydirname . '_admin_contents.html');
xoops_cp_footer();
 function getBreadcrumbs()
 {
     if (!is_array($this->data['paths_raw'])) {
         return array();
     }
     $ret = array();
     foreach ($this->data['paths_raw'] as $cat_id => $name_raw) {
         $ret[] = array('url' => XOOPS_URL . '/modules/' . $this->mydirname . '/' . pico_common_make_category_link4html($this->mod_config, $cat_id, $this->mydirname), 'name' => htmlspecialchars($name_raw, ENT_QUOTES));
     }
     return $ret;
 }
 function render()
 {
     redirect_header(XOOPS_URL . "/modules/{$this->mydirname}/" . pico_common_make_category_link4html($this->mod_config, $this->currentCategoryObj->getData()), 2, _MD_PICO_MSG_CONTENTDELETED);
     exit;
 }
    if ($db->getRowsNum($cprs) > 0) {
        list($serialized_gpermissions) = $db->fetchRow($cprs);
        $gpermissions = pico_common_unserialize($serialized_gpermissions);
    } else {
        $gpermissions = array();
    }
    $groups4assign[] = array('gid' => $gid, 'name' => $group->getVar('name'), 'perms' => $gpermissions);
}
// create user form
$users4assign = array();
$cprs = $db->query("SELECT u.uid,u.uname,cp.permissions FROM " . $db->prefix($mydirname . "_category_permissions") . " cp LEFT JOIN " . $db->prefix("users") . " u ON cp.uid=u.uid WHERE cp.cat_id={$cat_permission_id} AND cp.groupid IS NULL ORDER BY u.uid ASC");
$user_trs = '';
while (list($uid, $uname, $serialized_upermissions) = $db->fetchRow($cprs)) {
    $uid = intval($uid);
    $upermissions = pico_common_unserialize($serialized_upermissions);
    $users4assign[] = array('uid' => $uid, 'name' => htmlspecialchars($uname, ENT_QUOTES), 'perms' => $upermissions);
}
// create new user form
$new_users4assign = array();
for ($i = 0; $i < 5; $i++) {
    $new_users4assign[] = array('nid' => $i, 'perms' => array('can_read' => 1));
}
//
// display stage
//
xoops_cp_header();
include dirname(__FILE__) . '/mymenu.php';
$tpl =& new XoopsTpl();
$tpl->assign(array('mydirname' => $mydirname, 'mod_name' => $xoopsModule->getVar('name'), 'mod_url' => XOOPS_URL . '/modules/' . $mydirname, 'mod_imageurl' => XOOPS_URL . '/modules/' . $mydirname . '/' . $xoopsModuleConfig['images_dir'], 'mod_config' => $xoopsModuleConfig, 'cat_id' => $cat_id, 'cat_permission_id' => $cat_permission_id, 'cat_link' => pico_common_make_category_link4html($xoopsModuleConfig, $cat_id, $mydirname), 'cat_title' => htmlspecialchars($cat_title, ENT_QUOTES), 'cat_options' => $cat_options, 'permissions' => $permissions4assign, 'groups' => $groups4assign, 'users' => $users4assign, 'new_users' => $new_users4assign, 'gticket_hidden' => $xoopsGTicket->getTicketHtml(__LINE__, 1800, 'pico_admin')));
$tpl->display('db:' . $mydirname . '_admin_category_access.html');
xoops_cp_footer();
 function render()
 {
     redirect_header(XOOPS_URL . "/modules/{$this->mydirname}/" . pico_common_make_category_link4html($this->mod_config, $this->cat_id, $this->mydirname), 2, _MD_PICO_MSG_CATEGORYUPDATED);
     exit;
 }