SlideShare a Scribd company logo
1 of 69
Download to read offline
The Horde 4 PHP framework

                                   Gunnar Wrobel

                                   wrobel@horde.org


                                   May, 13th 2011




Gunnar Wrobel (wrobel@horde.org)        Horde 4        May, 13th 2011   1 / 44
Components
Components = Modules = Libraries = Packages = ...




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

Gunnar Wrobel (wrobel@horde.org)                    Horde 4         May, 13th 2011   2 / 44
The Horde 4 PHP framework
There are more than 90 components available from http://pear.horde.org.




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

Gunnar Wrobel (wrobel@horde.org)                     Horde 4                May, 13th 2011   3 / 44
Groupware




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

Gunnar Wrobel (wrobel@horde.org)                     Horde 4       May, 13th 2011   4 / 44
Groupware

                                             Definition
                                             “[...] groupware [...] is computer software designed to
                                             help people involved in a common task achieve their
                                             goals [...].”a

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



                                             Remote
                                             It is usually associated with
                                             team members not physically
                                             co-located.

                                             Asynchronous
                                             Communication between team
                                             members is primarily
                                             asynchronous.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                                     May, 13th 2011          5 / 44
Groupware

                                             Definition
                                             “[...] groupware [...] is computer software designed to
                                             help people involved in a common task achieve their
                                             goals [...].”a

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



                                             Remote
                                             It is usually associated with
                                             team members not physically
                                             co-located.

                                             Asynchronous
                                             Communication between team
                                             members is primarily
                                             asynchronous.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                                     May, 13th 2011          5 / 44
Groupware

                                             Definition
                                             “[...] groupware [...] is computer software designed to
                                             help people involved in a common task achieve their
                                             goals [...].”a

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



                                             Remote
                                             It is usually associated with
                                             team members not physically
                                             co-located.

                                             Asynchronous
                                             Communication between team
                                             members is primarily
                                             asynchronous.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                                     May, 13th 2011          5 / 44
E-mail
An E-Mail client is the corner stone of most groupware systems




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

 Gunnar Wrobel (wrobel@horde.org)                    Horde 4        May, 13th 2011   6 / 44
Demo Time - E-Mail




Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   7 / 44
Demo Time - Mobile




Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   8 / 44
PHP + IMAP
PEAR-Net IMAP


                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Available as a separate
                                                   component.

                                             Contra
                                                   Extremely slow.
                                                   Very limited IMAP
                                                   featureset.
                                                   Has a fair amount of
                                                   issues.


Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   9 / 44
PHP + IMAP
PEAR-Net IMAP


                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Available as a separate
                                                   component.

                                             Contra
                                                   Extremely slow.
                                                   Very limited IMAP
                                                   featureset.
                                                   Has a fair amount of
                                                   issues.


Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   9 / 44
PHP + IMAP
PEAR-Net IMAP


                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Available as a separate
                                                   component.

                                             Contra
                                                   Extremely slow.
                                                   Very limited IMAP
                                                   featureset.
                                                   Has a fair amount of
                                                   issues.


Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   9 / 44
PHP + IMAP
PEAR-Net IMAP


                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Available as a separate
                                                   component.

                                             Contra
                                                   Extremely slow.
                                                   Very limited IMAP
                                                   featureset.
                                                   Has a fair amount of
                                                   issues.


Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   9 / 44
PHP + IMAP
PEAR-Net IMAP


                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Available as a separate
                                                   component.

                                             Contra
                                                   Extremely slow.
                                                   Very limited IMAP
                                                   featureset.
                                                   Has a fair amount of
                                                   issues.


Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   9 / 44
PHP + IMAP
PHP IMAP extension - based on the c-client library



                                                  Pro
                                                        Coded in C
                                                        Available by default in
                                                        many PHP installations.

                                                  Contra
                                                        Suprisingly slow for many
                                                        of the IMAP calls.
                                                        Not maintained anymore.
                                                        Very limited IMAP
                                                        featureset.



 Gunnar Wrobel (wrobel@horde.org)       Horde 4                      May, 13th 2011   10 / 44
PHP + IMAP
PHP IMAP extension - based on the c-client library



                                                  Pro
                                                        Coded in C
                                                        Available by default in
                                                        many PHP installations.

                                                  Contra
                                                        Suprisingly slow for many
                                                        of the IMAP calls.
                                                        Not maintained anymore.
                                                        Very limited IMAP
                                                        featureset.



 Gunnar Wrobel (wrobel@horde.org)       Horde 4                      May, 13th 2011   10 / 44
PHP + IMAP
PHP IMAP extension - based on the c-client library



                                                  Pro
                                                        Coded in C
                                                        Available by default in
                                                        many PHP installations.

                                                  Contra
                                                        Suprisingly slow for many
                                                        of the IMAP calls.
                                                        Not maintained anymore.
                                                        Very limited IMAP
                                                        featureset.



 Gunnar Wrobel (wrobel@horde.org)       Horde 4                      May, 13th 2011   10 / 44
