Skip to content

Commit 31afbb7

Browse files
committed
Fixed issues-205
1 parent b80727e commit 31afbb7

File tree

2 files changed

+35
-26
lines changed

2 files changed

+35
-26
lines changed

class.groups.plugin.php

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,15 @@ public function onDisable() {
171171
public function discussionsController_beforeDiscussionMetaData_handler($sender, $args){
172172
if($args['Discussion']) {
173173
$discussion = $args['Discussion'];
174-
if ($discussion->GroupID) {
175-
$result = '/group/' . $discussion->GroupID;
174+
$groupModel = new GroupModel();
175+
$groupID = $groupModel->findGroupIDFromDiscussion($discussion);
176+
GroupsPlugin::log('discussionsController_beforeDiscussionMetaData_handler', [
177+
'GroupID' => $groupID]);
178+
if ($groupID) {
179+
$result = '/group/' . $groupID;
176180
$url = url($result, true);
177-
$groupModel = new GroupModel();
178-
$group = $groupModel->getByGroupID($discussion->GroupID);
181+
182+
$group = $groupModel->getByGroupID($groupID);
179183
echo '<div class="Meta Meta-Discussion Group-Info">'.
180184
'<span class="MItem ">'.
181185
'<span class="label">Challenge: </span>'.
@@ -240,11 +244,13 @@ public function settingsController_groups_create($sender) {
240244

241245
public function discussionController_render_before($sender, $args) {
242246
$Discussion = $sender->data('Discussion');
243-
if($Discussion && $Discussion->GroupID != null) {
247+
if($Discussion) {
244248
$groupModel = new GroupModel();
245249
$currentTopcoderProjectRoles = $sender->Data['ChallengeCurrentUserProjectRoles'];
246250
$groupModel->setCurrentUserTopcoderProjectRoles($currentTopcoderProjectRoles);
247-
$Group = $groupModel->getByGroupID($Discussion->GroupID);
251+
$groupID = $groupModel->findGroupIDFromDiscussion($Discussion);
252+
self::log('discussionController_render_before:GroupID='.$groupID, []);
253+
$Group = $groupModel->getByGroupID($groupID);
248254
if (!$groupModel->canView($Group)) {
249255
throw permissionException();
250256
}
@@ -324,15 +330,6 @@ public function base_discussionOptionsDropdown_handler($sender, $args){
324330
}
325331
}
326332

327-
/*
328-
public function discussionsController_afterDiscussionFilters_handler($sender){
329-
$this->addGroupLinkToMenu();
330-
}
331-
332-
public function discussionController_afterDiscussionFilters_handler($sender){
333-
$this->addGroupLinkToMenu();
334-
}
335-
*/
336333
public function base_afterDiscussionFilters_handler($sender){
337334
$this->addGroupLinkToMenu($sender);
338335
}
@@ -362,9 +359,9 @@ public function base_categoryOptionsDropdown_handler($sender, $args) {
362359
*/
363360
public function discussionController_discussionInfo_handler($sender, $args) {
364361
if($sender->Data['Discussion']) {
365-
$groupID = $sender->Data['Discussion']->GroupID;
362+
$groupModel = new GroupModel();
363+
$groupID = $groupModel->findGroupIDFromDiscussion($sender->Data['Discussion']);
366364
if($groupID) {
367-
$groupModel = new GroupModel();
368365
$group = $groupModel->getByGroupID($groupID);
369366
if($group->ChallengeUrl) {
370367
echo anchor($group->Name, $group->ChallengeUrl);
@@ -381,10 +378,12 @@ public function postController_afterDiscussionSave_handler($sender, $args) {
381378
return;
382379
}
383380
$discussion= $args['Discussion'];
381+
$groupModel = new GroupModel();
382+
$groupID = $groupModel->findGroupIDFromDiscussion($discussion);
384383
if ($sender->deliveryType() == DELIVERY_TYPE_ALL) {
385-
redirectTo(GroupsPlugin::GROUP_ROUTE.$discussion->GroupID);
384+
redirectTo(GroupsPlugin::GROUP_ROUTE.$groupID);
386385
} else {
387-
$sender->setRedirectTo(GroupsPlugin::GROUP_ROUTE.$discussion->GroupID);
386+
$sender->setRedirectTo(GroupsPlugin::GROUP_ROUTE.$groupID);
388387
}
389388
}
390389

models/class.groupmodel.php

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,15 @@ public function getDefaultLimit() {
510510
return c('Vanilla.Groups.PerPage', 30);
511511
}
512512

513+
public function findGroupIDFromDiscussion($discussion){
514+
if(is_numeric($discussion)){
515+
$discussionModel = new DiscussionModel();
516+
$discussion = $discussionModel->getID($discussion);
517+
}
518+
$categoryID = val('CategoryID', $discussion);
519+
$category = CategoryModel::categories($categoryID);
520+
return val('GroupID', $category, false);
521+
}
513522

514523
/**
515524
* Default Gdn_Model::get() behavior.
@@ -1438,7 +1447,7 @@ public function canAddAnnouncement($group) {
14381447
*
14391448
*/
14401449
public function canViewDiscussion($discussion) {
1441-
$groupID= $discussion->GroupID;
1450+
$groupID = $this->findGroupIDFromDiscussion($discussion);
14421451
if(!$groupID) {
14431452
return true;
14441453
}
@@ -1456,7 +1465,7 @@ public function canViewDiscussion($discussion) {
14561465
*/
14571466
public function canEditDiscussion($discussion) {
14581467
$canEditDiscussion = DiscussionModel::canEdit($discussion) ;
1459-
$groupID= $discussion->GroupID;
1468+
$groupID= $this->findGroupIDFromDiscussion($discussion);
14601469
if(!$groupID) {
14611470
return $canEditDiscussion;
14621471
}
@@ -1480,7 +1489,7 @@ public function canDismissDiscussion($discussion) {
14801489
&& !$discussion->Dismissed
14811490
&& Gdn::session()->isValid();
14821491

1483-
$groupID= $discussion->GroupID;
1492+
$groupID= $this->findGroupIDFromDiscussion($discussion);
14841493
if(!$groupID ) {
14851494
return $canDismissDiscussion;
14861495
}
@@ -1506,7 +1515,8 @@ public function canDismissDiscussion($discussion) {
15061515
*/
15071516
public function canAnnounceDiscussion($discussion) {
15081517
$canAnnounceDiscussion = CategoryModel::checkPermission($discussion->CategoryID, 'Vanilla.Discussions.Announce', true);
1509-
$groupID = $discussion->GroupID;
1518+
$groupID = $this->findGroupIDFromDiscussion($discussion);
1519+
15101520
if(!$groupID ) {
15111521
return $canAnnounceDiscussion;
15121522
}
@@ -1557,7 +1567,7 @@ public function canAddComment($categoryID, $groupID) {
15571567
*/
15581568
public function canSinkDiscussion($discussion) {
15591569
$canSinkDiscussion = CategoryModel::checkPermission($discussion->CategoryID, 'Vanilla.Discussions.Sink', true);
1560-
$groupID = $discussion->GroupID;
1570+
$groupID = $this->findGroupIDFromDiscussion($discussion);
15611571
if(!$groupID ) {
15621572
return $canSinkDiscussion;
15631573
}
@@ -1584,7 +1594,7 @@ public function canSinkDiscussion($discussion) {
15841594
*/
15851595
public function canCloseDiscussion($discussion) {
15861596
$canCloseDiscussion = CategoryModel::checkPermission($discussion->CategoryID, 'Vanilla.Discussions.Close', true);
1587-
$groupID = $discussion->GroupID;
1597+
$groupID = $this->findGroupIDFromDiscussion($discussion);
15881598
if(!$groupID ) {
15891599
return $canCloseDiscussion;
15901600
}
@@ -1621,7 +1631,7 @@ public function canRefetchDiscussion($discussion) {
16211631

16221632
public function canDeleteDiscussion($discussion) {
16231633
$canDeleteDiscussion = CategoryModel::checkPermission($discussion->CategoryID, 'Vanilla.Discussions.Delete', true);
1624-
$groupID= $discussion->GroupID;
1634+
$groupID = $this->findGroupIDFromDiscussion($discussion);
16251635
if(!$groupID) {
16261636
return $canDeleteDiscussion;
16271637
}

0 commit comments

Comments
 (0)