SlideShare a Scribd company logo
1 of 33
T3CON12
                         Québec City




FILE ABSTRACTION LAYER
                                   1
AGENDA


 Introduction into File Abstraction
   current State in TYPO3
   goals and concepts




                                                 http://theplayunderground.com/images/Folder%20Stack.jpg
 The File Abstraction Layer in T YPO3 6.0
   influences on editors
   architecture
   FAL vs. DAM

 Developers Information: Customize FAL
   custom Drivers
   usage in Extensions
   extending FAL

                                             2
STEFFEN RITTER


 Germany, near Frankfurt

 Studied Computer Science

 Freelancer for T YPO3 Development

 T YPO3 since 2006
   Core Team Member
   Release Manager 4.7




                                      3
Current State,

INTRODUCTION   Goals,
               History,
               Concepts




                          4
INTRODUCTION: CURRENT STATE


 plain PHP functions ( fopen, is_dir, …)
 operating system restriction: Windows vs. Unix
 files in T YPO3 site root

 Usage  copied to uploads/
 thumbnails copied to typo3temp/

 obtains disk space
 replacing files dif ficult
 meta-data distributed


                                                   5
INTRODUCTION: GOALS


 omit superfluous copies
        reference files

 central meta-data management

 no direct file-system access

 external file-systems

 „DAM“ with core support


                                    6
INTRODUCTION: HISTORY AND FUTURE


 planned since years

 several attempts / refactorings

 huge task  DAM not core

 finally: BLE-project with planned integration in 4.7

 released with 6.0alpha1
   improvements and actions welcome


                                                         7
INTRODUCTION: CONCEPTS


 Resource      – element in file-system

 File          – real file in file -system

 Folder        – structuring unit of file -system
   Folder in local file-system, tag or album in Flickr


 ProcessedFile – variants
   References File




                                                          8
INTRODUCTION: CONCEPTS


 Storage      – unix: mount
   Mount-point definition
   Aggregation: Driver, Name, Path, „user-mount “


 Driver       – low -level interface
   php file-system calls
   WebDAV: PUT/GET/POST …




                                                     9
FILE ABSTRACTION     Changes for
                     Editors
      IN TYPO3 6.0




                               10
CHANGES FOR EDITORS: FILE MODULE




                                   11
CHANGES FOR EDITOR: IMAGES




                             12
CHANGES FOR EDITOR: HCI CHANGES




                                  13
CHANGES FOR EDITORS: UPLOADS




                               14
CHANGES FOR EDITORS: FILE-META DATA




                                  15
CHANGES FOR EDITORS: FILE-META DATA

 WITH MEDIA INSTALLED:

   „bridge to DAM“




                                  16
FILE ABSTRACTION     Architecture
      IN TYPO3 6.0




                                17
ARCHITECTURE: CLASS HIERARCHY

                Interface to code against




                Objects in memory



                In file-system
                                             18
ARCHITECTURE: PERSISTENCE


   File:            database    (sys_file)
   Folder:          transient
   Storage:         database    (sys_storage)
   FileReference:   database    (sys_file_reference)
   ProcessedFile:   database    (sys_file_processedfile)



 References in Database: [UID]
 Folder: [???]



                                                            19
ARCHITECTURE: IDENTIFY A RESOURCE

 4 dif ferent Identifier:
      Identifier
      Combined Identifier
      uid
      Sha1 (internal only)

 Identifier                               user_upload/Admin/test.html
    String, unique within Storage
    useless without storage

 Combined Identifier                      1:user_upload/Admin/test.html
    Extends identifier with Storage UID
    [StorageUid]:[Identifier]

 uid
    Indexed elements
    Database relations



                                                                         20
ARCHITECTURE: IDENTIFY A RESOURCE




           WAAAHH?



                                    21
ARCHITECTURE: IDENTIFY A RESOURCE

