/** * 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)\n\t\t\t\t\t\t\t\t\t\tVALUES (" . 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); } }
/** * Additional data to update after a save call (such as denormalized values in other tables). * * @param boolean Do the query? */ function post_save_each($doquery = true) { // When creating a group, the creator needs to be come a user automatically if (empty($this->condition)) { $socialgroupmemberdm =& datamanager_init('SocialGroupMember', $this->registry, ERRTYPE_STANDARD); $socialgroupmemberdm->set('userid', $this->fetch_field('creatoruserid')); $socialgroupmemberdm->set('groupid', $this->fetch_field('groupid')); $socialgroupmemberdm->set('dateline', $this->fetch_field('dateline')); $socialgroupmemberdm->set('type', 'member'); $socialgroupmemberdm->save(); unset($socialgroupmemberdm); exec_sg_mark_as_read('group', $this->fetch_field('groupid')); } ($hook = vBulletinHook::fetch_hook('socgroupdata_postsave')) ? eval($hook) : false; if ($this->fetch_field('socialgroupcategoryid') != $this->existing['socialgroupcategoryid']) { fetch_socialgroup_category_cloud(true); } if ($this->fetch_field('name') != $this->existing['name'] or $this->fetch_field('description') != $this->existing['description']) { fetch_socialgroup_newest_groups(true, false, !$this->registry->options['sg_enablesocialgroupicons']); } }
$discussion_dm->setr_info('group', $group); // set the relevant counter to 1 based on new messages state $discussion_dm->set($dataman->fetch_field('state'), 1); $discussionid = $discussion_dm->save(); unset($discussion_dm); if (!fetch_group_auto_moderation($group)) { exec_sg_mark_as_read('discussion', $discussionid); } // IIS may have issues setting cookies with header redirects $forceredirect = strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false; ($hook = vBulletinHook::fetch_hook('group_message_post_complete')) ? eval($hook) : false; $vbulletin->url = 'group.php?' . $vbulletin->session->vars['sessionurl'] . "&do=discuss&groupid={$group['groupid']}&discussionid={$discussion['discussionid']}&gmid={$gmid}#gmessage{$gmid}"; eval(print_standard_redirect('visitormessagethanks', true, $forceredirect)); } else { // mark discussion as read exec_sg_mark_as_read('discussion', $discussion['discussionid']); // IIS may have issues setting cookies with header redirects $forceredirect = strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false; ($hook = vBulletinHook::fetch_hook('group_message_post_complete')) ? eval($hook) : false; $vbulletin->url = 'group.php?' . $vbulletin->session->vars['sessionurl'] . "&do=discuss&groupid={$group['groupid']}&discussionid={$discussion['discussionid']}&gmid={$gmid}#gmessage{$gmid}"; // send notifications if (!$messageinfo and !$edit_discussion and $discussion['subscribers']) { exec_send_sg_notification($discussion['discussionid'], $gmid, $postusername = false); } eval(print_standard_redirect('visitormessagethanks', true, $forceredirect)); } } } } unset($dataman); }