User Klassenreferenz

Aufstellung aller Elemente

Öffentliche Methoden

 User ($userid='')
 listAll ()
 getAllUsers ()
 setCurrent ()
 getGroupClause ()
 hasProject ($projectid)
 getReadableProjects ()
 getReadableProjectIds ()
 loadProjects ()
 load ()
 isValid ()
 setDatabaseRow ($row)
 getName ()
 getUserName ($userid)
 save ()
 add ($name= '')
 addNewUserGroups ()
 delete ()
 getProperties ()
 checkPassword ($password)
 setPassword ($password, $always=true)
 getGroups ()
 getGroupIds ()
 getOtherGroups ()
 addGroup ($groupid)
 delGroup ($groupid)
 loadRights ($projectid, $languageid)
 getAllAcls ()
 getRights ()
 delRights ()
 hasRight ($objectid, $type)
 addRight ($objectid, $type)
 getAvailableStyles ()
 createPassword ()

Öffentliche, statische Methoden

 loadWithName ($name)

Öffentliche Attribute

 $userid = 0
 $error = ''
 $name = ''
 $fullname = ''
 $ldap_dn
 $tel
 $mail
 $desc
 $style
 $isAdmin
 $projects
 $rights
 $loginDate = 0
 $mustChangePassword = false
 $groups = null


Ausführliche Beschreibung

Definiert in Zeile 128 der Datei User.class.php.


Dokumentation der Elementfunktionen

User::add ( name = ''  ) 

Benutzer hinzuf�gen

Parameter:
String $name Benutzername

Definiert in Zeile 501 der Datei User.class.php.

Benutzt $db, $name, addNewUserGroups() und db_connection().

00502      {
00503           if   ( $name != '' )
00504                $this->name = $name;
00505 
00506           $db = db_connection();
00507 
00508           $sql = new Sql('SELECT MAX(id) FROM {t_user}');
00509           $this->userid = intval($db->getOne($sql->query))+1;
00510 
00511           $sql = new Sql('INSERT INTO {t_user}'.
00512                          ' (id,name,password,ldap_dn,fullname,tel,mail,descr,style,is_admin)'.
00513                          " VALUES( {userid},{name},'','','','','','','default',0 )" );
00514           $sql->setInt   ('userid',$this->userid);
00515           $sql->setString('name'  ,$this->name  );
00516 
00517           // Datenbankbefehl ausfuehren
00518           $db->query( $sql->query );
00519           
00520           $this->addNewUserGroups(); // Neue Gruppen hinzuf�gen.
00521      }

User::addGroup ( groupid  ) 

Definiert in Zeile 938 der Datei User.class.php.

Benutzt $db und db_connection().

Wird benutzt von addNewUserGroups() und checkPassword().

00939      {
00940           $db = db_connection();
00941 
00942           $sql = new Sql('SELECT MAX(id) FROM {t_usergroup}');
00943           $usergroupid = intval($db->getOne($sql->query))+1;
00944 
00945           $sql = new Sql( 'INSERT INTO {t_usergroup} '.
00946                           '       (id,userid,groupid) '.
00947                           '       VALUES( {usergroupid},{userid},{groupid} )' );
00948           $sql->setInt('usergroupid',$usergroupid  );
00949           $sql->setInt('userid'     ,$this->userid );
00950           $sql->setInt('groupid'    ,$groupid      );
00951 
00952           $db->query( $sql->query );
00953      
00954      }

User::addNewUserGroups (  ) 

Zu einem neuen Benutzer automatisch Gruppen hinzuf�gen. Diese Methode wird automatisch in "add()" aufgerufen.

Definiert in Zeile 529 der Datei User.class.php.

Benutzt $conf, $db, addGroup() und db_connection().

Wird benutzt von add().

00530      {
00531           global $conf;
00532           $groupNames = explode(',',@$conf['security']['newuser']['groups']);
00533           
00534           if   ( count($groupNames) == 0 )
00535                return; // Nichts zu tun.
00536                
00537           $db = db_connection();
00538 
00539           $sql = new Sql('SELECT id FROM {t_group} WHERE name IN({names})');
00540           $sql->setStringList('names',$groupNames);
00541           $groupIds = array_unique( $db->getCol($sql->query) );
00542           
00543           // Wir brauchen hier nicht weiter pr�fen, ob der Benutzer eine Gruppe schon hat, denn
00544           // - passiert dies nur bei der Neuanlage eines Benutzers
00545           // - Enth�lt die Group-Id-Liste eine ID nur 1x.
00546 
00547           // Gruppen diesem Benutzer zuordnen.
00548           foreach( $groupIds as $groupId )
00549                $this->addGroup( $groupId );
00550      }

User::addRight ( objectid,
type 
)

Berechtigung dem Benutzer hinzufuegen.

Parameter:
objectid Objekt-Id, zu dem eine Berechtigung hinzugefuegt werden soll
Art des Rechtes, welches hinzugefuegt werden soll

Definiert in Zeile 1124 der Datei User.class.php.

Benutzt $conf.

01125      {
01126           global $conf;
01127           
01128           if   ( $conf['security']['readonly'] )
01129                if   ( $type & ACL_READ )
01130                     $type = ACL_READ;
01131                else
01132                     $type = 0;
01133 
01134           if   ( $type & ACL_PUBLISH && $conf['security']['nopublish'] )
01135                $type -= ACL_PUBLISH;
01136 
01137 
01138           if   ( !isset($this->rights[$objectid]) )
01139                $this->rights[$objectid] = 0;
01140 
01141           $this->rights[$objectid] = $this->rights[$objectid] | $type;
01142      }

