The Horde 4 PHP framework
Gunnar Wrobel
May, 13th 2011
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 1 / 44
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
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
Groupware
Photo: Denise Chan [http://www.flickr.com/photos/denn/5005046/ ]
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 4 / 44
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Calendar
Photo: Ion-Bogdan Dumitrescu [http://www.flickr.com/photos/bitzi/265052661/ ]
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 22 / 44
Entering datesEntering dates on the net today
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 25 / 44
Meeting time
Photo: Andrew Wipple [http://www.flickr.com/photos/andrewwippler/4428945418/ ]
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 26 / 44
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
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
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
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
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
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
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
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
Entering datesHow might the widget look like?
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 29 / 44
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
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
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
ComponentsThe webmail application has been the core element for 13 years now.
Webmail
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 34 / 44
ComponentsCalendaring is just another application.
Webmail Calendar
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 35 / 44
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
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
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
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
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
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
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
Questions
Questions?
E-Mail: [email protected]
Support (Horde LLC)
E-Mail: [email protected]
Gunnar Wrobel ([email protected]) Horde 4 May, 13th 2011 44 / 44