コード例 #1
0
function smarty_modifier_addongroupname($token)
{
    $api = new TikiAddons_Api_Group();
    if ($ret = $api->getOrganicGroupName($token)) {
        return $ret;
    } else {
        return $token;
    }
}
コード例 #2
0
function groupnavloader($data, $params)
{
    global $auto_query_args;
    $auto_query_args_local = array('organicgroup');
    $auto_query_args = empty($auto_query_args) ? $auto_query_args_local : array_merge($auto_query_args, $auto_query_args_local);
    if (!isset($params['from'])) {
        return 'Please specify parameter: from';
    }
    $app = \TikiAddons::get('syn_organicgrp');
    $api = new \TikiAddons_Api_Group();
    if (!isset($_REQUEST['organicgroup']) && !empty($_REQUEST['page'])) {
        $info = $api->getOrganicGroupInfoForItem('wiki page', $_REQUEST['page']);
        $cat = $info['cat'];
        $ogid = $info['organicgroup'];
        $app->smarty->assign('groupTrackerItemId', $ogid);
        $_REQUEST['organicgroup'] = $ogid;
        if (!isset($_REQUEST['cat'])) {
            $_REQUEST['cat'] = $cat;
        }
    }
    if (!isset($_REQUEST['organicgroup']) && !empty($_REQUEST['itemId'])) {
        $info = $api->getOrganicGroupInfoForItem('trackeritem', $_REQUEST['itemId']);
        $cat = $info['cat'];
        $ogid = $info['organicgroup'];
        $app->smarty->assign('groupTrackerItemId', $ogid);
        $_REQUEST['organicgroup'] = $ogid;
        if (!isset($_REQUEST['cat'])) {
            $_REQUEST['cat'] = $cat;
        }
    }
    if (!empty($_REQUEST['organicgroup']) && empty($_REQUEST['cat'])) {
        $ogname = 'syn_organicgrp_' . $_REQUEST['organicgroup'];
        $cat = \TikiLib::lib('categ')->get_category_id($ogname);
        $_REQUEST['cat'] = $cat;
    }
    // if og is private, always redirect to home page
    if (isset($_REQUEST['organicgroup'])) {
        $ogname = 'syn_organicgrp_' . $_REQUEST['organicgroup'];
        global $user;
        if ($_REQUEST['page'] != 'syn_organicgrp_grouphomepage' && $api->organicGroupIsPrivate($ogname) && !\TikiLib::lib('user')->user_is_in_group($user, $ogname)) {
            header('Location: tiki-index.php?page=syn_organicgrp_grouphomepage&itemId=' . $_REQUEST['organicgroup']);
        }
    }
    $userlib = \TikiLib::lib('user');
    $approvalCount = $userlib->nb_users_in_group("syn_organicgrp_pending_" . $_REQUEST['organicgroup']);
    //get the number of pending users
    $app->smarty->assign('approvalcount', $approvalCount);
    $app->smarty->assign('groupnavfrom', $params['from']);
    return $app->smarty->fetch('syn-groupnavloader.tpl');
}
コード例 #3
0
ファイル: EventNotify.php プロジェクト: rjsmelo/tiki
 /**
  * Returns an array of users that will receive the activity notification
  * @param $userpath is used to identify how to retrieve a user who is getting the notification
  * @param $arguments are passed from the activity to help gather the information needed
  * @return array|string array of user names
  * @throws Exception if user not found
  */
 function getUsers($userpath, $arguments)
 {
     $userarr = explode(":", $userpath);
     switch ($userarr[0]) {
         case "argument":
             break;
         case "object":
             $users[] = $arguments['object'];
             break;
         case "user":
             $users[] = $arguments['user'];
             break;
         case "parent_comment_user":
             $users[] = $arguments['parent_comment_user'];
             break;
         case "trackeritem":
             $lib = TikiLib::lib('trk');
             //get tracker id
             $io = $lib->get_item_info($arguments['object']);
             $tracker_id = $io["trackerId"];
             //get the second parameter in the user path and set as field
             $field_id = $lib->get_field_id($tracker_id, $userarr[1]);
             $result = $lib->get_tracker_item((string) $arguments['object']);
             $users[] = $result[$field_id];
             break;
         case "groupmember":
             $userlib = TikiLib::lib('user');
             $users = $userlib->get_members($arguments['groupname']);
             break;
         case "groupmanagers":
             $api = new TikiAddons_Api_Group();
             $group = $arguments['groupname'];
             if ($api->isOrganicGroup($group)) {
                 $users = $api->getOrganicGroupLeaders($group);
             }
             break;
         default:
             TikiLib::lib('errorreport')->report(tr('Problem finding the associated user. %0 is not recognized. See EventNotify.php', $userarr[0]));
             break;
     }
     return $users;
 }