User::checkPassword ( password  ) 

Ueberpruefen des Kennwortes.

Das Kennwort wird ueber Datenbank oder ueber LDAP-Verzeichnisdienst geprueft. Wenn

  • ein LDAP-Dn ("distinghished-name") vorhanden ist, dann Pruefung ueber den LDAP-Server,
  • sonst ueber die Benutzertabelle in der Datenbank.

Definiert in Zeile 637 der Datei User.class.php.

Benutzt $conf, $db, addGroup(), db_connection(), Logger::debug(), delGroup(), getGroupIds() und save().

00638      {
00639           global $conf;
00640 
00641           $db = db_connection();
00642           $this->mustChangePassword = false;
00643           
00644           // Lesen des Benutzers aus der DB-Tabelle
00645           $sql = new Sql( <<<SQL
00646 SELECT * FROM {t_user}
00647  WHERE name={name}
00648 SQL
00649           );
00650           $sql->setString('name',$this->name);
00651      
00652           $res_user = $db->query( $sql->query );
00653 
00654           $check = false;
00655           $authType = $conf['security']['auth']['type']; // Entweder 'ldap', 'authdb', 'http', oder 'database'
00656           
00657           if   ( $res_user->numRows() == 1 )
00658           {
00659                // Benutzername ist bereits in der Datenbank.
00660                $row_user = $res_user->fetchRow();
00661                $this->userid  = $row_user['id'];
00662                $this->ldap_dn = $row_user['ldap_dn'];
00663                $check   = true;
00664                $autoAdd = false; // Darf nicht hinzugef�gt werden, da schon vorhanden.
00665           }
00666           elseif( $res_user->numRows() == 0 && $authType == 'ldap' && $conf['ldap']['search']['add'] )
00667           {
00668                // Benutzer noch nicht in der Datenbank vorhanden.
00669                // Falls ein LDAP-Account gefunden wird, wird dieser �bernommen.
00670                $check   = true;
00671                $autoAdd = true;
00672           }
00673           elseif( $res_user->numRows() == 0 && $authType == 'authdb' && $conf['security']['authdb']['add'] )
00674           {
00675                $check = true;
00676                $autoAdd = true;
00677           }
00678           elseif( $res_user->numRows() == 0 && $authType == 'http' && $conf['security']['http']['add'] )
00679           {
00680                $check = true;
00681                $autoAdd = true;
00682           }
00683 
00684           if   ( $check )
00685           {
00686                // Falls benutzerspezifischer LDAP-dn vorhanden wird Benutzer per LDAP authentifiziert
00687                if   ( $conf['security']['auth']['userdn'] && !empty($this->ldap_dn ) )
00688                {
00689                     Logger::debug( 'checking login via ldap' );
00690                     $ldap = new Ldap();
00691                     $ldap->connect();
00692                     
00693                     // Benutzer ist bereits in Datenbank
00694                     // LDAP-Login mit dem bereits vorhandenen DN versuchen
00695                     $ok = $ldap->bind( $this->ldap_dn, $password );
00696                     
00697                     // Verbindung zum LDAP-Server brav beenden
00698                     $ldap->close();
00699 
00700                     return $ok;
00701                }
00702                elseif( $authType == 'ldap' )
00703                {
00704                     Logger::debug( 'checking login via ldap' );
00705                     $ldap = new Ldap();
00706                     $ldap->connect();
00707                     
00708                     if   ( empty($conf['ldap']['dn']) )
00709                     {
00710                          // Der Benutzername wird im LDAP-Verzeichnis gesucht.
00711                          // Falls gefunden, wird der DN (=der eindeutige Schl�ssel im Verzeichnis) ermittelt.
00712                          $dn = $ldap->searchUser( $this->name );
00713                          
00714                          if    ( empty($dn) )
00715                          {
00716                               Logger::debug( 'User not found in LDAP directory' );
00717                               return false; // Kein LDAP-Account gefunden.
00718                          }
00719 
00720                          Logger::debug( 'User found: '.$dn );
00721                     }
00722                     else
00723                     {
00724                          $dn = str_replace( '{user}',$this->name,$conf['ldap']['dn'] );
00725                     }
00726                          
00727                     // LDAP-Login versuchen
00728                     $ok = $ldap->bind( $dn, $password );
00729                     
00730                     Logger::debug( 'LDAP bind: '.($ok?'success':'failed') );
00731                     
00732                     if   ( $ok && $conf['security']['authorize']['type'] == 'ldap' )
00733                     {
00734                          $sucheAttribut = $conf['ldap']['authorize']['group_name'];
00735                          $sucheFilter   = str_replace('{dn}',$dn,$conf['ldap']['authorize']['group_filter']);
00736                          
00737                          $ldap_groups = $ldap->searchAttribute( $sucheFilter, $sucheAttribut );
00738                          
00739                          $sql = new Sql( <<<SQL
00740 SELECT id,name FROM {t_group}
00741  WHERE name IN({name_list})
00742  ORDER BY name ASC
00743 SQL
00744                          );
00745                          $sql->setStringList('name_list',$ldap_groups);
00746                          $oldGroups = $this->getGroupIds();
00747                          $this->groups = $db->getAssoc( $sql->query );
00748                          
00749                          foreach( $this->groups as $groupid=>$groupname)
00750                          {
00751                               if   ( ! in_array($groupid,$oldGroups))
00752                                    $this->addGroup($groupid);
00753                          }
00754                          foreach( $oldGroups as $groupid)
00755                          {
00756                               if   ( !isset($this->groups[$groupid]) )
00757                                    $this->delGroup($groupid);
00758                          }
00759                          
00760                          
00761                          // Pr�fen, ob Gruppen fehlen. Diese dann ggf. in der OpenRat-Datenbank hinzuf�gen.
00762                          if   ( $conf['ldap']['authorize']['auto_add'] )
00763                          {
00764                               foreach( $ldap_groups as $group )
00765                               {
00766                                    if   ( !in_array($group,$this->groups) ) // Gruppe schon da?
00767                                    {
00768                                         $g = new Group();
00769                                         $g->name = $group;
00770                                         $g->add(); // Gruppe hinzuf�gen
00771                                         
00772                                         $this->groups[$g->groupid] = $group;
00773                                    }
00774                               }
00775                          }
00776 //                       Html::debug($this->groups,'Gruppen/Ids des Benutzers');
00777                     }
00778                     
00779                     // Verbindung zum LDAP-Server brav beenden
00780                     $ldap->close();
00781 
00782                     if   ( $ok && $autoAdd )
00783                     {
00784                          // Falls die Authentifizierung geklappt hat, wird der
00785                          // LDAP-Account in die Datenbank �bernommen.
00786                          $this->ldap_dn  = $dn;
00787                          $this->fullname = $this->name;
00788                          $this->add();
00789                          $this->save();
00790                     }
00791                     
00792                     return $ok;
00793                }
00794                elseif( $authType == 'database' )
00795                {
00796                     // Pruefen ob Kennwort mit Datenbank uebereinstimmt
00797                     if   ( $row_user['password'] == $password )
00798                     {
00799                          // Kennwort stimmt mit Datenbank �berein, aber nur im Klartext.
00800                          // Das Kennwort muss ge�ndert werden
00801                          $this->mustChangePassword = true;
00802                          
00803                          // Login nicht erfolgreich
00804                          return false;
00805                     }
00806                     elseif   ( $row_user['password'] == md5( $password ) )
00807                     {
00808                          // Die Kennwort-Pr�fsumme stimmt mit dem aus der Datenbank �berein.
00809                          // Juchuu, Login ist erfolgreich.
00810                          return true;
00811                     }
00812                     else
00813                     {
00814                          // Kennwort stimmt garnicht �berein.
00815                          return false;
00816                     }
00817                }
00818                elseif( $authType == 'authdb' )
00819                {
00820                     $authdb = new DB( $conf['security']['authdb'] );
00821                     $sql = new Sql( $conf['security']['authdb']['sql'] );
00822                     $sql->setString('username',$this->name);
00823                     $sql->setString('password',$password);
00824                     $res = $authdb->query($sql->query);
00825                     $ok = ($res->numRows() >= 1);
00826 
00827                     if   ( $ok && $autoAdd )
00828                     {
00829                          // Falls die Authentifizierung geklappt hat, wird der
00830                          // Benutzername in der eigenen Datenbank eingetragen.
00831                          $this->fullname = $this->name;
00832                          $this->add();
00833                          $this->save();
00834                     }
00835                     // noch nicht implementiert: $authdb->close();
00836                     
00837                     return $ok;
00838                }
00839                elseif( $authType == 'http' )
00840                {
00841                     $http = new Http( $conf['security']['http']['url'] );
00842                     $http->method = 'HEAD';
00843                     $http->setBasicAuthentication( $this->name, $password );
00844                     
00845                     $ok = $http->request();
00846                     
00847                     return $ok; 
00848                }
00849                else
00850                {
00851                     die( 'unknown authentication-type in configuration: '.$authType );
00852                }
00853           }
00854 
00855           // Benutzername nicht in Datenbank.
00856           return false;
00857      }

