{"action":"opened","number":1254,"pull_request":{"url":"https://api.github.com/repos/FluidTYPO3/flux/pulls/1254","id":99553982,"html_url":"https://github.com/FluidTYPO3/flux/pull/1254","diff_url":"https://github.com/FluidTYPO3/flux/pull/1254.diff","patch_url":"https://github.com/FluidTYPO3/flux/pull/1254.patch","issue_url":"https://api.github.com/repos/FluidTYPO3/flux/issues/1254","number":1254,"state":"open","locked":false,"title":"[FEATURE] Simplify Provider pattern and shipped Providers","user":{"login":"NamelessCoder","id":2228052,"avatar_url":"https://avatars.githubusercontent.com/u/2228052?v=3","gravatar_id":"","url":"https://api.github.com/users/NamelessCoder","html_url":"https://github.com/NamelessCoder","followers_url":"https://api.github.com/users/NamelessCoder/followers","following_url":"https://api.github.com/users/NamelessCoder/following{/other_user}","gists_url":"https://api.github.com/users/NamelessCoder/gists{/gist_id}","starred_url":"https://api.github.com/users/NamelessCoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NamelessCoder/subscriptions","organizations_url":"https://api.github.com/users/NamelessCoder/orgs","repos_url":"https://api.github.com/users/NamelessCoder/repos","events_url":"https://api.github.com/users/NamelessCoder/events{/privacy}","received_events_url":"https://api.github.com/users/NamelessCoder/received_events","type":"User","site_admin":false},"body":"This change is both a refactoring and feature addition.\r\n\r\nIt refactors all Flux record manipulation away from the\r\nshipped ContentProvider into the DataHandler hook\r\nlistener. This refactoring then means the following:\r\n\r\n* ContentProvider is no longer needed, since the only\r\n   purpose it has was to provide these record manipulation\r\n   hook methods (and was used for convenience as parent\r\n   class in fluidcontent, probably others).\r\n* Method call tracking on Providers is no longer needed,\r\n   since the methods that needed to be protected, no longer\r\n   exist in Providers. The parent AbstractProvider no longer\r\n   contains any logic in methods which get called multiple\r\n   times from the DataHandler, so there is no need to avoid\r\n   calling them.\r\n\r\nThen, because the shipped ContentProvider is dropped, a\r\nsubstitute solution must exist which lets you configure a\r\nstandard Provider with the attributes ContentProvider\r\npreviously provided as defaults. This means a change to\r\nthe ProviderInterface to allow setting controller name and\r\naction name via API, which in turn allows a default Provider\r\nto be used as a \"ContentProvider\". These methods also\r\nmean that it is possible to \"tell\" a Provider which controller\r\nname it logically relates to - where by default, the class\r\nname of the Provider instance would be scanned to extract\r\nfor example \"Content\" from the class name \"ContentProvider\"\r\nand use this as controller name.\r\n\r\nEssentially: it is now possible to configure some previously\r\ninternal-only, override-only behaviors using public API.\r\n\r\nUnfortunately though, this *is* a breaking change for any\r\nextension subclassing ContentProvider. Migration is however\r\nvery easy: simply override the table- and field name properties\r\nin your Provider so it targets field \"tt_content.pi_flexform\". If\r\nyou used the Provider for a plugin (e.g. not CType) you may\r\nalso need to override the \"listType\" value (but chances are,\r\nyou have already done so).","created_at":"2016-12-28T14:20:40Z","updated_at":"2016-12-28T14:20:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/FluidTYPO3/flux/pulls/1254/commits","review_comments_url":"https://api.github.com/repos/FluidTYPO3/flux/pulls/1254/comments","review_comment_url":"https://api.github.com/repos/FluidTYPO3/flux/pulls/comments{/number}","comments_url":"https://api.github.com/repos/FluidTYPO3/flux/issues/1254/comments","statuses_url":"https://api.github.com/repos/FluidTYPO3/flux/statuses/7d935104cb5dabae46dc32acca019cad632428a0","head":{"label":"NamelessCoder:providercleanup","ref":"providercleanup","sha":"7d935104cb5dabae46dc32acca019cad632428a0","user":{"login":"NamelessCoder","id":2228052,"avatar_url":"https://avatars.githubusercontent.com/u/2228052?v=3","gravatar_id":"","url":"https://api.github.com/users/NamelessCoder","html_url":"https://github.com/NamelessCoder","followers_url":"https://api.github.com/users/NamelessCoder/followers","following_url":"https://api.github.com/users/NamelessCoder/following{/other_user}","gists_url":"https://api.github.com/users/NamelessCoder/gists{/gist_id}","starred_url":"https://api.github.com/users/NamelessCoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NamelessCoder/subscriptions","organizations_url":"https://api.github.com/users/NamelessCoder/orgs","repos_url":"https://api.github.com/users/NamelessCoder/repos","events_url":"https://api.github.com/users/NamelessCoder/events{/privacy}","received_events_url":"https://api.github.com/users/NamelessCoder/received_events","type":"User","site_admin":false},"repo":{"id":71370062,"name":"flux","full_name":"NamelessCoder/flux","owner":{"login":"NamelessCoder","id":2228052,"avatar_url":"https://avatars.githubusercontent.com/u/2228052?v=3","gravatar_id":"","url":"https://api.github.com/users/NamelessCoder","html_url":"https://github.com/NamelessCoder","followers_url":"https://api.github.com/users/NamelessCoder/followers","following_url":"https://api.github.com/users/NamelessCoder/following{/other_user}","gists_url":"https://api.github.com/users/NamelessCoder/gists{/gist_id}","starred_url":"https://api.github.com/users/NamelessCoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NamelessCoder/subscriptions","organizations_url":"https://api.github.com/users/NamelessCoder/orgs","repos_url":"https://api.github.com/users/NamelessCoder/repos","events_url":"https://api.github.com/users/NamelessCoder/events{/privacy}","received_events_url":"https://api.github.com/users/NamelessCoder/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/NamelessCoder/flux","description":"TYPO3 extension Flux: Dynamic Fluid FlexForms","fork":true,"url":"https://api.github.com/repos/NamelessCoder/flux","forks_url":"https://api.github.com/repos/NamelessCoder/flux/forks","keys_url":"https://api.github.com/repos/NamelessCoder/flux/keys{/key_id}","collaborators_url":"https://api.github.com/repos/NamelessCoder/flux/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/NamelessCoder/flux/teams","hooks_url":"https://api.github.com/repos/NamelessCoder/flux/hooks","issue_events_url":"https://api.github.com/repos/NamelessCoder/flux/issues/events{/number}","events_url":"https://api.github.com/repos/NamelessCoder/flux/events","assignees_url":"https://api.github.com/repos/NamelessCoder/flux/assignees{/user}","branches_url":"https://api.github.com/repos/NamelessCoder/flux/branches{/branch}","tags_url":"https://api.github.com/repos/NamelessCoder/flux/tags","blobs_url":"https://api.github.com/repos/NamelessCoder/flux/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/NamelessCoder/flux/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/NamelessCoder/flux/git/refs{/sha}","trees_url":"https://api.github.com/repos/NamelessCoder/flux/git/trees{/sha}","statuses_url":"https://api.github.com/repos/NamelessCoder/flux/statuses/{sha}","languages_url":"https://api.github.com/repos/NamelessCoder/flux/languages","stargazers_url":"https://api.github.com/repos/NamelessCoder/flux/stargazers","contributors_url":"https://api.github.com/repos/NamelessCoder/flux/contributors","subscribers_url":"https://api.github.com/repos/NamelessCoder/flux/subscribers","subscription_url":"https://api.github.com/repos/NamelessCoder/flux/subscription","commits_url":"https://api.github.com/repos/NamelessCoder/flux/commits{/sha}","git_commits_url":"https://api.github.com/repos/NamelessCoder/flux/git/commits{/sha}","comments_url":"https://api.github.com/repos/NamelessCoder/flux/comments{/number}","issue_comment_url":"https://api.github.com/repos/NamelessCoder/flux/issues/comments{/number}","contents_url":"https://api.github.com/repos/NamelessCoder/flux/contents/{+path}","compare_url":"https://api.github.com/repos/NamelessCoder/flux/compare/{base}...{head}","merges_url":"https://api.github.com/repos/NamelessCoder/flux/merges","archive_url":"https://api.github.com/repos/NamelessCoder/flux/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/NamelessCoder/flux/downloads","issues_url":"https://api.github.com/repos/NamelessCoder/flux/issues{/number}","pulls_url":"https://api.github.com/repos/NamelessCoder/flux/pulls{/number}","milestones_url":"https://api.github.com/repos/NamelessCoder/flux/milestones{/number}","notifications_url":"https://api.github.com/repos/NamelessCoder/flux/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/NamelessCoder/flux/labels{/name}","releases_url":"https://api.github.com/repos/NamelessCoder/flux/releases{/id}","deployments_url":"https://api.github.com/repos/NamelessCoder/flux/deployments","created_at":"2016-10-19T15:12:32Z","updated_at":"2016-10-19T15:12:34Z","pushed_at":"2016-12-28T14:20:20Z","git_url":"git://github.com/NamelessCoder/flux.git","ssh_url":"git@github.com:NamelessCoder/flux.git","clone_url":"https://github.com/NamelessCoder/flux.git","svn_url":"https://github.com/NamelessCoder/flux","homepage":"https://fluidtypo3.org","size":5995,"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":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"development"}},"base":{"label":"FluidTYPO3:development","ref":"development","sha":"cc2d49bda21a316c4224922df2244322ac76c918","user":{"login":"FluidTYPO3","id":3912401,"avatar_url":"https://avatars.githubusercontent.com/u/3912401?v=3","gravatar_id":"","url":"https://api.github.com/users/FluidTYPO3","html_url":"https://github.com/FluidTYPO3","followers_url":"https://api.github.com/users/FluidTYPO3/followers","following_url":"https://api.github.com/users/FluidTYPO3/following{/other_user}","gists_url":"https://api.github.com/users/FluidTYPO3/gists{/gist_id}","starred_url":"https://api.github.com/users/FluidTYPO3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FluidTYPO3/subscriptions","organizations_url":"https://api.github.com/users/FluidTYPO3/orgs","repos_url":"https://api.github.com/users/FluidTYPO3/repos","events_url":"https://api.github.com/users/FluidTYPO3/events{/privacy}","received_events_url":"https://api.github.com/users/FluidTYPO3/received_events","type":"Organization","site_admin":false},"repo":{"id":6153942,"name":"flux","full_name":"FluidTYPO3/flux","owner":{"login":"FluidTYPO3","id":3912401,"avatar_url":"https://avatars.githubusercontent.com/u/3912401?v=3","gravatar_id":"","url":"https://api.github.com/users/FluidTYPO3","html_url":"https://github.com/FluidTYPO3","followers_url":"https://api.github.com/users/FluidTYPO3/followers","following_url":"https://api.github.com/users/FluidTYPO3/following{/other_user}","gists_url":"https://api.github.com/users/FluidTYPO3/gists{/gist_id}","starred_url":"https://api.github.com/users/FluidTYPO3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FluidTYPO3/subscriptions","organizations_url":"https://api.github.com/users/FluidTYPO3/orgs","repos_url":"https://api.github.com/users/FluidTYPO3/repos","events_url":"https://api.github.com/users/FluidTYPO3/events{/privacy}","received_events_url":"https://api.github.com/users/FluidTYPO3/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/FluidTYPO3/flux","description":"TYPO3 extension Flux: Dynamic Fluid FlexForms","fork":false,"url":"https://api.github.com/repos/FluidTYPO3/flux","forks_url":"https://api.github.com/repos/FluidTYPO3/flux/forks","keys_url":"https://api.github.com/repos/FluidTYPO3/flux/keys{/key_id}","collaborators_url":"https://api.github.com/repos/FluidTYPO3/flux/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/FluidTYPO3/flux/teams","hooks_url":"https://api.github.com/repos/FluidTYPO3/flux/hooks","issue_events_url":"https://api.github.com/repos/FluidTYPO3/flux/issues/events{/number}","events_url":"https://api.github.com/repos/FluidTYPO3/flux/events","assignees_url":"https://api.github.com/repos/FluidTYPO3/flux/assignees{/user}","branches_url":"https://api.github.com/repos/FluidTYPO3/flux/branches{/branch}","tags_url":"https://api.github.com/repos/FluidTYPO3/flux/tags","blobs_url":"https://api.github.com/repos/FluidTYPO3/flux/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/FluidTYPO3/flux/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/FluidTYPO3/flux/git/refs{/sha}","trees_url":"https://api.github.com/repos/FluidTYPO3/flux/git/trees{/sha}","statuses_url":"https://api.github.com/repos/FluidTYPO3/flux/statuses/{sha}","languages_url":"https://api.github.com/repos/FluidTYPO3/flux/languages","stargazers_url":"https://api.github.com/repos/FluidTYPO3/flux/stargazers","contributors_url":"https://api.github.com/repos/FluidTYPO3/flux/contributors","subscribers_url":"https://api.github.com/repos/FluidTYPO3/flux/subscribers","subscription_url":"https://api.github.com/repos/FluidTYPO3/flux/subscription","commits_url":"https://api.github.com/repos/FluidTYPO3/flux/commits{/sha}","git_commits_url":"https://api.github.com/repos/FluidTYPO3/flux/git/commits{/sha}","comments_url":"https://api.github.com/repos/FluidTYPO3/flux/comments{/number}","issue_comment_url":"https://api.github.com/repos/FluidTYPO3/flux/issues/comments{/number}","contents_url":"https://api.github.com/repos/FluidTYPO3/flux/contents/{+path}","compare_url":"https://api.github.com/repos/FluidTYPO3/flux/compare/{base}...{head}","merges_url":"https://api.github.com/repos/FluidTYPO3/flux/merges","archive_url":"https://api.github.com/repos/FluidTYPO3/flux/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/FluidTYPO3/flux/downloads","issues_url":"https://api.github.com/repos/FluidTYPO3/flux/issues{/number}","pulls_url":"https://api.github.com/repos/FluidTYPO3/flux/pulls{/number}","milestones_url":"https://api.github.com/repos/FluidTYPO3/flux/milestones{/number}","notifications_url":"https://api.github.com/repos/FluidTYPO3/flux/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/FluidTYPO3/flux/labels{/name}","releases_url":"https://api.github.com/repos/FluidTYPO3/flux/releases{/id}","deployments_url":"https://api.github.com/repos/FluidTYPO3/flux/deployments","created_at":"2012-10-10T07:56:54Z","updated_at":"2016-12-15T08:29:20Z","pushed_at":"2016-12-28T13:50:37Z","git_url":"git://github.com/FluidTYPO3/flux.git","ssh_url":"git@github.com:FluidTYPO3/flux.git","clone_url":"https://github.com/FluidTYPO3/flux.git","svn_url":"https://github.com/FluidTYPO3/flux","homepage":"https://fluidtypo3.org","size":5990,"stargazers_count":105,"watchers_count":105,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":128,"mirror_url":null,"open_issues_count":47,"forks":128,"open_issues":47,"watchers":105,"default_branch":"development"}},"_links":{"self":{"href":"https://api.github.com/repos/FluidTYPO3/flux/pulls/1254"},"html":{"href":"https://github.com/FluidTYPO3/flux/pull/1254"},"issue":{"href":"https://api.github.com/repos/FluidTYPO3/flux/issues/1254"},"comments":{"href":"https://api.github.com/repos/FluidTYPO3/flux/issues/1254/comments"},"review_comments":{"href":"https://api.github.com/repos/FluidTYPO3/flux/pulls/1254/comments"},"review_comment":{"href":"https://api.github.com/repos/FluidTYPO3/flux/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/FluidTYPO3/flux/pulls/1254/commits"},"statuses":{"href":"https://api.github.com/repos/FluidTYPO3/flux/statuses/7d935104cb5dabae46dc32acca019cad632428a0"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":1,"additions":239,"deletions":625,"changed_files":13}}
{"actor":{"display_login":"NamelessCoder"}}