{"action":"created","comment":{"url":"https://api.github.com/repos/phenotips/phenotips/pulls/comments/22914209","id":22914209,"diff_hunk":"@@ -94,12 +94,36 @@\n   #set ($collaborators = $request.getParameterValues('collaborator'))\n   #set ($accessLevels = $request.getParameterValues('accessLevel'))\n   #set ($owner = \"$!{request.get('owner')}\")\n+  #if (\"$!{owner}\" != \"\")\n+    ##check the validity of the new owner\n+    #set($ownerDoc = $services.model.resolveDocument($owner))\n+    #set($ownerDocRef = $services.model.resolveDocument(\"$owner\"))\n+    #if ($xwiki.getDocument($ownerDocRef).getObject(\"PhenoTips.PhenoTipsGroupClass\"))\n+      #set($validGroup = true)\n+      ##check to see if user has permission to transfer ownership\n+      #set ($adminGroup = $owner + \" Administrators\")\n+      #if (!$xwiki.getUser().isUserInGroup($owner) &amp;&amp; !$xwiki.getUser().isUserInGroup($adminGroup) &amp;&amp; !$hasAdmin)\n+        #set ($cannotTransfer = true)\n+      #end\n+    #elseif ($services.query.xwql(\"from doc.object(XWiki.XWikiUsers) as user where user.name = :ownerName\").bindValue(\"ownerName\", \"$owner\").execute() != \"[]\")\n+      #set($validUser = true)\n+    #end\n+    #if ( !($validUser || $validGroup))\n+      #set($invalidOwner = true)\n+    #end\n+  #end\n   #if (!$patient)\n     #set ($discard = $response.setStatus(400))## no patient : bad request\n     Could not find patient with identifier \"$!{request.patient}\", cannot complete the update action.\n-  #elseif($collaborators.size() != $accessLevels.size())\n+  #elseif ($collaborators.size() != $accessLevels.size())\n     #set ($discard = $response.setStatus(400))## mismatched user/level parameters, bad request\n     The request is malformed: could not match each collaborator with exactly one level of access.\n+  #elseif ($invalidOwner)\n+    #set ($discard = $response.setStatus(400))## No user found to transfer ownership to\n+    Could not find the user or group: \"$!owner\".","path":"components/patient-access-rules/ui/src/main/resources/PhenoTips/PatientAccessRightsManagement.xml","position":31,"original_position":31,"commit_id":"3aa3c7766374fe75df8a6c58a896d76118dd06b5","original_commit_id":"3aa3c7766374fe75df8a6c58a896d76118dd06b5","user":{"login":"sdumitriu","id":88663,"avatar_url":"https://avatars.githubusercontent.com/u/88663?v=3","gravatar_id":"","url":"https://api.github.com/users/sdumitriu","html_url":"https://github.com/sdumitriu","followers_url":"https://api.github.com/users/sdumitriu/followers","following_url":"https://api.github.com/users/sdumitriu/following{/other_user}","gists_url":"https://api.github.com/users/sdumitriu/gists{/gist_id}","starred_url":"https://api.github.com/users/sdumitriu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sdumitriu/subscriptions","organizations_url":"https://api.github.com/users/sdumitriu/orgs","repos_url":"https://api.github.com/users/sdumitriu/repos","events_url":"https://api.github.com/users/sdumitriu/events{/privacy}","received_events_url":"https://api.github.com/users/sdumitriu/received_events","type":"User","site_admin":false},"body":"Since you're working on translations, you could have already used some here.","created_at":"2015-01-14T03:03:05Z","updated_at":"2015-01-14T03:03:05Z","html_url":"https://github.com/phenotips/phenotips/pull/1347#discussion_r22914209","pull_request_url":"https://api.github.com/repos/phenotips/phenotips/pulls/1347","_links":{"self":{"href":"https://api.github.com/repos/phenotips/phenotips/pulls/comments/22914209"},"html":{"href":"https://github.com/phenotips/phenotips/pull/1347#discussion_r22914209"},"pull_request":{"href":"https://api.github.com/repos/phenotips/phenotips/pulls/1347"}}},"pull_request":{"url":"https://api.github.com/repos/phenotips/phenotips/pulls/1347","id":26896761,"html_url":"https://github.com/phenotips/phenotips/pull/1347","diff_url":"https://github.com/phenotips/phenotips/pull/1347.diff","patch_url":"https://github.com/phenotips/phenotips/pull/1347.patch","issue_url":"https://api.github.com/repos/phenotips/phenotips/issues/1347","number":1347,"state":"open","locked":false,"title":"Issue-#1309: Users can transfer ownership to non-existing users and grou...","user":{"login":"mjshepherd","id":9931605,"avatar_url":"https://avatars.githubusercontent.com/u/9931605?v=3","gravatar_id":"","url":"https://api.github.com/users/mjshepherd","html_url":"https://github.com/mjshepherd","followers_url":"https://api.github.com/users/mjshepherd/followers","following_url":"https://api.github.com/users/mjshepherd/following{/other_user}","gists_url":"https://api.github.com/users/mjshepherd/gists{/gist_id}","starred_url":"https://api.github.com/users/mjshepherd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjshepherd/subscriptions","organizations_url":"https://api.github.com/users/mjshepherd/orgs","repos_url":"https://api.github.com/users/mjshepherd/repos","events_url":"https://api.github.com/users/mjshepherd/events{/privacy}","received_events_url":"https://api.github.com/users/mjshepherd/received_events","type":"User","site_admin":false},"body":"...ps they are not members of","created_at":"2015-01-06T15:50:50Z","updated_at":"2015-01-14T03:03:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9884c07af4d0f5458bb15b4913878bb03d85d92e","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/phenotips/phenotips/pulls/1347/commits","review_comments_url":"https://api.github.com/repos/phenotips/phenotips/pulls/1347/comments","review_comment_url":"https://api.github.com/repos/phenotips/phenotips/pulls/comments/{number}","comments_url":"https://api.github.com/repos/phenotips/phenotips/issues/1347/comments","statuses_url":"https://api.github.com/repos/phenotips/phenotips/statuses/3aa3c7766374fe75df8a6c58a896d76118dd06b5","head":{"label":"mjshepherd:Issue-#1309","ref":"Issue-#1309","sha":"3aa3c7766374fe75df8a6c58a896d76118dd06b5","user":{"login":"mjshepherd","id":9931605,"avatar_url":"https://avatars.githubusercontent.com/u/9931605?v=3","gravatar_id":"","url":"https://api.github.com/users/mjshepherd","html_url":"https://github.com/mjshepherd","followers_url":"https://api.github.com/users/mjshepherd/followers","following_url":"https://api.github.com/users/mjshepherd/following{/other_user}","gists_url":"https://api.github.com/users/mjshepherd/gists{/gist_id}","starred_url":"https://api.github.com/users/mjshepherd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjshepherd/subscriptions","organizations_url":"https://api.github.com/users/mjshepherd/orgs","repos_url":"https://api.github.com/users/mjshepherd/repos","events_url":"https://api.github.com/users/mjshepherd/events{/privacy}","received_events_url":"https://api.github.com/users/mjshepherd/received_events","type":"User","site_admin":false},"repo":{"id":27092924,"name":"phenotips","full_name":"mjshepherd/phenotips","owner":{"login":"mjshepherd","id":9931605,"avatar_url":"https://avatars.githubusercontent.com/u/9931605?v=3","gravatar_id":"","url":"https://api.github.com/users/mjshepherd","html_url":"https://github.com/mjshepherd","followers_url":"https://api.github.com/users/mjshepherd/followers","following_url":"https://api.github.com/users/mjshepherd/following{/other_user}","gists_url":"https://api.github.com/users/mjshepherd/gists{/gist_id}","starred_url":"https://api.github.com/users/mjshepherd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjshepherd/subscriptions","organizations_url":"https://api.github.com/users/mjshepherd/orgs","repos_url":"https://api.github.com/users/mjshepherd/repos","events_url":"https://api.github.com/users/mjshepherd/events{/privacy}","received_events_url":"https://api.github.com/users/mjshepherd/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mjshepherd/phenotips","description":"PhenoTips provides an easy-to-use Web interface and standardized database back-end for collecting clinical findings observed in patients with possible genetic disorders.","fork":true,"url":"https://api.github.com/repos/mjshepherd/phenotips","forks_url":"https://api.github.com/repos/mjshepherd/phenotips/forks","keys_url":"https://api.github.com/repos/mjshepherd/phenotips/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mjshepherd/phenotips/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mjshepherd/phenotips/teams","hooks_url":"https://api.github.com/repos/mjshepherd/phenotips/hooks","issue_events_url":"https://api.github.com/repos/mjshepherd/phenotips/issues/events{/number}","events_url":"https://api.github.com/repos/mjshepherd/phenotips/events","assignees_url":"https://api.github.com/repos/mjshepherd/phenotips/assignees{/user}","branches_url":"https://api.github.com/repos/mjshepherd/phenotips/branches{/branch}","tags_url":"https://api.github.com/repos/mjshepherd/phenotips/tags","blobs_url":"https://api.github.com/repos/mjshepherd/phenotips/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mjshepherd/phenotips/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mjshepherd/phenotips/git/refs{/sha}","trees_url":"https://api.github.com/repos/mjshepherd/phenotips/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mjshepherd/phenotips/statuses/{sha}","languages_url":"https://api.github.com/repos/mjshepherd/phenotips/languages","stargazers_url":"https://api.github.com/repos/mjshepherd/phenotips/stargazers","contributors_url":"https://api.github.com/repos/mjshepherd/phenotips/contributors","subscribers_url":"https://api.github.com/repos/mjshepherd/phenotips/subscribers","subscription_url":"https://api.github.com/repos/mjshepherd/phenotips/subscription","commits_url":"https://api.github.com/repos/mjshepherd/phenotips/commits{/sha}","git_commits_url":"https://api.github.com/repos/mjshepherd/phenotips/git/commits{/sha}","comments_url":"https://api.github.com/repos/mjshepherd/phenotips/comments{/number}","issue_comment_url":"https://api.github.com/repos/mjshepherd/phenotips/issues/comments/{number}","contents_url":"https://api.github.com/repos/mjshepherd/phenotips/contents/{+path}","compare_url":"https://api.github.com/repos/mjshepherd/phenotips/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mjshepherd/phenotips/merges","archive_url":"https://api.github.com/repos/mjshepherd/phenotips/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mjshepherd/phenotips/downloads","issues_url":"https://api.github.com/repos/mjshepherd/phenotips/issues{/number}","pulls_url":"https://api.github.com/repos/mjshepherd/phenotips/pulls{/number}","milestones_url":"https://api.github.com/repos/mjshepherd/phenotips/milestones{/number}","notifications_url":"https://api.github.com/repos/mjshepherd/phenotips/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mjshepherd/phenotips/labels{/name}","releases_url":"https://api.github.com/repos/mjshepherd/phenotips/releases{/id}","created_at":"2014-11-24T20:07:43Z","updated_at":"2015-01-09T17:53:50Z","pushed_at":"2015-01-13T19:13:18Z","git_url":"git://github.com/mjshepherd/phenotips.git","ssh_url":"git@github.com:mjshepherd/phenotips.git","clone_url":"https://github.com/mjshepherd/phenotips.git","svn_url":"https://github.com/mjshepherd/phenotips","homepage":"http://phenotips.org/","size":253131,"stargazers_count":0,"watchers_count":0,"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":0,"default_branch":"master"}},"base":{"label":"phenotips:master","ref":"master","sha":"6eaab400c79bc6a8fd82e26157783c6f680ec68c","user":{"login":"phenotips","id":4872353,"avatar_url":"https://avatars.githubusercontent.com/u/4872353?v=3","gravatar_id":"","url":"https://api.github.com/users/phenotips","html_url":"https://github.com/phenotips","followers_url":"https://api.github.com/users/phenotips/followers","following_url":"https://api.github.com/users/phenotips/following{/other_user}","gists_url":"https://api.github.com/users/phenotips/gists{/gist_id}","starred_url":"https://api.github.com/users/phenotips/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phenotips/subscriptions","organizations_url":"https://api.github.com/users/phenotips/orgs","repos_url":"https://api.github.com/users/phenotips/repos","events_url":"https://api.github.com/users/phenotips/events{/privacy}","received_events_url":"https://api.github.com/users/phenotips/received_events","type":"Organization","site_admin":false},"repo":{"id":2685841,"name":"phenotips","full_name":"phenotips/phenotips","owner":{"login":"phenotips","id":4872353,"avatar_url":"https://avatars.githubusercontent.com/u/4872353?v=3","gravatar_id":"","url":"https://api.github.com/users/phenotips","html_url":"https://github.com/phenotips","followers_url":"https://api.github.com/users/phenotips/followers","following_url":"https://api.github.com/users/phenotips/following{/other_user}","gists_url":"https://api.github.com/users/phenotips/gists{/gist_id}","starred_url":"https://api.github.com/users/phenotips/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phenotips/subscriptions","organizations_url":"https://api.github.com/users/phenotips/orgs","repos_url":"https://api.github.com/users/phenotips/repos","events_url":"https://api.github.com/users/phenotips/events{/privacy}","received_events_url":"https://api.github.com/users/phenotips/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/phenotips/phenotips","description":"PhenoTips provides an easy-to-use Web interface and standardized database back-end for collecting clinical findings observed in patients with possible genetic disorders.","fork":false,"url":"https://api.github.com/repos/phenotips/phenotips","forks_url":"https://api.github.com/repos/phenotips/phenotips/forks","keys_url":"https://api.github.com/repos/phenotips/phenotips/keys{/key_id}","collaborators_url":"https://api.github.com/repos/phenotips/phenotips/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/phenotips/phenotips/teams","hooks_url":"https://api.github.com/repos/phenotips/phenotips/hooks","issue_events_url":"https://api.github.com/repos/phenotips/phenotips/issues/events{/number}","events_url":"https://api.github.com/repos/phenotips/phenotips/events","assignees_url":"https://api.github.com/repos/phenotips/phenotips/assignees{/user}","branches_url":"https://api.github.com/repos/phenotips/phenotips/branches{/branch}","tags_url":"https://api.github.com/repos/phenotips/phenotips/tags","blobs_url":"https://api.github.com/repos/phenotips/phenotips/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/phenotips/phenotips/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/phenotips/phenotips/git/refs{/sha}","trees_url":"https://api.github.com/repos/phenotips/phenotips/git/trees{/sha}","statuses_url":"https://api.github.com/repos/phenotips/phenotips/statuses/{sha}","languages_url":"https://api.github.com/repos/phenotips/phenotips/languages","stargazers_url":"https://api.github.com/repos/phenotips/phenotips/stargazers","contributors_url":"https://api.github.com/repos/phenotips/phenotips/contributors","subscribers_url":"https://api.github.com/repos/phenotips/phenotips/subscribers","subscription_url":"https://api.github.com/repos/phenotips/phenotips/subscription","commits_url":"https://api.github.com/repos/phenotips/phenotips/commits{/sha}","git_commits_url":"https://api.github.com/repos/phenotips/phenotips/git/commits{/sha}","comments_url":"https://api.github.com/repos/phenotips/phenotips/comments{/number}","issue_comment_url":"https://api.github.com/repos/phenotips/phenotips/issues/comments/{number}","contents_url":"https://api.github.com/repos/phenotips/phenotips/contents/{+path}","compare_url":"https://api.github.com/repos/phenotips/phenotips/compare/{base}...{head}","merges_url":"https://api.github.com/repos/phenotips/phenotips/merges","archive_url":"https://api.github.com/repos/phenotips/phenotips/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/phenotips/phenotips/downloads","issues_url":"https://api.github.com/repos/phenotips/phenotips/issues{/number}","pulls_url":"https://api.github.com/repos/phenotips/phenotips/pulls{/number}","milestones_url":"https://api.github.com/repos/phenotips/phenotips/milestones{/number}","notifications_url":"https://api.github.com/repos/phenotips/phenotips/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/phenotips/phenotips/labels{/name}","releases_url":"https://api.github.com/repos/phenotips/phenotips/releases{/id}","created_at":"2011-11-01T05:55:21Z","updated_at":"2015-01-13T23:57:07Z","pushed_at":"2015-01-13T23:57:07Z","git_url":"git://github.com/phenotips/phenotips.git","ssh_url":"git@github.com:phenotips/phenotips.git","clone_url":"https://github.com/phenotips/phenotips.git","svn_url":"https://github.com/phenotips/phenotips","homepage":"http://phenotips.org/","size":275852,"stargazers_count":29,"watchers_count":29,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":33,"mirror_url":null,"open_issues_count":187,"forks":33,"open_issues":187,"watchers":29,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/phenotips/phenotips/pulls/1347"},"html":{"href":"https://github.com/phenotips/phenotips/pull/1347"},"issue":{"href":"https://api.github.com/repos/phenotips/phenotips/issues/1347"},"comments":{"href":"https://api.github.com/repos/phenotips/phenotips/issues/1347/comments"},"review_comments":{"href":"https://api.github.com/repos/phenotips/phenotips/pulls/1347/comments"},"review_comment":{"href":"https://api.github.com/repos/phenotips/phenotips/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/phenotips/phenotips/pulls/1347/commits"},"statuses":{"href":"https://api.github.com/repos/phenotips/phenotips/statuses/3aa3c7766374fe75df8a6c58a896d76118dd06b5"}}}}