User::createPassword (  ) 

Erzeugt ein aussprechbares Kennwort.

Inspired by http://www.phpbuilder.com/annotate/message.php3?id=1014451

Rückgabe:
String Zuf�lliges Kennwort

Definiert in Zeile 1183 der Datei User.class.php.

Benutzt $conf.

Wird benutzt von IndexAction::passwordcommit().

01184      {
01185           global $conf;
01186           
01187           $pw = '';
01188           $c  = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones
01189           $v  = 'aeiou';              //vowels
01190           $a  = $c.$v;                //both
01191            
01192           //use two syllables...
01193           for ( $i=0; $i < intval($conf['security']['password']['min_length'])/3; $i++ )
01194           {
01195                $pw .= $c[rand(0, strlen($c)-1)];
01196                $pw .= $v[rand(0, strlen($v)-1)];
01197                $pw .= $a[rand(0, strlen($a)-1)];
01198           }
01199           //... and add a nice number
01200           $pw .= rand(10,99);
01201            
01202           return $pw;
01203      }

User::delete (  ) 

Benutzer entfernen.
Vor dem Entfernen werden alle Referenzen auf diesen Benutzer entfernt:

  • "Erzeugt von" f�r diesen Benutzer entfernen.
  • "Letzte �nderung von" f�r diesen Benutzer entfernen
  • Alle Archivdaten in Dateien mit diesem Benutzer entfernen
  • Alle Berechtigungen dieses Benutzers l?schen
  • Alle Gruppenzugehoerigkeiten dieses Benutzers l?schen
  • Benutzer loeschen

Definiert in Zeile 563 der Datei User.class.php.

Benutzt $db und db_connection().