PHP + IMAP
PHP IMAP extension - based on the c-client library



                                                  Pro
                                                        Coded in C
                                                        Available by default in
                                                        many PHP installations.

                                                  Contra
                                                        Suprisingly slow for many
                                                        of the IMAP calls.
                                                        Not maintained anymore.
                                                        Very limited IMAP
                                                        featureset.



 Gunnar Wrobel (wrobel@horde.org)       Horde 4                      May, 13th 2011   10 / 44
PHP + IMAP
PHP IMAP extension - based on the c-client library



                                                  Pro
                                                        Coded in C
                                                        Available by default in
                                                        many PHP installations.

                                                  Contra
                                                        Suprisingly slow for many
                                                        of the IMAP calls.
                                                        Not maintained anymore.
                                                        Very limited IMAP
                                                        featureset.



 Gunnar Wrobel (wrobel@horde.org)       Horde 4                      May, 13th 2011   10 / 44
PHP + IMAP
Roundcube IMAP code



                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Decent IMAP featureset.

                                             Contra
                                                   Not available as a
                                                   separate component.
                                                   No documentation.



Gunnar Wrobel (wrobel@horde.org)   Horde 4                      May, 13th 2011   11 / 44
PHP + IMAP
Roundcube IMAP code



                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Decent IMAP featureset.

                                             Contra
                                                   Not available as a
                                                   separate component.
                                                   No documentation.



Gunnar Wrobel (wrobel@horde.org)   Horde 4                      May, 13th 2011   11 / 44
PHP + IMAP
Roundcube IMAP code



                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Decent IMAP featureset.

                                             Contra
                                                   Not available as a
                                                   separate component.
                                                   No documentation.



Gunnar Wrobel (wrobel@horde.org)   Horde 4                      May, 13th 2011   11 / 44
PHP + IMAP
Roundcube IMAP code



                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Decent IMAP featureset.

                                             Contra
                                                   Not available as a
                                                   separate component.
                                                   No documentation.



Gunnar Wrobel (wrobel@horde.org)   Horde 4                      May, 13th 2011   11 / 44
PHP + IMAP
Roundcube IMAP code



                                             Pro
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Decent IMAP featureset.

                                             Contra
                                                   Not available as a
                                                   separate component.
                                                   No documentation.



Gunnar Wrobel (wrobel@horde.org)   Horde 4                      May, 13th 2011   11 / 44
PHP + IMAP
Horde Imap Client


                                             Pro
                                                   Available as a separate
                                                   component.
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Extensive support for
                                                   modern IMAP features.

                                             Contra
                                                   Minimal documentation.
                                                   Complex library.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   12 / 44
PHP + IMAP
Horde Imap Client


                                             Pro
                                                   Available as a separate
                                                   component.
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Extensive support for
                                                   modern IMAP features.

                                             Contra
                                                   Minimal documentation.
                                                   Complex library.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   12 / 44
PHP + IMAP
Horde Imap Client


                                             Pro
                                                   Available as a separate
                                                   component.
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Extensive support for
                                                   modern IMAP features.

                                             Contra
                                                   Minimal documentation.
                                                   Complex library.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   12 / 44
PHP + IMAP
Horde Imap Client


                                             Pro
                                                   Available as a separate
                                                   component.
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Extensive support for
                                                   modern IMAP features.

                                             Contra
                                                   Minimal documentation.
                                                   Complex library.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   12 / 44
PHP + IMAP
Horde Imap Client


                                             Pro
                                                   Available as a separate
                                                   component.
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Extensive support for
                                                   modern IMAP features.

                                             Contra
                                                   Minimal documentation.
                                                   Complex library.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   12 / 44
PHP + IMAP
Horde Imap Client


                                             Pro
                                                   Available as a separate
                                                   component.
                                                   Runs on any PHP
                                                   installation.
                                                   Very quick for a pure
                                                   PHP implementation.
                                                   Extensive support for
                                                   modern IMAP features.

                                             Contra
                                                   Minimal documentation.
                                                   Complex library.

Gunnar Wrobel (wrobel@horde.org)   Horde 4                       May, 13th 2011   12 / 44
PHP + IMAP
The IMAP RFC specifications implemented in Horde Imap Client


                                                 RFC 2086/4314 - ACL, RFC 2087 - QUOTA, RFC
                                                2088 - 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., RFC
                                                2971 - 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, RFC
                                                4551 - CONDSTORE, RFC 4731 - ESEARCH, RFC
                                                4959 - 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; PARTIAL
                                                search return option, RFC 5464 - METADATA, RFC
                                                5530 - IMAP Response Codes, RFC 5819 -
                                                LIST-STATUS, RFC 5957 - SORT=DISPLAY, RFC
                                                6154 - SPECIAL-USE/CREATE-SPECIAL-USE, RFC
                                                6203 - SEARCH=FUZZY




Gunnar Wrobel (wrobel@horde.org)      Horde 4                                May, 13th 2011        13 / 44
Horde Imap Client
Installing the Horde Imap Client is trivial




# E n s u r e t h e Horde PEAR s e r v e r i s known
p e a r c h a n n e l −d i s c o v e r p e a r . h o r d e . o r g

# I n s t a l l t h e H o r d e A u t o l o a d e r component
pear i n s t a l l horde / Horde A utoloader

