00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00051 class Group
00052 {
00053 var $groupid = 0;
00054 var $error = '';
00055
00056 var $name = '';
00057 var $fullname = '';
00058 var $ldap_dn;
00059 var $tel;
00060 var $mail;
00061 var $desc;
00062 var $style;
00063 var $isAdmin;
00064
00065
00066
00067 function Group( $groupid='' )
00068 {
00069 if ( is_numeric($groupid) )
00070 $this->groupid = $groupid;
00071 }
00072
00073
00074
00075 function getAll()
00076 {
00077 global $conf;
00078 $db = db_connection();
00079
00080 $sql = new Sql( 'SELECT id,name FROM {t_group}' );
00081
00082 return $db->getAssoc( $sql->query );
00083 }
00084
00085
00086
00087 function load()
00088 {
00089 $db = db_connection();
00090
00091 $sql = new Sql( 'SELECT * FROM {t_group}'.
00092 ' WHERE id={groupid}' );
00093 $sql->setInt( 'groupid',$this->groupid );
00094
00095 $row = $db->getRow( $sql->query );
00096 if ( count($row) > 0 )
00097 $this->name = $row['name' ];
00098 else
00099 $this->name = '';
00100 }
00101
00102
00103
00104 function save()
00105 {
00106 if ( empty($this->name) )
00107 $this->name = lang('GLOBAL_GROUP').' '.$this->groupid;
00108
00109 $db = db_connection();
00110
00111
00112 $sql = new Sql( 'UPDATE {t_group} '.
00113 'SET name = {name} '.
00114 'WHERE id={groupid}' );
00115 $sql->setString( 'name' ,$this->name );
00116 $sql->setInt ('groupid',$this->groupid );
00117
00118
00119 $db->query( $sql->query );
00120 }
00121
00122
00127 function getProperties()
00128 {
00129 return Array( 'name' =>$this->name,
00130 'groupid'=>$this->groupid );
00131 }
00132
00133
00134
00135 function add( $name = '' )
00136 {
00137 $db = db_connection();
00138
00139 if ( $name != '' )
00140 $this->name = $name;
00141
00142 $sql = new Sql('SELECT MAX(id) FROM {t_group}');
00143 $this->groupid = intval($db->getOne($sql->query))+1;
00144
00145
00146 $sql = new Sql( 'INSERT INTO {t_group} '.
00147 '(id,name) VALUES( {groupid},{name} )');
00148 $sql->setInt ('groupid',$this->groupid );
00149 $sql->setString('name' ,$this->name );
00150
00151
00152 $db->query( $sql->query );
00153 }
00154
00155
00156
00157 function delete()
00158 {
00159 $db = db_connection();
00160
00161
00162 $sql = new Sql( 'DELETE FROM {t_acl} '.
00163 'WHERE groupid={groupid}' );
00164 $sql->setInt ('groupid',$this->groupid );
00165 $db->query( $sql->query );
00166
00167
00168
00169 $sql = new Sql( 'DELETE FROM {t_usergroup} '.
00170 'WHERE groupid={groupid}' );
00171 $sql->setInt ('groupid',$this->groupid );
00172 $res = $db->query($sql->query);
00173
00174
00175 $sql = new Sql( 'DELETE FROM {t_group} '.
00176 'WHERE id={groupid}' );
00177 $sql->setInt ('groupid',$this->groupid );
00178 $res = $db->query($sql->query);
00179 }
00180
00181
00182
00183 function getUsers()
00184 {
00185 $db = db_connection();
00186
00187 $sql = new Sql( 'SELECT {t_user}.id,{t_user}.name FROM {t_user} '.
00188 'LEFT JOIN {t_usergroup} ON {t_usergroup}.userid={t_user}.id '.
00189 'WHERE {t_usergroup}.groupid={groupid}' );
00190 $sql->setInt('groupid',$this->groupid );
00191
00192 return $db->getAssoc( $sql->query );
00193 }
00194
00195
00196
00197 function getOtherUsers()
00198 {
00199 $db = db_connection();
00200
00201 $sql = new Sql( 'SELECT {t_user}.id,{t_user}.name FROM {t_user}'.
00202 ' LEFT JOIN {t_usergroup} ON {t_usergroup}.userid={t_user}.id AND {t_usergroup}.groupid={groupid}'.
00203 ' WHERE {t_usergroup}.groupid IS NULL' );
00204 $sql->setInt('groupid' ,$this->groupid );
00205
00206 return $db->getAssoc( $sql->query );
00207 }
00208
00209
00210
00211 function addUser( $userid )
00212 {
00213 $db = db_connection();
00214
00215 $sql = new Sql('SELECT MAX(id) FROM {t_usergroup}');
00216 $usergroupid = intval($db->getOne($sql->query))+1;
00217
00218 $sql = new Sql( 'INSERT INTO {t_usergroup} '.
00219 ' (id,userid,groupid) '.
00220 ' VALUES( {usergroupid},{userid},{groupid} )' );
00221 $sql->setInt('usergroupid',$usergroupid );
00222 $sql->setInt('userid' ,$userid );
00223 $sql->setInt('groupid' ,$this->groupid );
00224
00225 $db->query( $sql->query );
00226
00227 }
00228
00229
00230
00231 function delUser( $userid )
00232 {
00233 $db = db_connection();
00234
00235 $sql = new Sql( 'DELETE FROM {t_usergroup} '.
00236 ' WHERE userid={userid} AND groupid={groupid}' );
00237 $sql->setInt ('userid' ,$userid );
00238 $sql->setInt ('groupid' ,$this->groupid );
00239
00240 $db->query( $sql->query );
00241 }
00242
00243
00244
00245 function getRights()
00246 {
00247 global $SESS,$conf_php;
00248 $db = db_connection();
00249 $var = array();
00250
00251
00252 $sql = new Sql( 'SELECT id,name FROM {t_project}' );
00253 $projects = $db->getAssoc( $sql->query );
00254
00255 foreach( $projects as $projectid=>$projectname )
00256 {
00257 $var[$projectid] = array();
00258 $var[$projectid]['name'] = $projectname;
00259 $var[$projectid]['folders'] = array();
00260 $var[$projectid]['rights'] = array();
00261
00262 $sql = new Sql( 'SELECT {t_acl}.* FROM {t_acl}'.
00263 ' LEFT JOIN {t_folder} ON {t_acl}.folderid = {t_folder}.id'.
00264 ' WHERE {t_folder}.projectid={projectid}'.
00265 ' AND {t_acl}.groupid={groupid}' );
00266 $sql->setInt('projectid',$projectid );
00267 $sql->setInt('groupid' ,$this->groupid );
00268
00269 $acls = $db->getAll( $sql->query );
00270
00271 foreach( $acls as $acl )
00272 {
00273 $aclid = $acl['id'];
00274 $folder = new Folder( $acl['folderid'] );
00275 $folder->load();
00276 $var[$projectid]['rights'][$aclid] = $acl;
00277 $var[$projectid]['rights'][$aclid]['foldername'] = implode(' » ',$folder->parentfolder( false,true ));
00278 $var[$projectid]['rights'][$aclid]['delete_url'] = 'user.'.$conf_php.'?useraction=delright&aclid='.$aclid;
00279 }
00280
00281 $sql = new Sql( 'SELECT id FROM {t_folder}'.
00282 ' WHERE projectid={projectid}' );
00283 $sql->setInt('projectid',$projectid);
00284 $folders = $db->getCol( $sql->query );
00285
00286 $var[$projectid]['folders'] = array();
00287
00288 foreach( $folders as $folderid )
00289 {
00290 $folder = new Folder( $folderid );
00291 $folder->load();
00292 $var[$projectid]['folders'][$folderid] = implode(' » ',$folder->parentfolder( false,true ));
00293 }
00294
00295 asort( $var[$projectid]['folders'] );
00296 }
00297
00298 return $var;
00299 }
00300
00301
00302
00303 function addRight( $data )
00304 {
00305 global $REQ,$SESS;
00306 $db = db_connection();
00307
00308 $sql = new SQL('INSERT INTO {t_acl} '.
00309 '(userid,groupid,folderid,`read`,`write`,`create`,`delete`,publish) '.
00310 'VALUES({userid},{groupid},{folderid},{read},{write},{create},{delete},{publish})');
00311
00312 $sql->setNull('userid');
00313 $sql->setInt ('groupid',$this->groupid);
00314 $sql->setInt ('projectid',$SESS['projectid']);
00315 $sql->setInt ('folderid',$data['folderid']);
00316
00317 $sql->setInt ('read' ,$data['read' ]);
00318 $sql->setInt ('write' ,$data['write' ]);
00319 $sql->setInt ('create' ,$data['create' ]);
00320 $sql->setInt ('delete' ,$data['delete' ]);
00321 $sql->setInt ('publish',$data['publish']);
00322
00323
00324 $db->query( $sql->query );
00325 }
00326
00327
00328
00335 function getAllAcls()
00336 {
00337 $db = db_connection();
00338 $sql = new Sql( 'SELECT {t_acl}.*,{t_object}.projectid,{t_language}.name AS languagename FROM {t_acl}'.
00339 ' LEFT JOIN {t_object} '.
00340 ' ON {t_object}.id={t_acl}.objectid '.
00341 ' LEFT JOIN {t_language} '.
00342 ' ON {t_language}.id={t_acl}.languageid '.
00343 ' WHERE ( {t_acl}.groupid={groupid} OR ({t_acl}.userid IS NULL AND {t_acl}.groupid IS NULL) )'.
00344 ' ORDER BY {t_object}.projectid,{t_acl}.languageid' );
00345 $sql->setInt ( 'groupid' ,$this->groupid );
00346
00347 $aclList = array();
00348
00349 foreach( $db->getAll( $sql->query ) as $row )
00350 {
00351 $acl = new Acl();
00352 $acl->setDatabaseRow( $row );
00353 $acl->projectid = $row['projectid' ];
00354 if ( intval($acl->languageid) == 0 )
00355 $acl->languagename = lang('GLOBAL_ALL_LANGUAGES');
00356 else
00357 $acl->languagename = $row['languagename'];
00358 $aclList[] = $acl;
00359 }
00360
00361 return $aclList;
00362 }
00363
00364
00365
00366
00367 function delRight( $aclid )
00368 {
00369 $sql = new SQL('DELETE FROM {t_acl} WHERE id={aclid}');
00370 $sql->setInt( 'aclid',$aclid );
00371
00372
00373 $db->query( $sql->query );
00374 }
00375 }
00376
00377 ?>