{"action":"created","comment":{"url":"https://api.github.com/repos/WoltLab/WCF/pulls/comments/207681582","pull_request_review_id":143351970,"id":207681582,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNzY4MTU4Mg==","diff_hunk":"@@ -0,0 +1,107 @@\n+<?php\n+namespace wcf\\system\\form\\builder;\n+\n+/**\n+ * Represents a form node that can have child nodes.\n+ * \n+ * @author\tMatthias Schmidt\n+ * @copyright\t2001-2018 WoltLab GmbH\n+ * @license\tGNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>\n+ * @package\tWoltLabSuite\\Core\\System\\Form\\Builder\n+ * @since\t3.2\n+ */\n+interface IFormParentNode extends \\Countable, IFormNode, \\RecursiveIterator {\n+\t/**\n+\t * Appends the given node to this node and returns this node.\n+\t * \n+\t * @param\tIFormChildNode\t\t$child\t\tappended child\n+\t * @return\tstatic\t\t\t\t\tthis node\n+\t * \n+\t * @throws\t\\InvalidArgumentException\t\tif the given child node cannot be appended\n+\t */\n+\tpublic function appendChild(IFormChildNode $child);\n+\t\n+\t/**\n+\t * Appends the given children to this node and returns this node.\n+\t * \n+\t * @param\tIFormChildNode[]\t$children\tappended children\n+\t * @return\tstatic\t\t\t\t\tthis node\n+\t * \n+\t * @throws\t\\InvalidArgumentException\t\tif any of the given child nodes is invalid or cannot be appended\n+\t */\n+\tpublic function appendChildren(array $children);\n+\t\n+\t/**\n+\t * Returns all child nodes of this node.\n+\t * \n+\t * @return\tIFormChildNode[]\tchildren of this node\n+\t */\n+\tpublic function children();\n+\t\n+\t/**\n+\t * Returns `true` if this node (or any of the child nodes) contains the node\n+\t * with the given id and returns `false` otherwise.\n+\t * \n+\t * @param\tstring\t\t$nodeId\t\tid of searched node\n+\t * @return\tbool\n+\t */\n+\tpublic function contains($nodeId);\n+\t\n+\t/**\n+\t * Returns a recursive iterator for this node.\n+\t * \n+\t * Note: A class cannot implement `\\Iterator` and `\\IteratorAggregate` at the same time.","path":"wcfsetup/install/files/lib/system/form/builder/IFormParentNode.class.php","position":53,"original_position":53,"commit_id":"66eed3a1bfb096273895ba17d3a09437df4232f4","original_commit_id":"3afaf8c0f6fde200a0249ac9f1d5162b561a6ea3","user":{"login":"TimWolla","id":209270,"node_id":"MDQ6VXNlcjIwOTI3MA==","avatar_url":"https://avatars0.githubusercontent.com/u/209270?v=4","gravatar_id":"","url":"https://api.github.com/users/TimWolla","html_url":"https://github.com/TimWolla","followers_url":"https://api.github.com/users/TimWolla/followers","following_url":"https://api.github.com/users/TimWolla/following{/other_user}","gists_url":"https://api.github.com/users/TimWolla/gists{/gist_id}","starred_url":"https://api.github.com/users/TimWolla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TimWolla/subscriptions","organizations_url":"https://api.github.com/users/TimWolla/orgs","repos_url":"https://api.github.com/users/TimWolla/repos","events_url":"https://api.github.com/users/TimWolla/events{/privacy}","received_events_url":"https://api.github.com/users/TimWolla/received_events","type":"User","site_admin":false},"body":"I feel this method should be called `getRecursiveIterator` then to make the difference clear at call time.","created_at":"2018-08-03T22:29:13Z","updated_at":"2018-08-03T22:29:13Z","html_url":"https://github.com/WoltLab/WCF/pull/2731#discussion_r207681582","pull_request_url":"https://api.github.com/repos/WoltLab/WCF/pulls/2731","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/WoltLab/WCF/pulls/comments/207681582"},"html":{"href":"https://github.com/WoltLab/WCF/pull/2731#discussion_r207681582"},"pull_request":{"href":"https://api.github.com/repos/WoltLab/WCF/pulls/2731"}},"in_reply_to_id":207316515},"pull_request":{"url":"https://api.github.com/repos/WoltLab/WCF/pulls/2731","id":205787406,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA1Nzg3NDA2","html_url":"https://github.com/WoltLab/WCF/pull/2731","diff_url":"https://github.com/WoltLab/WCF/pull/2731.diff","patch_url":"https://github.com/WoltLab/WCF/pull/2731.patch","issue_url":"https://api.github.com/repos/WoltLab/WCF/issues/2731","number":2731,"state":"open","locked":false,"title":"Add Form Builder API Implementation","user":{"login":"Gravatronics","id":917663,"node_id":"MDQ6VXNlcjkxNzY2Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/917663?v=4","gravatar_id":"","url":"https://api.github.com/users/Gravatronics","html_url":"https://github.com/Gravatronics","followers_url":"https://api.github.com/users/Gravatronics/followers","following_url":"https://api.github.com/users/Gravatronics/following{/other_user}","gists_url":"https://api.github.com/users/Gravatronics/gists{/gist_id}","starred_url":"https://api.github.com/users/Gravatronics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Gravatronics/subscriptions","organizations_url":"https://api.github.com/users/Gravatronics/orgs","repos_url":"https://api.github.com/users/Gravatronics/repos","events_url":"https://api.github.com/users/Gravatronics/events{/privacy}","received_events_url":"https://api.github.com/users/Gravatronics/received_events","type":"User","site_admin":false},"body":"See #2509","created_at":"2018-08-02T16:09:16Z","updated_at":"2018-08-03T22:29:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"006523ed42dd569109c1ede7ba5d0b4b8744f56d","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":944515528,"node_id":"MDU6TGFiZWw5NDQ1MTU1Mjg=","url":"https://api.github.com/repos/WoltLab/WCF/labels/New%20Feature","name":"New Feature","color":"006b75","default":false}],"milestone":{"url":"https://api.github.com/repos/WoltLab/WCF/milestones/6","html_url":"https://github.com/WoltLab/WCF/milestone/6","labels_url":"https://api.github.com/repos/WoltLab/WCF/milestones/6/labels","id":3032894,"node_id":"MDk6TWlsZXN0b25lMzAzMjg5NA==","number":6,"title":"3.2","description":"","creator":{"login":"Gravatronics","id":917663,"node_id":"MDQ6VXNlcjkxNzY2Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/917663?v=4","gravatar_id":"","url":"https://api.github.com/users/Gravatronics","html_url":"https://github.com/Gravatronics","followers_url":"https://api.github.com/users/Gravatronics/followers","following_url":"https://api.github.com/users/Gravatronics/following{/other_user}","gists_url":"https://api.github.com/users/Gravatronics/gists{/gist_id}","starred_url":"https://api.github.com/users/Gravatronics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Gravatronics/subscriptions","organizations_url":"https://api.github.com/users/Gravatronics/orgs","repos_url":"https://api.github.com/users/Gravatronics/repos","events_url":"https://api.github.com/users/Gravatronics/events{/privacy}","received_events_url":"https://api.github.com/users/Gravatronics/received_events","type":"User","site_admin":false},"open_issues":117,"closed_issues":40,"state":"open","created_at":"2018-01-13T09:54:16Z","updated_at":"2018-08-03T15:51:56Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/WoltLab/WCF/pulls/2731/commits","review_comments_url":"https://api.github.com/repos/WoltLab/WCF/pulls/2731/comments","review_comment_url":"https://api.github.com/repos/WoltLab/WCF/pulls/comments{/number}","comments_url":"https://api.github.com/repos/WoltLab/WCF/issues/2731/comments","statuses_url":"https://api.github.com/repos/WoltLab/WCF/statuses/66eed3a1bfb096273895ba17d3a09437df4232f4","head":{"label":"WoltLab:formBuilder","ref":"formBuilder","sha":"66eed3a1bfb096273895ba17d3a09437df4232f4","user":{"login":"WoltLab","id":915384,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNTM4NA==","avatar_url":"https://avatars2.githubusercontent.com/u/915384?v=4","gravatar_id":"","url":"https://api.github.com/users/WoltLab","html_url":"https://github.com/WoltLab","followers_url":"https://api.github.com/users/WoltLab/followers","following_url":"https://api.github.com/users/WoltLab/following{/other_user}","gists_url":"https://api.github.com/users/WoltLab/gists{/gist_id}","starred_url":"https://api.github.com/users/WoltLab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WoltLab/subscriptions","organizations_url":"https://api.github.com/users/WoltLab/orgs","repos_url":"https://api.github.com/users/WoltLab/repos","events_url":"https://api.github.com/users/WoltLab/events{/privacy}","received_events_url":"https://api.github.com/users/WoltLab/received_events","type":"Organization","site_admin":false},"repo":{"id":2048269,"node_id":"MDEwOlJlcG9zaXRvcnkyMDQ4MjY5","name":"WCF","full_name":"WoltLab/WCF","owner":{"login":"WoltLab","id":915384,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNTM4NA==","avatar_url":"https://avatars2.githubusercontent.com/u/915384?v=4","gravatar_id":"","url":"https://api.github.com/users/WoltLab","html_url":"https://github.com/WoltLab","followers_url":"https://api.github.com/users/WoltLab/followers","following_url":"https://api.github.com/users/WoltLab/following{/other_user}","gists_url":"https://api.github.com/users/WoltLab/gists{/gist_id}","starred_url":"https://api.github.com/users/WoltLab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WoltLab/subscriptions","organizations_url":"https://api.github.com/users/WoltLab/orgs","repos_url":"https://api.github.com/users/WoltLab/repos","events_url":"https://api.github.com/users/WoltLab/events{/privacy}","received_events_url":"https://api.github.com/users/WoltLab/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/WoltLab/WCF","description":"WoltLab Suite Core (previously WoltLab Community Framework)","fork":false,"url":"https://api.github.com/repos/WoltLab/WCF","forks_url":"https://api.github.com/repos/WoltLab/WCF/forks","keys_url":"https://api.github.com/repos/WoltLab/WCF/keys{/key_id}","collaborators_url":"https://api.github.com/repos/WoltLab/WCF/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/WoltLab/WCF/teams","hooks_url":"https://api.github.com/repos/WoltLab/WCF/hooks","issue_events_url":"https://api.github.com/repos/WoltLab/WCF/issues/events{/number}","events_url":"https://api.github.com/repos/WoltLab/WCF/events","assignees_url":"https://api.github.com/repos/WoltLab/WCF/assignees{/user}","branches_url":"https://api.github.com/repos/WoltLab/WCF/branches{/branch}","tags_url":"https://api.github.com/repos/WoltLab/WCF/tags","blobs_url":"https://api.github.com/repos/WoltLab/WCF/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/WoltLab/WCF/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/WoltLab/WCF/git/refs{/sha}","trees_url":"https://api.github.com/repos/WoltLab/WCF/git/trees{/sha}","statuses_url":"https://api.github.com/repos/WoltLab/WCF/statuses/{sha}","languages_url":"https://api.github.com/repos/WoltLab/WCF/languages","stargazers_url":"https://api.github.com/repos/WoltLab/WCF/stargazers","contributors_url":"https://api.github.com/repos/WoltLab/WCF/contributors","subscribers_url":"https://api.github.com/repos/WoltLab/WCF/subscribers","subscription_url":"https://api.github.com/repos/WoltLab/WCF/subscription","commits_url":"https://api.github.com/repos/WoltLab/WCF/commits{/sha}","git_commits_url":"https://api.github.com/repos/WoltLab/WCF/git/commits{/sha}","comments_url":"https://api.github.com/repos/WoltLab/WCF/comments{/number}","issue_comment_url":"https://api.github.com/repos/WoltLab/WCF/issues/comments{/number}","contents_url":"https://api.github.com/repos/WoltLab/WCF/contents/{+path}","compare_url":"https://api.github.com/repos/WoltLab/WCF/compare/{base}...{head}","merges_url":"https://api.github.com/repos/WoltLab/WCF/merges","archive_url":"https://api.github.com/repos/WoltLab/WCF/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/WoltLab/WCF/downloads","issues_url":"https://api.github.com/repos/WoltLab/WCF/issues{/number}","pulls_url":"https://api.github.com/repos/WoltLab/WCF/pulls{/number}","milestones_url":"https://api.github.com/repos/WoltLab/WCF/milestones{/number}","notifications_url":"https://api.github.com/repos/WoltLab/WCF/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/WoltLab/WCF/labels{/name}","releases_url":"https://api.github.com/repos/WoltLab/WCF/releases{/id}","deployments_url":"https://api.github.com/repos/WoltLab/WCF/deployments","created_at":"2011-07-14T16:18:17Z","updated_at":"2018-08-01T14:31:10Z","pushed_at":"2018-08-03T16:11:30Z","git_url":"git://github.com/WoltLab/WCF.git","ssh_url":"git@github.com:WoltLab/WCF.git","clone_url":"https://github.com/WoltLab/WCF.git","svn_url":"https://github.com/WoltLab/WCF","homepage":"https://www.woltlab.com","size":84340,"stargazers_count":185,"watchers_count":185,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":132,"mirror_url":null,"archived":false,"open_issues_count":128,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":132,"open_issues":128,"watchers":185,"default_branch":"master"}},"base":{"label":"WoltLab:next","ref":"next","sha":"580fe19940f7c7942605afc9b1c32ab805dc87f6","user":{"login":"WoltLab","id":915384,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNTM4NA==","avatar_url":"https://avatars2.githubusercontent.com/u/915384?v=4","gravatar_id":"","url":"https://api.github.com/users/WoltLab","html_url":"https://github.com/WoltLab","followers_url":"https://api.github.com/users/WoltLab/followers","following_url":"https://api.github.com/users/WoltLab/following{/other_user}","gists_url":"https://api.github.com/users/WoltLab/gists{/gist_id}","starred_url":"https://api.github.com/users/WoltLab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WoltLab/subscriptions","organizations_url":"https://api.github.com/users/WoltLab/orgs","repos_url":"https://api.github.com/users/WoltLab/repos","events_url":"https://api.github.com/users/WoltLab/events{/privacy}","received_events_url":"https://api.github.com/users/WoltLab/received_events","type":"Organization","site_admin":false},"repo":{"id":2048269,"node_id":"MDEwOlJlcG9zaXRvcnkyMDQ4MjY5","name":"WCF","full_name":"WoltLab/WCF","owner":{"login":"WoltLab","id":915384,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNTM4NA==","avatar_url":"https://avatars2.githubusercontent.com/u/915384?v=4","gravatar_id":"","url":"https://api.github.com/users/WoltLab","html_url":"https://github.com/WoltLab","followers_url":"https://api.github.com/users/WoltLab/followers","following_url":"https://api.github.com/users/WoltLab/following{/other_user}","gists_url":"https://api.github.com/users/WoltLab/gists{/gist_id}","starred_url":"https://api.github.com/users/WoltLab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WoltLab/subscriptions","organizations_url":"https://api.github.com/users/WoltLab/orgs","repos_url":"https://api.github.com/users/WoltLab/repos","events_url":"https://api.github.com/users/WoltLab/events{/privacy}","received_events_url":"https://api.github.com/users/WoltLab/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/WoltLab/WCF","description":"WoltLab Suite Core (previously WoltLab Community Framework)","fork":false,"url":"https://api.github.com/repos/WoltLab/WCF","forks_url":"https://api.github.com/repos/WoltLab/WCF/forks","keys_url":"https://api.github.com/repos/WoltLab/WCF/keys{/key_id}","collaborators_url":"https://api.github.com/repos/WoltLab/WCF/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/WoltLab/WCF/teams","hooks_url":"https://api.github.com/repos/WoltLab/WCF/hooks","issue_events_url":"https://api.github.com/repos/WoltLab/WCF/issues/events{/number}","events_url":"https://api.github.com/repos/WoltLab/WCF/events","assignees_url":"https://api.github.com/repos/WoltLab/WCF/assignees{/user}","branches_url":"https://api.github.com/repos/WoltLab/WCF/branches{/branch}","tags_url":"https://api.github.com/repos/WoltLab/WCF/tags","blobs_url":"https://api.github.com/repos/WoltLab/WCF/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/WoltLab/WCF/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/WoltLab/WCF/git/refs{/sha}","trees_url":"https://api.github.com/repos/WoltLab/WCF/git/trees{/sha}","statuses_url":"https://api.github.com/repos/WoltLab/WCF/statuses/{sha}","languages_url":"https://api.github.com/repos/WoltLab/WCF/languages","stargazers_url":"https://api.github.com/repos/WoltLab/WCF/stargazers","contributors_url":"https://api.github.com/repos/WoltLab/WCF/contributors","subscribers_url":"https://api.github.com/repos/WoltLab/WCF/subscribers","subscription_url":"https://api.github.com/repos/WoltLab/WCF/subscription","commits_url":"https://api.github.com/repos/WoltLab/WCF/commits{/sha}","git_commits_url":"https://api.github.com/repos/WoltLab/WCF/git/commits{/sha}","comments_url":"https://api.github.com/repos/WoltLab/WCF/comments{/number}","issue_comment_url":"https://api.github.com/repos/WoltLab/WCF/issues/comments{/number}","contents_url":"https://api.github.com/repos/WoltLab/WCF/contents/{+path}","compare_url":"https://api.github.com/repos/WoltLab/WCF/compare/{base}...{head}","merges_url":"https://api.github.com/repos/WoltLab/WCF/merges","archive_url":"https://api.github.com/repos/WoltLab/WCF/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/WoltLab/WCF/downloads","issues_url":"https://api.github.com/repos/WoltLab/WCF/issues{/number}","pulls_url":"https://api.github.com/repos/WoltLab/WCF/pulls{/number}","milestones_url":"https://api.github.com/repos/WoltLab/WCF/milestones{/number}","notifications_url":"https://api.github.com/repos/WoltLab/WCF/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/WoltLab/WCF/labels{/name}","releases_url":"https://api.github.com/repos/WoltLab/WCF/releases{/id}","deployments_url":"https://api.github.com/repos/WoltLab/WCF/deployments","created_at":"2011-07-14T16:18:17Z","updated_at":"2018-08-01T14:31:10Z","pushed_at":"2018-08-03T16:11:30Z","git_url":"git://github.com/WoltLab/WCF.git","ssh_url":"git@github.com:WoltLab/WCF.git","clone_url":"https://github.com/WoltLab/WCF.git","svn_url":"https://github.com/WoltLab/WCF","homepage":"https://www.woltlab.com","size":84340,"stargazers_count":185,"watchers_count":185,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":132,"mirror_url":null,"archived":false,"open_issues_count":128,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":132,"open_issues":128,"watchers":185,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/WoltLab/WCF/pulls/2731"},"html":{"href":"https://github.com/WoltLab/WCF/pull/2731"},"issue":{"href":"https://api.github.com/repos/WoltLab/WCF/issues/2731"},"comments":{"href":"https://api.github.com/repos/WoltLab/WCF/issues/2731/comments"},"review_comments":{"href":"https://api.github.com/repos/WoltLab/WCF/pulls/2731/comments"},"review_comment":{"href":"https://api.github.com/repos/WoltLab/WCF/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/WoltLab/WCF/pulls/2731/commits"},"statuses":{"href":"https://api.github.com/repos/WoltLab/WCF/statuses/66eed3a1bfb096273895ba17d3a09437df4232f4"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"TimWolla"}}