{"action":"created","comment":{"url":"https://api.github.com/repos/sakaiproject/sakai/pulls/comments/43896231","id":43896231,"diff_hunk":"@@ -345,4 +348,30 @@ private boolean isValidEmail(String email) {\n \t\t\n \t}\n \n+\tprivate String getAnonAwareAuthor(Message message)\n+\t{\n+\t\tif (isUseAnonymousId(message.getTopic()))\n+\t\t{\n+\t\t\tAnonymousManager anonMan = (AnonymousManager)ComponentManager.get(\"org.sakaiproject.api.app.messageforums.AnonymousManager\");\n+\t\t\tString siteId = ToolManager.getCurrentPlacement().getContext();\n+\t\t\tString userId = message.getAuthorId();\n+\t\t\treturn anonMan.getOrCreateAnonId(siteId, userId);\n+\t\t}\n+\t\treturn message.getAuthor();\n+\t}\n+\n+\tprivate boolean isUseAnonymousId(Topic topic)\n+\t{\n+\t\tif (topic == null)\n+\t\t{\n+\t\t\tthrow new IllegalArgumentException(\"isUseAnonymousId invoked with null topic\");\n+\t\t}\n+\n+\t\t/* \n+\t\t * TODO: we ignore isRevealIDsToRoles / isIdentifyAnonAuthors here because everybody's getting the same email.\n+\t\t * This is okay, but if isRevealIDsToRoles is enabled, it would be better to send two separate emails (one revealed, one anonymous) \n+\t\t * so that the instructor can't match the message up with the UI to discover the anonymous mapping for the author\n+\t\t */\n+\t\treturn ServerConfigurationService.getBoolean(\"msgcntr.forums.anonymous.enable\", true) && topic.getPostAnonymous();","path":"msgcntr/messageforums-app/src/java/org/sakaiproject/tool/messageforums/ForumsEmailService.java","position":61,"original_position":61,"commit_id":"012157cb780d85577985313a18d30382e5a3e8de","original_commit_id":"012157cb780d85577985313a18d30382e5a3e8de","user":{"login":"bjones86","id":10403943,"avatar_url":"https://avatars.githubusercontent.com/u/10403943?v=3","gravatar_id":"","url":"https://api.github.com/users/bjones86","html_url":"https://github.com/bjones86","followers_url":"https://api.github.com/users/bjones86/followers","following_url":"https://api.github.com/users/bjones86/following{/other_user}","gists_url":"https://api.github.com/users/bjones86/gists{/gist_id}","starred_url":"https://api.github.com/users/bjones86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bjones86/subscriptions","organizations_url":"https://api.github.com/users/bjones86/orgs","repos_url":"https://api.github.com/users/bjones86/repos","events_url":"https://api.github.com/users/bjones86/events{/privacy}","received_events_url":"https://api.github.com/users/bjones86/received_events","type":"User","site_admin":false},"body":"I would put this sakai.property name and default into a static final variable on the class, or in a common place for use. Same with the other place(s) you're checking this property.","created_at":"2015-11-04T15:46:27Z","updated_at":"2015-11-04T15:46:27Z","html_url":"https://github.com/sakaiproject/sakai/pull/1249#discussion_r43896231","pull_request_url":"https://api.github.com/repos/sakaiproject/sakai/pulls/1249","_links":{"self":{"href":"https://api.github.com/repos/sakaiproject/sakai/pulls/comments/43896231"},"html":{"href":"https://github.com/sakaiproject/sakai/pull/1249#discussion_r43896231"},"pull_request":{"href":"https://api.github.com/repos/sakaiproject/sakai/pulls/1249"}}},"pull_request":{"url":"https://api.github.com/repos/sakaiproject/sakai/pulls/1249","id":49627348,"html_url":"https://github.com/sakaiproject/sakai/pull/1249","diff_url":"https://github.com/sakaiproject/sakai/pull/1249.diff","patch_url":"https://github.com/sakaiproject/sakai/pull/1249.patch","issue_url":"https://api.github.com/repos/sakaiproject/sakai/issues/1249","number":1249,"state":"open","locked":false,"title":"SAK-25099 - Anonymous topics in forums","user":{"login":"bbailla2","id":10620229,"avatar_url":"https://avatars.githubusercontent.com/u/10620229?v=3","gravatar_id":"","url":"https://api.github.com/users/bbailla2","html_url":"https://github.com/bbailla2","followers_url":"https://api.github.com/users/bbailla2/followers","following_url":"https://api.github.com/users/bbailla2/following{/other_user}","gists_url":"https://api.github.com/users/bbailla2/gists{/gist_id}","starred_url":"https://api.github.com/users/bbailla2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bbailla2/subscriptions","organizations_url":"https://api.github.com/users/bbailla2/orgs","repos_url":"https://api.github.com/users/bbailla2/repos","events_url":"https://api.github.com/users/bbailla2/events{/privacy}","received_events_url":"https://api.github.com/users/bbailla2/received_events","type":"User","site_admin":false},"body":"An anonymous feature for forums.\r\n\r\nOverview:\r\nIn anonymous contexts, users will see 6 uppercase hex characters in place of the authors' names. To help students address each other, and so that instructors may grade in anonymous contexts, each user's anonymous ID will remain consistent within a given site.  When the current user sees their own post, their anonymous ID will be suffixed with \"(me)\".\r\n\r\nThe anonymous setting is set by the instructor at the topic level, and it applies to all conversations within that topic. There are two options, and a permission:\r\nOption 1: Posts are anonymous\r\nOption 2: Reveal identities to roles with the \"Identify Anonymous Authors\" permission below\r\nPermission: Identify Anonymous Authors\r\n\r\nOption 2 is available only if option 1 is checked.\r\nThe new \"Identify Anonymous Authors\" permission allows site maintainers to control who will see the revealed identities, but it only applies if option 2 is checked.","created_at":"2015-11-03T23:20:40Z","updated_at":"2015-11-04T15:46:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6fed5454c5211ee56dded13379cba88cf51d12a4","assignee":{"login":"bjones86","id":10403943,"avatar_url":"https://avatars.githubusercontent.com/u/10403943?v=3","gravatar_id":"","url":"https://api.github.com/users/bjones86","html_url":"https://github.com/bjones86","followers_url":"https://api.github.com/users/bjones86/followers","following_url":"https://api.github.com/users/bjones86/following{/other_user}","gists_url":"https://api.github.com/users/bjones86/gists{/gist_id}","starred_url":"https://api.github.com/users/bjones86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bjones86/subscriptions","organizations_url":"https://api.github.com/users/bjones86/orgs","repos_url":"https://api.github.com/users/bjones86/repos","events_url":"https://api.github.com/users/bjones86/events{/privacy}","received_events_url":"https://api.github.com/users/bjones86/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/sakaiproject/sakai/pulls/1249/commits","review_comments_url":"https://api.github.com/repos/sakaiproject/sakai/pulls/1249/comments","review_comment_url":"https://api.github.com/repos/sakaiproject/sakai/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sakaiproject/sakai/issues/1249/comments","statuses_url":"https://api.github.com/repos/sakaiproject/sakai/statuses/012157cb780d85577985313a18d30382e5a3e8de","head":{"label":"bbailla2:SAK-25099","ref":"SAK-25099","sha":"012157cb780d85577985313a18d30382e5a3e8de","user":{"login":"bbailla2","id":10620229,"avatar_url":"https://avatars.githubusercontent.com/u/10620229?v=3","gravatar_id":"","url":"https://api.github.com/users/bbailla2","html_url":"https://github.com/bbailla2","followers_url":"https://api.github.com/users/bbailla2/followers","following_url":"https://api.github.com/users/bbailla2/following{/other_user}","gists_url":"https://api.github.com/users/bbailla2/gists{/gist_id}","starred_url":"https://api.github.com/users/bbailla2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bbailla2/subscriptions","organizations_url":"https://api.github.com/users/bbailla2/orgs","repos_url":"https://api.github.com/users/bbailla2/repos","events_url":"https://api.github.com/users/bbailla2/events{/privacy}","received_events_url":"https://api.github.com/users/bbailla2/received_events","type":"User","site_admin":false},"repo":{"id":29549815,"name":"sakai","full_name":"bbailla2/sakai","owner":{"login":"bbailla2","id":10620229,"avatar_url":"https://avatars.githubusercontent.com/u/10620229?v=3","gravatar_id":"","url":"https://api.github.com/users/bbailla2","html_url":"https://github.com/bbailla2","followers_url":"https://api.github.com/users/bbailla2/followers","following_url":"https://api.github.com/users/bbailla2/following{/other_user}","gists_url":"https://api.github.com/users/bbailla2/gists{/gist_id}","starred_url":"https://api.github.com/users/bbailla2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bbailla2/subscriptions","organizations_url":"https://api.github.com/users/bbailla2/orgs","repos_url":"https://api.github.com/users/bbailla2/repos","events_url":"https://api.github.com/users/bbailla2/events{/privacy}","received_events_url":"https://api.github.com/users/bbailla2/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bbailla2/sakai","description":"Sakai is a freely available, feature-rich technology solution for learning, teaching, research and collaboration. Sakai is an open source software suite developed by a diverse and global adopter community.","fork":true,"url":"https://api.github.com/repos/bbailla2/sakai","forks_url":"https://api.github.com/repos/bbailla2/sakai/forks","keys_url":"https://api.github.com/repos/bbailla2/sakai/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bbailla2/sakai/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bbailla2/sakai/teams","hooks_url":"https://api.github.com/repos/bbailla2/sakai/hooks","issue_events_url":"https://api.github.com/repos/bbailla2/sakai/issues/events{/number}","events_url":"https://api.github.com/repos/bbailla2/sakai/events","assignees_url":"https://api.github.com/repos/bbailla2/sakai/assignees{/user}","branches_url":"https://api.github.com/repos/bbailla2/sakai/branches{/branch}","tags_url":"https://api.github.com/repos/bbailla2/sakai/tags","blobs_url":"https://api.github.com/repos/bbailla2/sakai/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bbailla2/sakai/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bbailla2/sakai/git/refs{/sha}","trees_url":"https://api.github.com/repos/bbailla2/sakai/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bbailla2/sakai/statuses/{sha}","languages_url":"https://api.github.com/repos/bbailla2/sakai/languages","stargazers_url":"https://api.github.com/repos/bbailla2/sakai/stargazers","contributors_url":"https://api.github.com/repos/bbailla2/sakai/contributors","subscribers_url":"https://api.github.com/repos/bbailla2/sakai/subscribers","subscription_url":"https://api.github.com/repos/bbailla2/sakai/subscription","commits_url":"https://api.github.com/repos/bbailla2/sakai/commits{/sha}","git_commits_url":"https://api.github.com/repos/bbailla2/sakai/git/commits{/sha}","comments_url":"https://api.github.com/repos/bbailla2/sakai/comments{/number}","issue_comment_url":"https://api.github.com/repos/bbailla2/sakai/issues/comments{/number}","contents_url":"https://api.github.com/repos/bbailla2/sakai/contents/{+path}","compare_url":"https://api.github.com/repos/bbailla2/sakai/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bbailla2/sakai/merges","archive_url":"https://api.github.com/repos/bbailla2/sakai/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bbailla2/sakai/downloads","issues_url":"https://api.github.com/repos/bbailla2/sakai/issues{/number}","pulls_url":"https://api.github.com/repos/bbailla2/sakai/pulls{/number}","milestones_url":"https://api.github.com/repos/bbailla2/sakai/milestones{/number}","notifications_url":"https://api.github.com/repos/bbailla2/sakai/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bbailla2/sakai/labels{/name}","releases_url":"https://api.github.com/repos/bbailla2/sakai/releases{/id}","created_at":"2015-01-20T20:13:54Z","updated_at":"2015-05-08T19:50:34Z","pushed_at":"2015-11-04T00:13:46Z","git_url":"git://github.com/bbailla2/sakai.git","ssh_url":"git@github.com:bbailla2/sakai.git","clone_url":"https://github.com/bbailla2/sakai.git","svn_url":"https://github.com/bbailla2/sakai","homepage":"https://www.sakaiproject.org","size":210452,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"sakaiproject:master","ref":"master","sha":"76ada77df374687220d5ec8c35cf05122ed51cde","user":{"login":"sakaiproject","id":314726,"avatar_url":"https://avatars.githubusercontent.com/u/314726?v=3","gravatar_id":"","url":"https://api.github.com/users/sakaiproject","html_url":"https://github.com/sakaiproject","followers_url":"https://api.github.com/users/sakaiproject/followers","following_url":"https://api.github.com/users/sakaiproject/following{/other_user}","gists_url":"https://api.github.com/users/sakaiproject/gists{/gist_id}","starred_url":"https://api.github.com/users/sakaiproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sakaiproject/subscriptions","organizations_url":"https://api.github.com/users/sakaiproject/orgs","repos_url":"https://api.github.com/users/sakaiproject/repos","events_url":"https://api.github.com/users/sakaiproject/events{/privacy}","received_events_url":"https://api.github.com/users/sakaiproject/received_events","type":"Organization","site_admin":false},"repo":{"id":28589709,"name":"sakai","full_name":"sakaiproject/sakai","owner":{"login":"sakaiproject","id":314726,"avatar_url":"https://avatars.githubusercontent.com/u/314726?v=3","gravatar_id":"","url":"https://api.github.com/users/sakaiproject","html_url":"https://github.com/sakaiproject","followers_url":"https://api.github.com/users/sakaiproject/followers","following_url":"https://api.github.com/users/sakaiproject/following{/other_user}","gists_url":"https://api.github.com/users/sakaiproject/gists{/gist_id}","starred_url":"https://api.github.com/users/sakaiproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sakaiproject/subscriptions","organizations_url":"https://api.github.com/users/sakaiproject/orgs","repos_url":"https://api.github.com/users/sakaiproject/repos","events_url":"https://api.github.com/users/sakaiproject/events{/privacy}","received_events_url":"https://api.github.com/users/sakaiproject/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sakaiproject/sakai","description":"Sakai is a freely available, feature-rich technology solution for learning, teaching, research and collaboration. Sakai is an open source software suite developed by a diverse and global adopter community.","fork":false,"url":"https://api.github.com/repos/sakaiproject/sakai","forks_url":"https://api.github.com/repos/sakaiproject/sakai/forks","keys_url":"https://api.github.com/repos/sakaiproject/sakai/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sakaiproject/sakai/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sakaiproject/sakai/teams","hooks_url":"https://api.github.com/repos/sakaiproject/sakai/hooks","issue_events_url":"https://api.github.com/repos/sakaiproject/sakai/issues/events{/number}","events_url":"https://api.github.com/repos/sakaiproject/sakai/events","assignees_url":"https://api.github.com/repos/sakaiproject/sakai/assignees{/user}","branches_url":"https://api.github.com/repos/sakaiproject/sakai/branches{/branch}","tags_url":"https://api.github.com/repos/sakaiproject/sakai/tags","blobs_url":"https://api.github.com/repos/sakaiproject/sakai/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sakaiproject/sakai/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sakaiproject/sakai/git/refs{/sha}","trees_url":"https://api.github.com/repos/sakaiproject/sakai/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sakaiproject/sakai/statuses/{sha}","languages_url":"https://api.github.com/repos/sakaiproject/sakai/languages","stargazers_url":"https://api.github.com/repos/sakaiproject/sakai/stargazers","contributors_url":"https://api.github.com/repos/sakaiproject/sakai/contributors","subscribers_url":"https://api.github.com/repos/sakaiproject/sakai/subscribers","subscription_url":"https://api.github.com/repos/sakaiproject/sakai/subscription","commits_url":"https://api.github.com/repos/sakaiproject/sakai/commits{/sha}","git_commits_url":"https://api.github.com/repos/sakaiproject/sakai/git/commits{/sha}","comments_url":"https://api.github.com/repos/sakaiproject/sakai/comments{/number}","issue_comment_url":"https://api.github.com/repos/sakaiproject/sakai/issues/comments{/number}","contents_url":"https://api.github.com/repos/sakaiproject/sakai/contents/{+path}","compare_url":"https://api.github.com/repos/sakaiproject/sakai/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sakaiproject/sakai/merges","archive_url":"https://api.github.com/repos/sakaiproject/sakai/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sakaiproject/sakai/downloads","issues_url":"https://api.github.com/repos/sakaiproject/sakai/issues{/number}","pulls_url":"https://api.github.com/repos/sakaiproject/sakai/pulls{/number}","milestones_url":"https://api.github.com/repos/sakaiproject/sakai/milestones{/number}","notifications_url":"https://api.github.com/repos/sakaiproject/sakai/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sakaiproject/sakai/labels{/name}","releases_url":"https://api.github.com/repos/sakaiproject/sakai/releases{/id}","created_at":"2014-12-29T11:14:17Z","updated_at":"2015-11-04T06:09:54Z","pushed_at":"2015-11-04T15:29:25Z","git_url":"git://github.com/sakaiproject/sakai.git","ssh_url":"git@github.com:sakaiproject/sakai.git","clone_url":"https://github.com/sakaiproject/sakai.git","svn_url":"https://github.com/sakaiproject/sakai","homepage":"https://www.sakaiproject.org","size":275343,"stargazers_count":91,"watchers_count":91,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":156,"mirror_url":null,"open_issues_count":37,"forks":156,"open_issues":37,"watchers":91,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sakaiproject/sakai/pulls/1249"},"html":{"href":"https://github.com/sakaiproject/sakai/pull/1249"},"issue":{"href":"https://api.github.com/repos/sakaiproject/sakai/issues/1249"},"comments":{"href":"https://api.github.com/repos/sakaiproject/sakai/issues/1249/comments"},"review_comments":{"href":"https://api.github.com/repos/sakaiproject/sakai/pulls/1249/comments"},"review_comment":{"href":"https://api.github.com/repos/sakaiproject/sakai/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sakaiproject/sakai/pulls/1249/commits"},"statuses":{"href":"https://api.github.com/repos/sakaiproject/sakai/statuses/012157cb780d85577985313a18d30382e5a3e8de"}}}}