Which Identifier to use?

 Combined-Identifier:
   TypoScript,
   Hand over file to FAL
   manual references


 Uid
   internally (extensions, php, database)
   Whenever possible (better performance)




                                             22
ARCHITECTURE: IDENTIFY A RESOURCE

Gimmick / Backwards compatibilty: Legacy Files

 „Virtual Storage“
     uid: 0
     local-driver
     Root at TYPO3_site
     not indexed!

   Access all files:
       0:uploads/pics/bla.jpg
       0:typo3conf/ext/myEXT/ext_icon.gif




                                                 23
ARCHITECTURE:
         STORAGE AND MOUNTPOINTS
 Top-Level in file-tree

 Drivers can ship custom config
   WebDAV: Username, Password, …


 Of fline/Online detection for
  Remote data sources




                                    24
ARCHITECTURE:
            STORAGE AND MOUNTPOINTS
 „FileMounts“: new definition
   Label

   Storage

   All Folders in Storage selectable


 User-FileMounts „filter“ Storage
   All storages in filetree
   Only accessible folder shown




                                        25
ARCHITECTURE: COLLECTIONS


 New collection Interfaces since T YPO3 4.7
 Central storage/grouping of records/data
 Similar JCF / STL Container

 FAL extends Collection:
   Folder-Collection:   All files within a folder
   Static-Collection:   pre selected files


 Extensions/Upload-CE uses „collection“
   Central exchange of files



                                                     26
FAL VS. DAM




              27
FILE ABSTRACTION LAYER AND D.A.M.

 FAL is NOT compatible to DAM
 FAL won‘t replace DAM

 FAL concentrates on file meta -data
 DAM concentrates on file -content meta-data

 DAM 2.0  Media Extension
   Static collections                              - FAL
   Folder collections                              - FAL
   Tag/Filter collection                 - t.b.d

   Migration  possible (to a certain extend)

 New projects with DAM??? Start with 6.0alpha1 and FAL!!!

                                                             28
Use, Extend
 DEVELOPERS   and customize
              the File
INFORMATION   Abstraction
              Layer




                        29
DEVELOPERS INFORMATION:
              CUSTOM DRIVERS
 Possibilities: WebDAV, Flickr, Amazon S3, FTP, SharePoint…

 Driver Interface + Registry
  1. implement Interface
  2. Register at Registry
  3. configure within Storage




                                                               30
DEVELOPERS INFORMATION:
               T YPOSCRIPT
 New TypoScript Object „FILES“




                                   31
DEVELOPERS INFORMATION:
        WORKING WITH COLLECTIONS
 collections selected in TCE -Form
  PHP Code has to work with them




                                      32
DEVELOPERS INFORMATION:
    RETRIEVING FILES FROM T YPOLINK
 Currently: Check for „is file“

 New prefix „file:“
   file:1:user_upload/index.html
   file:735




                                      33

More Related Content

What's hot

Files concepts.53
Files concepts.53Files concepts.53
Files concepts.53myrajendra
 
Os10
Os10Os10
Os10issbp
 
ITFT_File system interface in Operating System
ITFT_File system interface in Operating SystemITFT_File system interface in Operating System
ITFT_File system interface in Operating SystemSneh Prabha
 
Unit ivos - file systems
Unit ivos - file systemsUnit ivos - file systems
Unit ivos - file systemsdonny101
 
Acyclic grapch directory 56(2)
Acyclic grapch directory 56(2)Acyclic grapch directory 56(2)
Acyclic grapch directory 56(2)myrajendra
 
Operating Systems - Implementing File Systems
Operating Systems - Implementing File SystemsOperating Systems - Implementing File Systems
Operating Systems - Implementing File SystemsMukesh Chinta
 
Local Persistent data with ActionScript 3 and AIR
Local Persistent data with ActionScript 3 and AIRLocal Persistent data with ActionScript 3 and AIR
Local Persistent data with ActionScript 3 and AIRmarcocasario
 
