function synchronizeFolders() { $mailboxes = $this->_inbox->get_mailboxes(); $subscribed = $this->_inbox->get_subscribed(); $subscribed_folders_names = array(); foreach ($subscribed as $folder) { $subscribed_folders_names[] = imap::utf7_imap_decode($folder['name']); } $mailbox_names = array(); foreach ($mailboxes as $mailbox) { $folders_name = imap::utf7_imap_decode($mailbox['name']); $mailbox_names[] = $folders_name; $folder = array(); $folder['folders_name'] = $folders_name; $folder['folders_flag'] = EMAIL_FOLDER_INBOX; $folder['accounts_id'] = $this->_data['accounts_id']; $folder['parent_id'] = toC_Email_Accounts_Admin::getParentId($this->_data, $folders_name, $mailbox['delimiter']); $folder['attributes'] = $mailbox['attributes']; $folder['subscribed'] = in_array($folders_name, $subscribed_folders_names) ? 1 : 0; $folder['delimiter'] = $mailbox['delimiter']; $exist_folder = toC_Email_Accounts_Admin::getFolderByName($this->_data['accounts_id'], $folders_name); if ($exist_folder !== false) { $folder['folders_id'] = $exist_folder['folders_id']; $folder['folders_flag'] = $exist_folder['folders_flag']; toC_Email_Accounts_Admin::updateFolder($folder); } else { $this->saveCachedFolder($folder); } } $folders = toC_Email_Accounts_Admin::getFolders($this->_data['accounts_id']); foreach ($folders as $folder) { if (!in_array($folder['folders_name'], $mailbox_names)) { if (!toC_Email_Accounts_Admin::deleteFolder($this->_data, $folder['folders_id'])) { return false; } } } }