commit 8ca3fc51e0dd8564e9bc06a123e2f3d3e285d364
parent daf6a2b1d07e11994994b8024fa67f42e92d9713
Author: dankert <devnull@localhost>
Date: Wed, 10 Nov 2004 23:45:06 +0100
Neue Methode: getTrueProperties()
Diffstat:
1 file changed, 387 insertions(+), 332 deletions(-)
diff --git a/objectClasses/Acl.class.php b/objectClasses/Acl.class.php
@@ -1,334 +1,389 @@
-<?php
-// ---------------------------------------------------------------------------
-// $Id$
-// ---------------------------------------------------------------------------
-// OpenRat Content Management System
-// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-// ---------------------------------------------------------------------------
+<?php
+// ---------------------------------------------------------------------------
+// $Id$
+// ---------------------------------------------------------------------------
+// OpenRat Content Management System
+// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.3 2004-05-02 14:41:31 dankert
-// Einfügen package-name (@package)
-//
-// Revision 1.2 2004/04/30 20:36:25 dankert
-// Neu: Freigabe
-//
-// Revision 1.1 2004/04/24 15:15:12 dankert
-// Initiale Version
-//
-// ---------------------------------------------------------------------------
-
-/**
- * Darstellen einer Berechtigung (ACL "Access Control List")
- * Die Berechtigung zu einem Objekt wird mit einer Liste dieser Objekte dargestellt
- *
- * Falls es mehrere ACLs zu einem Objekt gibt, werden die Berechtigung-Flags addiert.
- *
- * @version $Revision$
- * @author $Author$
- * @package openrat.objects
- */
-class Acl
-{
- /**
- * eindeutige ID dieser ACL
- * @type Integer
- */
- var $aclid;
-
- /**
- * ID des Objektes, für das diese Berechtigung gilt
- * @type Integer
- */
- var $objectid = 0;
-
- /**
- * ID des Benutzers
- * ( = 0 falls die Berechtigung für eine Gruppe gilt)
- * @type Integer
- */
- var $userid = 0;
-
- /**
- * ID der Gruppe
- * ( = 0 falls die Berechtigung für einen Benutzer gilt)
- * @type Integer
- */
- var $groupid = 0;
-
- /**
- * ID der Sprache
- * @type Integer
- */
- var $languageid = 0;
-
- /**
- * Es handelt sich um eine Standard-Berechtigung
- * (Falls false, dann Zugriffs-Berechtigung)
- * @type Boolean
- */
- var $isDefault = false;
-
- /**
- * Name des Benutzers, für den diese Berechtigung gilt
- * @type String
- */
- var $username = '';
-
- /**
- * Name der Gruppe, für die diese Berechtigung gilt
- * @type String
- */
- var $groupname = '';
-
- /**
- * Inhalt lesen (ist immer wahr)
- * @type Boolean
- */
- var $read = true;
-
- /**
- * Inhalt bearbeiten
- * @type Boolean
- */
- var $write = false;
-
- /**
- * Eigenschaften bearbeiten
- * @type Boolean
- */
- var $prop = false;
-
- /**
- * Objekt löschen
- * @type Boolean
- */
- var $delete = false;
-
- /**
- * Objektinhalt freigeben
- * @type Boolean
- */
- var $release = false;
-
- /**
- * Objekt veröffentlichen
- * @type Boolean
- */
- var $publish = false;
-
- /**
- * Unterordner anlegen
- * @type Boolean
- */
- var $create_folder = false;
-
- /**
- * Datei anlegen (bzw. hochladen)
- * @type Boolean
- */
- var $create_file = false;
-
- /**
- * Verknüpfung anlegen
- * @type Boolean
- */
- var $create_link = false;
-
- /**
- * Seite anlegen
- * @type Boolean
- */
- var $create_page = false;
-
- /**
- * Berechtigungen vergeben
- * @type Boolean
- */
- var $grant = false;
-
- /**
- * Berechtigungen an Unterobjekte vererben
- * @type Boolean
- */
- var $transmit = false;
-
-
- /**
- * Konstruktor
- * @param Integer Acl-ID
- */
- function Acl( $aclid = 0 )
- {
- if ( $aclid != 0 )
- $this->aclid = $aclid;
- }
-
-
- /**
- * Laden einer ACL
- */
- function load()
- {
- $db = db_connection();
-
- $sql = new Sql( 'SELECT {t_acl}.*,{t_user}.name as username,{t_group}.name as groupname,{t_language}.name as languagename'.
- ' FROM {t_acl} '.
- ' LEFT JOIN {t_user} ON {t_user}.id = {t_acl}.userid '.
- ' LEFT JOIN {t_group} ON {t_group}.id = {t_acl}.groupid '.
- ' LEFT JOIN {t_language} ON {t_language}.id = {t_acl}.languageid '.
- ' WHERE {t_acl}.id={aclid}' );
-
- $sql->setInt('aclid',$this->aclid);
-
- $row = $db->getRow( $sql->query );
-
- $this->write = ( $row['is_write' ] == '1' );
- $this->prop = ( $row['is_prop' ] == '1' );
- $this->delete = ( $row['is_delete' ] == '1' );
- $this->release = ( $row['is_release' ] == '1' );
- $this->publish = ( $row['is_publish' ] == '1' );
- $this->create_folder = ( $row['is_create_folder'] == '1' );
- $this->create_file = ( $row['is_create_file' ] == '1' );
- $this->create_page = ( $row['is_create_page' ] == '1' );
- $this->create_link = ( $row['is_create_link' ] == '1' );
- $this->grant = ( $row['is_grant' ] == '1' );
- $this->transmit = ( $row['is_transmit' ] == '1' );
-
- $this->objectid = intval($row['objectid' ]);
- $this->languageid = intval($row['languageid']);
- $this->userid = intval($row['userid' ]);
- $this->groupid = intval($row['groupid' ]);
- if ( intval($this->languageid)==0 )
- $this->languagename = lang('ALL_LANGUAGES');
- else $this->languagename = $row['languagename'];
- $this->username = $row['username' ];
- $this->groupname = $row['groupname' ];
- }
-
-
- function getProperties()
- {
- return Array( 'write' => $this->write,
- 'prop' => $this->prop,
- 'create_folder'=> $this->create_folder,
- 'create_file' => $this->create_file,
- 'create_link' => $this->create_link,
- 'create_page' => $this->create_page,
- 'delete' => $this->delete,
- 'release' => $this->release,
- 'publish' => $this->publish,
- 'grant' => $this->grant,
- 'transmit' => $this->transmit,
- 'is_default' => $this->isDefault,
- 'userid' => $this->userid,
- 'username' => $this->username,
- 'groupid' => $this->groupid,
- 'groupname' => $this->groupname,
- 'languageid' => $this->languageid,
- 'languagename' => $this->languagename,
- 'objectid' => $this->objectid );
-
- }
-
-
- function delete()
- {
- $db = db_connection();
-
- $sql = new Sql( 'DELETE FROM {t_acl} '.
- ' WHERE id = {aclid}' );
-
- $sql->setInt('aclid',$this->aclid);
-
- $db->query( $sql->query );
-
- $this->aclid = 0;
- }
-
-
- function add()
- {
- if ( $this->delete )
- $this->prop = true;
-
- $db = db_connection();
-
- $sql = new Sql('SELECT MAX(id) FROM {t_acl}');
- $this->aclid = intval($db->getOne($sql->query))+1;
-
- $sql = new Sql( 'INSERT INTO {t_acl} '.
- ' (id,userid,groupid,objectid,is_write,is_prop,is_create_folder,is_create_file,is_create_link,is_create_page,is_delete,is_release,is_publish,is_grant,is_transmit,languageid)'.
- ' VALUES( {aclid},{userid},{groupid},{objectid},{write},{prop},{create_folder},{create_file},{create_link},{create_page},{delete},{release},{publish},{grant},{transmit},{languageid} )' );
-
- $sql->setInt('aclid' ,$this->aclid );
- $sql->setInt('objectid',$this->objectid);
-
- if ( intval($this->groupid) == 0 )
- {
- $sql->setInt ('userid',$this->userid);
- $sql->setNull('groupid');
- }
- else
- {
- $sql->setNull('userid');
- $sql->setInt ('groupid',$this->groupid);
- }
-
- $sql->setBoolean('is_default' ,$this->isDefault );
- $sql->setBoolean('prop' ,$this->prop );
- $sql->setBoolean('write' ,$this->write );
- $sql->setBoolean('delete' ,$this->delete );
- $sql->setBoolean('release' ,$this->release );
- $sql->setBoolean('publish' ,$this->publish );
- $sql->setBoolean('grant' ,$this->grant );
- $sql->setBoolean('transmit' ,$this->transmit );
- $sql->setBoolean('create_folder',$this->create_folder );
- $sql->setBoolean('create_file' ,$this->create_file );
- $sql->setBoolean('create_link' ,$this->create_link );
- $sql->setBoolean('create_page' ,$this->create_page );
-
- if ( intval($this->languageid) == 0 )
- $sql->setNull('languageid');
- else $sql->setInt ('languageid',$this->languageid);
-
- $db->query( $sql->query );
- }
-
-
-// function getACLsFromUserId( $userid )
-// {
-// $db = db_connection();
-//
-// $sql = new Sql( 'SELECT id FROM {t_acl} '.
-// ' WHERE userid={userid}');
-// $sql->setInt('userid',$userid);
-//
-// return $db->getCol( $sql->query );
-// }
-//
-//
-// function getACLsFromGroupId( $groupid )
-// {
-// $db = db_connection();
-//
-// $sql = new Sql( 'SELECT id FROM {t_acl} '.
-// ' WHERE groupid={groupid}' );
-// $sql->setInt('groupid',$groupid);
-//
-// return $db->getCol( $sql->query );
-// }
+// Revision 1.4 2004-11-10 22:45:06 dankert
+// Neue Methode: getTrueProperties()
+//
+// Revision 1.3 2004/05/02 14:41:31 dankert
+// Einf?gen package-name (@package)
+//
+// Revision 1.2 2004/04/30 20:36:25 dankert
+// Neu: Freigabe
+//
+// Revision 1.1 2004/04/24 15:15:12 dankert
+// Initiale Version
+//
+// ---------------------------------------------------------------------------
+
+/**
+ * Darstellen einer Berechtigung (ACL "Access Control List")
+ * Die Berechtigung zu einem Objekt wird mit einer Liste dieser Objekte dargestellt
+ *
+ * Falls es mehrere ACLs zu einem Objekt gibt, werden die Berechtigung-Flags addiert.
+ *
+ * @version $Revision$
+ * @author $Author$
+ * @package openrat.objects
+ */
+class Acl
+{
+ /**
+ * eindeutige ID dieser ACL
+ * @type Integer
+ */
+ var $aclid;
+
+ /**
+ * ID des Objektes, f?r das diese Berechtigung gilt
+ * @type Integer
+ */
+ var $objectid = 0;
+
+ /**
+ * ID des Benutzers
+ * ( = 0 falls die Berechtigung f?r eine Gruppe gilt)
+ * @type Integer
+ */
+ var $userid = 0;
+
+ /**
+ * ID der Gruppe
+ * ( = 0 falls die Berechtigung f?r einen Benutzer gilt)
+ * @type Integer
+ */
+ var $groupid = 0;
+
+ /**
+ * ID der Sprache
+ * @type Integer
+ */
+ var $languageid = 0;
+
+ /**
+ * Es handelt sich um eine Standard-Berechtigung
+ * (Falls false, dann Zugriffs-Berechtigung)
+ * @type Boolean
+ */
+ var $isDefault = false;
+
+ /**
+ * Name des Benutzers, f?r den diese Berechtigung gilt
+ * @type String
+ */
+ var $username = '';
+
+ /**
+ * Name der Gruppe, f?r die diese Berechtigung gilt
+ * @type String
+ */
+ var $groupname = '';
+
+ /**
+ * Inhalt lesen (ist immer wahr)
+ * @type Boolean
+ */
+ var $read = true;
+
+ /**
+ * Inhalt bearbeiten
+ * @type Boolean
+ */
+ var $write = false;
+
+ /**
+ * Eigenschaften bearbeiten
+ * @type Boolean
+ */
+ var $prop = false;
+
+ /**
+ * Objekt l?schen
+ * @type Boolean
+ */
+ var $delete = false;
+
+ /**
+ * Objektinhalt freigeben
+ * @type Boolean
+ */
+ var $release = false;
+
+ /**
+ * Objekt ver?ffentlichen
+ * @type Boolean
+ */
+ var $publish = false;
+
+ /**
+ * Unterordner anlegen
+ * @type Boolean
+ */
+ var $create_folder = false;
+
+ /**
+ * Datei anlegen (bzw. hochladen)
+ * @type Boolean
+ */
+ var $create_file = false;
+
+ /**
+ * Verkn?pfung anlegen
+ * @type Boolean
+ */
+ var $create_link = false;
+
+ /**
+ * Seite anlegen
+ * @type Boolean
+ */
+ var $create_page = false;
+
+ /**
+ * Berechtigungen vergeben
+ * @type Boolean
+ */
+ var $grant = false;
+
+ /**
+ * Berechtigungen an Unterobjekte vererben
+ * @type Boolean
+ */
+ var $transmit = false;
+
+
+ /**
+ * Konstruktor
+ * @param Integer Acl-ID
+ */
+ function Acl( $aclid = 0 )
+ {
+ if ( $aclid != 0 )
+ $this->aclid = $aclid;
+ }
+
+
+ /**
+ * Laden einer ACL inklusive Benutzer-, Gruppen- und Sprachbezeichnungen
+ */
+ function load()
+ {
+ $db = db_connection();
+
+ $sql = new Sql( 'SELECT {t_acl}.*,{t_user}.name as username,{t_group}.name as groupname,{t_language}.name as languagename'.
+ ' FROM {t_acl} '.
+ ' LEFT JOIN {t_user} ON {t_user}.id = {t_acl}.userid '.
+ ' LEFT JOIN {t_group} ON {t_group}.id = {t_acl}.groupid '.
+ ' LEFT JOIN {t_language} ON {t_language}.id = {t_acl}.languageid '.
+ ' WHERE {t_acl}.id={aclid}' );
+
+ $sql->setInt('aclid',$this->aclid);
+
+ $row = $db->getRow( $sql->query );
+
+ $this->setDatabaseRow( $row );
+
+ if ( intval($this->languageid)==0 )
+ $this->languagename = lang('ALL_LANGUAGES');
+ else $this->languagename = $row['languagename'];
+ $this->username = $row['username' ];
+ $this->groupname = $row['groupname' ];
+ }
+
+
+ /**
+ * Laden einer ACL (ohne verknuepfte Namen)
+ */
+ function loadRaw()
+ {
+ $db = db_connection();
+
+ $sql = new Sql( 'SELECT * '.
+ ' FROM {t_acl} '.
+ ' WHERE {t_acl}.id={aclid}' );
+
+ $sql->setInt('aclid',$this->aclid);
+
+ $row = $db->getRow( $sql->query );
+
+ $this->setDatabaseRow( $row );
+ }
+
+
+ /**
+ * Setzt die Eigenschaften des Objektes mit einer Datenbank-Ergebniszeile
+ *
+ * @param row Ergebniszeile aus ACL-Datenbanktabelle
+ */
+ function setDatabaseRow( $row )
+ {
+ $this->aclid = $row['id'];
+
+ $this->write = ( $row['is_write' ] == '1' );
+ $this->prop = ( $row['is_prop' ] == '1' );
+ $this->delete = ( $row['is_delete' ] == '1' );
+ $this->release = ( $row['is_release' ] == '1' );
+ $this->publish = ( $row['is_publish' ] == '1' );
+ $this->create_folder = ( $row['is_create_folder'] == '1' );
+ $this->create_file = ( $row['is_create_file' ] == '1' );
+ $this->create_page = ( $row['is_create_page' ] == '1' );
+ $this->create_link = ( $row['is_create_link' ] == '1' );
+ $this->grant = ( $row['is_grant' ] == '1' );
+ $this->transmit = ( $row['is_transmit' ] == '1' );
+
+ $this->objectid = intval($row['objectid' ]);
+ $this->languageid = intval($row['languageid']);
+ $this->userid = intval($row['userid' ]);
+ $this->groupid = intval($row['groupid' ]);
+ }
+
+ function getProperties()
+ {
+ return Array( 'read' => true,
+ 'write' => $this->write,
+ 'prop' => $this->prop,
+ 'create_folder'=> $this->create_folder,
+ 'create_file' => $this->create_file,
+ 'create_link' => $this->create_link,
+ 'create_page' => $this->create_page,
+ 'delete' => $this->delete,
+ 'release' => $this->release,
+ 'publish' => $this->publish,
+ 'grant' => $this->grant,
+ 'transmit' => $this->transmit,
+ 'is_default' => $this->isDefault,
+ 'userid' => $this->userid,
+ 'username' => $this->username,
+ 'groupid' => $this->groupid,
+ 'groupname' => $this->groupname,
+ 'languageid' => $this->languageid,
+ 'languagename' => $this->languagename,
+ 'objectid' => $this->objectid );
+
+ }
+
+
+ function getTrueProperties()
+ {
+ $erg = array('read');
+ if ( $this->write ) $erg[] = 'write';
+ if ( $this->prop ) $erg[] = 'prop';
+ if ( $this->create_folder ) $erg[] = 'create_folder';
+ if ( $this->create_file ) $erg[] = 'create_file';
+ if ( $this->create_link ) $erg[] = 'create_link';
+ if ( $this->create_page ) $erg[] = 'create_page';
+ if ( $this->delete ) $erg[] = 'delete';
+ if ( $this->release ) $erg[] = 'release';
+ if ( $this->publish ) $erg[] = 'publish';
+ if ( $this->grant ) $erg[] = 'grant';
+ if ( $this->transmit ) $erg[] = 'transmit';
+
+ return $erg;
+ }
+
+
+ function delete()
+ {
+ $db = db_connection();
+
+ $sql = new Sql( 'DELETE FROM {t_acl} '.
+ ' WHERE id = {aclid}' );
+
+ $sql->setInt('aclid',$this->aclid);
+
+ $db->query( $sql->query );
+
+ $this->aclid = 0;
+ }
+
+
+ function add()
+ {
+ if ( $this->delete )
+ $this->prop = true;
+
+ $db = db_connection();
+
+ $sql = new Sql('SELECT MAX(id) FROM {t_acl}');
+ $this->aclid = intval($db->getOne($sql->query))+1;
+
+ $sql = new Sql( 'INSERT INTO {t_acl} '.
+ ' (id,userid,groupid,objectid,is_write,is_prop,is_create_folder,is_create_file,is_create_link,is_create_page,is_delete,is_release,is_publish,is_grant,is_transmit,languageid)'.
+ ' VALUES( {aclid},{userid},{groupid},{objectid},{write},{prop},{create_folder},{create_file},{create_link},{create_page},{delete},{release},{publish},{grant},{transmit},{languageid} )' );
+
+ $sql->setInt('aclid' ,$this->aclid );
+ $sql->setInt('objectid',$this->objectid);
+
+ if ( intval($this->groupid) == 0 )
+ {
+ $sql->setInt ('userid',$this->userid);
+ $sql->setNull('groupid');
+ }
+ else
+ {
+ $sql->setNull('userid');
+ $sql->setInt ('groupid',$this->groupid);
+ }
+
+ $sql->setBoolean('is_default' ,$this->isDefault );
+ $sql->setBoolean('prop' ,$this->prop );
+ $sql->setBoolean('write' ,$this->write );
+ $sql->setBoolean('delete' ,$this->delete );
+ $sql->setBoolean('release' ,$this->release );
+ $sql->setBoolean('publish' ,$this->publish );
+ $sql->setBoolean('grant' ,$this->grant );
+ $sql->setBoolean('transmit' ,$this->transmit );
+ $sql->setBoolean('create_folder',$this->create_folder );
+ $sql->setBoolean('create_file' ,$this->create_file );
+ $sql->setBoolean('create_link' ,$this->create_link );
+ $sql->setBoolean('create_page' ,$this->create_page );
+
+ if ( intval($this->languageid) == 0 )
+ $sql->setNull('languageid');
+ else $sql->setInt ('languageid',$this->languageid);
+
+ $db->query( $sql->query );
+ }
+
+
+// function getACLsFromUserId( $userid )
+// {
+// $db = db_connection();
+//
+// $sql = new Sql( 'SELECT id FROM {t_acl} '.
+// ' WHERE userid={userid}');
+// $sql->setInt('userid',$userid);
+//
+// return $db->getCol( $sql->query );
+// }
+//
+//
+// function getACLsFromGroupId( $groupid )
+// {
+// $db = db_connection();
+//
+// $sql = new Sql( 'SELECT id FROM {t_acl} '.
+// ' WHERE groupid={groupid}' );
+// $sql->setInt('groupid',$groupid);
+//
+// return $db->getCol( $sql->query );
+// }
}
\ No newline at end of file