TagFS — Tag Semantics for Hierarchical File Systems
TagFS — Tag Semantics for Hierarchical File SystemsTagFS — Tag Semantics for Hierarchical File Systems
TagFS — Tag Semantics for Hierarchical File Systemsguest52d7e8
 
Chapter 10 - File System Interface
Chapter 10 - File System InterfaceChapter 10 - File System Interface
Chapter 10 - File System InterfaceWayne Jones Jnr
 
File System Interface
File System InterfaceFile System Interface
File System Interfacechandinisanz
 
directory structure and file system mounting
directory structure and file system mountingdirectory structure and file system mounting
directory structure and file system mountingrajshreemuthiah
 
File implementation
File implementationFile implementation
File implementationMohd Arif
 
101 4.6 create and change hard and symbolic links v2
101 4.6 create and change hard and symbolic links v2101 4.6 create and change hard and symbolic links v2
101 4.6 create and change hard and symbolic links v2Acácio Oliveira
 

What's hot (20)

Files concepts.53
Files concepts.53Files concepts.53
Files concepts.53
 
Os10
Os10Os10
Os10
 
ITFT_File system interface in Operating System
ITFT_File system interface in Operating SystemITFT_File system interface in Operating System
ITFT_File system interface in Operating System
 
OSCh12
OSCh12OSCh12
OSCh12
 
Unit ivos - file systems
Unit ivos - file systemsUnit ivos - file systems
Unit ivos - file systems
 
ISUG 113: File stream
ISUG 113: File streamISUG 113: File stream
ISUG 113: File stream
 
Acyclic grapch directory 56(2)
Acyclic grapch directory 56(2)Acyclic grapch directory 56(2)
Acyclic grapch directory 56(2)
 
Operating Systems - Implementing File Systems
Operating Systems - Implementing File SystemsOperating Systems - Implementing File Systems
Operating Systems - Implementing File Systems
 
Local Persistent data with ActionScript 3 and AIR
Local Persistent data with ActionScript 3 and AIRLocal Persistent data with ActionScript 3 and AIR
Local Persistent data with ActionScript 3 and AIR
 
TagFS — Tag Semantics for Hierarchical File Systems
TagFS — Tag Semantics for Hierarchical File SystemsTagFS — Tag Semantics for Hierarchical File Systems
TagFS — Tag Semantics for Hierarchical File Systems
 
Os6
Os6Os6
Os6
 
Operating system
Operating systemOperating system
Operating system
 
OPERATING SYSTEM
OPERATING SYSTEMOPERATING SYSTEM
OPERATING SYSTEM
 
Chapter 10 - File System Interface
Chapter 10 - File System InterfaceChapter 10 - File System Interface
Chapter 10 - File System Interface
 
File System Interface
File System InterfaceFile System Interface
File System Interface
 
directory structure and file system mounting
directory structure and file system mountingdirectory structure and file system mounting
directory structure and file system mounting
 
21 domino mohan-1
21 domino mohan-121 domino mohan-1
21 domino mohan-1
 
File implementation
File implementationFile implementation
File implementation
 
Files
FilesFiles
Files
 
101 4.6 create and change hard and symbolic links v2
101 4.6 create and change hard and symbolic links v2101 4.6 create and change hard and symbolic links v2
101 4.6 create and change hard and symbolic links v2
 

Similar to The File Abstraction Layer in TYPO3 6.0

TYPO3 6.0. What's new
TYPO3 6.0. What's newTYPO3 6.0. What's new
TYPO3 6.0. What's newRafal Brzeski
 
Fight with linux reverse
Fight with linux reverseFight with linux reverse
Fight with linux reversechao yang
 
Building Quality Code That Lasts: A Dropbox Story. Ashley Nelson-Hornstein
 Building Quality Code That Lasts: A Dropbox Story. Ashley Nelson-Hornstein Building Quality Code That Lasts: A Dropbox Story. Ashley Nelson-Hornstein
