Michael M Slusarz <[email protected]> a écrit :

Quoting Laurent Foucher <[email protected]>:

Hi,

Based on the script found on the wiki, default folders are created if not exists with imp4. Here the script i use :

if (!function_exists('_imp_hook_postlogin')) {
    function _imp_hook_postlogin($actionID, $isLogin)
    {
       global $prefs;
       require_once '/usr/share/horde3/imp/lib/Folder.php';

       $imp_folder = &IMP_Folder::singleton();
       $folder_options = array(
'sent_mail_folder', 'drafts_folder', 'trash_folder', 'spam_folder'
       );
       foreach ($folder_options as $this_folder) {
           $folder = $prefs->getValue($this_folder, true);
           if ($folder) {
               $folder = IMP::folderPref($folder, true);
               if (!$imp_folder->exists($folder)) {
                   $imp_folder->create($folder, true);
               }
           }
       }
    }
}

These folders will all be auto-created the first time they are needed.

If you want to auto-create on first login so that the user actually sees the mailbox in folder lists, you should use the authinitialized hook.


I would like auto-create on the first login. To do that, with your advice, i have just write the following script
in imp/config/hooks.php :

 public function appinitialized()
{
        $vars = Horde_Variables::getDefaultVariables();
        $imp_folder = $GLOBALS['injector']->getInstance('IMP_Folder');
        $imaptree = $GLOBALS['injector']->getInstance('IMP_Imap_Tree');
        $folder_list = isset($vars->folder_list)
            ? array_map(array('IMP_Mailbox', 'formFrom'), $vars->folder_list)
            : array();
//
        $folder_options = array(
            'sent_mail_folder', 'drafts_folder', 'trash_folder', 'spam_folder'
        );
//
        foreach ($folder_options as $this_folder) {
        $folder_to_create = Horde_Api::getPreference('imp',$this_folder);
Horde::logMessage(sprintf('FOLDER : %s', $folder_to_create), 'NOTICE');
                try {
                    $imaptree->createMailboxName(
                        $folder_list[0],
Horde_String::convertCharset($folder_to_create, 'UTF-8', 'UTF7-IMAP')
                    )->create();
                } catch (Horde_Exception $e) {
                    $notification->push($e);
                }
        }
}

It seems to work fine. If you think that there is no mistakes, i can upgrade the wiki with it.

Laurent.


--
IMP mailing list
Frequently Asked Questions: http://horde.org/faq/
To unsubscribe, mail: [email protected]

Reply via email to