commit 4cf587e2314b686deda240c9d0679f242046bf3c
parent 0cfc1af5a7b021d0853de783cc3149e2cd238c3a
Author: dankert <dankert@braunbaer-laptop>
Date: Sat, 16 Jan 2010 00:08:39 +0100
Zweig-Zusammenfuehrung
Diffstat:
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=" <?php echo langHtml($attr_text) ?> " /><?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=" <?php echo langHtml($attr_text) ?> " /><?php unset($attr_src)
?><?php }
?>
\ No newline at end of file