Overview

Packages

  • IMP
  • None

Classes

  • IMP
  • IMP_Ajax_Application
  • IMP_Ajax_Imple_ContactAutoCompleter
  • IMP_Ajax_Imple_PassphraseDialog
  • IMP_Ajax_Queue
  • IMP_Api
  • IMP_Auth
  • IMP_Block_Newmail
  • IMP_Block_Summary
  • IMP_Compose
  • IMP_Compose_Exception
  • IMP_Compose_Stationery
  • IMP_Contents
  • IMP_Crypt_Pgp
  • IMP_Crypt_Smime
  • IMP_Dimp
  • IMP_Exception
  • IMP_Factory_AuthImap
  • IMP_Factory_Compose
  • IMP_Factory_Contents
  • IMP_Factory_Flags
  • IMP_Factory_Identity
  • IMP_Factory_Imap
  • IMP_Factory_Imaptree
  • IMP_Factory_Mail
  • IMP_Factory_Mailbox
  • IMP_Factory_MailboxList
  • IMP_Factory_MimeViewer
  • IMP_Factory_Pgp
  • IMP_Factory_Quota
  • IMP_Factory_Search
  • IMP_Factory_Sentmail
  • IMP_Factory_Smime
  • IMP_Filter
  • IMP_Flag_Base
  • IMP_Flag_Imap
  • IMP_Flag_Imap_Answered
  • IMP_Flag_Imap_Deleted
  • IMP_Flag_Imap_Draft
  • IMP_Flag_Imap_Flagged
  • IMP_Flag_Imap_Forwarded
  • IMP_Flag_Imap_Junk
  • IMP_Flag_Imap_NotJunk
  • IMP_Flag_Imap_Seen
  • IMP_Flag_System_Attachment
  • IMP_Flag_System_Encrypted
  • IMP_Flag_System_HighPriority
  • IMP_Flag_System_List
  • IMP_Flag_System_LowPriority
  • IMP_Flag_System_Match_Address
  • IMP_Flag_System_Match_Flag
  • IMP_Flag_System_Match_Header
  • IMP_Flag_System_Personal
  • IMP_Flag_System_Signed
  • IMP_Flag_System_Unseen
  • IMP_Flag_User
  • IMP_Flags
  • IMP_Imap
  • IMP_Imap_Acl
  • IMP_Imap_Exception
  • IMP_Imap_PermanentFlags
  • IMP_Imap_Thread
  • IMP_Imap_Tree
  • IMP_Indices
  • IMP_Indices_Form
  • IMP_LoginTasks_SystemTask_GarbageCollection
  • IMP_LoginTasks_SystemTask_Upgrade
  • IMP_LoginTasks_SystemTask_UpgradeAuth
  • IMP_LoginTasks_Task_Autocreate
  • IMP_LoginTasks_Task_DeleteAttachmentsMonthly
  • IMP_LoginTasks_Task_DeleteSentmailMonthly
  • IMP_LoginTasks_Task_FilterOnLogin
  • IMP_LoginTasks_Task_PurgeSentmail
  • IMP_LoginTasks_Task_PurgeSpam
  • IMP_LoginTasks_Task_PurgeTrash
  • IMP_LoginTasks_Task_RecoverDraft
  • IMP_LoginTasks_Task_RenameSentmailMonthly
  • IMP_Mailbox
  • IMP_Mailbox_List
  • IMP_Mailbox_List_Track
  • IMP_Maillog
  • IMP_Menu_Dimp
  • IMP_Message
  • IMP_Mime_Status
  • IMP_Mime_Viewer_Alternative
  • IMP_Mime_Viewer_Appledouble
  • IMP_Mime_Viewer_Audio
  • IMP_Mime_Viewer_Enriched
  • IMP_Mime_Viewer_Externalbody
  • IMP_Mime_Viewer_Html
  • IMP_Mime_Viewer_Images
  • IMP_Mime_Viewer_Itip
  • IMP_Mime_Viewer_Mdn
  • IMP_Mime_Viewer_Partial
  • IMP_Mime_Viewer_Pdf
  • IMP_Mime_Viewer_Pgp
  • IMP_Mime_Viewer_Plain
  • IMP_Mime_Viewer_Related
  • IMP_Mime_Viewer_Rfc822
  • IMP_Mime_Viewer_Smil
  • IMP_Mime_Viewer_Smime
  • IMP_Mime_Viewer_Status
  • IMP_Mime_Viewer_Vcard
  • IMP_Mime_Viewer_Video
  • IMP_Mime_Viewer_Zip
  • IMP_Notification_Event_Status
  • IMP_Notification_Handler_Decorator_ImapAlerts
  • IMP_Notification_Handler_Decorator_NewmailNotify
  • IMP_Notification_Listener_AjaxStatus
  • Imp_Prefs_Identity
  • IMP_Prefs_Ui
  • IMP_Quota
  • IMP_Quota_Base
  • IMP_Quota_Command
  • IMP_Quota_Hook
  • IMP_Quota_Imap
  • IMP_Quota_Maildir
  • IMP_Quota_Mdaemon
  • IMP_Quota_Mercury32
  • IMP_Quota_Null
  • IMP_Quota_Sql
  • IMP_Search
  • IMP_Search_Element
  • IMP_Search_Element_Attachment
  • IMP_Search_Element_Autogenerated
  • IMP_Search_Element_Bulk
  • IMP_Search_Element_Contacts
  • IMP_Search_Element_Date
  • IMP_Search_Element_Flag
  • IMP_Search_Element_Header
  • IMP_Search_Element_Mailinglist
  • IMP_Search_Element_Or
  • IMP_Search_Element_Personal
  • IMP_Search_Element_Recipient
  • IMP_Search_Element_Size
  • IMP_Search_Element_Text
  • IMP_Search_Element_Within
  • IMP_Search_Filter
  • IMP_Search_Filter_Attachment
  • IMP_Search_Filter_Autogenerated
  • IMP_Search_Filter_Builtin
  • IMP_Search_Filter_Bulk
  • IMP_Search_Filter_Contacts
  • IMP_Search_Filter_Mailinglist
  • IMP_Search_Filter_Personal
  • IMP_Search_Query
  • IMP_Search_Vfolder
  • IMP_Search_Vfolder_Builtin
  • IMP_Search_Vfolder_Vinbox
  • IMP_Search_Vfolder_Vtrash
  • IMP_Sentmail
  • IMP_Sentmail_Base
  • IMP_Sentmail_Null
  • IMP_Sentmail_Sql
  • IMP_Spam
  • IMP_Test
  • IMP_Tree_Flist
  • IMP_Tree_Jquerymobile
  • IMP_Tree_Simplehtml
  • IMP_Ui_Compose
  • IMP_Ui_Editor
  • IMP_Ui_Folder
  • IMP_Ui_Headers
  • IMP_Ui_Imageview
  • IMP_Ui_Mailbox
  • IMP_Ui_Message
  • IMP_Ui_Mimp
  • IMP_Ui_Search
  • IMP_Views_Compose
  • IMP_Views_ListMessages
  • IMP_Views_ShowMessage
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * The IMP_Test:: class provides the IMP configuration for the test script.
  4:  *
  5:  * Copyright 2010-2012 Horde LLC (http://www.horde.org/)
  6:  *
  7:  * See the enclosed file COPYING for license information (GPL). If you
  8:  * did not receive this file, see http://www.horde.org/licenses/gpl.
  9:  *
 10:  * @author   Michael Slusarz <slusarz@horde.org>
 11:  * @category Horde
 12:  * @license  http://www.horde.org/licenses/gpl GPL
 13:  * @package  IMP
 14:  */
 15: class IMP_Test extends Horde_Test
 16: {
 17:     /**
 18:      * The module list
 19:      *
 20:      * @var array
 21:      */
 22:     protected $_moduleList = array(
 23:         'zip' => array(
 24:             'descrip' => 'Zip Support',
 25:             'error' => 'The zip extension is used when importing compress mailboxes. IMP will fallback to using the zlib extension (if available) to read this data which should be sufficient for most installations. If zip support is desired, compile PHP with <code>--with-zip</code> to activate.'
 26:         )
 27:     );
 28: 
 29:     /**
 30:      * PHP settings list.
 31:      *
 32:      * @var array
 33:      */
 34:     protected $_settingsList = array(
 35:         'file_uploads'  =>  array(
 36:             'error' => 'file_uploads must be enabled to use various features of IMP. See the INSTALL file for more information.',
 37:             'setting' => true
 38:         )
 39:     );
 40: 
 41:     /**
 42:      * PEAR modules list.
 43:      *
 44:      * @var array
 45:      */
 46:     protected $_pearList = array();
 47: 
 48:     /**
 49:      * Required configuration files.
 50:      *
 51:      * @var array
 52:      */
 53:     protected $_fileList = array(
 54:         'config/conf.php' => 'The file <code>./config/conf.php</code> appears to be missing. You must generate this file as an administrator via Horde.  See horde/docs/INSTALL.',
 55:     );
 56: 
 57:     /**
 58:      * Inter-Horde application dependencies.
 59:      *
 60:      * @var array
 61:      */
 62:     protected $_appList = array(
 63:         'gollem' => array(
 64:             'error' => 'Gollem provides access to local VFS filesystems to attach files.',
 65:             'version' => '2.0'
 66:         ),
 67:         'ingo' => array(
 68:             'error' => 'Ingo provides basic mail filtering capabilities to IMP.',
 69:             'version' => '2.0'
 70:         ),
 71:         'nag' => array(
 72:             'error' => 'Nag allows tasks to be directly created from e-mail data.',
 73:             'version' => '3.0'
 74:         ),
 75:         'turba' => array(
 76:             'error' => 'Turba provides addressbook/contacts capabilities to IMP.',
 77:             'version' => '3.0'
 78:         )
 79:     );
 80: 
 81:     /**
 82:      * Any application specific tests that need to be done.
 83:      *
 84:      * @return string  HTML output.
 85:      */
 86:     public function appTests()
 87:     {
 88:         $ret = '<h1>Mail Server Support Test</h1>';
 89: 
 90:         if (Horde_Util::getPost('user') && Horde_Util::getPost('passwd')) {
 91:             $ret .= $this->_doConnectionTest();
 92:         }
 93: 
 94:         $self_url = Horde::selfUrl()->add('app', 'imp');
 95: 
 96:         Horde::startBuffer();
 97:         require IMP_TEMPLATES . '/test/mailserver.inc';
 98: 
 99:         return $ret . Horde::endBuffer();
100:     }
101: 
102:     /**
103:      * Perform mail server support test.
104:      *
105:      * @return string  HTML output.
106:      */
107:     protected function _doConnectionTest()
108:     {
109:         $imap_config = array(
110:             'username' => Horde_Util::getPost('user'),
111:             'password' => Horde_Util::getPost('passwd'),
112:             'hostspec' => Horde_Util::getPost('server'),
113:             'port' => Horde_Util::getPost('port'),
114:             'secure' => Horde_Util::getPost('encrypt')
115:         );
116: 
117:         $driver = (Horde_Util::getPost('server_type') == 'imap')
118:             ? 'Socket'
119:             : 'Socket_Pop3';
120: 
121:         try {
122:             $imap_client = Horde_Imap_Client::factory($driver, $imap_config);
123:         } catch (Horde_Imap_Client_Exception $e) {
124:             return $this->_errorMsg($e);
125:         }
126: 
127:         $ret = '<strong>Attempting to login to the server:</strong> ';
128: 
129:         try {
130:             $imap_client->login();
131:         } catch (Horde_Imap_Client_Exception $e) {
132:             return $this->_errorMsg($e);
133:         }
134: 
135:         $ret .= '<span style="color:green">SUCCESS</span><p />';
136: 
137:         if ($driver == 'Socket') {
138:             $ret .= '<strong>The following IMAP server information was discovered from the server:</strong>' .
139:                 '<blockquote><em>Namespace Information</em><blockquote><pre>';
140: 
141:             try {
142:                 $namespaces = $imap_client->getNamespaces();
143:                 foreach ($namespaces as $val) {
144:                     switch ($val['type']) {
145:                     case Horde_Imap_Client::NS_PERSONAL:
146:                         $type = 'Personal';
147:                         break;
148: 
149:                     case Horde_Imap_Client::NS_OTHER:
150:                         $type = 'Other Users\'';
151:                         break;
152: 
153:                     case Horde_Imap_Client::NS_SHARED:
154:                         $type = 'Shared';
155:                         break;
156:                     }
157: 
158:                     $ret .= 'NAMESPACE: "' . htmlspecialchars($val['name']) . "\"\n" .
159:                         'DELIMITER: ' . htmlspecialchars($val['delimiter']) . "\n" .
160:                         'TYPE: ' . htmlspecialchars($type) . "\n\n";
161:                 }
162:             } catch (Horde_Imap_Client_Exception $e) {
163:                 $this->_errorMsg($e);
164:             }
165: 
166:             $ret .= '</pre></blockquote></blockquote>' .
167:                 '<blockquote><em>IMAP server capabilities:</em><blockquote><pre>';
168: 
169:             try {
170:                 foreach ($imap_client->capability() as $key => $val) {
171:                     if (is_array($val)) {
172:                         foreach ($val as $val2) {
173:                             $ret .= htmlspecialchars($key) . '=' . htmlspecialchars($val2) . "\n";
174:                         }
175:                     } else {
176:                         $ret .= htmlspecialchars($key) . "\n";
177:                     }
178:                 }
179:             } catch (Horde_Imap_Client_Exception $e) {
180:                 $this->_errorMsg($e);
181:             }
182: 
183:             $ret .= '</pre></blockquote></blockquote>' .
184:                 '<blockquote><em>Does IMAP server support UTF-8 in search queries?</em> ';
185: 
186:             if ($imap_client->validSearchCharset('UTF-8')) {
187:                 $ret .= '<span style="color:green">YES</span>';
188:             } else {
189:                 $ret .= '<span style="color:red">NO</span>';
190:             }
191: 
192:             $ret .= '</blockquote>';
193: 
194:             try {
195:                 $id_info = $imap_client->getID();
196:                 if (!empty($id_info)) {
197:                     $ret .= '<blockquote><em>IMAP server information:</em><blockquote><pre>';
198:                     foreach ($id_info as $key => $val) {
199:                         $ret .= htmlspecialchars("$key:  $val") . "\n";
200:                     }
201:                     $ret .= '</pre></blockquote></blockquote>';
202:                 }
203:             } catch (Horde_Imap_Client_Exception $e) {
204:                 // Ignore lack of ID capability.
205:             }
206: 
207:             // @todo IMAP Charset Search Support
208:         } else {
209:             $ret .= '<strong>Checking for the UIDL capability:</strong> ';
210: 
211:             if ($imap_client->queryCapability('UIDL')) {
212:                 $ret .= '<span style="color:green">SUCCESS</span><p />';
213:             } else {
214:                 return $this->_errorMsg(new Exception('The POP3 server does not support the *REQUIRED* UIDL capability.'));
215:             }
216:         }
217: 
218:         return $ret;
219:     }
220: 
221:     /**
222:      * Return error message from mail server testing.
223:      *
224:      * @return string  HTML output.
225:      */
226:     protected function _errorMsg($e)
227:     {
228:         return '<span style="color:red">ERROR</span> - The server returned the following error message:' .
229:             '<pre>' . $e->getMessage() . '</pre><p />';
230:     }
231: 
232: }
233: 
API documentation generated by ApiGen