openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 4cf587e2314b686deda240c9d0679f242046bf3c
parent 0cfc1af5a7b021d0853de783cc3149e2cd238c3a
Author: dankert <dankert@braunbaer-laptop>
Date:   Sat, 16 Jan 2010 00:08:39 +0100

Zweig-Zusammenfuehrung

Diffstat:
actionClasses/ObjectAction.class.php | 22++++++++++++++++++++++
actionClasses/WebdavAction.class.php | 1+
db/mysqli.class.php | 22+++++++++++++++++-----
objectClasses/Acl.class.php | 112+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
objectClasses/Element.class.php | 81+++++--------------------------------------------------------------------------
objectClasses/Folder.class.php | 44+-------------------------------------------
objectClasses/Group.class.php | 27++-------------------------
objectClasses/Language.class.php | 6+-----
objectClasses/Link.class.php | 17++---------------
objectClasses/Model.class.php | 22+++-------------------
objectClasses/Object.class.php | 221++++++++++++++++++-------------------------------------------------------------
objectClasses/Page.class.php | 108+------------------------------------------------------------------------------
objectClasses/Project.class.php | 56+-------------------------------------------------------
objectClasses/Template.class.php | 56+-------------------------------------------------------
objectClasses/User.class.php | 104++-----------------------------------------------------------------------------
objectClasses/Value.class.php | 3---
serviceClasses/TemplateEngine.class.php | 48++++++++++++++++++++++++++++++++++++++----------
themes/default/include/html/button.inc.php | 2+-
18 files changed, 221 insertions(+), 731 deletions(-)

