Skip to content

Commit ba06962

Browse files
authored
Merge pull request #39 from topcoder-platform/issues-244-1
Issue-229: cleared User cache
2 parents ca8ef02 + 7c0818c commit ba06962

File tree

2 files changed

+51
-33
lines changed

2 files changed

+51
-33
lines changed

class.groups.plugin.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ public function categoryModel_setCategoryMetaData_create(CategoryModel $sender)
529529
$userMetaModel->setUserMeta($userID, $newPopupCommentKey , $watched);
530530
$userMetaModel->setUserMeta($userID, $newPopupDiscussionKey , $watched);
531531
}
532-
return $sender->hasWatched($categoryIDs,$userID);
532+
return;// $sender->hasWatched($categoryIDs,$userID);
533533
}
534534

535535
/**

models/class.groupmodel.php

Lines changed: 50 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -830,17 +830,19 @@ public function checkPermission($userID,$groupID,$categoryID = null, $permission
830830
* @return bool|Gdn_DataSet|object|string
831831
*/
832832
public function join($GroupID, $UserID, $watched = true, $followed = true ){
833+
$results = [];
833834
$Fields = ['Role' => GroupModel::ROLE_MEMBER, 'GroupID' => $GroupID,'UserID' => $UserID, 'DateInserted' => Gdn_Format::toDateTime()];
834835
if( $this->SQL->getWhere('UserGroup', ['GroupID' => $GroupID,'UserID' => $UserID])->numRows() == 0) {
835836
$this->SQL->insert('UserGroup', $Fields);
836-
if($followed) {
837-
$this->followGroup($GroupID, $UserID);
837+
if($followed === true) {
838+
$results['Followed'] = $this->followGroup($GroupID, $UserID);
838839
}
839-
if($watched) {
840-
$this->watchGroup($GroupID, $UserID);
840+
if($watched === true) {
841+
$results['Watched'] = $this->watchGroup($GroupID, $UserID);
841842
}
842843
$this->notifyJoinGroup($GroupID, $UserID);
843844
}
845+
return $results;
844846
}
845847

846848
/**
@@ -1249,24 +1251,31 @@ public function hasWatchedGroup($group) {
12491251
*
12501252
*/
12511253
public function followGroup($group, $userID) {
1254+
$result = [];
12521255
if(is_numeric($group) && $group > 0) {
12531256
$group = $this->getByGroupID($group);
12541257
}
12551258

12561259
if($group->ChallengeID) {
1257-
$categoryModel = new CategoryModel();
1260+
// Remove existing UserCategory cache
1261+
// Before calculating the user-specific information on a category.
1262+
CategoryModel::clearUserCache($userID);
1263+
Gdn::cache()->remove("Follow_{$userID}");
1264+
$categoryModel = CategoryModel::instance();
12581265
$groupCategory = $categoryModel->getByCode($group->ChallengeID);
1259-
if($groupCategory->DisplayAs !== 'Discussions') {
1260-
$categories = CategoryModel::getSubtree($groupCategory->CategoryID, false);
1261-
$categoryIDs = array_column($categories, 'CategoryID');
1262-
} else {
1263-
$categoryIDs = [$groupCategory->CategoryID];
1264-
}
1265-
1266+
$parentCategoryID = val('CategoryID', $groupCategory);
1267+
$isFollowed = $categoryModel->follow($userID, $parentCategoryID, true);
1268+
$result[strval($parentCategoryID)] = $isFollowed;
1269+
$childrenCategories = CategoryModel::getChildren($parentCategoryID);
1270+
$categoryIDs = array_column($childrenCategories, 'CategoryID');
12661271
foreach($categoryIDs as $categoryID) {
1267-
$categoryModel->follow($userID, $categoryID, true);
1272+
$isFollowed = $categoryModel->follow($userID, $categoryID, true);
1273+
$result[strval($categoryID)] = $isFollowed;
12681274
}
1275+
1276+
CategoryModel::clearUserCache($userID);
12691277
}
1278+
return $result;
12701279
}
12711280

12721281
/**
@@ -1281,16 +1290,14 @@ public function unfollowGroup($group, $userID) {
12811290
if($group->ChallengeID) {
12821291
$categoryModel = new CategoryModel();
12831292
$groupCategory = $categoryModel->getByCode($group->ChallengeID);
1284-
if($groupCategory->DisplayAs !== 'Discussions') {
1285-
$categories = CategoryModel::getSubtree($groupCategory->CategoryID, false);
1286-
$categoryIDs = array_column($categories, 'CategoryID');
1287-
} else {
1288-
$categoryIDs = [$groupCategory->CategoryID];
1289-
}
1293+
$categories = CategoryModel::getSubtree($groupCategory->CategoryID, true);
1294+
$categoryIDs = array_column($categories, 'CategoryID');
12901295

12911296
foreach($categoryIDs as $categoryID) {
12921297
$categoryModel->follow($userID, $categoryID, false);
12931298
}
1299+
1300+
CategoryModel::clearUserCache($userID);
12941301
}
12951302
}
12961303

@@ -1299,21 +1306,30 @@ public function unfollowGroup($group, $userID) {
12991306
* @param $group
13001307
*/
13011308
public function watchGroup($group, $userID) {
1309+
$results = [];
13021310
if(is_numeric($group) && $group > 0) {
13031311
$group = $this->getByGroupID($group);
13041312
}
13051313

13061314
if($group->ChallengeID) {
1307-
$categoryModel = new CategoryModel();
1315+
// Remove existing UserCategory cache
1316+
// Before calculating the user-specific information on a category.
1317+
CategoryModel::clearUserCache($userID);
1318+
Gdn::cache()->remove("UserMeta_{$userID}");
1319+
1320+
$categoryModel = CategoryModel::instance();
13081321
$groupCategory = $categoryModel->getByCode($group->ChallengeID);
1309-
if($groupCategory->DisplayAs !== 'Discussions') {
1310-
$categories = CategoryModel::getSubtree($groupCategory->CategoryID, true);
1311-
$categoryIDs = array_column($categories, 'CategoryID');
1312-
} else {
1313-
$categoryIDs = [$groupCategory->CategoryID];
1314-
}
1322+
$parentCategoryID = val('CategoryID', $groupCategory);
1323+
$childrenCategories = CategoryModel::getChildren($parentCategoryID);
1324+
$categoryIDs = array_column($childrenCategories, 'CategoryID');
1325+
array_push($categoryIDs, $parentCategoryID);
13151326
$categoryModel->setCategoryMetaData($categoryIDs, $userID, 1);
1327+
$userMetaModel = new UserMetaModel();
1328+
$results = $userMetaModel->getUserMeta($userID);
1329+
CategoryModel::clearUserCache($userID);
13161330
}
1331+
1332+
return $results;
13171333
}
13181334

13191335
/**
@@ -1326,15 +1342,17 @@ public function unwatchGroup($group, $userID) {
13261342
}
13271343

13281344
if($group->ChallengeID) {
1345+
CategoryModel::clearUserCache($userID);
1346+
Gdn::cache()->remove("UserMeta_{$userID}");
13291347
$categoryModel = new CategoryModel();
13301348
$groupCategory = $categoryModel->getByCode($group->ChallengeID);
1331-
if($groupCategory->DisplayAs !== 'Discussions') {
1332-
$categories = CategoryModel::getSubtree($groupCategory->CategoryID, true);
1333-
$categoryIDs = array_column($categories, 'CategoryID');
1334-
} else {
1335-
$categoryIDs = [$groupCategory->CategoryID];
1336-
}
1349+
$parentCategoryID = val('CategoryID', $groupCategory);
1350+
$childrenCategories = CategoryModel::getChildren($parentCategoryID);
1351+
$categoryIDs = array_column($childrenCategories, 'CategoryID');
1352+
array_push($categoryIDs, $parentCategoryID);
13371353
$categoryModel->setCategoryMetaData($categoryIDs, $userID, null);
1354+
1355+
CategoryModel::clearUserCache($userID);
13381356
}
13391357
}
13401358

0 commit comments

Comments
 (0)