69
The Horde 4 PHP framework Gunnar Wrobel [email protected] May, 13th 2011 Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 1 / 44

The Horde 4 PHP framework

Embed Size (px)

DESCRIPTION

The Horde project offers a complete web based groupware suite coded in PHP. The center of the application is the webmailer "Imp". Born about 13 years ago it has been one of the first existing webmail solutions. It is no wonder that by today it provides millions of users with web based access to their e-mail. The next major release of the groupware suite - Horde 4 - was made available in April 2011 and offers a dynamic AJAX based e-mail as well as calendar component. Applications for task, contact and note management are included as well. There is broad support for mobile devices - ActiveSync, SyncML, mobile front ends for iPad, iPhone, Android to name just a few. This huge feature set common to modern groupware suites does require a solid backbone of small modules delivering various functionality to speak IMAP, SQL, LDAP, MIME, iCal, iTip or to handle dates, authentication, caching, sessions etc. In other words: a framework underlying the applications visible to the user. The Horde framework existed for years and has grown in time to more than a hundred distinct modules. With Horde 4 this framework has now been published component by component for the very first time. Each module is now available as a separate PEAR package with clearly defined dependencies. Thus developers can now download and use small segments of the Horde code into their own projects without having to deal with the complexities of the whole application stack. The major advantage the Horde framework has when compared with similar frameworks: the development has been driven by the needs of real world applications that are being used by millions of users on a daily basis. The Horde code quality always had high standards but Horde 4 has been a major step in that area as well. The components have test suites which are now automatically validated by a continuous integration server based on Jenkins. This also includes code style analysis and various code metrics common to PHP based Jenkins setups. The talk will touch main features of the Horde 4 groupware suite release but primarily focus on the Horde 4 framework and the huge set of powerful PHP libraries which are now available to the PHP community.

Citation preview

Page 1: The Horde 4 PHP framework

The Horde 4 PHP framework

Gunnar Wrobel

[email protected]

May, 13th 2011

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 1 / 44

Page 2: The Horde 4 PHP framework

ComponentsComponents = Modules = Libraries = Packages = ...

