{"action":"created","issue":{"url":"https://api.github.com/repos/silverstripe/silverstripe-framework/issues/4652","labels_url":"https://api.github.com/repos/silverstripe/silverstripe-framework/issues/4652/labels{/name}","comments_url":"https://api.github.com/repos/silverstripe/silverstripe-framework/issues/4652/comments","events_url":"https://api.github.com/repos/silverstripe/silverstripe-framework/issues/4652/events","html_url":"https://github.com/silverstripe/silverstripe-framework/pull/4652","id":109889050,"number":4652,"title":"API Implementation of RFC-1 Asset Abstraction (DataObject Refactoring)","user":{"login":"tractorcow","id":936064,"avatar_url":"https://avatars.githubusercontent.com/u/936064?v=3","gravatar_id":"","url":"https://api.github.com/users/tractorcow","html_url":"https://github.com/tractorcow","followers_url":"https://api.github.com/users/tractorcow/followers","following_url":"https://api.github.com/users/tractorcow/following{/other_user}","gists_url":"https://api.github.com/users/tractorcow/gists{/gist_id}","starred_url":"https://api.github.com/users/tractorcow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tractorcow/subscriptions","organizations_url":"https://api.github.com/users/tractorcow/orgs","repos_url":"https://api.github.com/users/tractorcow/repos","events_url":"https://api.github.com/users/tractorcow/events{/privacy}","received_events_url":"https://api.github.com/users/tractorcow/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/silverstripe/silverstripe-framework/labels/change/major","name":"change/major","color":"f7c6c7"},{"url":"https://api.github.com/repos/silverstripe/silverstripe-framework/labels/effort/hard","name":"effort/hard","color":"5319e7"},{"url":"https://api.github.com/repos/silverstripe/silverstripe-framework/labels/feedback-required/core-team","name":"feedback-required/core-team","color":"fad8c7"},{"url":"https://api.github.com/repos/silverstripe/silverstripe-framework/labels/in%20progress","name":"in progress","color":"ededed"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-10-05T21:22:44Z","updated_at":"2015-10-09T01:09:56Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/silverstripe/silverstripe-framework/pulls/4652","html_url":"https://github.com/silverstripe/silverstripe-framework/pull/4652","diff_url":"https://github.com/silverstripe/silverstripe-framework/pull/4652.diff","patch_url":"https://github.com/silverstripe/silverstripe-framework/pull/4652.patch"},"body":"This pull request in the continuation of the earlier https://github.com/silverstripe/silverstripe-framework/pull/4599, and continues implementation of the RFC specified at https://github.com/silverstripe/silverstripe-framework/issues/3792.\r\n\r\nIn this pull request I have made the following changes:\r\n* File dataobject now has a single $db field of type DBFile to store the actual filereference.\r\n* File dataobject now implements the same `AssetContainer` interface as DBFile does, in order to provide a standard api for code which must read from and write to files. In a future update, this will be used by UploadField to allow saving into DBFile fields.\r\n* Filesystem synchronisation no longer exists; The reasoning is that there is currently no API for regenerating a local filesystem from the remote asset store. This may be re-implemented in a future update.\r\n* Image dataobject is now a simple deprecated subclass of File. All image manipulations have been moved into a new trait `ImageManipulations`, and are implemented against both `File` and `DBFile`. A new manipulations API has been build upon the variant feature in the asset persistence layer.\r\n* A new API for shortcodes handlers has been added. DBFile (in a future update) will be added.\r\n* Default tuple order changed from hash, filename, variant to filename, hash, variant to better reflect the optionality of hash and variant in certain situations, where filename is the only field necessary in every api call.\r\n\r\nCompanion CMS pull request at https://github.com/silverstripe/silverstripe-cms/pull/1291"},"comment":{"url":"https://api.github.com/repos/silverstripe/silverstripe-framework/issues/comments/146729628","html_url":"https://github.com/silverstripe/silverstripe-framework/pull/4652#issuecomment-146729628","issue_url":"https://api.github.com/repos/silverstripe/silverstripe-framework/issues/4652","id":146729628,"user":{"login":"tractorcow","id":936064,"avatar_url":"https://avatars.githubusercontent.com/u/936064?v=3","gravatar_id":"","url":"https://api.github.com/users/tractorcow","html_url":"https://github.com/tractorcow","followers_url":"https://api.github.com/users/tractorcow/followers","following_url":"https://api.github.com/users/tractorcow/following{/other_user}","gists_url":"https://api.github.com/users/tractorcow/gists{/gist_id}","starred_url":"https://api.github.com/users/tractorcow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tractorcow/subscriptions","organizations_url":"https://api.github.com/users/tractorcow/orgs","repos_url":"https://api.github.com/users/tractorcow/repos","events_url":"https://api.github.com/users/tractorcow/events{/privacy}","received_events_url":"https://api.github.com/users/tractorcow/received_events","type":"User","site_admin":false},"created_at":"2015-10-09T01:09:55Z","updated_at":"2015-10-09T01:09:55Z","body":"I've un-deprecated `Image` and implemented support for `DBFile('image')` to allow for image-only dbfile references.\r\n\r\nAt the last minute I've also added File::join_paths to deal with flysystem being sensitive to the way that paths are joined together."}}