Quick Search:

View

Revision:

Diff

Diff from 1497 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/osCommerce/branches/hpdl/oscommerce/admin/includes/applications/administrators/classes/administrators.php

Annotated File View

hpdl
1200
1 <?php
2 /*
3   $Id: $
4
5   osCommerce, Open Source E-Commerce Solutions
6   http://www.oscommerce.com
7
hpdl
1295
8   Copyright (c) 2007 osCommerce
hpdl
1200
9
hpdl
1497
10   This program is free software; you can redistribute it and/or modify
11   it under the terms of the GNU General Public License v2 (1991)
12   as published by the Free Software Foundation.
hpdl
1200
13 */
14
15   define('OSC_ADMINISTRATORS_ACCESS_MODE_ADD', 'add');
16   define('OSC_ADMINISTRATORS_ACCESS_MODE_SET', 'set');
17   define('OSC_ADMINISTRATORS_ACCESS_MODE_REMOVE', 'remove');
18
19   class osC_Administrators_Admin {
20     function getData($id) {
21       global $osC_Database;
22
23       $Qadmin = $osC_Database->query('select id, user_name from :table_administrators where id = :id');
24       $Qadmin->bindTable(':table_administrators', TABLE_ADMINISTRATORS);
25       $Qadmin->bindInt(':id', $id);
26       $Qadmin->execute();
27
28       $modules = array( 'access_modules' => array() );
29
30       $Qaccess = $osC_Database->query('select module from :table_administrators_access where administrators_id = :administrators_id');
31       $Qaccess->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
32       $Qaccess->bindInt(':administrators_id', $id);
33       $Qaccess->execute();
34
35       while ( $Qaccess->next() ) {
36         $modules['access_modules'][] = $Qaccess->value('module');
37       }
38
39       $data = array_merge($Qadmin->toArray(), $modules);
40
41       unset($modules);
42       $Qaccess->freeResult();
43       $Qadmin->freeResult();
44
45       return $data;
46     }
47
48     function save($id = null, $data, $modules = null) {
49       global $osC_Database;
50
51       $error = false;
52
53       $Qcheck = $osC_Database->query('select id from :table_administrators where user_name = :user_name');
54
55       if ( is_numeric($id) ) {
56         $Qcheck->appendQuery('and id != :id');
57         $Qcheck->bindInt(':id', $id);
58       }
59
60       $Qcheck->appendQuery('limit 1');
61       $Qcheck->bindTable(':table_administrators', TABLE_ADMINISTRATORS);
62       $Qcheck->bindValue(':user_name', $data['username']);
63       $Qcheck->execute();
64
65       if ($Qcheck->numberOfRows() < 1) {
66         $osC_Database->startTransaction();
67
68         if ( is_numeric($id) ) {
69           $Qadmin = $osC_Database->query('update :table_administrators set user_name = :user_name');
70
71           if ( isset($data['password']) && !empty($data['password']) ) {
hpdl
1391
72             $Qadmin->appendQuery(', user_password = :user_password');
hpdl
1200
73             $Qadmin->bindValue(':user_password', osc_encrypt_string(trim($data['password'])));
74           }
75
76           $Qadmin->appendQuery('where id = :id');
77           $Qadmin->bindInt(':id', $id);
78         } else {
79           $Qadmin = $osC_Database->query('insert into :table_administrators (user_name, user_password) values (:user_name, :user_password)');
80           $Qadmin->bindValue(':user_password', osc_encrypt_string(trim($data['password'])));
81         }
82
83         $Qadmin->bindTable(':table_administrators', TABLE_ADMINISTRATORS);
84         $Qadmin->bindValue(':user_name', $data['username']);
hpdl
1295
85         $Qadmin->setLogging($_SESSION['module'], $id);
hpdl
1200
86         $Qadmin->execute();
87
88         if ( !$osC_Database->isError() ) {
89           if ( !is_numeric($id) ) {
90             $id = $osC_Database->nextID();
91           }
92         } else {
93           $error = true;
94         }
95
96         if ( $error === false ) {
97           if ( !empty($modules) ) {
98             if ( in_array('*', $modules) ) {
99               $modules = array('*');
100             }
101
102             foreach ($modules as $module) {
103               $Qcheck = $osC_Database->query('select administrators_id from :table_administrators_access where administrators_id = :administrators_id and module = :module limit 1');
104               $Qcheck->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
105               $Qcheck->bindInt(':administrators_id', $id);
106               $Qcheck->bindValue(':module', $module);
107               $Qcheck->execute();
108
109               if ( $Qcheck->numberOfRows() < 1 ) {
110                 $Qinsert = $osC_Database->query('insert into :table_administrators_access (administrators_id, module) values (:administrators_id, :module)');
111                 $Qinsert->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
112                 $Qinsert->bindInt(':administrators_id', $id);
113                 $Qinsert->bindValue(':module', $module);
hpdl
1295
114                 $Qinsert->setLogging($_SESSION['module'], $id);
hpdl
1200
115                 $Qinsert->execute();
116
117                 if ( $osC_Database->isError() ) {
118                   $error = true;
119                   break;
120                 }
121               }
122             }
123           }
124         }
125
126         if ( $error === false ) {
127           $Qdel = $osC_Database->query('delete from :table_administrators_access where administrators_id = :administrators_id');
128
129           if ( !empty($modules) ) {
130             $Qdel->appendQuery('and module not in (":module")');
131             $Qdel->bindRaw(':module', implode('", "', $modules));
132           }
133
134           $Qdel->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
135           $Qdel->bindInt(':administrators_id', $id);
hpdl
1295
136           $Qdel->setLogging($_SESSION['module'], $id);
hpdl
1200
137           $Qdel->execute();
138
139           if ( $osC_Database->isError() ) {
140             $error = true;
141           }
142         }
143
144         if ( $error === false ) {
145           $osC_Database->commitTransaction();
146
hpdl
1446
147           return 1;
hpdl
1200
148         } else {
149           $osC_Database->rollbackTransaction();
150
hpdl
1446
151           return -1;
hpdl
1200
152         }
153       } else {
hpdl
1446
154         return -2;
hpdl
1200
155       }
156     }
157
158     function delete($id) {
159       global $osC_Database;
160
161       $osC_Database->startTransaction();
162
163       $Qdel = $osC_Database->query('delete from :table_administrators_access where administrators_id = :administrators_id');
164       $Qdel->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
165       $Qdel->bindInt(':administrators_id', $id);
hpdl
1295
166       $Qdel->setLogging($_SESSION['module'], $id);
hpdl
1200
167       $Qdel->execute();
168
169       if ( !$osC_Database->isError() ) {
170         $Qdel = $osC_Database->query('delete from :table_administrators where id = :id');
171         $Qdel->bindTable(':table_administrators', TABLE_ADMINISTRATORS);
172         $Qdel->bindInt(':id', $id);
hpdl
1295
173         $Qdel->setLogging($_SESSION['module'], $id);
hpdl
1200
174         $Qdel->execute();
175
176         if ( !$osC_Database->isError() ) {
177           $osC_Database->commitTransaction();
178
179           return true;
180         }
181       }
182
183       $osC_Database->rollbackTransaction();
184
185       return false;
186     }
187
188     function setAccessLevels($id, $modules, $mode = OSC_ADMINISTRATORS_ACCESS_MODE_ADD) {
189       global $osC_Database;
190
191       $error = false;
192
193       if ( in_array('*', $modules) ) {
194         $modules = array('*');
195       }
196
197       $osC_Database->startTransaction();
198
199       if ( ($mode == OSC_ADMINISTRATORS_ACCESS_MODE_ADD) || ($mode == OSC_ADMINISTRATORS_ACCESS_MODE_SET) ) {
200         foreach ($modules as $module) {
201           $execute = true;
202
203           if ( $module != '*' ) {
204             $Qcheck = $osC_Database->query('select administrators_id from :table_administrators_access where administrators_id = :administrators_id and module = :module limit 1');
205             $Qcheck->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
206             $Qcheck->bindInt(':administrators_id', $id);
207             $Qcheck->bindValue(':module', '*');
208             $Qcheck->execute();
209
210             if ( $Qcheck->numberOfRows() === 1 ) {
211               $execute = false;
212             }
213           }
214
215           if ( $execute === true ) {
216             $Qcheck = $osC_Database->query('select administrators_id from :table_administrators_access where administrators_id = :administrators_id and module = :module limit 1');
217             $Qcheck->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
218             $Qcheck->bindInt(':administrators_id', $id);
219             $Qcheck->bindValue(':module', $module);
220             $Qcheck->execute();
221
222             if ( $Qcheck->numberOfRows() < 1 ) {
223               $Qinsert = $osC_Database->query('insert into :table_administrators_access (administrators_id, module) values (:administrators_id, :module)');
224               $Qinsert->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
225               $Qinsert->bindInt(':administrators_id', $id);
226               $Qinsert->bindValue(':module', $module);
hpdl
1295
227               $Qinsert->setLogging($_SESSION['module'], $id);
hpdl
1200
228               $Qinsert->execute();
229
230               if ( $osC_Database->isError() ) {
231                 $error = true;
232                 break;
233               }
234             }
235           }
236         }
237       }
238
239       if ( $error === false ) {
240         if ( ($mode == OSC_ADMINISTRATORS_ACCESS_MODE_REMOVE) || ($mode == OSC_ADMINISTRATORS_ACCESS_MODE_SET) || in_array('*', $modules) ) {
241           if ( !empty($modules) ) {
242             $Qdel = $osC_Database->query('delete from :table_administrators_access where administrators_id = :administrators_id');
243
244             if ( $mode == OSC_ADMINISTRATORS_ACCESS_MODE_REMOVE ) {
245               if ( !in_array('*', $modules) ) {
246                 $Qdel->appendQuery('and module in (":module")');
247                 $Qdel->bindRaw(':module', implode('", "', $modules));
248               }
249             } else {
250               $Qdel->appendQuery('and module not in (":module")');
251               $Qdel->bindRaw(':module', implode('", "', $modules));
252             }
253
254             $Qdel->bindTable(':table_administrators_access', TABLE_ADMINISTRATORS_ACCESS);
255             $Qdel->bindInt(':administrators_id', $id);
hpdl
1295
256             $Qdel->setLogging($_SESSION['module'], $id);
hpdl
1200
257             $Qdel->execute();
258
259             if ( $osC_Database->isError() ) {
260               $error = true;
261               break;
262             }
263           }
264         }
265       }
266
267       if ( $error === false ) {
268         $osC_Database->commitTransaction();
269
270         return true;
271       }
272
273       $osC_Database->rollbackTransaction();
274
275       return false;
276     }
277   }
278 ?>