Esempio n. 1
0
         $messagephrase = $do_discussions ? $vbphrase['moderated_social_group_discussions'] : $vbphrase['moderated_social_group_messages'];
         if ($do_discussions and !fetch_socialgroup_modperm('canmoderatediscussions') or !$do_discussions and !fetch_socialgroup_modperm('canmoderategroupmessages')) {
             print_no_permission();
         }
     }
 }
 // Items to display per page
 if ($do_discussions) {
     $perpage = (!$vbulletin->GPC['perpage'] or $vbulletin->GPC['perpage'] > $vbulletin->options['sgd_maxperpage']) ? $vbulletin->options['sgd_perpage'] : $vbulletin->GPC['perpage'];
 } else {
     $perpage = (!$vbulletin->GPC['perpage'] or $vbulletin->GPC['perpage'] > $vbulletin->options['gm_maxperpage']) ? $vbulletin->options['gm_perpage'] : $vbulletin->GPC['perpage'];
 }
 // Create message collection
 $itemtype = $do_discussions ? 'discussion' : 'message';
 $collection_factory = new vB_Group_Collection_Factory($vbulletin);
 $collection = $collection_factory->create($itemtype, false, $vbulletin->GPC['pagenumber'], $perpage, $descending);
 // Set filters
 $collection->set_ignore_marking(false);
 $collection->filter_show_discussions($do_discussions);
 $collection->filter_show_visible(false);
 $collection->filter_days_prune($daysprune);
 $collection->filter_sort_field($sortfield);
 switch ($type) {
     case 'deleted':
         $collection->filter_show_moderated(false);
         break;
     case 'new':
         $collection->filter_show_visible(true);
         break;
     case 'moderated':
     default:
Esempio n. 2
0
                $templater = vB_Template::create('socialgroups_groupmodlist_bit');
                $templater->register('group', $group);
                $grouplist .= $templater->render();
            }
        }
        $show['socialgroups'] = true;
    }
    unset($socialgroupsearch);
}
// ############################ start new subscribed to discussions ##############################
$show['discussions'] = false;
if ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_groups'] and $vbulletin->userinfo['permissions']['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canviewgroups'] and $vbulletin->options['socnet_groups_msg_enabled']) {
    require_once DIR . '/includes/class_groupmessage.php';
    // Create message collection
    $collection_factory = new vB_Group_Collection_Factory($vbulletin);
    $collection = $collection_factory->create('discussion', false, $vbulletin->GPC['pagenumber'], false, false, true);
    $collection->set_ignore_marking(false);
    $collection->filter_show_unsubscribed(false);
    // Check if the user is subscribed to any discussions
    if ($collection->fetch_count()) {
        if (!$vbulletin->input->clean_gpc('r', 'viewalldiscussions', TYPE_BOOL)) {
            // only show unread
            $collection->filter_show_read(false);
        }
        $numdiscussions = $collection->fetch_count();
        // Show group name in messages
        $show['group'] = true;
        // Create bit factory
        $bit_factory = new vB_Group_Bit_Factory($vbulletin, $itemtype);
        // Build message bits for all items
        $messagebits = '';
Esempio n. 3
0
/**
 * Marks a discussion or group as read.
 *
 * @param string $type						- 'group' or 'discussion'
 * @param int $userid						- The id of the user
 * @param int $itemid						- The id of the item to mark
 */
function exec_sg_mark_as_read($type, $itemid)
{
	global $vbulletin;

	if ($vbulletin->userinfo['userid'])
	{
		if ($vbulletin->options['threadmarking'])
		{
			$table = TABLE_PREFIX . (($type == 'group') ? 'groupread' : 'discussionread');
			$idcol = ($type == 'group') ? 'groupid' : 'discussionid';

			$vbulletin->db->query_write("REPLACE INTO $table (userid,$idcol,readtime)
										VALUES (" . intval($vbulletin->userinfo['userid']) . ", " . intval($itemid) . ", " . TIMENOW . ")");

			if ('discussion' == $type AND 2 == $vbulletin->options['threadmarking'])
			{
				// quite expensive check to see if there are any unread discussions
				if ($discussion = fetch_socialdiscussioninfo($itemid))
				{
					require_once(DIR . '/includes/class_groupmessage.php');

					// Create discussion collection
					$collection_factory = new vB_Group_Collection_Factory($vbulletin);
					$collection = $collection_factory->create('discussion', $discussion['groupid'], 0, 1, false, true);
					$collection->filter_show_read(false);

					if (!$collection->fetch_count())
					{
						exec_sg_mark_as_read('group', $discussion['groupid']);
					}
					unset($collection, $collection_factory);
				}
			}
		}
		else
		{
			// set read in cookie
			set_bbarray_cookie($type . '_marking', $itemid, TIMENOW);
		}
	}
	else
	{
		vbsetcookie('lastvisit', TIMENOW);
	}
}
Esempio n. 4
0
$navbits = array('usercp.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['user_control_panel']);
// ############################### start view threads ###############################
if ($_REQUEST['do'] == 'viewsubscription') {
    if (!($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_groups']) or !($vbulletin->userinfo['permissions']['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canviewgroups']) or !$vbulletin->options['socnet_groups_msg_enabled']) {
        print_no_permission();
    }
    // Get pagenav
    $vbulletin->input->clean_array_gpc('r', array('perpage' => TYPE_UINT, 'pagenumber' => TYPE_UINT, 'sort' => TYPE_NOHTML, 'order' => TYPE_NOHTML));
    $perpage = (!$vbulletin->GPC['perpage'] or $vbulletin->GPC['perpage'] > $vbulletin->options['sg_maxperpage']) ? $vbulletin->options['sg_perpage'] : $vbulletin->GPC['perpage'];
    // get sorting
    $desc = 'asc' == $vbulletin->GPC['order'] ? false : true;
    $sortfield = $vbulletin->GPC['sort'];
    // Create message collection
    require_once DIR . '/includes/class_groupmessage.php';
    $collection_factory = new vB_Group_Collection_Factory($vbulletin);
    $collection = $collection_factory->create('discussion', false, $vbulletin->GPC['pagenumber'], $perpage, $desc);
    $collection->set_ignore_marking(false);
    $collection->filter_show_unsubscribed(false);
    $collection->filter_sort_field($sortfield);
    // Get counts
    list($start, $end, $shown, $totaldiscussions) = array_values($collection->fetch_counts());
    $pagenumber = $collection->fetch_pagenumber();
    // Check if the user is subscribed to any discussions
    if ($totaldiscussions) {
        // Create bit factory
        $bit_factory = new vB_Group_Bit_Factory($vbulletin, $itemtype);
        // Build message bits for all items
        $messagebits = '';
        while ($item = $collection->fetch_item()) {
            $group = fetch_socialgroupinfo($item['groupid']);
            // add group name to message
Esempio n. 5
0
 $gmid = $dataman->save();
 if ($messageinfo) {
     $gmid = $messageinfo['gmid'];
 }
 if ($messageinfo and !$group['is_owner'] and can_moderate(0, 'caneditgroupmessages')) {
     require_once DIR . '/includes/functions_log_error.php';
     log_moderator_action($messageinfo, 'gm_by_x_in_y_for_z_edited', array($messageinfo['postusername'], $discussion['title'], $group['name']));
 }
 if ($vbulletin->GPC['ajax'] and (!$edit_discussion or $messageinfo['gmid'])) {
     require_once DIR . '/includes/class_xml.php';
     $xml = new vB_AJAX_XML_Builder($vbulletin, 'text/xml');
     $xml->add_group('commentbits');
     require_once DIR . '/includes/class_groupmessage.php';
     // create message collection
     $collection_factory = new vB_Group_Collection_Factory($vbulletin, $group);
     $collection = $collection_factory->create($messageinfo['gmid'] ? 'message' : 'recentmessage', $discussion['discussionid'], false, false, false, true);
     if ($messageinfo['gmid']) {
         $collection->filter_id($messageinfo['gmid']);
     } else {
         $collection->set_dateline($vbulletin->GPC['lastcomment'], $gmid);
     }
     // add hook for manipulating query
     $collection->set_query_hook('group_message_post_ajax');
     // create bit factory for rendering messages
     $bitfactory = new vB_Group_Bit_Factory($vbulletin, 'message');
     // build response for each message
     while ($message = $collection->fetch_item()) {
         $bit = $bitfactory->create($message, $group);
         if ($vbulletin->GPC['hideinlinemod']) {
             $bit->show_moderation_tools(false);
         }