00564      {
00565           $db = db_connection();
00566 
00567           // "Erzeugt von" f�r diesen Benutzer entfernen.
00568           $sql = new Sql( 'UPDATE {t_object} '.
00569                           'SET create_userid=null '.
00570                           'WHERE create_userid={userid}' );
00571           $sql->setInt   ('userid',$this->userid );
00572           $db->query( $sql->query );
00573 
00574           // "Letzte �nderung von" f�r diesen Benutzer entfernen
00575           $sql = new Sql( 'UPDATE {t_object} '.
00576                           'SET lastchange_userid=null '.
00577                           'WHERE lastchange_userid={userid}' );
00578           $sql->setInt   ('userid',$this->userid );
00579           $db->query( $sql->query );
00580 
00581           // Alle Archivdaten in Dateien mit diesem Benutzer entfernen
00582           $sql = new Sql( 'UPDATE {t_value} '.
00583                           'SET lastchange_userid=null '.
00584                           'WHERE lastchange_userid={userid}' );
00585           $sql->setInt   ('userid',$this->userid );
00586           $db->query( $sql->query );
00587 
00588           // Alle Berechtigungen dieses Benutzers l?schen
00589           $sql = new Sql( 'DELETE FROM {t_acl} '.
00590                           'WHERE userid={userid}' );
00591           $sql->setInt   ('userid',$this->userid );
00592           $db->query( $sql->query );
00593 
00594           // Alle Gruppenzugehoerigkeiten dieses Benutzers l?schen
00595           $sql = new Sql( 'DELETE FROM {t_usergroup} '.
00596                           'WHERE userid={userid}' );
00597           $sql->setInt   ('userid',$this->userid );
00598           $db->query( $sql->query );
00599 
00600           // Benutzer loeschen
00601           $sql = new Sql( 'DELETE FROM {t_user} '.
00602                           'WHERE id={userid}' );
00603           $sql->setInt   ('userid',$this->userid );
00604           $db->query( $sql->query );
00605      }

User::delGroup ( groupid  ) 

Definiert in Zeile 958 der Datei User.class.php.

Benutzt $db und db_connection().

Wird benutzt von checkPassword().

00959      {
00960           $db = db_connection();
00961 
00962           $sql = new Sql( 'DELETE FROM {t_usergroup} '.
00963                           '  WHERE userid={userid} AND groupid={groupid}' );
00964           $sql->setInt   ('userid'  ,$this->userid );
00965           $sql->setInt   ('groupid' ,$groupid      );
00966 
00967           $db->query( $sql->query );
00968      }

User::delRights (  ) 

Entfernt alle Rechte aus diesem Benutzerobjekt.

Definiert in Zeile 1090 der Datei User.class.php.

Wird benutzt von getAllAcls().

01091      {
01092           $this->rights = array();
01093      }

User::getAllAcls (  ) 

Ermitteln aller Berechtigungen des Benutzers.
Diese Daten werden auf der Benutzerseite in der Administration angezeigt.

Rückgabe:
unknown

Definiert in Zeile 988 der Datei User.class.php.

Benutzt $db, db_connection(), delRights(), getGroupClause() und lang().

00989      {
00990 
00991           $this->delRights();
00992 
00993           $db = db_connection();
00994 
00995           $group_clause = $this->getGroupClause();
00996 
00997           $sql = new Sql( 'SELECT {t_acl}.*,{t_object}.projectid,{t_language}.name AS languagename FROM {t_acl}'.
00998                           '  LEFT JOIN {t_object} '.
00999                           '         ON {t_object}.id={t_acl}.objectid '.
01000                           '  LEFT JOIN {t_language} '.
01001                           '         ON {t_language}.id={t_acl}.languageid '.
01002                           '  WHERE ( {t_acl}.userid={userid} OR '.$group_clause.
01003                                                            ' OR ({t_acl}.userid IS NULL AND {t_acl}.groupid IS NULL) )'.
01004                           '  ORDER BY {t_object}.projectid,{t_acl}.languageid' );
01005           $sql->setInt  ( 'userid'    ,$this->userid );
01006 
01007           $aclList = array();
01008 
01009           foreach( $db->getAll( $sql->query ) as $row )
01010           {
01011                $acl = new Acl();
01012                $acl->setDatabaseRow( $row );
01013                $acl->projectid    = $row['projectid'   ];
01014                if   ( intval($acl->languageid) == 0 )
01015                     $acl->languagename = lang('GLOBAL_ALL_LANGUAGES');
01016                else
01017                     $acl->languagename = $row['languagename'];
01018                $aclList[] = $acl;
01019           }
01020           
01021           return $aclList;
01022      }

User::getAllUsers (  ) 

Definiert in Zeile 171 der Datei User.class.php.

Benutzt $db, db_connection() und User().

Wird benutzt von UserAction::listing() und AdministrationTree::users().

00172      {
00173           $list = array();
00174           $db = db_connection();
00175 
00176           $sql = new Sql( 'SELECT * '.
00177                           '  FROM {t_user}'.
00178                           '  ORDER BY name' );
00179 
00180           foreach( $db->getAll( $sql->query ) as $row )
00181           {
00182                $user = new User();
00183                $user->setDatabaseRow( $row );
00184 
00185                $list[] = $user;
00186           }
00187           
00188           return $list;
00189      }

User::getAvailableStyles (  ) 

Ermitteln aller zur Verfuegung stehenden Stylesheets

Definiert in Zeile 1148 der Datei User.class.php.

