コード例 #1
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');
}
コード例 #2
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;
 }