コード例 #4
0
ファイル: TikiAddons.php プロジェクト: linuxwhy/tiki-1
 private static function initializeGroupApi($package)
 {
     if (!empty(self::$installed[$package]->api->group)) {
         $tracker = self::$installed[$package]->api->group->tracker;
         $public_catroot = self::$installed[$package]->api->group->public_catroot;
         $private_catroot = self::$installed[$package]->api->group->private_catroot;
         $managementpage = self::$installed[$package]->api->group->managementpage;
         $homepage = self::$installed[$package]->api->group->homepage;
         TikiAddons_Api_Group::setTracker($package, $tracker);
         TikiAddons_Api_Group::setPublicCatroot($package, $public_catroot);
         TikiAddons_Api_Group::setPrivateCatroot($package, $private_catroot);
         TikiAddons_Api_Group::setManagementPage($package, $managementpage);
         TikiAddons_Api_Group::setHomePage($package, $homepage);
     }
 }
コード例 #5
0
ファイル: GroupSource.php プロジェクト: rjsmelo/tiki
 function getDocument($objectId, Search_Type_Factory_Interface $typeFactory)
 {
     $row = $this->db->table('users_groups')->fetchRow(['groupDesc'], array('groupName' => $objectId));
     if (!$row) {
         return false;
     }
     $api = new TikiAddons_Api_Group();
     $groupName = $objectId;
     $addongroup = false;
     $addonpendinggroup = false;
     $addonleadergroup = false;
     if ($ret = $api->getOrganicGroupName($objectId)) {
         $groupName = $ret;
         $addongroup = $api->isOrganicGroup($objectId);
         if ($addongroup == true && $api->getOrganicGroupPendingToken($objectId) == $objectId) {
             $addonpendinggroup = true;
         }
         if ($addongroup == true && $api->getOrganicGroupLeaderToken($objectId) == $objectId) {
             $addonleadergroup = true;
         }
     }
     $data = array('title' => $typeFactory->sortable($groupName), 'description' => $typeFactory->plaintext($row['groupDesc']), 'searchable' => $typeFactory->identifier('n'), 'view_permission' => $typeFactory->identifier('tiki_p_group_view'), 'addongroup' => $addongroup ? $typeFactory->identifier('y') : $typeFactory->identifier('n'), 'addonleadergroup' => $addonleadergroup ? $typeFactory->identifier('y') : $typeFactory->identifier('n'), 'addonpendinggroup' => $addonpendinggroup ? $typeFactory->identifier('y') : $typeFactory->identifier('n'));
     return $data;
 }
コード例 #6
0
ファイル: WikiBuilder.php プロジェクト: linuxwhy/tiki-1
 function wpquery_filter_personalize($query, $type, array $arguments)
 {
     global $user;
     $targetUser = $user;
     if (!$targetUser) {
         $targetUser = "******";
         // Invalid user name, make sure nothing matches
     }
     $subquery = $query->getSubQuery('personalize');
     $types = array_filter(array_map('trim', explode(',', $type)));
     if (in_array('self', $types)) {
         $subquery->filterContributors($targetUser);
         $subquery->filterContent($targetUser, 'user');
     }
     if (in_array('groups', $types)) {
         $part = new Search_Expr_Or(array_map(function ($group) {
             return new Search_Expr_Token($group, 'multivalue', 'user_groups');
         }, Perms::get()->getGroups()));
         $subquery->getExpr()->addPart(new Search_Expr_And(array($part, new Search_Expr_Not(new Search_Expr_Token($targetUser, 'identifier', 'user')))));
     }
     if (in_array('addongroups', $types)) {
         $api = new TikiAddons_Api_Group();
         $cats = $api->getOrganicGroupCatsForUser($targetUser);
         if (empty($cats)) {
             $subquery->filterCategory('impossible');
         } else {
             $subquery->filterCategory(implode(' ', $cats));
         }
     }
     if (in_array('follow', $types)) {
         $subquery->filterMultivalue($targetUser, 'user_followers');
     }
     $userId = TikiLib::lib('tiki')->get_user_id($targetUser);
     if (in_array('stream_critical', $types)) {
         $subquery->filterMultivalue("critical{$userId}", 'stream');
     }
     if (in_array('stream_high', $types)) {
         $subquery->filterMultivalue("high{$userId}", 'stream');
     }
     if (in_array('stream_low', $types)) {
         $subquery->filterMultivalue("low{$userId}", 'stream');
     }
 }