# I n s t a l l t h e H o r d e I m a p C l i e n t component
pear i n s t a l l horde / Horde Imap Client




 Gunnar Wrobel (wrobel@horde.org)             Horde 4                May, 13th 2011   14 / 44
Horde Imap Client
Listing your IMAP mailboxes ...


<?php

// P r o v i d e a u t o l o a d i n g o f c l a s s e s
r e q u i r e o n c e ’ Horde / A u t o l o a d e r / D e f a u l t . php ’ ;

// C r e a t e c l i e n t
°c = H o r d e I m a p C l i e n t : : f a c t o r y (
    ’ Socket ’ ,
    a r r a y ( ’ us erna me ’ => ’ t e s t ’ , ’ p a s s w o r d ’ => ’ t e s t ’ )
);

// P r i n t m a i l b o x l i s t
p r i n t j o i n ( ”n” , a r r a y k e y s ( ° c−>l i s t M a i l b o x e s ( ’ ¶ ’ ) ) ) ;


 Gunnar Wrobel (wrobel@horde.org)          Horde 4                      May, 13th 2011   15 / 44
Horde Imap Client
Listing your IMAP mailboxes ...


INBOX
INBOX/ A uf ga ben
INBOX/ D r a f t s
INBOX/ K a l e n d e r
INBOX/ K o n t a k t e
INBOX/ L e d g e r /2011/01/ company
INBOX/ L e d g e r /2011/02/ company
INBOX/Neue N o t i z e n
INBOX/ N o t i z e n
INBOX/ S ent
INBOX/ T e s t
INBOX/ s t e s t
INBOX/ t e s t


 Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   16 / 44
Invitations
Interface e-mail with calendaring




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

 Gunnar Wrobel (wrobel@horde.org)                   Horde 4                      May, 13th 2011   17 / 44
Demo Time - Invitations




Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   18 / 44
Horde Itip
Installing the Horde Itip is trivial




# E n s u r e t h e Horde PEAR s e r v e r i s known
p e a r c h a n n e l −d i s c o v e r p e a r . h o r d e . o r g

# I n s t a l l t h e H o r d e A u t o l o a d e r component
pear i n s t a l l horde / Horde A utoloader

# I n s t a l l t h e H o r d e I t i p component
pear i n s t a l l horde / H o r d e I t i p




 Gunnar Wrobel (wrobel@horde.org)        Horde 4                     May, 13th 2011   19 / 44
Horde Itip


BEGIN : VCALENDAR
PRODID:−// M i c r o s o f t C o r p o r a t i o n // O u t l o o k 1 1 . 0 MIMEDIR//EN
VERSION : 2 . 0
METHOD: REQUEST
BEGIN : VEVENT
ATTENDEE ; ROLE=REQ            −PARTICIPANT ; RSVP=TRUE : MAILTO: j o h n . doe @e xam pl e . o r g
ORGANIZER : MAILTO : t e s t @ e x a m p l e . o r g
DTSTART: 2 0 0 8 1 1 2 2 T190000Z
DTEND: 2 0 0 8 1 1 2 2 T193000Z
SEQUENCE : 0
UID : 0 4 0 0 0 0 0 0 8 2 0 0 E00074C5B7101A82E0080000000020D533ED0E4CC9010000000000000000100
  00000094 C5C0A65E8CC4DB1AEC47FD1255FCD
DTSTAMP: 2 0 0 8 1 1 2 1 T182534Z
DESCRIPTION: Z e i t : Samstag  , 2 2 . November 2008 20: 00 − 20: 30 (GMT+01: 00)
   Amsterdam  , B e r l i n  , Be rn  , Rom , Stoc k hol m  ,
   Wien. nn ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶  nnn
SUMMARY: i n v i t a t i o n t e s t 2
END : VEVENT
END : VCALENDAR




Gunnar Wrobel (wrobel@horde.org)                    Horde 4                              May, 13th 2011   20 / 44
Horde Itip
Answering the iTip request



<?php

// P r o v i d e a u t o l o a d i n g o f c l a s s e s
r e q u i r e o n c e ’ Horde / A u t o l o a d e r / D e f a u l t . php ’ ;

// P a r s e i T i p i n v i t a t i o n
° v C a l = new H o r d e I c a l e n d a r ( ) ;
° vC al− a r s e v C a l e n d a 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 ’ ) ) ;
          >p

// D e s c r i b e t h e i n v i t e d p e r s o n
° r e s o u r c e = new H o r d e I t i p R e s o u r c e B a s e ( ’ j o h n . doe @e xam pl e . com ’ , ’ John Doe ’ ) ;

// i T i p H a n d l e r
° i T i p = H o r d e I t i p : : f a c t o r y ( ° vC al , ° r e s o u r c e ) ;

// Send r e s p o n s e
° i T i p− e n d S i n g l e p a r t R e s p o n s e (
          >s
        new H o r d e I t i p R e s p o n s e T y p e A c c e p t ( ) ,
        new H o r d e I t i p R e s p o n s e O p t i o n s H o r d e ( ) ,
        new H o r d e M a i l T r a n s p o r t M o c k ( )
);




 Gunnar Wrobel (wrobel@horde.org)                                          Horde 4                                    May, 13th 2011   21 / 44
Calendar




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

