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

Revision 7854, 4.8 KB checked in by alexandrecorreia, 9 years ago (diff)

Ticket #2507 - Correções dentro da API do webservice do expresso

  • 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                }
71
72                // Groups
73                if( strpos($groups, ",") !== false )
74                {
75                        $groups_user = explode( "," , $groups );
76
77                        $params['groups'] = $groups_user;
78                        $params['gidnumber'] = $groups_user[0];
79                }
80                else
81                {
82                        $params['groups'][0] = $groups;
83                        $params['gidnumber'] = $groups;
84                }
85
86                // Merge Conf default + params
87                $createUser = array_merge( $params, $default );
88
89                $adminCreateUser = CreateObject('expressoAdmin1_2.user');
90
91                $_return = $adminCreateUser->create($createUser);
92
93                return $_return;
94        }
95
96        protected function deleteUser($params)
97        {
98                $adminDeleteUser = CreateObject('expressoAdmin1_2.user');
99               
100                $result = $adminDeleteUser->delete( $params );
101               
102                return $result;
103        }
104
105        protected function editUser($params)
106        {
107                $adminEditUser = CreateObject('expressoAdmin1_2.user');
108
109                $user = $adminEditUser->get_user_info($params);
110
111                return $user;
112        }
113
114        protected function listUsers($params)
115        {
116                $adminListUser = CreateObject('expressoAdmin1_2.functions');
117
118                $acl = $adminListUser->read_acl($GLOBALS['phpgw']->accounts->data['account_lid']);
119
120                $search = trim(preg_replace("/[^a-z_0-9_-_.]/", "", $params));
121
122                $accounts = $adminListUser->get_list( 'accounts', $search, $acl['contexts'] );
123                                                                       
124                return $accounts;
125        }
126
127        protected function renameUser($params)
128        {
129                $adminRenameUser = CreateObject('expressoAdmin1_2.user');
130
131                $result = $adminRenameUser->rename( $params );
132
133                return $result;
134        }
135
136        protected function updateUser($params)
137        {
138                $adminUpdateUser = CreateObject('expressoAdmin1_2.user');
139
140                // Get User Info
141                $userInfo = array();
142                $userInfo = $this->editUser($params['uidnumber']);
143
144                // Unset
145                unset($userInfo['groups_ldap']);
146                unset($userInfo['groups_info']);
147
148                // Arrgay Merge
149                $updateUser = array();
150                $updateUser = array_merge( $userInfo, $params );
151
152                $result = $adminUpdateUser->save($updateUser);
153
154                return $result;
155        }
156
157        protected function validateFields($params )
158        {
159                $ldap_functions = CreateObject('expressoAdmin1_2.ldap_functions');
160
161                return $ldap_functions->validate_fields($params);
162        }
163
164        protected function validatePermission( $params )
165        {
166                $action         = $params['action'];
167                $apps           = $params['apps'];
168                $manager        = $_SESSION['phpgw_info']['expresso']['user']['account_lid'];
169                $functions  = CreateObject('expressoAdmin1_2.functions');
170                $result         = false;
171
172                if( array_search('admin',$apps) !== False )
173                {
174                        if( $functions->check_acl( $manager, $action ) )
175                        {
176                                $result = true;
177                        }
178                }
179
180                return $result;
181        }
182
183        private function getProfile($profileUser)
184        {
185                $default = false;
186
187                if( file_exists(API_DIRECTORY.'/../config/profileCreateUser.ini') )
188                {
189                        $profiles = parse_ini_file(API_DIRECTORY.'/../config/profileCreateUser.ini', true );
190                       
191                        foreach( $profiles as $key => $values )
192                        {
193                                if( $key == $profileUser )
194                                {
195                                        $default = $values;
196                                }
197                        }
198                }
199
200                return $default;
201        }
202}
203
204?>
Note: See TracBrowser for help on using the repository browser.