Il giorno 27/dic/2011, alle ore 09:17, "A.L.E.C" <alec@alec.pl> ha scritto:

Besides the new skin in 0.8 I'd like to start working on Roundcube
Framework. It means Roundcube will provide a set of classes that can be
used by other projects. Now, rcube_imap_generic class is known as one of
the best IMAP handling classes, but there are people that would like to
use something more abstract i.e. rcube_imap class. This is not simple
now because of its dependencies.

So, here are some steps I want to make:
- create abstract rcube_storage class and build rcube_imap as
rcube_storage implementation (driver) - this is to allow creation of
other drivers, e.g. SQL-based, POP3,
- exclude mime related functions from rcube_imap into new rcube_mime class,
- split main.inc and rcube_shared.inc functions into a few classes:
rcube_converter, rcube_ui, rcube_utils and maybe some into existing classes,
- create rcube_framework class, that can be a parent for rcmail class,
- framework-related changes to existing classes, e.g.
  - get rid of $rcmail object usage in classes,
  - can we exclude rcube_user class?
  - make output/html/template classes optional,
- unify codestyle according to our CS ruleset


Hi Alec,

I'm working on roundcube source to add natively the multiple IMAP account support, and I created an abstraction class for rcube_imap. Beside that, I didn't want modify too much code, so I left many function calls as original, even that isn't the best option (I'm keeping my local SVN repo synced with roundcube trunk). I implemented successfully multiple account (IMAP and SMTP for now, I'm working to non-imap driver) and a simple authentication with LDAP. I'm using a simple DB table for login-to-account link.

I know that the goal of roundcube is to be a simple webmail, but what if we can support, for example, multiple accounts, centralized login, and more? We can leave to the sysadmin (who installs roundcube) the choice between a simple webmail and a more sophisticated webmail "application".

Beside that, I can help with roundcube development ;-)

PS: my code was written for maintain maximum compatibility with main roundcube development, so is very ugly because of many tricks and hack that are needed to avoid changing rouncube core code.

Enrico