Gunnar Wrobel (wrobel@horde.org)                     Horde 4                    May, 13th 2011   22 / 44
Demo Time - Calendar




Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   23 / 44
Demo Time - Mobile Calendar




Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   24 / 44
Entering dates
Entering dates on the net today




 Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   25 / 44
Meeting time




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

Gunnar Wrobel (wrobel@horde.org)                    Horde 4                      May, 13th 2011   26 / 44
Meeting time
Do you arrange a meeting time like this ...

                                                    We should talk about the
                                                    LinuxTag feedback sometime
                                                    during 16th and 22nd of
                                                    May 2011.

                                                    Sure. What about the 17th
                                                    May of 2011?

                                                    Sounds good. I’m available
                                                    from 8 am to 12 am that
                                                    day.

                                                    Lets say 9 am. That would
                                                    work fine for me.
 Gunnar Wrobel (wrobel@horde.org)         Horde 4                     May, 13th 2011   27 / 44
Meeting time
Do you arrange a meeting time like this ...

                                                    We should talk about the
                                                    LinuxTag feedback sometime
                                                    during 16th and 22nd of
                                                    May 2011.

                                                    Sure. What about the 17th
                                                    May of 2011?

                                                    Sounds good. I’m available
                                                    from 8 am to 12 am that
                                                    day.

                                                    Lets say 9 am. That would
                                                    work fine for me.
 Gunnar Wrobel (wrobel@horde.org)         Horde 4                     May, 13th 2011   27 / 44
Meeting time
Do you arrange a meeting time like this ...

                                                    We should talk about the
                                                    LinuxTag feedback sometime
                                                    during 16th and 22nd of
                                                    May 2011.

                                                    Sure. What about the 17th
                                                    May of 2011?

                                                    Sounds good. I’m available
                                                    from 8 am to 12 am that
                                                    day.

                                                    Lets say 9 am. That would
                                                    work fine for me.
 Gunnar Wrobel (wrobel@horde.org)         Horde 4                     May, 13th 2011   27 / 44
Meeting time
Do you arrange a meeting time like this ...

                                                    We should talk about the
                                                    LinuxTag feedback sometime
                                                    during 16th and 22nd of
                                                    May 2011.

                                                    Sure. What about the 17th
                                                    May of 2011?

                                                    Sounds good. I’m available
                                                    from 8 am to 12 am that
                                                    day.

                                                    Lets say 9 am. That would
                                                    work fine for me.
 Gunnar Wrobel (wrobel@horde.org)         Horde 4                     May, 13th 2011   27 / 44
Meeting time
or rather like this ...



                                              We should talk about the
                                              LinuxTag feedback sometime
                                              during next week.

                                              Sure. What about tuesday?

                                              Sounds good. I’m available
                                              the whole morning that day.

                                              Lets say 9. That would work
                                              fine for me.



 Gunnar Wrobel (wrobel@horde.org)   Horde 4                     May, 13th 2011   28 / 44
Meeting time
or rather like this ...



                                              We should talk about the
                                              LinuxTag feedback sometime
                                              during next week.

                                              Sure. What about tuesday?

                                              Sounds good. I’m available
                                              the whole morning that day.

                                              Lets say 9. That would work
                                              fine for me.



 Gunnar Wrobel (wrobel@horde.org)   Horde 4                     May, 13th 2011   28 / 44
Meeting time
or rather like this ...



                                              We should talk about the
                                              LinuxTag feedback sometime
                                              during next week.

                                              Sure. What about tuesday?

                                              Sounds good. I’m available
                                              the whole morning that day.

                                              Lets say 9. That would work
                                              fine for me.



 Gunnar Wrobel (wrobel@horde.org)   Horde 4                     May, 13th 2011   28 / 44
Meeting time
or rather like this ...



                                              We should talk about the
                                              LinuxTag feedback sometime
                                              during next week.

                                              Sure. What about tuesday?

                                              Sounds good. I’m available
                                              the whole morning that day.

                                              Lets say 9. That would work
                                              fine for me.



 Gunnar Wrobel (wrobel@horde.org)   Horde 4                     May, 13th 2011   28 / 44
Entering dates
How might the widget look like?




 Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   29 / 44
Demo Time - Quick Add




Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   30 / 44
Horde Date Parser
Installing the Horde Date Parser is trivial




# E n s u r e t h e Horde PEAR s e r v e r i s known
p e a r c h a n n e l −d i s c o v e r p e a r . h o r d e . o r g

# I n s t a l l t h e H o r d e A u t o l o a d e r component
pear i n s t a l l horde / Horde A utoloader

# I n s t a l l t h e H o r d e D a t e P a r s e r component
pear i n s t a l l horde / Horde Date Parser




 Gunnar Wrobel (wrobel@horde.org)             Horde 4                May, 13th 2011   31 / 44
Horde Date Parser
Parsing your language...




<?php

// P r o v i d e a u t o l o a d i n g o f c l a s s e s
r e q u i r e o n c e ’ Horde / A u t o l o a d e r / D e f a u l t . php ’ ;

°date = Horde Date Parser : : parse (
    ’ n e x t week t u e s d a y morni ng ’
);

