set json api functions parameter names
[tine20] / tine20 / Tinebase / SambaSAM.php
1 <?php
2 /**
3  * Tine 2.0
4  * 
5  * @package     Tinebase
6  * @subpackage  Samba
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @copyright   Copyright (c) 2009 Metaways Infosystems GmbH (http://www.metaways.de)
9  * @author      Cornelius Weiss <c.weiss@metaways.de>
10  */
11
12 /**
13  * class Tinebase_SambaSAM
14  * 
15  * Samba Account Managing
16  * 
17  * @package Tinebase
18  * @subpackage Samba
19  */
20 class Tinebase_SambaSAM
21 {
22     // const SQL = 'Sql';
23     
24     const LDAP = 'Ldap';
25
26    
27     /**
28      * holds the instance of the singleton
29      *
30      * @var Tinebase_SambaSAM
31      */
32     private static $_instance = NULL;
33     
34     /**
35      * the constructor
36      *
37      * don't use the constructor. use the singleton 
38      */
39     private function __construct() 
40     {
41         
42     }
43     
44     /**
45      * don't clone. Use the singleton.
46      *
47      */
48     private function __clone() 
49     {
50         
51     }
52     
53     /**
54      * the singleton pattern
55      *
56      * @return Tinebase_SambaSAM
57      */
58     public static function getInstance() 
59     {
60         if (self::$_instance === NULL) {
61             $backendType = self::getConfiguredBackend();
62             if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ .' samba sam backend: ' . $backendType);
63             
64             self::$_instance = self::factory($backendType);
65         }
66         
67         return self::$_instance;
68     }
69     
70     /**
71      * return an instance of the current backend
72      *
73      * @param   string $_backendType name of the backend
74      * @return  Tinebase_SambaSAM_Abstract
75      * @throws  Tinebase_Exception_InvalidArgument
76      */
77     public static function factory($_backendType) 
78     {
79         switch($_backendType) {
80             case self::LDAP:
81                 $ldapOptions = Tinebase_User::getBackendConfiguration();
82                 $sambaOptions = Tinebase_Core::getConfig()->samba->toArray();
83                 $options = array_merge($ldapOptions, $sambaOptions);
84                 
85                 $result = new Tinebase_SambaSAM_Ldap($options);
86                 break;
87                 
88             // case self::SQL:
89             //     $result = Tinebase_SambaSAM_Sql::getInstance();
90             //     break;
91             
92             default:
93                 throw new Tinebase_Exception_InvalidArgument("Backend type $_backendType not implemented.");
94         }
95         
96         return $result;
97     }
98     
99     /**
100      * returns the configured backend
101      * 
102      * @return string
103      */
104     public static function getConfiguredBackend()
105     {
106         if(isset(Tinebase_Core::getConfig()->samba)) {
107             $backendType = Tinebase_Core::getConfig()->samba->get('backend', self::LDAP);
108             $backendType = ucfirst($backendType);
109         } else {
110             $backendType = self::LDAP;
111         }
112         return $backendType;
113     }
114 }