Building Quality Code That Lasts: A Dropbox Story. Ashley Nelson-HornsteinYandex
 
Root file system for embedded systems
Root file system for embedded systemsRoot file system for embedded systems
Root file system for embedded systemsalok pal
 
computer notes - Unix primer
computer notes - Unix primercomputer notes - Unix primer
computer notes - Unix primerecomputernotes
 
Biblio to Fedora Commons REST API
Biblio to Fedora Commons REST APIBiblio to Fedora Commons REST API
Biblio to Fedora Commons REST APIcmoyers
 
Hadoop training in bangalore-kellytechnologies
Hadoop training in bangalore-kellytechnologiesHadoop training in bangalore-kellytechnologies
Hadoop training in bangalore-kellytechnologiesappaji intelhunt
 
C++ shared libraries and loading
C++ shared libraries and loadingC++ shared libraries and loading
C++ shared libraries and loadingRahul Jamwal
 

Similar to The File Abstraction Layer in TYPO3 6.0 (20)

TYPO3 6.0. What's new
TYPO3 6.0. What's newTYPO3 6.0. What's new
TYPO3 6.0. What's new
 
DFSNov1.pptx
DFSNov1.pptxDFSNov1.pptx
DFSNov1.pptx
 
DAOS Middleware overview
DAOS Middleware overviewDAOS Middleware overview
DAOS Middleware overview
 
Fsoss12
Fsoss12Fsoss12
Fsoss12
 
Fight with linux reverse
Fight with linux reverseFight with linux reverse
Fight with linux reverse
 
Building Quality Code That Lasts: A Dropbox Story. Ashley Nelson-Hornstein
 Building Quality Code That Lasts: A Dropbox Story. Ashley Nelson-Hornstein Building Quality Code That Lasts: A Dropbox Story. Ashley Nelson-Hornstein
Building Quality Code That Lasts: A Dropbox Story. Ashley Nelson-Hornstein
 
Root file system for embedded systems
Root file system for embedded systemsRoot file system for embedded systems
Root file system for embedded systems
 
Fsoss2011
Fsoss2011Fsoss2011
Fsoss2011
 
Linking in MS-Dos System
Linking in MS-Dos SystemLinking in MS-Dos System
Linking in MS-Dos System
 
Tlf2012
Tlf2012Tlf2012
Tlf2012
 
Hadoop -HDFS.ppt
Hadoop -HDFS.pptHadoop -HDFS.ppt
Hadoop -HDFS.ppt
 
File
FileFile
File
 
computer notes - Unix primer
computer notes - Unix primercomputer notes - Unix primer
computer notes - Unix primer
 
Nelf2013
Nelf2013Nelf2013
Nelf2013
 
Biblio to Fedora Commons REST API
Biblio to Fedora Commons REST APIBiblio to Fedora Commons REST API
Biblio to Fedora Commons REST API
 
Nelf2012
Nelf2012Nelf2012
Nelf2012
 
Hadoop
HadoopHadoop
Hadoop
 
Hadoop training in bangalore-kellytechnologies
Hadoop training in bangalore-kellytechnologiesHadoop training in bangalore-kellytechnologies
Hadoop training in bangalore-kellytechnologies
 
NetApp & Storage fundamentals
NetApp & Storage fundamentalsNetApp & Storage fundamentals
NetApp & Storage fundamentals
 
C++ shared libraries and loading
C++ shared libraries and loadingC++ shared libraries and loading
C++ shared libraries and loading
 

More from Steffen Ritter

The Future of TYPO3 CMS
The Future of TYPO3 CMSThe Future of TYPO3 CMS
The Future of TYPO3 CMSSteffen Ritter
 
Der File Abstraction Layer
Der File Abstraction LayerDer File Abstraction Layer
Der File Abstraction LayerSteffen Ritter
 
Neuerungen in TypoScript in TYPO3 Version 4.7
Neuerungen in TypoScript in TYPO3 Version 4.7Neuerungen in TypoScript in TYPO3 Version 4.7
Neuerungen in TypoScript in TYPO3 Version 4.7Steffen Ritter
 