Benutzt $conf_themedir und Http::serverError().

01149      {
01150           global $conf_themedir;
01151           
01152           $allstyles = array();
01153           
01154           // Theme-Verzeichnis nach "*.css"-Dateien durchsuchen.
01155           $dir = $conf_themedir.'/css';
01156           $handle = @opendir( $dir ); 
01157 
01158           if   ( !is_resource($handle) )
01159                Http::serverError('Cannot open CSS dir: '.$dir);
01160                
01161           while ($file = readdir ($handle))
01162           { 
01163                if ( eregi('\.css$',$file) )
01164                { 
01165                     $file = eregi_replace('\.css$','',$file);
01166                     $allstyles[$file] = ucwords($file);
01167                }
01168           }
01169           closedir($handle);
01170 
01171           asort($allstyles); // Alphabetisch sortieren.     
01172           return $allstyles;  
01173      }

User::getGroupClause (  ) 

Erzeugt eine WHERE-Bedingung zur Verwendung in einer SQL-Anfrage.
Es wird eine Oder-Liste mit allen Gruppen-Ids erzeugt.

Rückgabe:
String SQL-WHERE-Bedingung

Definiert in Zeile 210 der Datei User.class.php.

Benutzt getGroupIds().

Wird benutzt von getAllAcls(), getReadableProjects() und hasProject().

00211      {
00212           $groupIds = $this->getGroupIds();
00213           
00214           if   ( count($groupIds) > 0 )
00215                $groupclause = ' groupid='.implode(' OR groupid=',$groupIds );
00216           else
00217                $groupclause = ' 1=0 ';
00218 
00219           return $groupclause;
00220      }

User::getGroupIds (  ) 

Definiert in Zeile 907 der Datei User.class.php.

Benutzt getGroups().

Wird benutzt von checkPassword() und getGroupClause().

00908      {
00909           return array_keys( $this->getGroups() );
00910 
00911           /*
00912           $db = db_connection();
00913 
00914           $sql = new Sql( 'SELECT groupid FROM {t_usergroup} '.
00915                           'WHERE userid={userid}' );
00916           $sql->setInt('userid',$this->userid );
00917 
00918           return $db->getCol( $sql->query );
00919           */
00920      }

User::getGroups (  ) 

Gruppen ermitteln, in denen der Benutzer Mitglied ist.

Rückgabe:
Array mit Id:Name

Definiert in Zeile 889 der Datei User.class.php.

Benutzt $db und db_connection().

Wird benutzt von getGroupIds().

00890      {
00891           if   ( !is_array($this->groups) )
00892           {
00893                $db = db_connection();
00894      
00895                $sql = new Sql( 'SELECT {t_group}.id,{t_group}.name FROM {t_group} '.
00896                                'LEFT JOIN {t_usergroup} ON {t_usergroup}.groupid={t_group}.id '.
00897                                'WHERE {t_usergroup}.userid={userid}' );
00898                $sql->setInt('userid',$this->userid );
00899                $this->groups = $db->getAssoc( $sql->query );
00900           }
00901           
00902           return $this->groups;
00903      }

User::getName (  ) 

Namen ermitteln.
Wenn "fullname" gefuellt, dann diesen benutzen, sonst den Benutzernamen.

Definiert in Zeile 432 der Datei User.class.php.

00433      {
00434           if   ( empty($this->fullname))
00435                return $this->name;
00436           else
00437                return $this->fullname;
00438      }

User::getOtherGroups (  ) 

Definiert in Zeile 924 der Datei User.class.php.

Benutzt $db und db_connection().

00925      {
00926           $db = db_connection();
00927 
00928           $sql = new Sql( 'SELECT {t_group}.id,{t_group}.name FROM {t_group}'.
00929                           '   LEFT JOIN {t_usergroup} ON {t_usergroup}.groupid={t_group}.id AND {t_usergroup}.userid={userid}'.
00930                           '   WHERE {t_usergroup}.userid IS NULL' );
00931           $sql->setInt('userid'  ,$this->userid );
00932 
00933           return $db->getAssoc( $sql->query );
00934      }

User::getProperties (  ) 

Ermitteln der Eigenschaften zu diesem Benutzer

Rückgabe:
Array Liste der Eigenschaften als assoziatives Array

Definiert in Zeile 613 der Datei User.class.php.

00614      {
00615           return Array( 'userid'  => $this->userid,
00616                         'id'      => $this->userid,
00617                         'fullname'=> $this->fullname,
00618                         'name'    => $this->name,
00619                         'ldap_dn' => $this->ldap_dn,
00620                         'tel'     => $this->tel,
00621                         'desc'    => $this->desc,
00622                         'mail'    => $this->mail,
00623                         'style'   => $this->style,
00624                         'is_admin'=> $this->isAdmin,
00625                         'isAdmin' => $this->isAdmin );
00626      }

User::getReadableProjectIds (  ) 

Ermittelt alls Projekte, fuer die der Benutzer berechtigt ist.

Rückgabe:
Array [0..n] = Projekt-Id

Definiert in Zeile 284 der Datei User.class.php.

Benutzt getReadableProjects().

00285      {
00286           return array_keys( $this->getReadableProjects() );
00287      }

User::getReadableProjects (  ) 

Lesen aller Projekte, fuer die der Benutzer berechtigt ist.

Rückgabe:
Array [Projekt-Id] = Projekt-Name

Definiert in Zeile 246 der Datei User.class.php.

Benutzt $db, db_connection(), Project::getAllProjects() und getGroupClause().