echo ° d a t e . ” n” ;




 Gunnar Wrobel (wrobel@horde.org)         Horde 4                       May, 13th 2011   32 / 44
Horde Date Parser
... to make your computer understand you.




2011−05−17 0 9 : 0 0 : 0 0




 Gunnar Wrobel (wrobel@horde.org)       Horde 4   May, 13th 2011   33 / 44
Components
The webmail application has been the core element for 13 years now.




Webmail




 Gunnar Wrobel (wrobel@horde.org)       Horde 4                       May, 13th 2011   34 / 44
Components
Calendaring is just another application.




 Webmail           Calendar




 Gunnar Wrobel (wrobel@horde.org)          Horde 4   May, 13th 2011   35 / 44
Components
But there are applications for contacts, task, and notes as well.




 Webmail           Calendar         Contacts         Task      Notes




 Gunnar Wrobel (wrobel@horde.org)              Horde 4                 May, 13th 2011   36 / 44
Components
Not to forget the time tracker, the ticket system, a wiki, ....




 Webmail           Calendar          Contacts         Task        Notes    Time tracker




  Tickets              Wiki         File manager Blogging          ...




 Gunnar Wrobel (wrobel@horde.org)               Horde 4                   May, 13th 2011   37 / 44
Components
“horde” handles basic tasks such as authentication, permissions, ...




 Webmail           Calendar           Contacts         Task            Notes             ...




            horde




 Gunnar Wrobel (wrobel@horde.org)         Horde 4                       May, 13th 2011   38 / 44
Components
And below that live the “framework” components.




Webmail           Calendar         Contacts       Task   Notes             ...




           horde




       Horde Core




Gunnar Wrobel (wrobel@horde.org)       Horde 4            May, 13th 2011   39 / 44
Components
The 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 (wrobel@horde.org)                      Horde 4                              May, 13th 2011   40 / 44
Flexible
Horde strives at being the most flexible groupware on the net.




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

 Gunnar Wrobel (wrobel@horde.org)                    Horde 4           May, 13th 2011   41 / 44
Summary


Horde 4 PHP framework
      The Horde 4 PHP framework is independent of the Horde
      applications.
      The Horde 4 architecture is extremely modular.

Horde Applications
      Horde can be adapted to the workflow instead of the other way
      around.
      The groupware can be embedded into many different types of
      infrastructure.
      Simply the most flexible web groupware system around.



Gunnar Wrobel (wrobel@horde.org)   Horde 4               May, 13th 2011   42 / 44
http://www.horde.org




Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   43 / 44
Questions




Questions?
E-Mail: wrobel@horde.org

Support (Horde LLC)
E-Mail: info@horde.org




Gunnar Wrobel (wrobel@horde.org)   Horde 4   May, 13th 2011   44 / 44

More Related Content

Recently uploaded

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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"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
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 

Recently uploaded (20)

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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
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
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"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
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

