source: sandbox/webservice/api/adapters/AdminAdapter.php @ 7845

Revision 7845, 5.0 KB checked in by alexandrecorreia, 11 years ago (diff)

Ticket #2507 - Adapater para o ExpressoAdmin para o funcionando do webservice

  • Property svn:executable set to *
Line 
1<?php
2
3class AdminAdapter extends ExpressoAdapter
4{
5        function __construct($id)
6        {
7                parent::__construct($id);
8        }
9
10        protected function loadConfAdmin()
11        {
12                $c = CreateObject('phpgwapi.config','expressoAdmin1_2');
13                $c->read_repository();
14               
15                $current_config = $c->config_data;
16                $ldap_manager = CreateObject('contactcenter.bo_ldap_manager');
17                $boemailadmin = CreateObject('emailadmin.bo');
18                $emailadmin_profile = $boemailadmin->getProfileList();
19                $_SESSION['phpgw_info']['expresso']['email_server'] = $boemailadmin->getProfile($emailadmin_profile[0]['profileID']);
20                $_SESSION['phpgw_info']['expresso']['user'] = $GLOBALS['phpgw_info']['user'];
21                $_SESSION['phpgw_info']['expresso']['server'] = $GLOBALS['phpgw_info']['server'];
22                $_SESSION['phpgw_info']['expresso']['cc_ldap_server'] = $ldap_manager ? $ldap_manager->srcs[1] : null;
23                $_SESSION['phpgw_info']['expresso']['expressoAdmin'] = $current_config;
24                $_SESSION['phpgw_info']['expresso']['global_denied_users'] = $GLOBALS['phpgw_info']['server']['global_denied_users'];
25                $_SESSION['phpgw_info']['expresso']['global_denied_groups'] = $GLOBALS['phpgw_info']['server']['global_denied_groups'];
26        }
27
28        protected function createUser($params)
29        {
30                // Get Profile for Expresso
31                $default = $this->getProfile($params['profileUser']);
32
33                if( $default == false )
34                {
35                        return array( "status" => false, "msg" => "Profile Invalid" );
36                }
37
38                // Get Groups,Context
39                $firstLetter = strtolower(substr( $params['givenname'], 0, 1));
40               
41                $isLetter = trim(preg_replace("/[^a-z]/", "", $firstLetter));
42
43                if( !$isLetter )
44                {
45                        return array( "status" => false, "msg" => "Type a letter" );
46                }
47                else
48                {
49                        if( $params['profileUser'] == "expresso.seed" )
50                        {
51                                $groups = $default['groups_user-'.$firstLetter];
52
53                                unset( $default['groups_user-'.$firstLetter] );
54
55                                foreach( $default as $key => $value )
56                                {
57                                        if( strpos( $key, "gidnumber-" ) !== false )
58                                        {
59                                                unset( $default[$key] );
60                                        }
61                                }
62                                $default['context'] = "ou=".$firstLetter.",".$default['context'];
63                        }
64                        else
65                        {
66                                $groups = $default['groups_user'];
67
68                                unset( $default['groups_user'] );
69
70                                // Context
71                                $context = explode(".", $params['profileUser'] );
72                                $default['context'] = "ou=".$context[1].",".$default['context'];
73                        }
74                }
75
76                // Groups
77                if( strpos($groups, ",") !== false )
78                {
79                        $groups_user = explode( "," , $groups );
80
81                        $params['groups'] = $groups_user;
82                        $params['gidnumber'] = $groups_user[0];
83                }
84                else
85                {
86                        $params['groups'][0] = $groups;
87                        $params['gidnumber'] = $groups;
88                }
89
90                // Merge Conf default + params
91                $createUser = array_merge( $params, $default );
92
93                $adminCreateUser = CreateObject('expressoAdmin1_2.user');
94
95                $_return = $adminCreateUser->create($createUser);
96
97                return $_return;
98        }
99
100        protected function deleteUser($params)
101        {
102                $adminDeleteUser = CreateObject('expressoAdmin1_2.user');
103               
104                $result = $adminDeleteUser->delete( $params );
105               
106                return $result;
107        }
108
109        protected function editUser($params)
110        {
111                $adminEditUser = CreateObject('expressoAdmin1_2.user');
112
113                $user = $adminEditUser->get_user_info($params);
114
115                return $user;
116        }
117
118        protected function listUsers($params)
119        {
120                $adminListUser = CreateObject('expressoAdmin1_2.functions');
121
122                $acl = $adminListUser->read_acl($GLOBALS['phpgw']->accounts->data['account_lid']);
123
124                $search = trim(preg_replace("/[^a-z_0-9_-_.]/", "", $params));
125
126                $accounts = $adminListUser->get_list( 'accounts', $search, $acl['contexts'] );
127                                                                       
128                return $accounts;
129        }
130
131        protected function renameUser($params)
132        {
133                $adminRenameUser = CreateObject('expressoAdmin1_2.user');
134
135                $result = $adminRenameUser->rename( $params );
136
137                return $result;
138        }
139
140        protected function updateUser($params)
141        {
142                $adminUpdateUser = CreateObject('expressoAdmin1_2.user');
143
144                // Get User Info
145                $userInfo = array();
146                $userInfo = $this->editUser($params['uidnumber']);
147
148                // Unset
149                unset($userInfo['groups_ldap']);
150                unset($userInfo['groups_info']);
151
152                // Arrgay Merge
153                $updateUser = array();
154                $updateUser = array_merge( $userInfo, $params );
155
156                $result = $adminUpdateUser->save($updateUser);
157
158                return $result;
159        }
160
161        protected function validateFields($params )
162        {
163                $ldap_functions = CreateObject('expressoAdmin1_2.ldap_functions');
164
165                return $ldap_functions->validate_fields($params);
166        }
167
168        protected function validatePermission( $params )
169        {
170                $action         = $params['action'];
171                $apps           = $params['apps'];
172                $manager        = $_SESSION['phpgw_info']['expresso']['user']['account_lid'];
173                $functions  = CreateObject('expressoAdmin1_2.functions');
174                $result         = false;
175
176                if( array_search('admin',$apps) !== False )
177                {
178                        if( $functions->check_acl( $manager, $action ) )
179                        {
180                                $result = true;
181                        }
182                }
183
184                return $result;
185        }
186
187        private function getProfile($profileUser)
188        {
189                $default = false;
190
191                if( file_exists( __DIR__ . '/../config/profileCreateUser.ini') )
192                {
193                        $profiles = parse_ini_file( __DIR__ . '/../config/profileCreateUser.ini', true );
194                       
195                        foreach( $profiles as $key => $values )
196                        {
197                                if( $key == $profileUser )
198                                {
199                                        $default = $values;
200                                }
201                        }
202                }
203
204                return $default;
205        }
206}
207
208?>
Note: See TracBrowser for help on using the repository browser.