Wird benutzt von getReadableProjectIds() und loadProjects().

00247      {
00248           $db = db_connection();
00249 
00250           if   ( $this->isAdmin )
00251           {
00252                // Administratoren haben Rechte auf alle Projekte.
00253                return Project::getAllProjects();
00254           }
00255           else
00256           {
00257                $groupClause = $this->getGroupClause();
00258                $sql = new Sql(<<<SQL
00259 SELECT DISTINCT {t_project}.id,{t_project}.name
00260   FROM {t_object}
00261   LEFT JOIN {t_acl}     ON {t_object}.id  = {t_acl}.objectid 
00262   LEFT JOIN {t_project} ON {t_project}.id = {t_object}.projectid 
00263  WHERE {t_object}.parentid IS NULL     AND
00264        {t_acl}.id          IS NOT NULL AND
00265        (  {t_acl}.userid={userid} OR
00266        $groupClause OR 
00267        ({t_acl}.userid IS NULL AND {t_acl}.groupid IS NULL)) 
00268  ORDER BY {t_project}.name
00269 SQL
00270 );
00271           $sql->setInt   ( 'userid',$this->userid );
00272 
00273                return $db->getAssoc( $sql->query );
00274           }
00275           
00276      }

User::getRights (  ) 

Ermitteln aller Berechtigungen.

Rückgabe:
Array Berechtigungen

Definiert in Zeile 1029 der Datei User.class.php.

01030      {
01031           die('User.class::getRights()');
01032           
01033 //        $db = db_connection();
01034 //        $var = array();
01035 //
01036 //        // Alle Projekte lesen
01037 //        $sql = new Sql( 'SELECT id,name FROM {t_project}' );
01038 //        $projects = $db->getAssoc( $sql->query );    
01039 //
01040 //        foreach( $projects as $projectid=>$projectname )
01041 //        {
01042 //             $var[$projectid] = array();
01043 //             $var[$projectid]['name'] = $projectname;
01044 //             $var[$projectid]['folders'] = array();
01045 //             $var[$projectid]['rights'] = array();
01046 //
01047 //             $sql = new Sql( 'SELECT {t_acl}.* FROM {t_acl}'.
01048 //                             '  LEFT JOIN {t_folder} ON {t_acl}.folderid = {t_folder}.id'.
01049 //                             '  WHERE {t_folder}.projectid={projectid}'.
01050 //                             '    AND {t_acl}.userid={userid}' );
01051 //             $sql->setInt('projectid',$projectid    );
01052 //             $sql->setInt('userid'   ,$this->userid );
01053 //             
01054 //             $acls = $db->getAll( $sql->query );
01055 //
01056 //             foreach( $acls as $acl )
01057 //             {
01058 //                  $aclid = $acl['id'];
01059 //                  $folder = new Folder( $acl['folderid'] );
01060 //                  $folder->load();
01061 //                  $var[$projectid]['rights'][$aclid] = $acl;
01062 //                  $var[$projectid]['rights'][$aclid]['foldername'] = implode(' &raquo; ',$folder->parentfolder( false,true ));
01063 //                  $var[$projectid]['rights'][$aclid]['delete_url'] = Html::url(array('action'=>'user','subaction'=>'delright','aclid'=>$aclid));
01064 //             }
01065 //             
01066 //             $sql = new Sql( 'SELECT id FROM {t_folder}'.
01067 //                             '  WHERE projectid={projectid}' );
01068 //             $sql->setInt('projectid',$projectid);
01069 //             $folders = $db->getCol( $sql->query );
01070 //
01071 //             $var[$projectid]['folders'] = array();
01072 //
01073 //             foreach( $folders as $folderid )
01074 //             {
01075 //                  $folder = new Folder( $folderid );
01076 //                  $folder->load();
01077 //                  $var[$projectid]['folders'][$folderid] = implode(' &raquo; ',$folder->parentfolder( false,true ));
01078 //             }
01079 //
01080 //             asort( $var[$projectid]['folders'] );
01081 //        }
01082 //        
01083 //        return $var;
01084      }

User::getUserName ( userid  ) 

Liest einen Benutzernamen aus der Datenbank.

Parameter:
int Benutzer-Id
Rückgabe:
String Benutzername

Definiert in Zeile 448 der Datei User.class.php.

Benutzt $db, $name, $userid, db_connection() und lang().

00449      {
00450           $db = db_connection();
00451 
00452           $sql = new Sql( 'SELECT name FROM {t_user}'.
00453                           ' WHERE id={userid}' );
00454           $sql->setInt( 'userid',$userid );
00455 
00456           $name = $db->getOne( $sql->query );
00457           
00458           if   ( $name == '' )
00459                return lang('UNKNOWN');
00460           else return $name;
00461      }

User::hasProject ( projectid  ) 

Definiert in Zeile 224 der Datei User.class.php.

Benutzt $db, db_connection() und getGroupClause().

00225      {
00226           $db = db_connection();
00227 
00228           $sql = new Sql( 'SELECT COUNT(*)'.
00229                           '  FROM {t_acl}'.
00230                           '  LEFT JOIN {t_object} ON {t_object}.id={t_acl}.objectid '.
00231                           '  WHERE projectid={projectidid} AND '.
00232                           '        ( userid={userid} OR'.
00233                           '          '.$this->getGroupClause().'    )' );
00234           $sql->setInt   ( 'userid',$this->userid );
00235 
00236           return $db->getOne( $sql->query ) > 0;
00237      }