The Horde 4 PHP framework

  • 1. The Horde 4 PHP framework Gunnar Wrobel wrobel@horde.org May, 13th 2011 Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 1 / 44
  • 2. Components Components = Modules = Libraries = Packages = ... Photo: Rudolf Ammann [http://www.flickr.com/photos/rka/1415516/ ] Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 2 / 44
  • 3. The Horde 4 PHP framework There are more than 90 components available from http://pear.horde.org. Photo: Aaron Merrifield [http://www.flickr.com/photos/spammt/4823025103/ ] Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 3 / 44
  • 4. Groupware Photo: Denise Chan [http://www.flickr.com/photos/denn/5005046/ ] Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 4 / 44
  • 5. Groupware Definition “[...] groupware [...] is computer software designed to help people involved in a common task achieve their goals [...].”a a http://en.wikipedia.org/wiki/Groupware Remote It is usually associated with team members not physically co-located. Asynchronous Communication between team members is primarily asynchronous. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 5 / 44
  • 6. Groupware Definition “[...] groupware [...] is computer software designed to help people involved in a common task achieve their goals [...].”a a http://en.wikipedia.org/wiki/Groupware Remote It is usually associated with team members not physically co-located. Asynchronous Communication between team members is primarily asynchronous. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 5 / 44
  • 7. Groupware Definition “[...] groupware [...] is computer software designed to help people involved in a common task achieve their goals [...].”a a http://en.wikipedia.org/wiki/Groupware Remote It is usually associated with team members not physically co-located. Asynchronous Communication between team members is primarily asynchronous. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 5 / 44
  • 8. E-mail An E-Mail client is the corner stone of most groupware systems ´ Photo: Eole Wind [http://www.flickr.com/photos/eole/4500783172/ ] Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 6 / 44
  • 9. Demo Time - E-Mail Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 7 / 44
  • 10. Demo Time - Mobile Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 8 / 44
  • 11. PHP + IMAP PEAR-Net IMAP Pro Runs on any PHP installation. Available as a separate component. Contra Extremely slow. Very limited IMAP featureset. Has a fair amount of issues. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 9 / 44
  • 12. PHP + IMAP PEAR-Net IMAP Pro Runs on any PHP installation. Available as a separate component. Contra Extremely slow. Very limited IMAP featureset. Has a fair amount of issues. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 9 / 44
  • 13. PHP + IMAP PEAR-Net IMAP Pro Runs on any PHP installation. Available as a separate component. Contra Extremely slow. Very limited IMAP featureset. Has a fair amount of issues. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 9 / 44
  • 14. PHP + IMAP PEAR-Net IMAP Pro Runs on any PHP installation. Available as a separate component. Contra Extremely slow. Very limited IMAP featureset. Has a fair amount of issues. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 9 / 44
  • 15. PHP + IMAP PEAR-Net IMAP Pro Runs on any PHP installation. Available as a separate component. Contra Extremely slow. Very limited IMAP featureset. Has a fair amount of issues. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 9 / 44
  • 16. PHP + IMAP PHP IMAP extension - based on the c-client library Pro Coded in C Available by default in many PHP installations. Contra Suprisingly slow for many of the IMAP calls. Not maintained anymore. Very limited IMAP featureset. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 10 / 44
  • 17. PHP + IMAP PHP IMAP extension - based on the c-client library Pro Coded in C Available by default in many PHP installations. Contra Suprisingly slow for many of the IMAP calls. Not maintained anymore. Very limited IMAP featureset. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 10 / 44
  • 18. PHP + IMAP PHP IMAP extension - based on the c-client library Pro Coded in C Available by default in many PHP installations. Contra Suprisingly slow for many of the IMAP calls. Not maintained anymore. Very limited IMAP featureset. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 10 / 44
  • 19. PHP + IMAP PHP IMAP extension - based on the c-client library Pro Coded in C Available by default in many PHP installations. Contra Suprisingly slow for many of the IMAP calls. Not maintained anymore. Very limited IMAP featureset. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 10 / 44
  • 20. PHP + IMAP PHP IMAP extension - based on the c-client library Pro Coded in C Available by default in many PHP installations. Contra Suprisingly slow for many of the IMAP calls. Not maintained anymore. Very limited IMAP featureset. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 10 / 44
  • 21. PHP + IMAP Roundcube IMAP code Pro Runs on any PHP installation. Very quick for a pure PHP implementation. Decent IMAP featureset. Contra Not available as a separate component. No documentation. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 11 / 44
  • 22. PHP + IMAP Roundcube IMAP code Pro Runs on any PHP installation. Very quick for a pure PHP implementation. Decent IMAP featureset. Contra Not available as a separate component. No documentation. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 11 / 44
  • 23. PHP + IMAP Roundcube IMAP code Pro Runs on any PHP installation. Very quick for a pure PHP implementation. Decent IMAP featureset. Contra Not available as a separate component. No documentation. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 11 / 44
  • 24. PHP + IMAP Roundcube IMAP code Pro Runs on any PHP installation. Very quick for a pure PHP implementation. Decent IMAP featureset. Contra Not available as a separate component. No documentation. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 11 / 44
  • 25. PHP + IMAP Roundcube IMAP code Pro Runs on any PHP installation. Very quick for a pure PHP implementation. Decent IMAP featureset. Contra Not available as a separate component. No documentation. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 11 / 44
  • 26. PHP + IMAP Horde Imap Client Pro Available as a separate component. Runs on any PHP installation. Very quick for a pure PHP implementation. Extensive support for modern IMAP features. Contra Minimal documentation. Complex library. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 12 / 44
  • 27. PHP + IMAP Horde Imap Client Pro Available as a separate component. Runs on any PHP installation. Very quick for a pure PHP implementation. Extensive support for modern IMAP features. Contra Minimal documentation. Complex library. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 12 / 44
  • 28. PHP + IMAP Horde Imap Client Pro Available as a separate component. Runs on any PHP installation. Very quick for a pure PHP implementation. Extensive support for modern IMAP features. Contra Minimal documentation. Complex library. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 12 / 44
  • 29. PHP + IMAP Horde Imap Client Pro Available as a separate component. Runs on any PHP installation. Very quick for a pure PHP implementation. Extensive support for modern IMAP features. Contra Minimal documentation. Complex library. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 12 / 44
  • 30. PHP + IMAP Horde Imap Client Pro Available as a separate component. Runs on any PHP installation. Very quick for a pure PHP implementation. Extensive support for modern IMAP features. Contra Minimal documentation. Complex library. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 12 / 44
  • 31. PHP + IMAP Horde Imap Client Pro Available as a separate component. Runs on any PHP installation. Very quick for a pure PHP implementation. Extensive support for modern IMAP features. Contra Minimal documentation. Complex library. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 12 / 44
  • 32. PHP + IMAP The IMAP RFC specifications implemented in Horde Imap Client RFC 2086/4314 - ACL, RFC 2087 - QUOTA, RFC 2088 - 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., RFC 2971 - 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, RFC 4551 - CONDSTORE, RFC 4731 - ESEARCH, RFC 4959 - 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; PARTIAL search return option, RFC 5464 - METADATA, RFC 5530 - IMAP Response Codes, RFC 5819 - LIST-STATUS, RFC 5957 - SORT=DISPLAY, RFC 6154 - SPECIAL-USE/CREATE-SPECIAL-USE, RFC 6203 - SEARCH=FUZZY Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 13 / 44
  • 33. Horde Imap Client Installing the Horde Imap Client is trivial # E n s u r e t h e Horde PEAR s e r v e r i s known p e a r c h a n n e l −d i s c o v e r p e a r . h o r d e . o r g # I n s t a l l t h e H o r d e A u t o l o a d e r component pear i n s t a l l horde / Horde A utoloader # I n s t a l l t h e H o r d e I m a p C l i e n t component pear i n s t a l l horde / Horde Imap Client Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 14 / 44
  • 34. Horde Imap Client Listing your IMAP mailboxes ... <?php // P r o v i d e a u t o l o a d i n g o f c l a s s e s r e q u i r e o n c e ’ Horde / A u t o l o a d e r / D e f a u l t . php ’ ; // C r e a t e c l i e n t °c = H o r d e I m a p C l i e n t : : f a c t o r y ( ’ Socket ’ , a r r a y ( ’ us erna me ’ => ’ t e s t ’ , ’ p a s s w o r d ’ => ’ t e s t ’ ) ); // P r i n t m a i l b o x l i s t p r i n t j o i n ( ”n” , a r r a y k e y s ( ° c−>l i s t M a i l b o x e s ( ’ ¶ ’ ) ) ) ; Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 15 / 44
  • 35. Horde Imap Client Listing your IMAP mailboxes ... INBOX INBOX/ A uf ga ben INBOX/ D r a f t s INBOX/ K a l e n d e r INBOX/ K o n t a k t e INBOX/ L e d g e r /2011/01/ company INBOX/ L e d g e r /2011/02/ company INBOX/Neue N o t i z e n INBOX/ N o t i z e n INBOX/ S ent INBOX/ T e s t INBOX/ s t e s t INBOX/ t e s t Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 16 / 44
  • 36. Invitations Interface e-mail with calendaring Photo: Anita Brown [http://www.flickr.com/photos/2bsquaredesigns/4786027883/ ] Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 17 / 44
  • 37. Demo Time - Invitations Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 18 / 44
  • 38. Horde Itip Installing the Horde Itip is trivial # E n s u r e t h e Horde PEAR s e r v e r i s known p e a r c h a n n e l −d i s c o v e r p e a r . h o r d e . o r g # I n s t a l l t h e H o r d e A u t o l o a d e r component pear i n s t a l l horde / Horde A utoloader # I n s t a l l t h e H o r d e I t i p component pear i n s t a l l horde / H o r d e I t i p Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 19 / 44
  • 39. Horde Itip BEGIN : VCALENDAR PRODID:−// M i c r o s o f t C o r p o r a t i o n // O u t l o o k 1 1 . 0 MIMEDIR//EN VERSION : 2 . 0 METHOD: REQUEST BEGIN : VEVENT ATTENDEE ; ROLE=REQ −PARTICIPANT ; RSVP=TRUE : MAILTO: j o h n . doe @e xam pl e . o r g ORGANIZER : MAILTO : t e s t @ e x a m p l e . o r g DTSTART: 2 0 0 8 1 1 2 2 T190000Z DTEND: 2 0 0 8 1 1 2 2 T193000Z SEQUENCE : 0 UID : 0 4 0 0 0 0 0 0 8 2 0 0 E00074C5B7101A82E0080000000020D533ED0E4CC9010000000000000000100 00000094 C5C0A65E8CC4DB1AEC47FD1255FCD DTSTAMP: 2 0 0 8 1 1 2 1 T182534Z DESCRIPTION: Z e i t : Samstag , 2 2 . November 2008 20: 00 − 20: 30 (GMT+01: 00) Amsterdam , B e r l i n , Be rn , Rom , Stoc k hol m , Wien. nn ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ ˜ ¶ nnn SUMMARY: i n v i t a t i o n t e s t 2 END : VEVENT END : VCALENDAR Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 20 / 44
  • 40. Horde Itip Answering the iTip request <?php // P r o v i d e a u t o l o a d i n g o f c l a s s e s r e q u i r e o n c e ’ Horde / A u t o l o a d e r / D e f a u l t . php ’ ; // P a r s e i T i p i n v i t a t i o n ° v C a l = new H o r d e I c a l e n d a r ( ) ; ° vC al− a r s e v C a l e n d a 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 ’ ) ) ; >p // D e s c r i b e t h e i n v i t e d p e r s o n ° r e s o u r c e = new H o r d e I t i p R e s o u r c e B a s e ( ’ j o h n . doe @e xam pl e . com ’ , ’ John Doe ’ ) ; // i T i p H a n d l e r ° i T i p = H o r d e I t i p : : f a c t o r y ( ° vC al , ° r e s o u r c e ) ; // Send r e s p o n s e ° i T i p− e n d S i n g l e p a r t R e s p o n s e ( >s new H o r d e I t i p R e s p o n s e T y p e A c c e p t ( ) , new H o r d e I t i p R e s p o n s e O p t i o n s H o r d e ( ) , new H o r d e M a i l T r a n s p o r t M o c k ( ) ); Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 21 / 44
  • 41. Calendar Photo: Ion-Bogdan Dumitrescu [http://www.flickr.com/photos/bitzi/265052661/ ] Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 22 / 44
  • 42. Demo Time - Calendar Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 23 / 44
  • 43. Demo Time - Mobile Calendar Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 24 / 44
  • 44. Entering dates Entering dates on the net today Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 25 / 44
  • 45. Meeting time Photo: Andrew Wipple [http://www.flickr.com/photos/andrewwippler/4428945418/ ] Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 26 / 44
  • 46. Meeting time Do you arrange a meeting time like this ... We should talk about the LinuxTag feedback sometime during 16th and 22nd of May 2011. Sure. What about the 17th May of 2011? Sounds good. I’m available from 8 am to 12 am that day. Lets say 9 am. That would work fine for me. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 27 / 44
  • 47. Meeting time Do you arrange a meeting time like this ... We should talk about the LinuxTag feedback sometime during 16th and 22nd of May 2011. Sure. What about the 17th May of 2011? Sounds good. I’m available from 8 am to 12 am that day. Lets say 9 am. That would work fine for me. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 27 / 44
  • 48. Meeting time Do you arrange a meeting time like this ... We should talk about the LinuxTag feedback sometime during 16th and 22nd of May 2011. Sure. What about the 17th May of 2011? Sounds good. I’m available from 8 am to 12 am that day. Lets say 9 am. That would work fine for me. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 27 / 44
  • 49. Meeting time Do you arrange a meeting time like this ... We should talk about the LinuxTag feedback sometime during 16th and 22nd of May 2011. Sure. What about the 17th May of 2011? Sounds good. I’m available from 8 am to 12 am that day. Lets say 9 am. That would work fine for me. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 27 / 44
  • 50. Meeting time or rather like this ... We should talk about the LinuxTag feedback sometime during next week. Sure. What about tuesday? Sounds good. I’m available the whole morning that day. Lets say 9. That would work fine for me. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 28 / 44
  • 51. Meeting time or rather like this ... We should talk about the LinuxTag feedback sometime during next week. Sure. What about tuesday? Sounds good. I’m available the whole morning that day. Lets say 9. That would work fine for me. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 28 / 44
  • 52. Meeting time or rather like this ... We should talk about the LinuxTag feedback sometime during next week. Sure. What about tuesday? Sounds good. I’m available the whole morning that day. Lets say 9. That would work fine for me. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 28 / 44
  • 53. Meeting time or rather like this ... We should talk about the LinuxTag feedback sometime during next week. Sure. What about tuesday? Sounds good. I’m available the whole morning that day. Lets say 9. That would work fine for me. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 28 / 44
  • 54. Entering dates How might the widget look like? Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 29 / 44
  • 55. Demo Time - Quick Add Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 30 / 44
  • 56. Horde Date Parser Installing the Horde Date Parser is trivial # E n s u r e t h e Horde PEAR s e r v e r i s known p e a r c h a n n e l −d i s c o v e r p e a r . h o r d e . o r g # I n s t a l l t h e H o r d e A u t o l o a d e r component pear i n s t a l l horde / Horde A utoloader # I n s t a l l t h e H o r d e D a t e P a r s e r component pear i n s t a l l horde / Horde Date Parser Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 31 / 44
  • 57. Horde Date Parser Parsing your language... <?php // P r o v i d e a u t o l o a d i n g o f c l a s s e s r e q u i r e o n c e ’ Horde / A u t o l o a d e r / D e f a u l t . php ’ ; °date = Horde Date Parser : : parse ( ’ n e x t week t u e s d a y morni ng ’ ); echo ° d a t e . ” n” ; Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 32 / 44
  • 58. Horde Date Parser ... to make your computer understand you. 2011−05−17 0 9 : 0 0 : 0 0 Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 33 / 44
  • 59. Components The webmail application has been the core element for 13 years now. Webmail Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 34 / 44
  • 60. Components Calendaring is just another application. Webmail Calendar Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 35 / 44
  • 61. Components But there are applications for contacts, task, and notes as well. Webmail Calendar Contacts Task Notes Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 36 / 44
  • 62. Components Not to forget the time tracker, the ticket system, a wiki, .... Webmail Calendar Contacts Task Notes Time tracker Tickets Wiki File manager Blogging ... Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 37 / 44
  • 63. Components “horde” handles basic tasks such as authentication, permissions, ... Webmail Calendar Contacts Task Notes ... horde Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 38 / 44
  • 64. Components And below that live the “framework” components. Webmail Calendar Contacts Task Notes ... horde Horde Core Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 39 / 44
  • 65. Components The 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 (wrobel@horde.org) Horde 4 May, 13th 2011 40 / 44
  • 66. Flexible Horde strives at being the most flexible groupware on the net. Photo: Jon Lucas [http://www.flickr.com/photos/jonlucas/204150906/ ] Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 41 / 44
  • 67. Summary Horde 4 PHP framework The Horde 4 PHP framework is independent of the Horde applications. The Horde 4 architecture is extremely modular. Horde Applications Horde can be adapted to the workflow instead of the other way around. The groupware can be embedded into many different types of infrastructure. Simply the most flexible web groupware system around. Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 42 / 44
  • 69. Questions Questions? E-Mail: wrobel@horde.org Support (Horde LLC) E-Mail: info@horde.org Gunnar Wrobel (wrobel@horde.org) Horde 4 May, 13th 2011 44 / 44