コード例 #7
0
ファイル: userslib.php プロジェクト: ameoba32/tiki
 function assign_user_to_group($user, $group, $bulk = false)
 {
     if (!$this->group_exists($group)) {
         throw new Exception(tr('Cannot add user %0 to nonexistent group %1', $user, $group));
     }
     if (!$this->user_exists($user)) {
         throw new Exception(tr('Cannot add nonexistent user %0 to group %1', $user, $group));
     }
     global $prefs, $tiki_p_admin, $page;
     $cachelib = TikiLib::lib('cache');
     $tikilib = TikiLib::lib('tiki');
     $access = TikiLib::lib('access');
     if ($this->is_user_banned_from_group($user, $group)) {
         $msg = tr('User "%0" is banned from the group "%1".', $user, $group);
         if ($tiki_p_admin === 'y') {
             $access->check_authenticity($msg . ' ' . tra('Do you want to unban them and continue?'));
             $this->unban_user_from_group($user, $group);
         } else {
             $access->display_error($page, $msg);
         }
     }
     $cachelib->invalidate('user_details_' . $user);
     $tikilib->invalidate_usergroups_cache($user);
     $this->invalidate_usergroups_cache($user);
     // this is needed as cache is present in this instance too
     $group_ret = false;
     $userid = $this->get_user_id($user);
     if ($userid > 0) {
         $query = "insert ignore into `users_usergroups`(`userId`,`groupName`, `created`) values(?,?,?)";
         $result = $this->query($query, array($userid, $group, $tikilib->now), -1, -1, false);
         $group_ret = true;
     }
     $this->update_group_expiries();
     if ($prefs['feature_community_send_mail_join'] == 'y') {
         $api = new TikiAddons_Api_Group();
         if ($api->isOrganicGroup($group)) {
             $groupleaders = $api->getOrganicGroupLeaders($group);
             $groupleaders = array_combine($groupleaders, $groupleaders);
             unset($groupleaders[$user]);
             if (isset($groupleaders[$_SESSION['u_info']['login']])) {
                 unset($groupleaders[$_SESSION['u_info']['login']]);
             }
             if (!empty($groupleaders)) {
                 $par_data['gname'] = $group;
                 $par_data['user'] = $user;
                 if (strpos($group, 'pending')) {
                     $mail_temp = 'user_joins_group_notification_to_leads_need_app.tpl';
                 } else {
                     $mail_temp = 'user_joins_group_notification_to_leads.tpl';
                 }
                 require_once "lib/notifications/notificationemaillib.php";
                 sendEmailNotification($groupleaders, 'group_lead_mail', 'user_joins_group_notification_to_leads_subject.tpl', $par_data, $mail_temp);
             }
         }
     }
     if ($group_ret) {
         $watches = $tikilib->get_event_watches('user_joins_group', $group);
         if (count($watches)) {
             require_once "lib/notifications/notificationemaillib.php";
             $smarty = TikiLib::lib('smarty');
             $smarty->assign('mail_user', $user);
             $smarty->assign('mail_group', $group);
             sendEmailNotification($watches, null, 'user_joins_group_notification_subject.tpl', null, 'user_joins_group_notification.tpl');
         }
         $api = new TikiAddons_Api_Group();
         TikiLib::events()->trigger('tiki.user.groupjoin', array('type' => 'user', 'object' => $user, 'group' => $group, 'addongroup' => $api->getOrganicGroupName($group), 'is_organic' => $api->isOrganicGroup($group) ? 1 : 0, 'is_private' => $api->organicGroupIsPrivate($group) ? 1 : 0, 'addongroupid' => $api->getItemIdFromToken($group), 'bulk_import' => $bulk));
     }
     return $group_ret;
 }