User::hasRight ( objectid,
type 
)

Ueberpruft, ob der Benutzer ein bestimmtes Recht hat

Parameter:
$objectid Objekt-Id zu dem Objekt, dessen Rechte untersucht werden sollen
$type Typ des Rechts (Lesen,Schreiben,...) als Konstante ACL_*

Definiert in Zeile 1102 der Datei User.class.php.

Benutzt $conf.

01103      {
01104           global $conf;
01105           if   ( $this->isAdmin && !$conf['security']['readonly'] )
01106                return true;
01107 
01108           if   ( $this->isAdmin && $type & ACL_READ )
01109                return true;
01110                
01111           if   ( !isset($this->rights[$objectid]) )
01112                return false;
01113 
01114           return $this->rights[$objectid] & $type;
01115      }

User::isValid (  ) 

Stellt fest, ob der Benutzer korrekt geladen ist.

Definiert in Zeile 348 der Datei User.class.php.

00349      {
00350           return intval($this->userid) > 0;
00351      }

User::listAll (  ) 

Definiert in Zeile 157 der Datei User.class.php.

Benutzt $conf, $db und db_connection().

Wird benutzt von ObjectAction::aclform(), SearchAction::content(), SearchAction::prop() und StatusAction::show().

00158      {
00159           global $conf;
00160           $db = db_connection();
00161 
00162           $sql = new Sql( 'SELECT id,name '.
00163                           '  FROM {t_user}'.
00164                           '  ORDER BY name' );
00165 
00166           return $db->getAssoc( $sql->query );
00167      }

User::load (  ) 

Lesen Benutzer aus der Datenbank.

Definiert in Zeile 304 der Datei User.class.php.

Benutzt $conf, $db, db_connection() und setDatabaseRow().

00305      {
00306           global $conf;
00307           $db = db_connection();
00308 
00309           $sql = new Sql( 'SELECT * FROM {t_user}'.
00310                           ' WHERE id={userid}' );
00311           $sql->setInt( 'userid',$this->userid );
00312           $row = $db->getRow( $sql->query );
00313 
00314           $this->setDatabaseRow( $row );          
00315      }

User::loadProjects (  ) 

Lädt die Liste alle Projekte, fuer die der Benutzer berechtigt ist und speichert diese in diesem Benutzerobjekt.

Definiert in Zeile 294 der Datei User.class.php.

Benutzt getReadableProjects().

Wird benutzt von setCurrent().

00295      {
00296           $this->projects = $this->getReadableProjects();
00297      }

User::loadRights ( projectid,
languageid 
)

Ermitteln aller Rechte des Benutzers im aktuellen Projekt.

Parameter:
Integer $projectid Projekt-Id
Integer $languageid Sprache-Id

Definiert in Zeile 977 der Datei User.class.php.

00978      {
00979      }

User::loadWithName ( name  )  [static]

Benutzerobjekt �ber Benutzernamen ermitteln.
Liefert ein neues Benutzerobjekt zur�ck.

Parameter:
name Benutzername

Definiert in Zeile 325 der Datei User.class.php.

Benutzt $conf, $db, $name, db_connection() und User().

Wird benutzt von IndexAction::openid(), IndexAction::passwordcode(), IndexAction::passwordcommit(), IndexAction::registercommit(), IndexAction::show() und IndexAction::showlogin().

00326      {
00327           global $conf;
00328           $db = db_connection();
00329 
00330           // Benutzer �ber Namen suchen
00331           $sql = new Sql( 'SELECT id FROM {t_user}'.
00332                           ' WHERE name={name}' );
00333           $sql->setString( 'name',$name );
00334           $userId = $db->getOne( $sql->query );
00335 
00336           // Benutzer �ber Id instanziieren
00337           $neuerUser = new User( $userId );
00338           $neuerUser->load();
00339           
00340           return $neuerUser;
00341      }

User::save (  ) 

Speichern Benutzer in der Datenbank.

Definiert in Zeile 467 der Datei User.class.php.

Benutzt $db und db_connection().

Wird benutzt von checkPassword().

00468      {
00469           $db = db_connection();
00470 
00471           $sql = new Sql( 'UPDATE {t_user}'.
00472                           ' SET name={name},'.
00473                           '     fullname={fullname},'.
00474                           '     ldap_dn ={ldap_dn} ,'.
00475                           '     tel     ={tel}     ,'.
00476                           '     descr   ={desc}    ,'.
00477                           '     mail    ={mail}    ,'.
00478                           '     style   ={style}   ,'.
00479                           '     is_admin={isAdmin} '.
00480                           ' WHERE id={userid}' );
00481           $sql->setInt    ( 'userid'  ,$this->userid  );
00482           $sql->setString ( 'fullname',$this->fullname);
00483           $sql->setString ( 'name'    ,$this->name    );
00484           $sql->setString ( 'ldap_dn' ,$this->ldap_dn );
00485           $sql->setString ( 'tel'     ,$this->tel     );
00486           $sql->setString ( 'desc'    ,$this->desc    );
00487           $sql->setString ( 'mail'    ,$this->mail    );
00488           $sql->setString ( 'style'   ,$this->style   );
00489           $sql->setBoolean( 'isAdmin' ,$this->isAdmin );
00490           
00491           // Datenbankabfrage ausfuehren
00492           $db->query( $sql->query );
00493      }

User::setCurrent (  ) 

Benutzer als aktiven Benutzer in die Session schreiben.

Definiert in Zeile 195 der Datei User.class.php.