Einführung und Grobüberblick über TYPO3 4.7
Einführung und Grobüberblick  über TYPO3 4.7Einführung und Grobüberblick  über TYPO3 4.7
Einführung und Grobüberblick über TYPO3 4.7Steffen Ritter
 

More from Steffen Ritter (6)

The Future of TYPO3 CMS
The Future of TYPO3 CMSThe Future of TYPO3 CMS
The Future of TYPO3 CMS
 
The Way to TYPO3 6.0
The Way to TYPO3 6.0The Way to TYPO3 6.0
The Way to TYPO3 6.0
 
Der File Abstraction Layer
Der File Abstraction LayerDer File Abstraction Layer
Der File Abstraction Layer
 
Neuerungen in TypoScript in TYPO3 Version 4.7
Neuerungen in TypoScript in TYPO3 Version 4.7Neuerungen in TypoScript in TYPO3 Version 4.7
Neuerungen in TypoScript in TYPO3 Version 4.7
 
HTML5 in TYPO3 4.7
HTML5 in TYPO3 4.7HTML5 in TYPO3 4.7
HTML5 in TYPO3 4.7
 
Einführung und Grobüberblick über TYPO3 4.7
Einführung und Grobüberblick  über TYPO3 4.7Einführung und Grobüberblick  über TYPO3 4.7
Einführung und Grobüberblick über TYPO3 4.7
 

