summaryrefslogtreecommitdiffstats
path: root/apps/admin/lib/imap/IMAPManager.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/admin/lib/imap/IMAPManager.php')
-rw-r--r--apps/admin/lib/imap/IMAPManager.php48
1 files changed, 48 insertions, 0 deletions
diff --git a/apps/admin/lib/imap/IMAPManager.php b/apps/admin/lib/imap/IMAPManager.php
new file mode 100644
index 0000000..0cac78a
--- /dev/null
+++ b/apps/admin/lib/imap/IMAPManager.php
@@ -0,0 +1,48 @@
+<?php
+
+class IMAPManager
+{
+ protected static $adminclient = null;
+ public static function getAdminConnection()
+ {
+ // exists
+ if(self::$adminclient != null)
+ return self::$adminclient;
+
+ // create new instance
+ $server_settings = sfConfig::get('app_server_default');
+ $imap_settings = $server_settings['imap'];
+ self::$adminclient = new $imap_settings['client'];
+
+ // login
+ try
+ {
+ self::$adminclient->openConnection(
+ $imap_settings['host'].":".
+ $imap_settings['port']
+ );
+
+ $success = self::$adminclient->login(
+ $imap_settings['admin'],
+ $imap_settings['pass']
+ );
+
+ if(!$success)
+ throw new Exception("Failed to authenticate on IMAP server.");
+
+ } catch (Exception $e) {
+ LogEntryPeer::log($e->getMessage(), LogEntry::PRIO_ALERT);
+ }
+
+ return self::$adminclient;
+ }
+
+ public static function getAdminUsername()
+ {
+ $server_settings = sfConfig::get('app_server_default');
+ $imap_settings = $server_settings['imap'];
+ return $imap_settings['admin'];
+ }
+}
+
+?>