Benutzt loadProjects() und Session::setUser().

00196      {
00197           $this->loadProjects();
00198           $this->loginDate = time();
00199 
00200           Session::setUser( $this );
00201      }

User::setDatabaseRow ( row  ) 

Definiert in Zeile 356 der Datei User.class.php.

Benutzt $conf und lang().

Wird benutzt von load().

00357      {
00358           global $conf;
00359           
00360           if   ( count($row) > 1 )
00361           {
00362                $this->userid   = $row['id'      ];
00363                $this->name     = $row['name'    ];
00364                $this->style    = $row['style'   ];
00365                $this->isAdmin  = ( $row['is_admin'] == '1');
00366                $this->ldap_dn  = $row['ldap_dn' ];
00367                $this->fullname = $row['fullname'];
00368                $this->tel      = $row['tel'     ];
00369                $this->mail     = $row['mail'    ];
00370                $this->desc     = $row['descr'   ];
00371                
00372                if   ( $this->fullname == '' )
00373                     $this->fullname = $this->name;
00374                     
00375                if   ( $this->style == '' )
00376                     $this->style = $conf['interface']['style']['default'];
00377           }
00378           else
00379           {
00380                $this->userid   = -99;
00381                $this->name     = lang('UNKNOWN');
00382                $this->style    = $conf['interface']['style']['default'];
00383                $this->isAdmin  = false;
00384                $this->ldap_dn  = '';
00385                $this->fullname = lang('UNKNOWN');
00386                $this->tel      = '';
00387                $this->mail     = '';
00388                $this->desc     = '';
00389           }
00390 
00391           /* vorerst unbenutzt:
00392           if   ( $row['use_ldap'] == '1' )
00393           {
00394                // Daten aus LDAP-Verzeichnisdienst lesen
00395 
00396                // Verbindung zum LDAP-Server herstellen
00397                $ldap_conn = @ldap_connect( $conf['ldap']['host'],$conf['ldap']['port'] );
00398                
00399                if   ( !$ldap_conn )
00400                {
00401                     logger( 'INFO','cannot connect to LDAP server '.$conf['ldap']['host'].' '.$conf['ldap']['port'] );
00402                     $this->error = 'cannot connect to LDAP server';
00403                     return false;
00404                }
00405                
00406                // Anonymes LDAP-Login versuchen
00407                $ldap_bind = @ldap_bind( $ldap_conn );
00408                
00409                if   ( $ldap_bind )
00410                {
00411                     // Login erfolgreich
00412                     $sr = ldap_read( $ldap_conn,$row['ldap_dn'],'(objectclass=*)' );
00413                     
00414                     $daten   = ldap_get_entries( $ldap_conn,$sr );
00415                     
00416                     $this->fullname = $daten[0]['givenName'][0].' '.$daten[0]['sn'][0];
00417                     $this->tel      = $daten[0]['telephoneNumber'][0];
00418                     $this->mail     = $daten[0]['mail'][0];
00419                     $this->desc     = $daten[0]['description'][0];
00420                }
00421                
00422           }
00423           */
00424      }

User::setPassword ( password,
always = true 
)

Setzt ein neues Kennwort f�r diesen Benutzer.

Parameter:
password Kennwortt
always true, wenn Kennwort dauerhaft.

Definiert in Zeile 866 der Datei User.class.php.

Benutzt $db und db_connection().

00867      {
00868           $db = db_connection();
00869 
00870           $sql = new Sql( 'UPDATE {t_user} SET password={password}'.
00871                           'WHERE id={userid}' );
00872                           
00873           if   ( $always )
00874                $sql->setString('password',md5($password) );
00875           else
00876                $sql->setString('password',$password      );
00877                
00878           $sql->setInt   ('userid'  ,$this->userid  );
00879 
00880           $db->query( $sql->query );
00881      }

User::User ( userid = ''  ) 

Definiert in Zeile 149 der Datei User.class.php.

Benutzt $userid.

Wird benutzt von getAllUsers() und loadWithName().

00150      {
00151           if   ( is_numeric($userid) )
00152                $this->userid = $userid;
00153      }


Dokumentation der Datenelemente

User::$desc

Definiert in Zeile 138 der Datei User.class.php.

User::$error = ''

Definiert in Zeile 131 der Datei User.class.php.

User::$fullname = ''

Definiert in Zeile 134 der Datei User.class.php.

User::$groups = null

Definiert in Zeile 146 der Datei User.class.php.

User::$isAdmin

Definiert in Zeile 140 der Datei User.class.php.

User::$ldap_dn

Definiert in Zeile 135 der Datei User.class.php.

User::$loginDate = 0

Definiert in Zeile 143 der Datei User.class.php.

User::$mail

Definiert in Zeile 137 der Datei User.class.php.

User::$mustChangePassword = false

Definiert in Zeile 145 der Datei User.class.php.

User::$name = ''

Definiert in Zeile 133 der Datei User.class.php.

Wird benutzt von add(), getUserName() und loadWithName().

User::$projects

Definiert in Zeile 141 der Datei User.class.php.

User::$rights

Definiert in Zeile 142 der Datei User.class.php.

User::$style

Definiert in Zeile 139 der Datei User.class.php.

User::$tel

Definiert in Zeile 136 der Datei User.class.php.

User::$userid = 0

Definiert in Zeile 130 der Datei User.class.php.

Wird benutzt von getUserName() und User().


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Thu May 14 00:55:51 2009 für OpenRat von  doxygen 1.5.8