I have a quick question regarding the GO programming structure which I don't understand very well.
Take for example the e-mail module.
It has all the MVC components under the controller / model directories. Those classes extend the GO base classes found in: go/base for functions like GO_Base_Mail_Imap . All that is fine and easy to understand, but then why are the same functions redefined in the classes directory ?
Right now here's what I see.
Imap functionality for example is defined twice:
1. In /usr/share/groupoffice/go/base/mail/Imap.php 2. In /usr/share/groupoffice/classes/mail/imap.class.inc
#1 is used by the e-mail module as part of the MVC ( controller / model ) #2 is used by the e-mail module directly from json.php as part of the cached_imap class
Why are there two different imap classes used here ?
Say that in our custom module we overwrite parts of the E-mail > Accounts -> preferences. We add a new drop-down selection that has to be saved into the database in a new column. How can that be executed and saved at the same time when you press 'Apply' or 'OK' in that tab ?
It would seem easy enough if we could modify the e-mail module directly, but can it be done from our own module by overriding some functions ?