コード例 #8
0
ファイル: notificationemaillib.php プロジェクト: rjsmelo/tiki
/**
 *\brief Send email notification to a list of emails or a list of (email, user) in a charset+language associated with each email
 * \param $watches : bidimensional array of watches. Each watch has user, language, email and watchId keys.
 * \param $dummy: unused
 * \param $subjectTpl: subject template file or null (ex: "submission_notifcation.tpl")
 * \param $subjectParam: le param to be inserted in the subject or null
 * \param $txtTpl : texte template file (ex: "submission_notifcation.tpl")
 * \param $from email from to not the default one
 * \ $smarty is supposed to be already built to fit $txtTpl
 * \return the nb of sent emails
 */
function sendEmailNotification($watches, $dummy, $subjectTpl, $subjectParam, $txtTpl, $from = '')
{
    global $prefs;
    $smarty = TikiLib::lib('smarty');
    $tikilib = TikiLib::lib('tiki');
    $userlib = TikiLib::lib('user');
    include_once 'lib/webmail/tikimaillib.php';
    $sent = 0;
    $smarty->assign('mail_date', $tikilib->now);
    $foo = parse_url($_SERVER["REQUEST_URI"]);
    $smarty->assign('mail_machine', $tikilib->httpPrefix(true) . $foo["path"]);
    $parts = explode('/', $foo['path']);
    if (count($parts) > 1) {
        unset($parts[count($parts) - 1]);
    }
    $smarty->assign('mail_machine_raw', $tikilib->httpPrefix(true) . implode('/', $parts));
    // TODO: mail_machine_site may be required for some sef url with rewrite to sub-directory. To refine. (nkoth)
    $smarty->assign('mail_machine_site', $tikilib->httpPrefix(true));
    if ($dummy == 'group_lead_mail' || $dummy == 'add_rem_mail') {
        $api = new TikiAddons_Api_Group();
        $subjectParam['gname'] = trim($subjectParam['gname']);
        $smarty->assign('mail_appdata', $subjectParam['app_data']);
        $smarty->assign('mail_group', $api->getOrganicGroupName($subjectParam['gname']));
        $url = '';
        if ($dummy == 'group_lead_mail') {
            $url = $api->getGroupManagementPage($subjectParam['gname']) . "?itemId=" . $api->getItemIdFromToken($subjectParam['gname']);
            $smarty->assign('mail_user', $subjectParam['user']);
            $smarty->assign('mail_real', $tikilib->get_user_preference($subjectParam['user'], 'realName', ''));
        } elseif ($dummy == 'add_rem_mail') {
            $url = $api->getGroupHomePage($subjectParam['gname']) . "?itemId=" . $api->getItemIdFromToken($subjectParam['gname']);
        }
        foreach ($watches as $key => $value) {
            $lang = $tikilib->get_user_preference($key, "language", $prefs['site_language']);
            if ($dummy != 'group_lead_mail') {
                // group_lead_mail already sets this
                $smarty->assign('mail_user', $key);
                $smarty->assign('mail_real', $tikilib->get_user_preference($key, 'realName', ''));
            }
            $smarty->assign('mail_remuser', $tikilib->get_user_preference($value, 'realName', ''));
            $userid = "user" . TikiLib::lib('user')->get_user_id($value);
            $smarty->assign('mail_userid', $userid);
            $smarty->assign('mail_site', $_SERVER['SERVER_NAME']);
            $smarty->assign('mail_url', $url);
            $foo = parse_url($_SERVER["REQUEST_URI"]);
            $machine = $tikilib->httpPrefix(true) . dirname($foo["path"]);
            if (substr($machine, -1) == '/') {
                $machine = substr($machine, 0, -1);
            }
            $smarty->assign('mail_machine', $machine);
            $mail = new TikiMail(null, $from);
            if ($key) {
                $mail->setUser($key);
            }
            if ($subjectTpl) {
                $mail_data = $smarty->fetchLang($lang, "mail/" . $subjectTpl);
                if ($subjectParam) {
                    $mail_data = sprintf($mail_data, $subjectParam);
                }
                $mail_data = preg_replace('/%[sd]/', '', $mail_data);
                // partial cleaning if param not supply and %s in text
                $mail->setSubject($mail_data);
            } else {
                $mail->setSubject($subjectParam);
            }
            $mail->setHtml($smarty->fetchLang($lang, "mail/" . $txtTpl));
            if ($mail->send(array(TikiLib::lib('user')->get_user_email($key)))) {
                $sent++;
            }
        }
    } else {
        foreach ($watches as $watch) {
            $mail = new TikiMail(null, $from);
            $smarty->assign('watchId', $watch['watchId']);
            if ($watch['user']) {
                $mail->setUser($watch['user']);
            }
            if ($subjectTpl) {
                $mail_data = $smarty->fetchLang($watch['language'], "mail/" . $subjectTpl);
                if ($subjectParam) {
                    $mail_data = sprintf($mail_data, $subjectParam);
                }
                $mail_data = preg_replace('/%[sd]/', '', $mail_data);
                // partial cleaning if param not supply and %s in text
                $mail->setSubject($mail_data);
            } else {
                $mail->setSubject($subjectParam);
            }
            $mail->setText($smarty->fetchLang($watch['language'], "mail/" . $txtTpl));
            if ($mail->send(array($watch['email']))) {
                $sent++;
            }
        }
    }
    return $sent;
}
コード例 #9
0
function wikiplugin_memberlist($data, $params)
{
    global $prefs, $user, $page;
    $mail = false;
    $tikilib = TikiLib::lib('tiki');
    $userlib = TikiLib::lib('user');
    $smarty = TikiLib::lib('smarty');
    static $execution = 0;
    $exec_key = 'memberlist-execution-' . ++$execution;
    if (!isset($params['groups'])) {
        return "^Missing group list^";
    }
    $groups = $params['groups'];
    $defaults = array();
    $plugininfo = wikiplugin_memberlist_info();
    foreach ($plugininfo['params'] as $key => $param) {
        $defaults["{$key}"] = $param['default'];
    }
    $params = array_merge($defaults, $params);
    if ($prefs['feature_user_watches'] == 'y') {
        if (!empty($user)) {
            if (isset($_REQUEST['watch'])) {
                $tikilib->add_user_watch($user, 'user_joins_group', $_REQUEST['watch'], 'group');
            } else {
                if (isset($_REQUEST['unwatch'])) {
                    $tikilib->remove_user_watch($user, 'user_joins_group', $_REQUEST['unwatch'], 'group');
                }
            }
        }
    }
    if (count($groups) === 1 && $groups[0] === '*') {
        // all available
        $groups = $userlib->list_all_groups();
    }
    if (!empty($params['membersOnly'])) {
        if ($params['membersOnly'] === '%user%') {
            $params['membersOnly'] = $GLOBALS['user'];
        }
        $usergroups = $userlib->get_user_groups($params['membersOnly']);
        $in_group = array();
        foreach ($groups as $group) {
            if (in_array($group, $usergroups) && $group != 'Anonymous') {
                $in_group[] = $group;
            }
        }
        $groups = $in_group;
        unset($in_group);
    }
    if (!empty($params['including'])) {
        $includinggroups = $userlib->get_including_groups($params['including']);
        $in_group = array();
        foreach ($groups as $group) {
            if (in_array($group, $includinggroups)) {
                $in_group[] = $group;
            }
        }
        $groups = $in_group;
        unset($in_group);
    }
    if ($params['addon_groups_approval_buttons'] == 'y') {
        $pageInfo = $tikilib->get_page_info($page);
        $pageLang = $pageInfo['lang'];
        $api = new TikiAddons_Api_Group();
        $group_base = $api->getOrganicGroupBaseName($params['groups'][0]);
        $smarty->assign('mail_group', $group_base);
        $itemId = $api->getItemIdFromToken($params['groups'][0]);
        $smarty->assign('mail_organicgroup_id', $itemId);
        $userid = "user" . $userlib->get_user_id($user);
        $smarty->assign('mail_userid', $userid);
        $smarty->assign('mail_url', $api->getGroupHomePage($params['groups'][0]) . '?itemId=' . $itemId);
        $foo = parse_url($_SERVER["REQUEST_URI"]);
        $machine = $tikilib->httpPrefix(true) . dirname($foo["path"]);
        if (substr($machine, -1) == '/') {
            $machine = substr($machine, 0, -1);
        }
        $smarty->assign('mail_machine', $machine);
        $file_wel = $smarty->fetchLang($pageLang, "mail/admin_approval_user_joins_group_notification.tpl");
        $file_rej = $smarty->fetchLang($pageLang, "mail/admin_rejection_user_group_notification.tpl");
        $smarty->assign('welcome_content', $file_wel);
        $smarty->assign('reject_content', $file_rej);
        $smarty->assign('Need_app', $exec_key);
    } else {
        $smarty->assign('Need_app', '');
    }
    Perms::bulk(array('type' => 'group'), 'object', $groups);
    if ($params['readOnly'] == 'y') {
        $readOnly = true;
    } else {
        $readOnly = false;
    }
    $validGroups = wikiplugin_memberlist_get_group_details($groups, $params['max'], $params['sort_mode'], $readOnly);
    if (isset($_POST[$exec_key])) {
        if (isset($_POST['join'])) {
            wikiplugin_memberlist_join($validGroups, $_POST['join']);
        }
        if (isset($_POST['leave'])) {
            wikiplugin_memberlist_leave($validGroups, $_POST['leave']);
        }
        if (isset($_POST['remove'])) {
            if (isset($params['email_to_removed_user']) && $params['email_to_removed_user'] == 'y' || isset($_POST['text_area'])) {
                $mail = 'true';
            }
            wikiplugin_memberlist_remove($validGroups, $_POST['remove'], $mail, $params);
        }
        if (isset($_POST['add'])) {
            $addit = array();
            foreach ($_POST['add'] as $key => $value) {
                if ($params['addon_groups_approval_buttons'] == 'y') {
                    $basegroup = $api->getOrganicGroupBaseToken($key);
                    $valgroup[] = $basegroup;
                    $addit['add'][$basegroup] = $value;
                    $removeit['add'][$api->getOrganicGroupPendingToken($key)][] = $value;
                } else {
                    $valgroup[] = $key;
                    $addit['add'][$key] = $value;
                }
            }
            if (isset($params['email_to_added_user']) && $params['email_to_added_user'] == 'y' || isset($_POST['text_area'])) {
                $mail = 'true';
            }
            $validrem = wikiplugin_memberlist_get_group_details($valgroup, $params['max'], $params['sort_mode'], $readOnly);
            if ($params['addon_groups_approval_buttons'] == 'y' && isset($removeit['add'])) {
                wikiplugin_memberlist_remove($validGroups, $removeit['add'], 'false', $params);
            }
            wikiplugin_memberlist_add($validrem, $addit['add'], '', $mail, $params);
        }
        if (isset($_POST['defgroup'])) {
            wikiplugin_memberlist_add($validGroups, $_POST['defgroup'], true);
        }
        header('Location: ' . $_SERVER['REQUEST_URI']);
        exit;
    }
    if (isset($_REQUEST['transition'], $_REQUEST['member'])) {
        if ($prefs['feature_group_transition'] == 'y') {
            require_once 'lib/transitionlib.php';
            $transitionlib = new TransitionLib('group');
            $transitionlib->triggerTransition($_REQUEST['transition'], $_REQUEST['member']);
            $url = $_SERVER['REQUEST_URI'];
            $url = str_replace('transition=', 'x=', $url);
            $url = str_replace('member=', 'x=', $url);
            header('Location: ' . $url);
            exit;
        }
    }
    $canApply = false;
    foreach ($validGroups as $group) {
        if ($group['can_add'] || $group['can_remove'] || $group['can_join'] || $group['can_leave']) {
            $canApply = true;
            break;
        }
    }
    if ($params['showDescriptions'] === 'y') {
        foreach ($validGroups as $name => &$group) {
            $group['info'] = $userlib->get_group_info($name);
        }
    }
    $smarty = TikiLib::lib('smarty');
    $smarty->assign('execution_key', $exec_key);
    $smarty->assign('can_apply', $canApply);
    $smarty->assign('defaultGroup', $params['defaultGroup']);
    $smarty->assign('memberlist_groups', $validGroups);
    $smarty->assign('displayMode', $params['displayMode']);
    // seems conditionally adding tabs in the tpl doesn't work (unclosed {tabset} errors etc) - a Smarty 3 change?
    if (empty($params['displayMode']) && $prefs['feature_tabs'] === 'y') {
        $oldTabs = $prefs['feature_tabs'];
        $prefs['feature_tabs'] = 'n';
        // css workarounds for when in non tabs mode
        TikiLib::lib('header')->add_css('.memberlist > fieldset { border: none; margin:  0; padding:  0; }
			.memberlist > fieldset > legend { display: none; }');
    }
    $out = '~np~' . $smarty->fetch('wiki-plugins/wikiplugin_memberlist.tpl') . '~/np~';
    if (empty($params['displayMode']) && !empty($oldTabs)) {
        $prefs['feature_tabs'] = $oldTabs;
    }
    return $out;
}