Photo: Rudolf Ammann [http://www.flickr.com/photos/rka/1415516/ ]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 2 / 44

Page 3: The Horde 4 PHP framework

The Horde 4 PHP frameworkThere are more than 90 components available from http://pear.horde.org.

Photo: Aaron Merrifield [http://www.flickr.com/photos/spammt/4823025103/ ]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 3 / 44

Page 4: The Horde 4 PHP framework

Groupware

Photo: Denise Chan [http://www.flickr.com/photos/denn/5005046/ ]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 4 / 44

Page 5: The Horde 4 PHP framework

Groupware

Definition“[...] groupware [...] is computer software designed tohelp people involved in a common task achieve theirgoals [...].”a

a

http://en.wikipedia.org/wiki/Groupware

Remote

It is usually associated withteam members not physicallyco-located.

Asynchronous

Communication between teammembers is primarilyasynchronous.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 5 / 44

Page 6: The Horde 4 PHP framework

Groupware

Definition“[...] groupware [...] is computer software designed tohelp people involved in a common task achieve theirgoals [...].”a

a

http://en.wikipedia.org/wiki/Groupware

Remote

It is usually associated withteam members not physicallyco-located.

Asynchronous

Communication between teammembers is primarilyasynchronous.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 5 / 44

Page 7: The Horde 4 PHP framework

Groupware

Definition“[...] groupware [...] is computer software designed tohelp people involved in a common task achieve theirgoals [...].”a

a

http://en.wikipedia.org/wiki/Groupware

Remote

It is usually associated withteam members not physicallyco-located.

Asynchronous

Communication between teammembers is primarilyasynchronous.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 5 / 44

Page 8: The Horde 4 PHP framework

E-mailAn E-Mail client is the corner stone of most groupware systems

Photo: Eole Wind [http://www.flickr.com/photos/eole/4500783172/ ]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 6 / 44

Page 9: The Horde 4 PHP framework

Demo Time - E-Mail

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 7 / 44

Page 10: The Horde 4 PHP framework

Demo Time - Mobile

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 8 / 44

Page 11: The Horde 4 PHP framework

PHP + IMAPPEAR-Net IMAP

Pro

Runs on any PHPinstallation.

Available as a separatecomponent.

Contra

Extremely slow.

Very limited IMAPfeatureset.

Has a fair amount ofissues.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 9 / 44

Page 12: The Horde 4 PHP framework

PHP + IMAPPEAR-Net IMAP

Pro

Runs on any PHPinstallation.

Available as a separatecomponent.

Contra

Extremely slow.

Very limited IMAPfeatureset.

Has a fair amount ofissues.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 9 / 44

Page 13: The Horde 4 PHP framework

PHP + IMAPPEAR-Net IMAP

Pro

Runs on any PHPinstallation.

Available as a separatecomponent.

Contra

Extremely slow.

Very limited IMAPfeatureset.

Has a fair amount ofissues.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 9 / 44

Page 14: The Horde 4 PHP framework

PHP + IMAPPEAR-Net IMAP

Pro

Runs on any PHPinstallation.

Available as a separatecomponent.

Contra

Extremely slow.

Very limited IMAPfeatureset.

Has a fair amount ofissues.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 9 / 44

Page 15: The Horde 4 PHP framework

PHP + IMAPPEAR-Net IMAP

Pro

Runs on any PHPinstallation.

Available as a separatecomponent.

Contra

Extremely slow.

Very limited IMAPfeatureset.

Has a fair amount ofissues.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 9 / 44

Page 16: The Horde 4 PHP framework

PHP + IMAPPHP IMAP extension - based on the c-client library

Pro

Coded in C

Available by default inmany PHP installations.

Contra

Suprisingly slow for manyof the IMAP calls.

Not maintained anymore.

Very limited IMAPfeatureset.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 10 / 44

Page 17: The Horde 4 PHP framework

PHP + IMAPPHP IMAP extension - based on the c-client library

Pro

Coded in C

Available by default inmany PHP installations.

Contra

Suprisingly slow for manyof the IMAP calls.

Not maintained anymore.

Very limited IMAPfeatureset.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 10 / 44

Page 18: The Horde 4 PHP framework

PHP + IMAPPHP IMAP extension - based on the c-client library

Pro

Coded in C

Available by default inmany PHP installations.

Contra

Suprisingly slow for manyof the IMAP calls.

Not maintained anymore.

Very limited IMAPfeatureset.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 10 / 44

Page 19: The Horde 4 PHP framework

PHP + IMAPPHP IMAP extension - based on the c-client library

Pro

Coded in C

Available by default inmany PHP installations.

Contra

Suprisingly slow for manyof the IMAP calls.

Not maintained anymore.

Very limited IMAPfeatureset.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 10 / 44

Page 20: The Horde 4 PHP framework

PHP + IMAPPHP IMAP extension - based on the c-client library

Pro

Coded in C

Available by default inmany PHP installations.

Contra

Suprisingly slow for manyof the IMAP calls.

Not maintained anymore.

Very limited IMAPfeatureset.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 10 / 44

Page 21: The Horde 4 PHP framework

PHP + IMAPRoundcube IMAP code

Pro

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Decent IMAP featureset.

Contra

Not available as aseparate component.

No documentation.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 11 / 44

Page 22: The Horde 4 PHP framework

PHP + IMAPRoundcube IMAP code

Pro

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Decent IMAP featureset.

Contra

Not available as aseparate component.

No documentation.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 11 / 44

Page 23: The Horde 4 PHP framework

PHP + IMAPRoundcube IMAP code

Pro

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Decent IMAP featureset.

Contra

Not available as aseparate component.

No documentation.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 11 / 44

Page 24: The Horde 4 PHP framework

PHP + IMAPRoundcube IMAP code

Pro

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Decent IMAP featureset.

Contra

Not available as aseparate component.

No documentation.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 11 / 44

Page 25: The Horde 4 PHP framework

PHP + IMAPRoundcube IMAP code

Pro

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Decent IMAP featureset.

Contra

Not available as aseparate component.

No documentation.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 11 / 44

Page 26: The Horde 4 PHP framework

PHP + IMAPHorde Imap Client

Pro

Available as a separatecomponent.

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Extensive support formodern IMAP features.

Contra

Minimal documentation.

Complex library.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 12 / 44

Page 27: The Horde 4 PHP framework

PHP + IMAPHorde Imap Client

Pro

Available as a separatecomponent.

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Extensive support formodern IMAP features.

Contra

Minimal documentation.

Complex library.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 12 / 44

Page 28: The Horde 4 PHP framework

PHP + IMAPHorde Imap Client

Pro

Available as a separatecomponent.

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Extensive support formodern IMAP features.

Contra

Minimal documentation.

Complex library.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 12 / 44

Page 29: The Horde 4 PHP framework

PHP + IMAPHorde Imap Client

Pro

Available as a separatecomponent.

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Extensive support formodern IMAP features.

Contra

Minimal documentation.

Complex library.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 12 / 44

Page 30: The Horde 4 PHP framework

PHP + IMAPHorde Imap Client

Pro

Available as a separatecomponent.

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Extensive support formodern IMAP features.

Contra

Minimal documentation.

Complex library.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 12 / 44

Page 31: The Horde 4 PHP framework

PHP + IMAPHorde Imap Client

Pro

Available as a separatecomponent.

Runs on any PHPinstallation.

Very quick for a purePHP implementation.

Extensive support formodern IMAP features.

Contra

Minimal documentation.

Complex library.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 12 / 44

Page 32: The Horde 4 PHP framework

PHP + IMAPThe IMAP RFC specifications implemented in Horde Imap Client

RFC 2086/4314 - ACL, RFC 2087 - QUOTA, RFC2088 - LITERAL+, RFC 2195 -AUTH=CRAM-MD5, RFC 2221 -LOGIN-REFERRALS, RFC 2342 - NAMESPACE,RFC 2595/4616 - TLS & AUTH=PLAIN, RFC 2831- DIGEST-MD5 authentication mechanism., RFC2971 - ID, RFC 3348 - CHILDREN, RFC 3501 -IMAP4rev1 specification, RFC 3502 -MULTIAPPEND, RFC 3516 - BINARY, RFC 3691 -UNSELECT, RFC 4315 - UIDPLUS, RFC 4422 -SASL Authentication (for DIGEST-MD5), RFC 4466- Collected extensions (updates RFCs 2088, 3501,3502, 3516), RFC 4469/5550 - CATENATE, RFC4551 - CONDSTORE, RFC 4731 - ESEARCH, RFC4959 - SASL-IR, RFC 5032 - WITHIN, RFC 5161 -ENABLE, RFC 5162 - QRESYNC, RFC 5182 -SEARCHRES, RFC 5255 - LANGUAGE/I18NLEVEL,RFC 5256 - THREAD/SORT, RFC 5258 -LIST-EXTENDED, RFC 5267 - ESORT; PARTIALsearch return option, RFC 5464 - METADATA, RFC5530 - IMAP Response Codes, RFC 5819 -LIST-STATUS, RFC 5957 - SORT=DISPLAY, RFC6154 - SPECIAL-USE/CREATE-SPECIAL-USE, RFC6203 - SEARCH=FUZZY

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 13 / 44

Page 33: The Horde 4 PHP framework

Horde Imap ClientInstalling the Horde Imap Client is trivial

# Ensure the Horde PEAR s e r v e r i s knownpea r channe l−d i s c o v e r pea r . horde . org

# I n s t a l l the Horde Auto l oade r componentpea r i n s t a l l horde /Horde Auto l oade r

# I n s t a l l the Horde Imap C l i en t componentpea r i n s t a l l horde /Horde Imap C l i en t

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 14 / 44

Page 34: The Horde 4 PHP framework

Horde Imap ClientListing your IMAP mailboxes ...

<?php

// Prov i d e a u t o l o a d i n g o f c l a s s e sr e q u i r e o n c e ’ Horde / Auto l oade r / De f a u l t . php ’ ;

// Crea t e c l i e n t$c = Horde Imap C l i en t : : f a c t o r y (’ Socket ’ ,a r r a y ( ’ username ’ => ’ t e s t ’ , ’ password ’ => ’ t e s t ’ )

) ;

// P r i n t ma i l box l i s tp r i n t j o i n ( ”\n” , a r r a y k e y s ( $c−> l i s tM a i l b o x e s ( ’ * ’ ) ) ) ;

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 15 / 44

Page 35: The Horde 4 PHP framework

Horde Imap ClientListing your IMAP mailboxes ...

INBOXINBOX/AufgabenINBOX/Dra f t sINBOX/Ka lenderINBOX/KontakteINBOX/Ledger /2011/01/ companyINBOX/Ledger /2011/02/ companyINBOX/Neue Not i z enINBOX/Not i z enINBOX/SentINBOX/TestINBOX/ s t e s tINBOX/ t e s t

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 16 / 44

Page 36: The Horde 4 PHP framework

InvitationsInterface e-mail with calendaring

Photo: Anita Brown [http://www.flickr.com/photos/2bsquaredesigns/4786027883/ ]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 17 / 44

Page 37: The Horde 4 PHP framework

Demo Time - Invitations

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 18 / 44

Page 38: The Horde 4 PHP framework

Horde ItipInstalling the Horde Itip is trivial

# Ensure the Horde PEAR s e r v e r i s knownpea r channe l−d i s c o v e r pea r . horde . org

# I n s t a l l the Horde Auto l oade r componentpea r i n s t a l l horde /Horde Auto l oade r

# I n s t a l l the Ho r d e I t i p componentpea r i n s t a l l horde / Ho r d e I t i p

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 19 / 44

Page 39: The Horde 4 PHP framework

Horde Itip

BEGIN :VCALENDARPRODID:−//M i c r o s o f t Corpo ra t i on //Out look 11 . 0 MIMEDIR//ENVERSION : 2 . 0METHOD:REQUESTBEGIN :VEVENTATTENDEE ;ROLE=REQ−PARTICIPANT ;RSVP=TRUE:MAILTO: john . doe@example . orgORGANIZER :MAILTO: t e s t@examp l e . orgDTSTART:20081122 T190000ZDTEND:20081122 T193000ZSEQUENCE:0UID:040000008200 E00074C5B7101A82E0080000000020D533ED0E4CC901000000000000000010000000094C5C0A65E8CC4DB1AEC47FD1255FCD

DTSTAMP:20081121 T182534ZDESCRIPTION: Ze i t : Samstag \ , 22 . November 2008 20:00−20:30 (GMT+01:00)

Amsterdam \ , B e r l i n \ , Bern\ , Rom\ , Stockholm \ ,Wien.\\n\\n*˜*˜*˜*˜*˜*˜*˜*˜*˜*\\ n\\n\\n

SUMMARY: i n v i t a t i o n t e s t 2END:VEVENTEND:VCALENDAR

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 20 / 44

Page 40: The Horde 4 PHP framework

Horde ItipAnswering the iTip request

<?php

// Prov i de au t o l o ad i n g o f c l a s s e sr e q u i r e o n c e ’ Horde / Auto l oade r /De fau l t . php ’ ;

// Parse i T i p i n v i t a t i o n$vCal = new Ho r d e I c a l e n d a r ( ) ;$vCal−>par s e vCa l e nda r ( f i l e g e t c o n t e n t s ( ’ i t i p−i n v i t a t i o n . t x t ’ ) ) ;

// De sc r i be the i n v i t e d pe r son$ r e s ou r c e = new Ho r d e I t i p R e s ou r c e Ba s e ( ’ john . doe@example . com ’ , ’ John Doe ’ ) ;

// i T i p Handle r$ i T i p = Ho r d e I t i p : : f a c t o r y ( $vCal , $ r e s ou r c e ) ;

// Send r e sponse$ iT ip−>s e ndS i n g l e p a r tR e s pon s e (new Horde I t i p Re sponse Type Acc ept ( ) ,new Ho r d e I t i p R e s pon s e Op t i o n s Ho r d e ( ) ,new Horde Mai l Transport Mock ( )

) ;

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 21 / 44

Page 41: The Horde 4 PHP framework

Calendar

Photo: Ion-Bogdan Dumitrescu [http://www.flickr.com/photos/bitzi/265052661/ ]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 22 / 44

Page 42: The Horde 4 PHP framework

Demo Time - Calendar

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 23 / 44

Page 43: The Horde 4 PHP framework

Demo Time - Mobile Calendar

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 24 / 44

Page 44: The Horde 4 PHP framework

Entering datesEntering dates on the net today

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 25 / 44

Page 45: The Horde 4 PHP framework

Meeting time

Photo: Andrew Wipple [http://www.flickr.com/photos/andrewwippler/4428945418/ ]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 26 / 44

Page 46: The Horde 4 PHP framework

Meeting timeDo you arrange a meeting time like this ...

We should talk about theLinuxTag feedback sometimeduring 16th and 22nd ofMay 2011.

Sure. What about the 17thMay of 2011?

Sounds good. I’m availablefrom 8 am to 12 am thatday.

Lets say 9 am. That wouldwork fine for me.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 27 / 44

Page 47: The Horde 4 PHP framework

Meeting timeDo you arrange a meeting time like this ...

We should talk about theLinuxTag feedback sometimeduring 16th and 22nd ofMay 2011.

Sure. What about the 17thMay of 2011?

Sounds good. I’m availablefrom 8 am to 12 am thatday.

Lets say 9 am. That wouldwork fine for me.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 27 / 44

Page 48: The Horde 4 PHP framework

Meeting timeDo you arrange a meeting time like this ...

We should talk about theLinuxTag feedback sometimeduring 16th and 22nd ofMay 2011.

Sure. What about the 17thMay of 2011?

Sounds good. I’m availablefrom 8 am to 12 am thatday.

Lets say 9 am. That wouldwork fine for me.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 27 / 44

Page 49: The Horde 4 PHP framework

Meeting timeDo you arrange a meeting time like this ...

We should talk about theLinuxTag feedback sometimeduring 16th and 22nd ofMay 2011.

Sure. What about the 17thMay of 2011?

Sounds good. I’m availablefrom 8 am to 12 am thatday.

Lets say 9 am. That wouldwork fine for me.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 27 / 44

Page 50: The Horde 4 PHP framework

Meeting timeor rather like this ...

We should talk about theLinuxTag feedback sometimeduring next week.

Sure. What about tuesday?

Sounds good. I’m availablethe whole morning that day.

Lets say 9. That would workfine for me.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 28 / 44

Page 51: The Horde 4 PHP framework

Meeting timeor rather like this ...

We should talk about theLinuxTag feedback sometimeduring next week.

Sure. What about tuesday?

Sounds good. I’m availablethe whole morning that day.

Lets say 9. That would workfine for me.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 28 / 44

Page 52: The Horde 4 PHP framework

Meeting timeor rather like this ...

We should talk about theLinuxTag feedback sometimeduring next week.

Sure. What about tuesday?

Sounds good. I’m availablethe whole morning that day.

Lets say 9. That would workfine for me.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 28 / 44

Page 53: The Horde 4 PHP framework

Meeting timeor rather like this ...

We should talk about theLinuxTag feedback sometimeduring next week.

Sure. What about tuesday?

Sounds good. I’m availablethe whole morning that day.

Lets say 9. That would workfine for me.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 28 / 44

Page 54: The Horde 4 PHP framework

Entering datesHow might the widget look like?

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 29 / 44

Page 55: The Horde 4 PHP framework

Demo Time - Quick Add

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 30 / 44

Page 56: The Horde 4 PHP framework

Horde Date ParserInstalling the Horde Date Parser is trivial

# Ensure the Horde PEAR s e r v e r i s knownpea r channe l−d i s c o v e r pea r . horde . org

# I n s t a l l the Horde Auto l oade r componentpea r i n s t a l l horde /Horde Auto l oade r

# I n s t a l l the Horde Da t e Pa r s e r componentpea r i n s t a l l horde /Horde Da t e Pa r s e r

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 31 / 44

Page 57: The Horde 4 PHP framework

Horde Date ParserParsing your language...

<?php

// Prov i d e a u t o l o a d i n g o f c l a s s e sr e q u i r e o n c e ’ Horde / Auto l oade r / De f a u l t . php ’ ;$date = Horde Da t e Pa r s e r : : p a r s e (

’ nex t week tue sday morning ’) ;

echo $date . ”\n” ;

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 32 / 44

Page 58: The Horde 4 PHP framework

Horde Date Parser... to make your computer understand you.

2011−05−17 09 : 00 : 00

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 33 / 44

Page 59: The Horde 4 PHP framework

ComponentsThe webmail application has been the core element for 13 years now.

Webmail

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 34 / 44

Page 60: The Horde 4 PHP framework

ComponentsCalendaring is just another application.

Webmail Calendar

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 35 / 44

Page 61: The Horde 4 PHP framework

ComponentsBut there are applications for contacts, task, and notes as well.

Webmail Calendar Contacts Task Notes

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 36 / 44

Page 62: The Horde 4 PHP framework

ComponentsNot to forget the time tracker, the ticket system, a wiki, ....

Webmail Calendar Contacts Task Notes Time tracker

Tickets Wiki File manager Blogging ...

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 37 / 44

Page 63: The Horde 4 PHP framework

Components“horde” handles basic tasks such as authentication, permissions, ...

Webmail Calendar Contacts Task Notes ...

horde

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 38 / 44

Page 64: The Horde 4 PHP framework

ComponentsAnd below that live the “framework” components.

Webmail Calendar Contacts Task Notes ...

horde

Horde Core

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 39 / 44

Page 65: The Horde 4 PHP framework

ComponentsThe framework is independent of the applications.

Webmail Calendar Contacts Task Notes ...

horde

Horde Core

Horde Imap Client Horde Date Parser Horde Log Horde Autoloader ... 80 more ...

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 40 / 44

Page 66: The Horde 4 PHP framework

FlexibleHorde strives at being the most flexible groupware on the net.

Photo: Jon Lucas [http://www.flickr.com/photos/jonlucas/204150906/ ]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 41 / 44

Page 67: The Horde 4 PHP framework

Summary

Horde 4 PHP framework

The Horde 4 PHP framework is independent of the Hordeapplications.

The Horde 4 architecture is extremely modular.

Horde Applications

Horde can be adapted to the workflow instead of the other wayaround.

The groupware can be embedded into many different types ofinfrastructure.

Simply the most flexible web groupware system around.

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 42 / 44

Page 68: The Horde 4 PHP framework

http://www.horde.org

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 43 / 44

Page 69: The Horde 4 PHP framework

Questions

Questions?

E-Mail: [email protected]

Support (Horde LLC)

E-Mail: [email protected]

Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 44 / 44