Recently uploaded

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Recently uploaded (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

The File Abstraction Layer in TYPO3 6.0

  • 1. T3CON12 Québec City FILE ABSTRACTION LAYER 1
  • 2. AGENDA  Introduction into File Abstraction  current State in TYPO3  goals and concepts http://theplayunderground.com/images/Folder%20Stack.jpg  The File Abstraction Layer in T YPO3 6.0  influences on editors  architecture  FAL vs. DAM  Developers Information: Customize FAL  custom Drivers  usage in Extensions  extending FAL 2
  • 3. STEFFEN RITTER  Germany, near Frankfurt  Studied Computer Science  Freelancer for T YPO3 Development  T YPO3 since 2006  Core Team Member  Release Manager 4.7 3
  • 4. Current State, INTRODUCTION Goals, History, Concepts 4
  • 5. INTRODUCTION: CURRENT STATE  plain PHP functions ( fopen, is_dir, …)  operating system restriction: Windows vs. Unix  files in T YPO3 site root  Usage  copied to uploads/  thumbnails copied to typo3temp/  obtains disk space  replacing files dif ficult  meta-data distributed 5
  • 6. INTRODUCTION: GOALS  omit superfluous copies  reference files  central meta-data management  no direct file-system access  external file-systems  „DAM“ with core support 6
  • 7. INTRODUCTION: HISTORY AND FUTURE  planned since years  several attempts / refactorings  huge task  DAM not core  finally: BLE-project with planned integration in 4.7  released with 6.0alpha1  improvements and actions welcome 7
  • 8. INTRODUCTION: CONCEPTS  Resource – element in file-system  File – real file in file -system  Folder – structuring unit of file -system  Folder in local file-system, tag or album in Flickr  ProcessedFile – variants  References File 8
  • 9. INTRODUCTION: CONCEPTS  Storage – unix: mount  Mount-point definition  Aggregation: Driver, Name, Path, „user-mount “  Driver – low -level interface  php file-system calls  WebDAV: PUT/GET/POST … 9
  • 10. FILE ABSTRACTION Changes for Editors IN TYPO3 6.0 10
  • 11. CHANGES FOR EDITORS: FILE MODULE 11
  • 12. CHANGES FOR EDITOR: IMAGES 12
  • 13. CHANGES FOR EDITOR: HCI CHANGES 13
  • 14. CHANGES FOR EDITORS: UPLOADS 14
  • 15. CHANGES FOR EDITORS: FILE-META DATA 15
  • 16. CHANGES FOR EDITORS: FILE-META DATA  WITH MEDIA INSTALLED:  „bridge to DAM“ 16
  • 17. FILE ABSTRACTION Architecture IN TYPO3 6.0 17
  • 18. ARCHITECTURE: CLASS HIERARCHY  Interface to code against  Objects in memory  In file-system 18
  • 19. ARCHITECTURE: PERSISTENCE  File: database (sys_file)  Folder: transient  Storage: database (sys_storage)  FileReference: database (sys_file_reference)  ProcessedFile: database (sys_file_processedfile)  References in Database: [UID]  Folder: [???] 19
  • 20. ARCHITECTURE: IDENTIFY A RESOURCE  4 dif ferent Identifier:  Identifier  Combined Identifier  uid  Sha1 (internal only)  Identifier user_upload/Admin/test.html  String, unique within Storage  useless without storage  Combined Identifier 1:user_upload/Admin/test.html  Extends identifier with Storage UID  [StorageUid]:[Identifier]  uid  Indexed elements  Database relations 20
  • 21. ARCHITECTURE: IDENTIFY A RESOURCE WAAAHH? 21
  • 22. ARCHITECTURE: IDENTIFY A RESOURCE Which Identifier to use?  Combined-Identifier:  TypoScript,  Hand over file to FAL  manual references  Uid  internally (extensions, php, database)  Whenever possible (better performance) 22
  • 23. ARCHITECTURE: IDENTIFY A RESOURCE Gimmick / Backwards compatibilty: Legacy Files  „Virtual Storage“  uid: 0  local-driver  Root at TYPO3_site  not indexed!  Access all files:  0:uploads/pics/bla.jpg  0:typo3conf/ext/myEXT/ext_icon.gif 23
  • 24. ARCHITECTURE: STORAGE AND MOUNTPOINTS  Top-Level in file-tree  Drivers can ship custom config  WebDAV: Username, Password, …  Of fline/Online detection for Remote data sources 24
  • 25. ARCHITECTURE: STORAGE AND MOUNTPOINTS  „FileMounts“: new definition  Label  Storage  All Folders in Storage selectable  User-FileMounts „filter“ Storage  All storages in filetree  Only accessible folder shown 25
  • 26. ARCHITECTURE: COLLECTIONS  New collection Interfaces since T YPO3 4.7  Central storage/grouping of records/data  Similar JCF / STL Container  FAL extends Collection:  Folder-Collection: All files within a folder  Static-Collection: pre selected files  Extensions/Upload-CE uses „collection“  Central exchange of files 26
  • 28. FILE ABSTRACTION LAYER AND D.A.M.  FAL is NOT compatible to DAM  FAL won‘t replace DAM  FAL concentrates on file meta -data  DAM concentrates on file -content meta-data  DAM 2.0  Media Extension  Static collections - FAL  Folder collections - FAL  Tag/Filter collection - t.b.d  Migration  possible (to a certain extend)  New projects with DAM??? Start with 6.0alpha1 and FAL!!! 28
  • 29. Use, Extend DEVELOPERS and customize the File INFORMATION Abstraction Layer 29
  • 30. DEVELOPERS INFORMATION: CUSTOM DRIVERS  Possibilities: WebDAV, Flickr, Amazon S3, FTP, SharePoint…  Driver Interface + Registry 1. implement Interface 2. Register at Registry 3. configure within Storage 30
  • 31. DEVELOPERS INFORMATION: T YPOSCRIPT  New TypoScript Object „FILES“ 31
  • 32. DEVELOPERS INFORMATION: WORKING WITH COLLECTIONS  collections selected in TCE -Form PHP Code has to work with them 32
  • 33. DEVELOPERS INFORMATION: RETRIEVING FILES FROM T YPOLINK  Currently: Check for „is file“  New prefix „file:“  file:1:user_upload/index.html  file:735 33