{"action":"created","comment":{"url":"https://api.github.com/repos/CachetHQ/Cachet/pulls/comments/78531416","id":78531416,"diff_hunk":"@@ -66,14 +74,16 @@\n      * @param string                                 $name\n      * @param int                                    $order\n      * @param int                                    $collapsed\n+     * @param into                                   $visible","path":"app/Bus/Commands/ComponentGroup/UpdateComponentGroupCommand.php","position":30,"original_position":30,"commit_id":"4dda230b359d4d889f618686de7a444018d6ba01","original_commit_id":"4dda230b359d4d889f618686de7a444018d6ba01","user":{"login":"ConnorVG","id":3260091,"avatar_url":"https://avatars.githubusercontent.com/u/3260091?v=3","gravatar_id":"","url":"https://api.github.com/users/ConnorVG","html_url":"https://github.com/ConnorVG","followers_url":"https://api.github.com/users/ConnorVG/followers","following_url":"https://api.github.com/users/ConnorVG/following{/other_user}","gists_url":"https://api.github.com/users/ConnorVG/gists{/gist_id}","starred_url":"https://api.github.com/users/ConnorVG/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ConnorVG/subscriptions","organizations_url":"https://api.github.com/users/ConnorVG/orgs","repos_url":"https://api.github.com/users/ConnorVG/repos","events_url":"https://api.github.com/users/ConnorVG/events{/privacy}","received_events_url":"https://api.github.com/users/ConnorVG/received_events","type":"User","site_admin":false},"body":"Typo","created_at":"2016-09-13T10:10:46Z","updated_at":"2016-09-13T10:10:46Z","html_url":"https://github.com/CachetHQ/Cachet/pull/2027#discussion_r78531416","pull_request_url":"https://api.github.com/repos/CachetHQ/Cachet/pulls/2027","_links":{"self":{"href":"https://api.github.com/repos/CachetHQ/Cachet/pulls/comments/78531416"},"html":{"href":"https://github.com/CachetHQ/Cachet/pull/2027#discussion_r78531416"},"pull_request":{"href":"https://api.github.com/repos/CachetHQ/Cachet/pulls/2027"}}},"pull_request":{"url":"https://api.github.com/repos/CachetHQ/Cachet/pulls/2027","id":79967265,"html_url":"https://github.com/CachetHQ/Cachet/pull/2027","diff_url":"https://github.com/CachetHQ/Cachet/pull/2027.diff","patch_url":"https://github.com/CachetHQ/Cachet/pull/2027.patch","issue_url":"https://api.github.com/repos/CachetHQ/Cachet/issues/2027","number":2027,"state":"open","locked":false,"title":"Add visibility to component groups","user":{"login":"yoyosan","id":32405,"avatar_url":"https://avatars.githubusercontent.com/u/32405?v=3","gravatar_id":"","url":"https://api.github.com/users/yoyosan","html_url":"https://github.com/yoyosan","followers_url":"https://api.github.com/users/yoyosan/followers","following_url":"https://api.github.com/users/yoyosan/following{/other_user}","gists_url":"https://api.github.com/users/yoyosan/gists{/gist_id}","starred_url":"https://api.github.com/users/yoyosan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yoyosan/subscriptions","organizations_url":"https://api.github.com/users/yoyosan/orgs","repos_url":"https://api.github.com/users/yoyosan/repos","events_url":"https://api.github.com/users/yoyosan/events{/privacy}","received_events_url":"https://api.github.com/users/yoyosan/received_events","type":"User","site_admin":false},"body":"Hello.\r\n\r\nThe work on #1897 and #1892 is pretty much done so it's safe to say this PR is ready for code review.\r\n\r\nThe two tickets require that a component group have visibility for the public vs logged in users. Here's what I've done:\r\n- added two new columns to the `component_groups` table(check the last two migrations):\r\n  - `visible`, which specifies whether the component group can be visible to different kinds of users:\r\n    - 0, viewable by public/guests\r\n    - 1, only visible to logged in users,\r\n    - 2, hidden to logged in users but visible to its creator. **Default value**\r\n  - `created_by`, which contains the user id of the component group creator\r\n- updated all related Command and CommandHandler classes and their tests\r\n- added functional tests for the StatusPageController and the DashboardController classes\r\n- added a couple of new methods to the `AbstractTestCase` class that take care of:\r\n  - setting up the project configuration before running the functional tests in order to avoid the setup installation page\r\n  - a sign in helper method that can be used to easily sign in users as needed for future tests\r\n\r\nAlso, I'd like to make have some discussions with you,on Slack/other IM if possible,  regarding the following:\r\n- Should I move functional tests into their own directory e.g. `tests/functional`, integration tests into `tests/integration`, unit tests `into tests/unit`?\r\n- Is it ok with you if I remove the `beUser` methods from the `AbstractApiTestCase` and replace its usage with the newly added method, `signIn`, in the `AbstractTestCase` class?\r\n- The `StatusPageControllerTest` and `DashboardControllerTest` are a bit similar. I would move these methods in a trait which contains ComponentGroup creation methods?!\r\n\r\nThanks for reviewing this PR.\r\n","created_at":"2016-08-03T19:49:27Z","updated_at":"2016-09-13T10:10:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"12a5e60592eaca42e21d2ca55bfcb1ee13b776de","assignee":{"login":"jbrooksuk","id":246103,"avatar_url":"https://avatars.githubusercontent.com/u/246103?v=3","gravatar_id":"","url":"https://api.github.com/users/jbrooksuk","html_url":"https://github.com/jbrooksuk","followers_url":"https://api.github.com/users/jbrooksuk/followers","following_url":"https://api.github.com/users/jbrooksuk/following{/other_user}","gists_url":"https://api.github.com/users/jbrooksuk/gists{/gist_id}","starred_url":"https://api.github.com/users/jbrooksuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbrooksuk/subscriptions","organizations_url":"https://api.github.com/users/jbrooksuk/orgs","repos_url":"https://api.github.com/users/jbrooksuk/repos","events_url":"https://api.github.com/users/jbrooksuk/events{/privacy}","received_events_url":"https://api.github.com/users/jbrooksuk/received_events","type":"User","site_admin":false},"assignees":[{"login":"jbrooksuk","id":246103,"avatar_url":"https://avatars.githubusercontent.com/u/246103?v=3","gravatar_id":"","url":"https://api.github.com/users/jbrooksuk","html_url":"https://github.com/jbrooksuk","followers_url":"https://api.github.com/users/jbrooksuk/followers","following_url":"https://api.github.com/users/jbrooksuk/following{/other_user}","gists_url":"https://api.github.com/users/jbrooksuk/gists{/gist_id}","starred_url":"https://api.github.com/users/jbrooksuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbrooksuk/subscriptions","organizations_url":"https://api.github.com/users/jbrooksuk/orgs","repos_url":"https://api.github.com/users/jbrooksuk/repos","events_url":"https://api.github.com/users/jbrooksuk/events{/privacy}","received_events_url":"https://api.github.com/users/jbrooksuk/received_events","type":"User","site_admin":false},{"login":"GrahamCampbell","id":2829600,"avatar_url":"https://avatars.githubusercontent.com/u/2829600?v=3","gravatar_id":"","url":"https://api.github.com/users/GrahamCampbell","html_url":"https://github.com/GrahamCampbell","followers_url":"https://api.github.com/users/GrahamCampbell/followers","following_url":"https://api.github.com/users/GrahamCampbell/following{/other_user}","gists_url":"https://api.github.com/users/GrahamCampbell/gists{/gist_id}","starred_url":"https://api.github.com/users/GrahamCampbell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GrahamCampbell/subscriptions","organizations_url":"https://api.github.com/users/GrahamCampbell/orgs","repos_url":"https://api.github.com/users/GrahamCampbell/repos","events_url":"https://api.github.com/users/GrahamCampbell/events{/privacy}","received_events_url":"https://api.github.com/users/GrahamCampbell/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/CachetHQ/Cachet/milestones/25","html_url":"https://github.com/CachetHQ/Cachet/milestones/V2.4.0","labels_url":"https://api.github.com/repos/CachetHQ/Cachet/milestones/25/labels","id":1821037,"number":25,"title":"V2.4.0","description":"","creator":{"login":"GrahamCampbell","id":2829600,"avatar_url":"https://avatars.githubusercontent.com/u/2829600?v=3","gravatar_id":"","url":"https://api.github.com/users/GrahamCampbell","html_url":"https://github.com/GrahamCampbell","followers_url":"https://api.github.com/users/GrahamCampbell/followers","following_url":"https://api.github.com/users/GrahamCampbell/following{/other_user}","gists_url":"https://api.github.com/users/GrahamCampbell/gists{/gist_id}","starred_url":"https://api.github.com/users/GrahamCampbell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GrahamCampbell/subscriptions","organizations_url":"https://api.github.com/users/GrahamCampbell/orgs","repos_url":"https://api.github.com/users/GrahamCampbell/repos","events_url":"https://api.github.com/users/GrahamCampbell/events{/privacy}","received_events_url":"https://api.github.com/users/GrahamCampbell/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":72,"state":"open","created_at":"2016-06-10T23:06:42Z","updated_at":"2016-09-06T21:48:37Z","due_on":"2016-08-20T23:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/CachetHQ/Cachet/pulls/2027/commits","review_comments_url":"https://api.github.com/repos/CachetHQ/Cachet/pulls/2027/comments","review_comment_url":"https://api.github.com/repos/CachetHQ/Cachet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CachetHQ/Cachet/issues/2027/comments","statuses_url":"https://api.github.com/repos/CachetHQ/Cachet/statuses/4dda230b359d4d889f618686de7a444018d6ba01","head":{"label":"yoyosan:add-visibility-to-component-groups","ref":"add-visibility-to-component-groups","sha":"4dda230b359d4d889f618686de7a444018d6ba01","user":{"login":"yoyosan","id":32405,"avatar_url":"https://avatars.githubusercontent.com/u/32405?v=3","gravatar_id":"","url":"https://api.github.com/users/yoyosan","html_url":"https://github.com/yoyosan","followers_url":"https://api.github.com/users/yoyosan/followers","following_url":"https://api.github.com/users/yoyosan/following{/other_user}","gists_url":"https://api.github.com/users/yoyosan/gists{/gist_id}","starred_url":"https://api.github.com/users/yoyosan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yoyosan/subscriptions","organizations_url":"https://api.github.com/users/yoyosan/orgs","repos_url":"https://api.github.com/users/yoyosan/repos","events_url":"https://api.github.com/users/yoyosan/events{/privacy}","received_events_url":"https://api.github.com/users/yoyosan/received_events","type":"User","site_admin":false},"repo":{"id":64578346,"name":"Cachet","full_name":"yoyosan/Cachet","owner":{"login":"yoyosan","id":32405,"avatar_url":"https://avatars.githubusercontent.com/u/32405?v=3","gravatar_id":"","url":"https://api.github.com/users/yoyosan","html_url":"https://github.com/yoyosan","followers_url":"https://api.github.com/users/yoyosan/followers","following_url":"https://api.github.com/users/yoyosan/following{/other_user}","gists_url":"https://api.github.com/users/yoyosan/gists{/gist_id}","starred_url":"https://api.github.com/users/yoyosan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yoyosan/subscriptions","organizations_url":"https://api.github.com/users/yoyosan/orgs","repos_url":"https://api.github.com/users/yoyosan/repos","events_url":"https://api.github.com/users/yoyosan/events{/privacy}","received_events_url":"https://api.github.com/users/yoyosan/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/yoyosan/Cachet","description":"An open source status page system for everyone.","fork":true,"url":"https://api.github.com/repos/yoyosan/Cachet","forks_url":"https://api.github.com/repos/yoyosan/Cachet/forks","keys_url":"https://api.github.com/repos/yoyosan/Cachet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yoyosan/Cachet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yoyosan/Cachet/teams","hooks_url":"https://api.github.com/repos/yoyosan/Cachet/hooks","issue_events_url":"https://api.github.com/repos/yoyosan/Cachet/issues/events{/number}","events_url":"https://api.github.com/repos/yoyosan/Cachet/events","assignees_url":"https://api.github.com/repos/yoyosan/Cachet/assignees{/user}","branches_url":"https://api.github.com/repos/yoyosan/Cachet/branches{/branch}","tags_url":"https://api.github.com/repos/yoyosan/Cachet/tags","blobs_url":"https://api.github.com/repos/yoyosan/Cachet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yoyosan/Cachet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yoyosan/Cachet/git/refs{/sha}","trees_url":"https://api.github.com/repos/yoyosan/Cachet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yoyosan/Cachet/statuses/{sha}","languages_url":"https://api.github.com/repos/yoyosan/Cachet/languages","stargazers_url":"https://api.github.com/repos/yoyosan/Cachet/stargazers","contributors_url":"https://api.github.com/repos/yoyosan/Cachet/contributors","subscribers_url":"https://api.github.com/repos/yoyosan/Cachet/subscribers","subscription_url":"https://api.github.com/repos/yoyosan/Cachet/subscription","commits_url":"https://api.github.com/repos/yoyosan/Cachet/commits{/sha}","git_commits_url":"https://api.github.com/repos/yoyosan/Cachet/git/commits{/sha}","comments_url":"https://api.github.com/repos/yoyosan/Cachet/comments{/number}","issue_comment_url":"https://api.github.com/repos/yoyosan/Cachet/issues/comments{/number}","contents_url":"https://api.github.com/repos/yoyosan/Cachet/contents/{+path}","compare_url":"https://api.github.com/repos/yoyosan/Cachet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yoyosan/Cachet/merges","archive_url":"https://api.github.com/repos/yoyosan/Cachet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yoyosan/Cachet/downloads","issues_url":"https://api.github.com/repos/yoyosan/Cachet/issues{/number}","pulls_url":"https://api.github.com/repos/yoyosan/Cachet/pulls{/number}","milestones_url":"https://api.github.com/repos/yoyosan/Cachet/milestones{/number}","notifications_url":"https://api.github.com/repos/yoyosan/Cachet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yoyosan/Cachet/labels{/name}","releases_url":"https://api.github.com/repos/yoyosan/Cachet/releases{/id}","deployments_url":"https://api.github.com/repos/yoyosan/Cachet/deployments","created_at":"2016-07-31T05:24:10Z","updated_at":"2016-07-31T05:24:12Z","pushed_at":"2016-09-13T09:18:09Z","git_url":"git://github.com/yoyosan/Cachet.git","ssh_url":"git@github.com:yoyosan/Cachet.git","clone_url":"https://github.com/yoyosan/Cachet.git","svn_url":"https://github.com/yoyosan/Cachet","homepage":"https://cachethq.io","size":18746,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"2.4"}},"base":{"label":"CachetHQ:2.4","ref":"2.4","sha":"904cf6a7db4e3d03947ea6e7d2d585c6a5ad0f6b","user":{"login":"CachetHQ","id":9951502,"avatar_url":"https://avatars.githubusercontent.com/u/9951502?v=3","gravatar_id":"","url":"https://api.github.com/users/CachetHQ","html_url":"https://github.com/CachetHQ","followers_url":"https://api.github.com/users/CachetHQ/followers","following_url":"https://api.github.com/users/CachetHQ/following{/other_user}","gists_url":"https://api.github.com/users/CachetHQ/gists{/gist_id}","starred_url":"https://api.github.com/users/CachetHQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CachetHQ/subscriptions","organizations_url":"https://api.github.com/users/CachetHQ/orgs","repos_url":"https://api.github.com/users/CachetHQ/repos","events_url":"https://api.github.com/users/CachetHQ/events{/privacy}","received_events_url":"https://api.github.com/users/CachetHQ/received_events","type":"Organization","site_admin":false},"repo":{"id":26730195,"name":"Cachet","full_name":"CachetHQ/Cachet","owner":{"login":"CachetHQ","id":9951502,"avatar_url":"https://avatars.githubusercontent.com/u/9951502?v=3","gravatar_id":"","url":"https://api.github.com/users/CachetHQ","html_url":"https://github.com/CachetHQ","followers_url":"https://api.github.com/users/CachetHQ/followers","following_url":"https://api.github.com/users/CachetHQ/following{/other_user}","gists_url":"https://api.github.com/users/CachetHQ/gists{/gist_id}","starred_url":"https://api.github.com/users/CachetHQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CachetHQ/subscriptions","organizations_url":"https://api.github.com/users/CachetHQ/orgs","repos_url":"https://api.github.com/users/CachetHQ/repos","events_url":"https://api.github.com/users/CachetHQ/events{/privacy}","received_events_url":"https://api.github.com/users/CachetHQ/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CachetHQ/Cachet","description":"An open source status page system for everyone.","fork":false,"url":"https://api.github.com/repos/CachetHQ/Cachet","forks_url":"https://api.github.com/repos/CachetHQ/Cachet/forks","keys_url":"https://api.github.com/repos/CachetHQ/Cachet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CachetHQ/Cachet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CachetHQ/Cachet/teams","hooks_url":"https://api.github.com/repos/CachetHQ/Cachet/hooks","issue_events_url":"https://api.github.com/repos/CachetHQ/Cachet/issues/events{/number}","events_url":"https://api.github.com/repos/CachetHQ/Cachet/events","assignees_url":"https://api.github.com/repos/CachetHQ/Cachet/assignees{/user}","branches_url":"https://api.github.com/repos/CachetHQ/Cachet/branches{/branch}","tags_url":"https://api.github.com/repos/CachetHQ/Cachet/tags","blobs_url":"https://api.github.com/repos/CachetHQ/Cachet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CachetHQ/Cachet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CachetHQ/Cachet/git/refs{/sha}","trees_url":"https://api.github.com/repos/CachetHQ/Cachet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CachetHQ/Cachet/statuses/{sha}","languages_url":"https://api.github.com/repos/CachetHQ/Cachet/languages","stargazers_url":"https://api.github.com/repos/CachetHQ/Cachet/stargazers","contributors_url":"https://api.github.com/repos/CachetHQ/Cachet/contributors","subscribers_url":"https://api.github.com/repos/CachetHQ/Cachet/subscribers","subscription_url":"https://api.github.com/repos/CachetHQ/Cachet/subscription","commits_url":"https://api.github.com/repos/CachetHQ/Cachet/commits{/sha}","git_commits_url":"https://api.github.com/repos/CachetHQ/Cachet/git/commits{/sha}","comments_url":"https://api.github.com/repos/CachetHQ/Cachet/comments{/number}","issue_comment_url":"https://api.github.com/repos/CachetHQ/Cachet/issues/comments{/number}","contents_url":"https://api.github.com/repos/CachetHQ/Cachet/contents/{+path}","compare_url":"https://api.github.com/repos/CachetHQ/Cachet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CachetHQ/Cachet/merges","archive_url":"https://api.github.com/repos/CachetHQ/Cachet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CachetHQ/Cachet/downloads","issues_url":"https://api.github.com/repos/CachetHQ/Cachet/issues{/number}","pulls_url":"https://api.github.com/repos/CachetHQ/Cachet/pulls{/number}","milestones_url":"https://api.github.com/repos/CachetHQ/Cachet/milestones{/number}","notifications_url":"https://api.github.com/repos/CachetHQ/Cachet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CachetHQ/Cachet/labels{/name}","releases_url":"https://api.github.com/repos/CachetHQ/Cachet/releases{/id}","deployments_url":"https://api.github.com/repos/CachetHQ/Cachet/deployments","created_at":"2014-11-16T22:23:11Z","updated_at":"2016-09-13T08:22:22Z","pushed_at":"2016-09-13T09:18:10Z","git_url":"git://github.com/CachetHQ/Cachet.git","ssh_url":"git@github.com:CachetHQ/Cachet.git","clone_url":"https://github.com/CachetHQ/Cachet.git","svn_url":"https://github.com/CachetHQ/Cachet","homepage":"https://cachethq.io","size":21137,"stargazers_count":4883,"watchers_count":4883,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":542,"mirror_url":null,"open_issues_count":71,"forks":542,"open_issues":71,"watchers":4883,"default_branch":"2.4"}},"_links":{"self":{"href":"https://api.github.com/repos/CachetHQ/Cachet/pulls/2027"},"html":{"href":"https://github.com/CachetHQ/Cachet/pull/2027"},"issue":{"href":"https://api.github.com/repos/CachetHQ/Cachet/issues/2027"},"comments":{"href":"https://api.github.com/repos/CachetHQ/Cachet/issues/2027/comments"},"review_comments":{"href":"https://api.github.com/repos/CachetHQ/Cachet/pulls/2027/comments"},"review_comment":{"href":"https://api.github.com/repos/CachetHQ/Cachet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CachetHQ/Cachet/pulls/2027/commits"},"statuses":{"href":"https://api.github.com/repos/CachetHQ/Cachet/statuses/4dda230b359d4d889f618686de7a444018d6ba01"}}}}
{"actor":{"display_login":"ConnorVG"}}