diff --git a/actionClasses/ObjectAction.class.php b/actionClasses/ObjectAction.class.php @@ -163,6 +163,28 @@ class ObjectAction extends Action $acl->transmit = ( $this->hasRequestVar('transmit' ) ); $acl->add(); + + // Falls die Berechtigung vererbbar ist, dann diese sofort an + // Unterobjekte vererben. + if ( $acl->transmit ) + { + $folder = new Folder( $acl->objectid ); + $oids = $folder->getObjectIds(); + foreach( $folder->getAllSubfolderIds() as $sfid ) + { + $subfolder = new Folder( $sfid ); + $oids = array_merge($oids,$subfolder->getObjectIds()); + } + + foreach( $oids as $oid ) + { + $acl->objectid = $oid; + $acl->add(); + } + } + + + $this->addNotice('','','ADDED',OR_NOTICE_OK); diff --git a/actionClasses/WebdavAction.class.php b/actionClasses/WebdavAction.class.php @@ -127,6 +127,7 @@ class WebdavAction extends Action if ( $ok ) { + $user->load(); $user->setCurrent(); $this->redirectWithSessionId(); } diff --git a/db/mysqli.class.php b/db/mysqli.class.php @@ -46,7 +46,8 @@ class DB_mysqli * @var Resource */ var $stmt; - + + var $prepared = false; var $params = array(); @@ -109,7 +110,7 @@ class DB_mysqli function query($query) { - if ( is_object($this->stmt) ) + if ( $this->prepared ) { foreach($this->params as $name => $data) { @@ -128,8 +129,10 @@ class DB_mysqli $ar[] = &$data['value']; } - call_user_func_array(array($this->stmt, 'bind_param'),$ar); - + call_user_func_array('bind_param',array($this->stmt,$ar)); + $this->stmt->execute(); + $this->stmt->bind_result( $a, $b ); + return $this->stmt; } $result = mysqli_query($this->connection,$query); @@ -170,7 +173,7 @@ class DB_mysqli } $this->stmt = mysqli_prepare($this->connection,$query); - + $this->prepared = true; } function bind( $param,$value ) @@ -205,6 +208,15 @@ class DB_mysqli mysqli_query($this->connection,'ROLLBACK'); } + + /** + * Setzt die letzte Abfrage zurueck. + */ + function clear() + { + $this->prepared = false; + $this->params = array(); + } } diff --git a/objectClasses/Acl.class.php b/objectClasses/Acl.class.php @@ -18,7 +18,6 @@ -// Definition der Berechtigungs-Bits define('ACL_READ' ,1 ); define('ACL_WRITE' ,2 ); define('ACL_PROP' ,4 ); @@ -151,7 +150,7 @@ class Acl var $create_file = false; /** - * Verknuepfung anlegen + * Verkn?pfung anlegen * @type Boolean */ var $create_link = false; @@ -176,8 +175,7 @@ class Acl /** - * Konstruktor. - * + * Konstruktor * @param Integer Acl-ID */ function Acl( $aclid = 0 ) @@ -188,8 +186,7 @@ class Acl /** - * Laden einer ACL inklusive Benutzer-, Gruppen- und Sprachbezeichnungen. - * Zum einfachen Laden sollte #loadRaw() benutzt werden. + * Laden einer ACL inklusive Benutzer-, Gruppen- und Sprachbezeichnungen */ function load() { @@ -217,8 +214,7 @@ class Acl /** - * Laden einer ACL (ohne verknuepfte Namen). - * Diese Methode ist schneller als #load(). + * Laden einer ACL (ohne verknuepfte Namen) */ function loadRaw() { @@ -237,7 +233,7 @@ class Acl /** - * Setzt die Eigenschaften des Objektes mit einer Datenbank-Ergebniszeile. + * Setzt die Eigenschaften des Objektes mit einer Datenbank-Ergebniszeile * * @param row Ergebniszeile aus ACL-Datenbanktabelle */ @@ -263,12 +259,6 @@ class Acl $this->groupid = intval($row['groupid' ]); } - - /** - * Erzeugt eine Liste aller Berechtigungsbits dieser ACL. - * - * @return Array (Schluessel=Berechtigungstyp, Wert=boolean) - */ function getProperties() { return Array( 'read' => true, @@ -295,11 +285,6 @@ class Acl } - /** - * Erzeugt eine Liste aller möglichen Berechtigungstypen. - * - * @return 0..n-Array - */ function getAvailableRights() { return array( 'read', @@ -319,13 +304,11 @@ class Acl /** - * Erzeugt eine Bitmaske mit den Berechtigungen dieser ACL. - * - * @return Integer Bitmaske + * Erzeugt eine Bitmaske mit allen Berechtigungen */ function getMask() { - // intval(boolean) erzeugt numerisch 0 oder 1 :) + // intval(boolean) erzeugt numerisch 0 oder 1 $this->mask = ACL_READ; // immer lesen $this->mask += ACL_WRITE *intval($this->write ); $this->mask += ACL_PROP *intval($this->prop ); @@ -338,18 +321,10 @@ class Acl $this->mask += ACL_CREATE_PAGE *intval($this->create_page ); $this->mask += ACL_GRANT *intval($this->grant ); $this->mask += ACL_TRANSMIT *intval($this->transmit ); - - Logger::trace('mask of acl '.$this->aclid.': '.$this->mask ); return $this->mask; } - /** - * Erzeugt eine Liste aller gesetzten Berechtigungstypen. - * Beispiel: Array (0:'read',1:'write',2:'transmit') - * - * @return 0..n-Array - */ function getTrueProperties() { $erg = array('read'); @@ -369,10 +344,6 @@ class Acl } - - /** - * ACL unwiderruflich loeschen. - */ function delete() { $db = db_connection(); @@ -390,9 +361,6 @@ class Acl } - /** - * ACL der Datenbank hinzufügen. - */ function add() { if ( $this->delete ) @@ -400,6 +368,47 @@ class Acl $db = db_connection(); + // Prüfen, ob die ACL schon existiert + $sql = new Sql( <<<SQL + SELECT aclid FROM {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 +); + + if ( intval($this->userid) == 0 ) + $sql->setNull('userid'); + else + $sql->setInt ('userid',$this->userid); + + if ( intval($this->groupid) == 0 ) + $sql->setNull('groupid'); + else + $sql->setInt ('groupid',$this->groupid); + + $sql->setInt('objectid',$this->objectid); + //$sql->setBoolean('is_default' ,$this->isDefault ); + $sql->setBoolean('write' ,$this->write ); + $sql->setBoolean('prop' ,$this->prop ); + $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 ); + $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 ); + + if ( intval($this->languageid) == 0 ) + $sql->setNull('languageid'); + else + $sql->setInt ('languageid',$this->languageid); + + if ( intval($db->getOne($sql)) > 0 ) + return; + + $sql = new Sql('SELECT MAX(id) FROM {t_acl}'); $this->aclid = intval($db->getOne($sql))+1; @@ -423,6 +432,7 @@ SQL $sql->setInt ('groupid',$this->groupid); $sql->setInt('objectid',$this->objectid); + //$sql->setBoolean('is_default' ,$this->isDefault ); $sql->setBoolean('write' ,$this->write ); $sql->setBoolean('prop' ,$this->prop ); $sql->setBoolean('create_folder',$this->create_folder ); @@ -442,4 +452,28 @@ SQL $db->query( $sql ); } + + +// 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 ); +// } +// +// +// 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 ); +// } } \ No newline at end of file diff --git a/objectClasses/Element.class.php b/objectClasses/Element.class.php @@ -1,9 +1,6 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // OpenRat Content Management System -// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de +// Copyright (C) 2002-2010 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 @@ -18,84 +15,16 @@ // 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.22 2007-11-15 21:43:34 dankert -// Fehlende Attribute der Klasse erg?nzt. -// -// Revision 1.21 2007-11-07 23:29:05 dankert -// Wenn Seite direkt aufgerufen wird, dann sofort Seitenelement anzeigen. -// -// Revision 1.20 2007-10-29 22:16:19 dankert -// Korrektur Auswahl-Eigenschaften f?r Kopie-Element -// -// Revision 1.19 2007-05-22 20:12:28 dankert -// Elementtyp "list" hei?t intern nun "insert". -// -// Revision 1.18 2007-05-21 20:04:10 dankert -// Korrektur f?r Anzeige des Vorlagen-Quelltextes. -// -// Revision 1.17 2007-05-02 20:58:45 dankert -// Ausw?hlen von Einstellungen f?r Elemente "linkinfo" und "copy". -// -// Revision 1.16 2006/07/05 19:15:34 dankert -// Bugfix getRelatedProperties() -// -// Revision 1.15 2006/07/04 20:48:14 dankert -// Element "copy" hat nur Eigenschaft "defaultText" -// -// Revision 1.14 2006/06/16 19:45:05 dankert -// Neues Templateelement "Kopie" (intern: "copy") -// -// Revision 1.13 2006/01/29 17:26:28 dankert -// In Methode add() auch die Beschreibung speichern -// -// Revision 1.12 2005/11/07 22:34:01 dankert -// Neue Methode "getDefaultValue()" -// -// Revision 1.11 2005/04/21 19:08:44 dankert -// Vorbelegung fuer "list"-Element -// -// Revision 1.10 2005/01/04 19:58:22 dankert -// Bei Datum auch Default-Text als Eigenschaft -// -// Revision 1.9 2004/12/26 20:22:03 dankert -// Erweiterung bei setType() -// -// Revision 1.8 2004/12/26 01:06:31 dankert -// Perfomanceverbesserung Seite/Elemente -// -// Revision 1.7 2004/12/19 15:21:21 dankert -// Aenderung getDynamicParameters() -// -// Revision 1.6 2004/10/14 21:10:29 dankert -// Parameter/Listeninhalte aus $this->code separiert (als Array) zurueckgeben -// -// Revision 1.5 2004/10/06 10:38:21 dankert -// Elementtyp dynamic ist nie beschreibbar -// -// Revision 1.4 2004/10/06 09:54:19 dankert -// Neuer Elementtyp: dynamic -// -// Revision 1.3 2004/07/07 20:45:10 dankert -// Neuer Elementtyp: select -// -// Revision 1.2 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 -// -// --------------------------------------------------------------------------- + + /** * Diese Objektklasse stellt ein Element das. + * * Ein Element ist ein Platzhalter in einem Template und kann verschiedenen * Typs sein, z.B. Text oder ein Bild. * + * @author Jan Dankert * @package openrat.objects */ class Element diff --git a/objectClasses/Folder.class.php b/objectClasses/Folder.class.php @@ -1,9 +1,6 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // OpenRat Content Management System -// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de +// Copyright (C) 2002-2010 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 @@ -18,45 +15,6 @@ // 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.13 2007-11-30 23:38:41 dankert -// nur ein Kommentar erg?nzt -// -// Revision 1.12 2007-10-25 22:29:11 dankert -// Neue Methoden f?r Filemanager. -// -// Revision 1.11 2007-05-02 21:28:47 dankert -// Beim Lesen aller Objekte bereits in der Datenbank nach Typ filtern. -// -// Revision 1.10 2006/07/19 21:30:12 dankert -// Verbesserung "getParentObjectNames()" -// -// Revision 1.9 2005/11/07 22:34:51 dankert -// Einen Sql-Befehl in ein "here-document" ausgelagert. -// -// Revision 1.8 2005/01/04 19:58:56 dankert -// neue Methoden getFirst/LastPageOrLink() -// -// Revision 1.7 2004/12/19 15:22:17 dankert -// Anpassung Session-Funktionen -// -// Revision 1.6 2004/12/15 23:18:36 dankert -// Anpassung an Session-Funktionen -// -// Revision 1.5 2004/11/29 21:10:29 dankert -// publish() mit 3 Parametern -// -// Revision 1.4 2004/11/24 22:05:45 dankert -// Korrektur getObjects() -// -// Revision 1.3 2004/11/10 22:45:56 dankert -// *** empty log message *** -// -// Revision 1.2 2004/05/02 14:41:31 dankert -// Einf?gen package-name (@package) -// -// --------------------------------------------------------------------------- /** diff --git a/objectClasses/Group.class.php b/objectClasses/Group.class.php @@ -1,9 +1,6 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // OpenRat Content Management System -// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de +// Copyright (C) 2002-2010 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 @@ -18,27 +15,7 @@ // 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.7 2009-03-01 01:39:58 dankert -// Neue Methode "getAllAcls()" zum Lesen der Berechtigungen. -// -// Revision 1.6 2007-11-08 22:21:59 dankert -// Abfangen, wenn Gruppe nicht in Datenbank gefunden wird. -// -// Revision 1.5 2006/01/23 22:59:43 dankert -// Leere Gruppennamen ?bersteuern -// -// Revision 1.4 2004/05/19 21:11:35 dankert -// subaction verwenden -// -// Revision 1.3 2004/05/19 21:11:04 dankert -// korrektur bei delete() -// -// Revision 1.2 2004/05/02 14:41:31 dankert -// Einf?gen package-name (@package) -// -// --------------------------------------------------------------------------- + /** diff --git a/objectClasses/Language.class.php b/objectClasses/Language.class.php @@ -1,9 +1,6 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // OpenRat Content Management System -// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de +// Copyright (C) 2002-2010 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 @@ -18,7 +15,6 @@ // 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. -// --------------------------------------------------------------------------- /** diff --git a/objectClasses/Link.class.php b/objectClasses/Link.class.php @@ -1,7 +1,4 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // OpenRat Content Management System // Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de // @@ -18,18 +15,8 @@ // 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.2 2004-05-02 14:41:31 dankert -// Einf�gen package-name (@package) -// -// Revision 1.1 2004/04/24 15:15:12 dankert -// Initiale Version -// -// Revision 1.1 2003/10/27 23:21:55 dankert -// Methode(n) hinzugef�gt: savevalue(), save() -// -// --------------------------------------------------------------------------- + + /** * Darstellen einer Verkn�pfung. Eine Verkn�pfung kann auf eine Objekt oder auf diff --git a/objectClasses/Model.class.php b/objectClasses/Model.class.php @@ -1,9 +1,6 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // OpenRat Content Management System -// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de +// Copyright (C) 2002-2010 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 @@ -18,21 +15,8 @@ // 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.5 2007-11-24 12:16:15 dankert -// Methoden "available()" zum Pr?fen auf die Existenz der Id. -// -// Revision 1.4 2004/12/15 23:18:36 dankert -// Anpassung an Session-Funktionen -// -// Revision 1.3 2004/11/10 22:46:27 dankert -// *** empty log message *** -// -// Revision 1.2 2004/04/25 12:58:24 dankert -// Spalte "selflink" entfernt -// -// --------------------------------------------------------------------------- + + /** * Diese Klasse stellt ein Projektmodell dar. Ein Projektmodell ist eine Darstellungsart diff --git a/objectClasses/Object.class.php b/objectClasses/Object.class.php @@ -1,9 +1,6 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- -// DaCMS Content Management System -// Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de +// OpenRat Content Management System +// Copyright (C) 2002-2009 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 @@ -18,118 +15,14 @@ // 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.32 2009-03-19 04:36:12 dankert -// Beim Anlegen eines Objektes sofort Standard-Rechte vergeben. -// -// Revision 1.31 2009-03-17 01:39:43 dankert -// Funktionsfähigkeit bei enable_cache=false -// -// Revision 1.30 2009-03-17 01:27:28 dankert -// Ãœberarbeitung der temporären Dateinamen. -// -// Revision 1.29 2009-03-02 21:20:02 dankert -// Korrektur in "getTempDir()" -// -// Revision 1.28 2007-12-11 00:22:31 dankert -// Cache von Dateien und Seiten zur Performancesteigerung beim Ver?ffentlichen. -// -// Revision 1.27 2007-12-01 17:49:37 dankert -// Methode "available()" ergibt sofort "false", wenn Objekt-Id ung?ltig (Performance) -// -// Revision 1.26 2007-06-08 23:05:44 dankert -// Als tempor?res Verzeichnis das "upload_tmp_dir" aus der PHP-Konfiguration verwenden. -// -// Revision 1.25 2007-06-04 22:17:51 dankert -// Suchergebnisse absteigend nach ?nderungsdatum sortieren. -// -// Revision 1.24 2007-04-22 00:16:44 dankert -// Fehlermeldung vermeiden, wenn eine Objekt-Id nicht in der Datenbank vorhanden ist. -// -// Revision 1.23 2007-04-08 15:25:35 dankert -// Eigenschaft "type" erg?nzt. -// -// Revision 1.22 2007-04-06 01:38:52 dankert -// Namen nicht speichern, wenn leer. -// -// Revision 1.21 2007/02/14 22:10:57 dankert -// TODO f?r tmpfile-Erzeugung -// -// Revision 1.20 2006/01/29 17:26:55 dankert -// Neben "desc" auch "description" f?llen. -// -// Revision 1.19 2005/11/07 22:36:40 dankert -// Flexibere Ermittlung des Dateinamen anhand neuer Konfigurationseigenschaften. -// -// Revision 1.18 2004/12/27 23:19:47 dankert -// ungueltige Zeichen im Dateinamen mit Punkt ersetzen -// -// Revision 1.17 2004/12/20 23:04:15 dankert -// Korrektur Timestamp setzen -// -// Revision 1.16 2004/12/20 22:42:03 dankert -// Kl. Korrekturen -// -// Revision 1.15 2004/12/20 22:03:45 dankert -// Lesen des Benutzers und speichern als Objekt -// -// Revision 1.14 2004/12/20 20:01:20 dankert -// Benutzen von switch() in filename() -// -// Revision 1.13 2004/12/19 15:23:56 dankert -// Anpassung Session-Funktionen -// -// Revision 1.12 2004/12/15 23:18:09 dankert -// Anpassung an Session-Funktionen -// -// Revision 1.11 2004/11/29 23:54:36 dankert -// Korrektur Vorversion -// -// Revision 1.10 2004/11/29 23:34:39 dankert -// neue Methode setTimestamp() -// -// Revision 1.9 2004/11/29 23:24:36 dankert -// Korrektur Veroeffentlichung -// -// Revision 1.8 2004/11/29 00:02:41 dankert -// Bei L?schen von Objekten alle Referenzen in Tabelle or_link entfernen -// -// Revision 1.7 2004/11/28 22:32:52 dankert -// in getProperties() auch den Typ zurueckgeben -// -// Revision 1.6 2004/11/28 16:56:04 dankert -// in hasRight() auch Abfrage des Parent-Ordners -// -// Revision 1.5 2004/11/24 22:06:24 dankert -// Neu: setDatabaseRow() zur Performancesteigerung -// -// Revision 1.4 2004/11/15 21:34:44 dankert -// Aenderung methode hasRight() -// -// Revision 1.3 2004/11/10 22:46:52 dankert -// Neue Methoden checkFilename(), objectLoadRaw() -// -// Revision 1.2 2004/05/02 14:41:31 dankert -// Einf?gen package-name (@package) -// -// Revision 1.1 2004/04/24 15:15:12 dankert -// Initiale Version -// -// Revision 1.2 2004/03/20 14:15:07 dankert -// Kommentare -// -// Revision 1.1 2004/03/20 01:47:33 dankert -// *** empty log message *** -// -// --------------------------------------------------------------------------- /** - * Darstellung eines Objektes im Projektbaum. - * Dieses Objekt stellt eines der 4 Unterobjekte Ordner,Datei,Link oder Seite dar. + * Superklasse fuer Objekte im Projektbaum. + * + * Dieses Objekt ist die Oberklasse fuer die 4 Klassen Ordner, Datei, + * Link oder Seite dar. * - * @version $Revision$ - * @author $Author$ + * @author Jan Dankert * @package openrat.objects */ class Object @@ -275,16 +168,13 @@ class Object $language = Session::getProjectLanguage(); - if ( is_object($language) ) - $this->languageid = $language->languageid; + $this->languageid = $language->languageid; $model = Session::getProjectModel(); - if ( is_object($model) ) - $this->modelid = $model->modelid; + $this->modelid = $model->modelid; $project = Session::getProject(); - if ( is_object($project) ) - $this->projectid = $project->projectid; + $this->projectid = $project->projectid; } @@ -338,22 +228,19 @@ class Object /** - * Pr?fen einer Berechtigung zu diesem Objekt + * Pruefen einer Berechtigung zu diesem Objekt */ function hasRight( $type ) { -// $user = Session::getUser(); -// return $user->hasRight( $this->objectid,$type ) || (isset($this->parentid)&&$user->hasRight($this->parentid,$type)&&$user->hasRight($this->parentid,ACL_TRANSMIT)); - if ( is_null($this->aclMask) ) { - $this->aclMask = 0; - $project = Session::getProject(); $language = Session::getProjectLanguage(); $user = Session::getUser(); - if ( $user->isAdmin && !config('security','readonly') ) + if ( $user->isAdmin ) + { + // Administratoren erhalten eine Maske mit allen Rechten $this->aclMask = ACL_READ + ACL_WRITE + ACL_PROP + @@ -366,12 +253,13 @@ class Object ACL_CREATE_PAGE + ACL_GRANT + ACL_TRANSMIT; - - if ( $user->isAdmin && $type & ACL_READ ) - return true; - - $sqlGroupClause = $user->getGroupClause(); - $sql = new Sql( <<<SQL + } + else + { + $this->aclMask = 0; + + $sqlGroupClause = $user->getGroupClause(); + $sql = new Sql( <<<SQL SELECT {t_acl}.* FROM {t_acl} LEFT JOIN {t_object} ON {t_object}.id={t_acl}.objectid @@ -381,26 +269,28 @@ SELECT {t_acl}.* FROM {t_acl} OR ({t_acl}.userid IS NULL AND {t_acl}.groupid IS NULL) ) SQL ); - - $sql->setInt ( 'languageid' ,$language->languageid ); - $sql->setInt ( 'objectid' ,$this->objectid ); - $sql->setInt ( 'userid' ,$user->userid ); - $db = db_connection(); - foreach( $db->getAll( $sql ) as $row ) - { - $acl = new Acl(); - $acl->setDatabaseRow( $row ); - #Html::debug($acl,"ACL"); - - $this->aclMask |= $acl->getMask(); + $sql->setInt ( 'languageid' ,$language->languageid ); + $sql->setInt ( 'objectid' ,$this->objectid ); + $sql->setInt ( 'userid' ,$user->userid ); + + $db = db_connection(); + foreach( $db->getAll( $sql ) as $row ) + { + $acl = new Acl(); + $acl->setDatabaseRow( $row ); + + $this->aclMask |= $acl->getMask(); + } } } -// Html::debug($type,"Anfrage"); -// Html::debug($this->aclMask,"Maske fuer Objekt ".$this->objectid); -// Html::debug($this->aclMask & $type,"Ergebnis"); - return $this->aclMask & $type; + if ( readonly() ) + // System ist im Nur-Lese-Zustand + return $type == ACL_READ && $this->aclMask & $type; + else + // Ermittelte Maske auswerten + return $this->aclMask & $type; } @@ -603,7 +493,7 @@ SQL if (count($row) == 0) { debug_print_backtrace(); - Http::serverError('objectid not found: '.$this->objectid.', SQL='.$sql->raw ); + die('fatal: Object::objectLoad(): objectid not found: '.$this->objectid.', SQL='.$sql->raw ); } $this->setDatabaseRow( $row ); @@ -740,31 +630,19 @@ SQL global $SESS; $db = db_connection(); - $sql = new Sql( -<<<SQL -SELECT * - FROM {t_name} - WHERE objectid={objectid}'.' - AND languageid={languageid} -SQL - ); + $sql = new Sql('SELECT *'.' FROM {t_name}'.' WHERE objectid={objectid}'.' AND languageid={languageid}'); $sql->setInt('objectid' , $this->objectid ); $sql->setInt('languageid', $this->languageid); - $row = $db->getRow( $sql ); + $res = $db->query($sql); - if ( empty($row) ) + if ($res->numRows() == 0) { // Wenn Name in dieser Sprache nicht vorhanden, dann irgendeinen Namen lesen - $sql->setQuery( <<<SQL - SELECT * - FROM {t_name} - WHERE objectid={objectid} - AND name != {blank} -SQL - ); + $sql->setQuery('SELECT *'.' FROM {t_name}'.' WHERE objectid={objectid}'.' AND name != {blank}'); $sql->setString('blank', ''); - $row = $db->query($sql); + $res = $db->query($sql); } + $row = $res->fetchRow(); $this->name = $row['name']; $this->desc = $row['description']; @@ -981,12 +859,13 @@ SQL if ( !empty($this->name) ) $this->objectSaveName(); + // Standard-Rechte fuer dieses neue Objekt setzen. + // Der angemeldete Benutzer erhaelt Lese- und Schreibrechte auf + // das neue Objekt. $acl = new Acl(); $acl->userid = $user->userid; $acl->objectid = $this->objectid; - // Standard-Rechte fuer dieses neue Objekt setzen. - // Der Benutzer hat Lese- und Schreibrechte auf das Objekt. $acl->read = true; $acl->write = true; $acl->prop = true; @@ -1001,7 +880,7 @@ SQL } $acl->add(); - // Aus dem Eltern-Ordner vererbbare Berechtigungen übernehmen. + // Aus dem Eltern-Ordner vererbbare Berechtigungen uebernehmen. $folder = new Folder( $this->parentid ); foreach( $folder->getAclIds() as $aclid ) { diff --git a/objectClasses/Page.class.php b/objectClasses/Page.class.php @@ -1,7 +1,4 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // DaCMS Content Management System // Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de // @@ -18,115 +15,12 @@ // 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.32 2009-04-20 23:24:58 dankert -// Korrektur: Veröffentlichen mehrerer Varianten gleichzeitig. -// -// Revision 1.31 2009-04-18 00:56:14 dankert -// Beim Verarbeiten von if-empty-Bereichen der Seitenvorlage keine regulären Ausdrücke mehr verwenden (da Binärausgaben wie PDF-Dokumente dabei beschädigt werden). -// -// Revision 1.30 2009-03-17 01:39:43 dankert -// Funktionsfähigkeit bei enable_cache=false -// -// Revision 1.29 2009-03-17 01:27:29 dankert -// Ãœberarbeitung der temporären Dateinamen. -// -// Revision 1.28 2009-03-02 22:41:45 dankert -// Bugfix in setTimestamp() -// -// Revision 1.27 2008-10-07 20:03:54 dankert -// URLs ggf. mit Parameter "oid" aufbauen, um absolute URL zu erzwingen. -// -// Revision 1.26 2008-09-11 19:01:16 dankert -// Korrektur fuer Veroeffentlichen (nur deaktiveren, wenn keine Dateiendung vorliegt.) -// -// Revision 1.25 2007-12-11 00:22:31 dankert -// Cache von Dateien und Seiten zur Performancesteigerung beim Ver?ffentlichen. -// -// Revision 1.24 2007-11-24 14:18:12 dankert -// MimeType in Template ermitteln. -// -// Revision 1.23 2007-11-24 12:16:32 dankert -// Neue Methode mimeType() -// -// Revision 1.22 2007-11-07 23:29:05 dankert -// Wenn Seite direkt aufgerufen wird, dann sofort Seitenelement anzeigen. -// -// Revision 1.21 2007-06-13 22:01:22 dankert -// Korrektur: Dateiname Icon zum Bearbeiten. -// -// Revision 1.20 2007-04-22 00:16:44 dankert -// Fehlermeldung vermeiden, wenn eine Objekt-Id nicht in der Datenbank vorhanden ist. -// -// Revision 1.19 2005/11/07 22:36:10 dankert -// Beruecksichtigen von absoluten Pfadangaben -// -// Revision 1.18 2004/12/29 20:21:42 dankert -// Korrektur Bearbeiten-Funktion, Parameter zu Html::url() -// -// Revision 1.17 2004/12/28 22:55:51 dankert -// Korrektur Dateinamen-Ermittlung -// -// Revision 1.16 2004/12/26 01:06:31 dankert -// Perfomanceverbesserung Seite/Elemente -// -// Revision 1.15 2004/12/25 21:05:29 dankert -// Korrektur Edit-Icons -// -// Revision 1.14 2004/12/19 21:48:31 dankert -// Links auf andere Objekte korrigiert -// -// Revision 1.13 2004/12/19 15:23:06 dankert -// Aussschalten content-negotiation -// -// Revision 1.12 2004/12/15 23:17:53 dankert -// temporaere Dateien vom System -// -// Revision 1.11 2004/11/29 23:24:36 dankert -// Korrektur Veroeffentlichung -// -// Revision 1.10 2004/11/10 22:47:17 dankert -// Methode copyValuesFromPage() zum Kopiern einer Seite -// -// Revision 1.9 2004/10/14 21:10:57 dankert -// neue Methode getElementIds() -// -// Revision 1.8 2004/10/05 10:01:56 dankert -// Austauschen einer Vorlage -// -// Revision 1.7 2004/07/09 20:57:14 dankert -// Dynamische Bereiche (IFEMPTY...) -// -// Revision 1.6 2004/07/07 20:47:22 dankert -// Korrektur f. Verkn?pfungen -// -// Revision 1.5 2004/05/07 21:41:14 dankert -// Url ?ber Html::url erzeugen -// -// Revision 1.4 2004/05/02 14:41:31 dankert -// Einf?gen package-name (@package) -// -// Revision 1.3 2004/05/02 11:40:00 dankert -// Freigabestatus der Seiteninhalte verarbeiten -// -// Revision 1.2 2004/04/24 15:28:17 dankert -// Korrektur: relative Pfad bei Listen -// -// Revision 1.1 2004/04/24 15:15:12 dankert -// Initiale Version -// -// Revision 1.1 2004/03/20 14:15:00 dankert -// Kommentare -// -// --------------------------------------------------------------------------- /** * Darstellen einer Seite * - * @version $Revision$ - * @author $Author$ + * @author Jan Dankert * @package openrat.objects */ diff --git a/objectClasses/Project.class.php b/objectClasses/Project.class.php @@ -1,9 +1,6 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // OpenRat Content Management System -// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de +// Copyright (C) 2002-2010 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 @@ -18,57 +15,6 @@ // 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.18 2007-12-21 23:27:23 dankert -// Neue Methode "getTemplates" -// -// Revision 1.17 2007-12-04 22:57:20 dankert -// Beispiel-Vorlage mit "Hello, World". -// -// Revision 1.16 2007-11-24 12:16:15 dankert -// Methoden "available()" zum Pr?fen auf die Existenz der Id. -// -// Revision 1.15 2007-05-24 19:47:48 dankert -// Direktes Ausw?hlen von Sprache/Modell in der Projektauswahlliste. -// -// Revision 1.14 2007-04-22 00:17:30 dankert -// Neue Methode "export()" - fertiggestellt :) -// -// Revision 1.13 2007-04-21 11:53:09 dankert -// Neue Methode "export()" - in Arbeit, TODO! -// -// Revision 1.12 2007-04-06 01:37:49 dankert -// Verhindern einer Warnung bei modernen PHP-Versionen. -// -// Revision 1.11 2007/02/26 22:05:08 dankert -// Neue Methode "loadByName()" -// -// Revision 1.10 2006/07/19 21:30:32 dankert -// Beim Speichern auch ?ndern des Root-Folders -// -// Revision 1.9 2006/06/01 20:58:11 dankert -// Projektwartung: Suche nach verlorenen Dateien. -// -// Revision 1.8 2004/12/29 20:18:20 dankert -// Konstruktor geaendert -// -// Revision 1.7 2004/12/19 15:23:56 dankert -// Anpassung Session-Funktionen -// -// Revision 1.6 2004/12/15 23:16:58 dankert -// Anpassung an Session-Funktionen -// -// Revision 1.5 2004/11/10 22:47:57 dankert -// Methoden zum Lesen von Standardmodell, Standardsprache dieses Projektes -// -// Revision 1.4 2004/10/14 21:13:56 dankert -// *** empty log message *** -// -// Revision 1.3 2004/05/02 14:41:31 dankert -// Einf?gen package-name (@package) -// -// --------------------------------------------------------------------------- /** diff --git a/objectClasses/Template.class.php b/objectClasses/Template.class.php @@ -1,9 +1,6 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // OpenRat Content Management System -// Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de +// Copyright (C) 2002-2010 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 @@ -18,57 +15,6 @@ // 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.16 2009-04-20 23:24:36 dankert -// Ãœberflüssiges load() in mimeType() entfernt. -// -// Revision 1.15 2007-11-24 14:18:12 dankert -// MimeType in Template ermitteln. -// -// Revision 1.14 2007-11-07 23:29:05 dankert -// Wenn Seite direkt aufgerufen wird, dann sofort Seitenelement anzeigen. -// -// Revision 1.13 2007-10-10 19:08:55 dankert -// Beim Hinzuf?gen von Vorlagen das Kopieren einer anderen Vorlage erlauben. Korrektur beim L?schen von Vorlagen. -// -// Revision 1.12 2006-01-29 17:27:27 dankert -// Methode addElement() mit 2 weiteren Parametern -// -// Revision 1.11 2004/12/30 23:31:52 dankert -// Werte vorbelegen -// -// Revision 1.10 2004/12/30 23:23:21 dankert -// Werte vorbelegen -// -// Revision 1.9 2004/12/27 23:34:20 dankert -// Korrektur add() -// -// Revision 1.8 2004/12/26 01:06:31 dankert -// Perfomanceverbesserung Seite/Elemente -// -// Revision 1.7 2004/12/19 15:23:56 dankert -// Anpassung Session-Funktionen -// -// Revision 1.6 2004/12/18 00:37:50 dankert -// Projekt aus Session lesen -// -// Revision 1.5 2004/12/15 23:16:26 dankert -// Anpassung an Session-Funktionen -// -// Revision 1.4 2004/09/30 20:20:54 dankert -// Beim Speichern Sicherstellen, dass ein Name vorhanden ist -// -// Revision 1.3 2004/05/02 14:41:31 dankert -// Einf?gen package-name (@package) -// -// Revision 1.2 2004/04/25 17:31:46 dankert -// Bei L?schen auch Elemente entfernen -// -// Revision 1.1 2004/04/24 15:15:12 dankert -// Initiale Version -// -// --------------------------------------------------------------------------- /** diff --git a/objectClasses/User.class.php b/objectClasses/User.class.php @@ -1,7 +1,4 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // DaCMS Content Management System // Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de // @@ -18,105 +15,8 @@ // 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.33 2009-03-22 15:14:41 dankert -// Keine Aktion mehr in Methode loadRights() -// -// Revision 1.32 2009-03-19 10:05:05 dankert -// Bugfix bei Ermitteln der zur Verfügung stehenden Projekte: Nur die Root-Objekte der Projekte berücksichtigen. -// -// Revision 1.31 2009-03-19 04:29:39 dankert -// Bei LDAP-Login Gruppenzugehörigkeiten synchronisieren. -// -// Revision 1.30 2009-03-19 02:01:07 dankert -// Für die Liste der lesbaren Projekte müssen nur die Root-Ordner herangezogen werden. -// -// Revision 1.29 2008-03-06 21:19:15 dankert -// Nur Logging-Ausgabe verbessert. -// -// Revision 1.28 2007-11-08 23:03:41 dankert -// Kommentare erg?nzt. -// -// Revision 1.27 2007-11-05 20:45:36 dankert -// *** empty log message *** -// -// Revision 1.26 2007-10-24 18:53:21 dankert -// Automatisches Hinzuf?gen von Gruppen zu neuen Benutzern. -// -// Revision 1.25 2007-10-10 18:23:38 dankert -// Anzeigen der Gruppen-Mitgliedschaften im Profil. -// -// Revision 1.24 2007-04-24 20:55:22 dankert -// Autorisierung ?ber LDAP. -// -// Revision 1.23 2007-04-23 21:48:01 dankert -// Authentisierung gegen einen externen Server mit HTTP-Basic-Auth erm?glichen. -// -// Revision 1.22 2007-04-21 11:52:24 dankert -// Default-Style ist konfigurierbar. -// -// Revision 1.21 2007-04-08 21:51:55 dankert -// Korrektur Benutzer l?schen, wenn noch Referenzen in der Datenbank vorhanden sind. -// -// Revision 1.20 2007/02/15 22:12:02 dankert -// Neue Methode "isValid()" -// -// Revision 1.19 2007/01/27 00:16:36 dankert -// Neuer Loginmechanismus: "authdb" -// -// Revision 1.18 2007/01/21 22:20:12 dankert -// Erweiterungen bei LDAP-Zugriff, Auslagerung von LDAP-Befehlen in eigene Klasse. -// -// Revision 1.17 2007/01/20 15:20:31 dankert -// Neue Methode "getName()" -// -// Revision 1.16 2006/11/28 21:05:00 dankert -// Wenn Klartextkennwort (kein MD5), dann Benutzer nicht anmelden. -// -// Revision 1.15 2006/11/16 19:58:57 dankert -// Pflicht zu Kennwort?nderung ermitteln. -// -// Revision 1.14 2006/08/30 19:15:26 dankert -// Erzeugen Kennwort und Laden ?ber Benutzername. -// -// Revision 1.13 2005/04/16 22:25:06 dankert -// Verbindung zum LDAP-Server schlie?en -// -// Revision 1.12 2005/01/24 21:41:25 dankert -// Abfrage auf Readonly-Mode -// -// Revision 1.11 2004/12/20 23:29:51 dankert -// neue Methode setDatabaseRow() -// -// Revision 1.10 2004/12/20 23:19:41 dankert -// Neue Methode getAllUsers() -// -// Revision 1.9 2004/12/19 19:24:27 dankert -// getAvailableStyles() -// -// Revision 1.8 2004/11/28 22:32:33 dankert -// getAllAcls(): Lesen aller Rechte des Benutzers -// -// Revision 1.7 2004/11/28 16:56:38 dankert -// Beruecksichtigen von Berechtigungen fuer "alle" -// -// Revision 1.6 2004/11/15 21:35:39 dankert -// Berechtigungen mit Bitmasken -// -// Revision 1.5 2004/11/10 22:48:25 dankert -// Neue Methoden zum Einlesen der Berechtigungen -// -// Revision 1.4 2004/10/14 21:12:59 dankert -// Methoden fuer Berechtigungen -// -// Revision 1.3 2004/05/07 21:29:16 dankert -// Url ?ber Html::url erzeugen -// -// Revision 1.2 2004/05/02 14:41:31 dankert -// Einf?gen package-name (@package) -// -// --------------------------------------------------------------------------- + + /** * Darstellen eines Benutzers diff --git a/objectClasses/Value.class.php b/objectClasses/Value.class.php @@ -1,7 +1,4 @@ <?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- // DaCMS Content Management System // Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de // diff --git a/serviceClasses/TemplateEngine.class.php b/serviceClasses/TemplateEngine.class.php @@ -145,6 +145,23 @@ class TemplateEngine } + + function attributeValueOpenPHP($value) + { + $erg = $this->attributeValue($value); + + return '<'.'?php echo '.$erg.' ?>'; + + // TODO: Für statische Texte muesste kein PHP-Abschnitt geoeffnet werden + /* + if (substr($value,0,5) == 'text:' || strpos($value,':')===FALSE ) + return $erg; + else + return '<'.'?php '.$erg.' ?>'; + */ + } + + function attributeValue( $value ) { @@ -227,10 +244,14 @@ class TemplateEngine $values[] = "'".$attrName."'=>".$this->attributeValue($attrValue); } - fwrite( $outFileHandler,'<?php '); - foreach( $attr as $attrName=>$attrValue ) - fwrite( $outFileHandler,' $attr'.$hash.'_'.$attrName."=".$this->attributeValue($attrValue).'; '); - fwrite( $outFileHandler,' ?>'); + // Variablen $attr_* setzen + if ( count($attr) > 0 ) + { + fwrite( $outFileHandler,'<?php '); + foreach( $attr as $attrName=>$attrValue ) + fwrite( $outFileHandler,'$a'.$hash.'_'.$attrName."=".$this->attributeValue($attrValue).';'); + fwrite( $outFileHandler,' ?>'); + } $file = file( $inFileName ); $ignore = false; @@ -287,17 +308,24 @@ class TemplateEngine if ( !$linebreaks ) $line = rtrim($line); - // Die Variablen "$attr" müssen pro Ebene eindeutig sein, daher wird an den + // Die Variablen "$attr_*" muessen pro Ebene eindeutig sein, daher wird an den // Variablennamen die Tiefe angehangen. - $line = str_replace('$attr','$attr'.$hash,$line); + $line = str_replace('$attr_','$a'.$hash.'_',$line); + + foreach( $attr as $attrName=>$attrValue ) + $line = str_replace('%'.$attrName.'%',$this->attributeValueOpenPHP($attrValue),$line); + + fwrite( $outFileHandler,$line ); } - // Variablen "$attr" entfernen. - fwrite( $outFileHandler,'<?php '); + // Variablen $attr_* entfernen. + $unset_attr = array(); foreach( $attr as $attrName=>$attrValue ) - fwrite( $outFileHandler,'unset($attr'.$hash.'_'.$attrName.');'); - fwrite( $outFileHandler,' ?>'); + $unset_attr[] = '$a'.$hash.'_'.$attrName; + + if ( count($unset_attr) > 0 ) + fwrite( $outFileHandler,'<?php unset('.implode(',',$unset_attr).') ?>'); if ( is_file($elFileName) ) { diff --git a/themes/default/include/html/button.inc.php b/themes/default/include/html/button.inc.php @@ -15,6 +15,6 @@ #END-IF if ( !empty($attr_type) ) { -?><input type="<?php echo $attr_type ?>"<?php if(isset($attr_src)) { ?> src="<?php echo $image_dir.'icon_'.$attr_src.IMG_ICON_EXT ?>"<?php } ?> name="<?php echo $attr_value ?>" class="<?php echo $attr_class ?>" title="<?php echo lang($attr_text.'_DESC') ?>" value="&nbsp;&nbsp;&nbsp;&nbsp;<?php echo langHtml($attr_text) ?>&nbsp;&nbsp;&nbsp;&nbsp;" /><?php unset($attr_src) +?><input type="<?php echo $attr_type ?>"<?php if(isset($attr_src)) { ?> src="<?php echo $image_dir.'icon_'.$attr_src.IMG_ICON_EXT ?>"<?php } ?> name="<?php echo $attr_value ?>" class="%class%" title="<?php echo lang($attr_text.'_DESC') ?>" value="&nbsp;&nbsp;&nbsp;&nbsp;<?php echo langHtml($attr_text) ?>&nbsp;&nbsp;&nbsp;&nbsp;" /><?php unset($attr_src) ?><?php } ?> \ No newline at end of file