commit 720737a8c823ddfa652aca8625c263f4586cc8b1
parent f8b5f15cc9f565750d3c2b2e16a71504f7522378
Author: dankert <devnull@localhost>
Date: Sun, 26 Dec 2004 02:06:31 +0100
Perfomanceverbesserung Seite/Elemente
Diffstat:
6 files changed, 139 insertions(+), 89 deletions(-)
diff --git a/actionClasses/PageAction.class.php b/actionClasses/PageAction.class.php
@@ -332,11 +332,6 @@ class PageAction extends ObjectAction
$list[$id]['desc'] = $value->element->desc;
$list[$id]['type'] = $value->element->type;
- $u = new User( $value->lastchangeUserId );
- $u->load();
- $list[$id]['username' ] = $u->name;
- $list[$id]['userfullname' ] = $u->fullname;
-
$list[$id]['date' ] = date( lang('DATE_FORMAT'),$value->lastchangeTimeStamp);
$list[$id]['archive_count'] = $value->getCountVersions();
$list[$id]['archive_url' ] = Html::url( 'pageelement','archive','0',array('elementid'=>$id) );
diff --git a/actionClasses/PageelementAction.class.php b/actionClasses/PageelementAction.class.php
@@ -20,7 +20,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.10 2004-12-19 15:15:37 dankert
+// Revision 1.11 2004-12-26 01:06:31 dankert
+// Perfomanceverbesserung Seite/Elemente
+//
+// Revision 1.10 2004/12/19 15:15:37 dankert
// Konstruktor erweitert
//
// Revision 1.9 2004/10/14 21:08:32 dankert
@@ -319,10 +322,10 @@ class PageelementAction extends Action
*/
function archive()
{
+ $this->page->public = true;
+ $this->page->simple = true;
+ $this->page->load();
$this->value->page = &$this->page;
- $this->value->page->load();
- $this->value->page->public = true;
- $this->value->page->simple = true;
$this->value->simple = true;
$language = Session::getProjectLanguage();
@@ -336,51 +339,46 @@ class PageelementAction extends Action
$version_list = array();
$lfd_nr = 0;
- foreach( $this->value->getVersionList() as $valueid )
+ foreach( $this->value->getVersionList() as $value )
{
$lfd_nr++;
- $this->value->valueid = $valueid;
- $this->value->loadWithId();
- $this->value->generate();
+ $value->element = &$this->element;
+ $value->page = &$this->page;
+ $value->simple = true;
+ $value->generate();
- if ( $this->value->lastchangeTimeStamp != 0 )
- $date = date( lang('DATE_FORMAT'),$this->value->lastchangeTimeStamp);
- else $date = lang('UNKNOWN');
+ $date = date( lang('DATE_FORMAT'),$value->lastchangeTimeStamp);
- if ( in_array( $this->value->element->type,array('text','longtext') ) )
- $version_list[ $valueid ] = '('.$lfd_nr.') '.$date;
+ if ( in_array( $this->element->type,array('text','longtext') ) )
+ $version_list[ $value->valueid ] = '('.$lfd_nr.') '.$date;
- if ( ! $this->value->active )
- $useUrl = Html::url(array('action' =>'pageelement',
- 'subaction'=>'usevalue',
- 'valueid' =>$valueid ));
+ if ( ! $value->active )
+ $useUrl = Html::url('pageelement','usevalue',$this->page->objectid,array('valueid' =>$value->valueid));
else $useUrl = '';
- if ( ! $this->value->publish && $this->value->active )
- $releaseUrl = Html::url(array('action' =>'pageelement',
- 'subaction'=>'release',
- 'valueid' =>$valueid ));
+ if ( ! $value->publish && $value->active )
+ $releaseUrl = Html::url('pageelement','release',$this->page->objectid,array('valueid' =>$value->valueid ));
else $releaseUrl = '';
- if ( $this->value->publish )
+ if ( $value->publish )
$public = true;
else $public = false;
- if ( $this->value->active )
+ if ( $value->active )
$active = true;
else $active = false;
- $list[] = array( 'value' => Text::maxLaenge( 50,$this->value->value),
+ $list[] = array( 'value' => Text::maxLaenge( 50,$value->value),
'date' => $date,
'lfd_nr' => $lfd_nr,
- 'user' => User::getUserName($this->value->lastchangeUserId),
+ 'user' => $value->lastchangeUserName,
'useUrl' => $useUrl,
'public' => $public,
'active' => $active,
'releaseUrl'=> $releaseUrl );
}
- $this->setTemplateVar('name' ,$this->value->element->name);
+ $this->setTemplateVar('name' ,$value->element->name);
$this->setTemplateVar('el' ,$list);
$this->setTemplateVar('version_list',$version_list);
$this->forward('pageelement_archive');
diff --git a/objectClasses/Element.class.php b/objectClasses/Element.class.php
@@ -20,7 +20,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.7 2004-12-19 15:21:21 dankert
+// 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
@@ -127,8 +130,6 @@ class Element
*/
function Element( $elementid=0 )
{
- global $SESS;
-
if ( intval($elementid)!=0 )
$this->elementid = $elementid;
}
@@ -181,13 +182,18 @@ class Element
$sql = new Sql( 'SELECT * FROM {t_element}'.
' WHERE id={elementid}' );
$sql->setInt( 'elementid',$this->elementid );
- $prop = $db->getRow( $sql->query );
-
+
+ $this->setDatabaseRow( $db->getRow( $sql->query ) );
+ }
+
+
+ function setDatabaseRow( $prop )
+ {
$this->templateid = $prop['templateid'];
- $this->name = $prop['name'];
- $this->desc = $prop['descr'];
- $this->type = $prop['type'];
- $this->subtype = $prop['subtype'];
+ $this->name = $prop['name' ];
+ $this->desc = $prop['descr' ];
+ $this->type = $prop['type' ];
+ $this->subtype = $prop['subtype' ];
$this->dateformat = $prop['dateformat'];
$this->wiki = ( $prop['wiki' ] == '1' );
@@ -209,7 +215,6 @@ class Element
}
-
/**
* Abspeichern des Elementes
* Das aktuelle Element wird in der Datenbank gespeichert
diff --git a/objectClasses/Page.class.php b/objectClasses/Page.class.php
@@ -20,7 +20,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.15 2004-12-25 21:05:29 dankert
+// 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
@@ -608,27 +611,41 @@ class Page extends Object
*
* @access private
*/
+ function getElements()
+ {
+ if ( !isset($this->template) )
+ $this->template = new Template( $this->templateid );
+
+ return $this->template->getElements();
+ }
+
+
+
+ /**
+ * Erzeugen der Inhalte zu allen Elementen dieser Seite
+ * wird von generate() aufgerufen
+ *
+ * @access private
+ */
function generate_elements()
{
$this->values = array();
-
- $t = new Template( $this->templateid );
- foreach( $this->getElementIds() as $elementid )
+ foreach( $this->getElements() as $elementid=>$element )
{
// neues Elementobjekt erzeugen
$val = new Value();
$val->publish = $this->public;
- $val->element = new Element( $elementid );
- $val->element->load();
+ $val->element = $element;
$val->objectid = $this->objectid;
- $val->pageid = Page::getPageIdFromObjectId( $this->objectid );
+ $val->pageid = $this->pageid;
$val->languageid = $this->languageid;
$val->simple = $this->simple;
$val->modelid = $this->modelid;
- $val->page = &$this;
+ $val->page = $this;
$val->generate();
+ $val->page = null;
$this->values[$elementid] = $val;
}
}
@@ -744,31 +761,6 @@ class Page extends Object
}
}
- // Bei Verwendung der Content-Negotiation wird eine Default-Variante
- // ohne Sprachversion, aber mit doppelter Extension
- // z.B. index.html.html erzeugt
-// if ( $this->publish->content_negotiation && count(Language::getAll())>1 )
-// {
-// $this->languageid = Language::getDefaultId();
-// $this->default_language = true;
-//
-// // Schleife ?ber alle Projektvarianten
-// foreach( Model::getAll() as $projectmodelid )
-// {
-// $this->projectmodelid = $projectmodelid;
-//
-// $this->load();
-// $this->generate();
-// $this->write();
-//
-// //echo $this->tmpfile().' > '.$this->full_filename().'<br>';
-// $publish->copy( $this->tmpfile(),$this->full_filename() );
-// unlink( $this->tmpfile );
-// $this->publish->publishedObjects[] = $this->getProperties();
-// }
-// }
-
-// $this->log_filenames = $this->publish->log_filenames;
}
}
diff --git a/objectClasses/Template.class.php b/objectClasses/Template.class.php
@@ -20,7 +20,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.7 2004-12-19 15:23:56 dankert
+// 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
@@ -248,6 +251,33 @@ class Template
/**
* Ermitteln aller Elemente zu diesem Template
+ * Es wird eine Liste mit den kompletten Elementen ermittelt und zurueckgegeben
+ * @return Array
+ */
+ function getElements()
+ {
+ $list = array();
+ $db = db_connection();
+
+ $sql = new Sql( 'SELECT * FROM {t_element}'.
+ ' WHERE templateid={templateid}'.
+ ' ORDER BY name ASC' );
+ $sql->setInt( 'templateid',$this->templateid );
+ foreach( $db->getAll( $sql->query ) as $row )
+ {
+ $e = new Element( $row['id'] );
+ $e->setDatabaseRow( $row );
+
+ $list[$e->elementid] = $e;
+ unset($e);
+ }
+ return $list;
+ }
+
+
+
+ /**
+ * Ermitteln aller Elemente zu diesem Template
* Es wird eine Liste mit den Element-Namen zur?ckgegeben
* @return Array
*/
diff --git a/objectClasses/Value.class.php b/objectClasses/Value.class.php
@@ -81,16 +81,22 @@ class Value
var $value;
/**
- * TimeStamp der letzten ?nderung
+ * TimeStamp der letzten Aenderung
* @type Integer
*/
var $lastchangeTimeStamp;
/**
- * Benutzer-ID der letzten ?nderung
+ * Benutzer-ID der letzten Aenderung
* @type Integer
*/
var $lastchangeUserId;
+
+ /**
+ * Benutzername der letzten Aenderung
+ * @type Integer
+ */
+ var $lastchangeUserName;
/**
* Schalter, ob dieser Inhalt der aktive Inhalt ist
@@ -110,12 +116,11 @@ class Value
*/
function Value()
{
- global $SESS;
-
$this->lastchangeUserId = 0;
$this->lastchangeTimeStamp = 0;
- $this->languageid = $SESS['languageid'];
+ $language = Session::getProjectLanguage();
+ $this->languageid = $language->languageid;
}
@@ -549,8 +554,10 @@ class Value
{
$db = db_connection();
- $sql = new Sql( 'SELECT * FROM {t_value}'.
- ' WHERE id={valueid}' );
+ $sql = new Sql( 'SELECT {t_value}.*,{t_user}.name as lastchange_username'.
+ ' FROM {t_value}'.
+ ' LEFT JOIN {t_user} ON {t_user}.id={t_value}.lastchange_userid'.
+ ' WHERE {t_value}.id={valueid}' );
$sql->setInt( 'valueid',$this->valueid);
$row = $db->getRow( $sql->query );
@@ -563,8 +570,9 @@ class Value
$this->active = ( $row['active' ]=='1' );
$this->publish = ( $row['publish']=='1' );
- $this->lastchangeTimeStamp = intval($row['lastchange_date' ]);
- $this->lastchangeUserId = intval($row['lastchange_userid']);
+ $this->lastchangeTimeStamp = intval($row['lastchange_date' ]);
+ $this->lastchangeUserId = intval($row['lastchange_userid' ]);
+ $this->lastchangeUserName = $row['lastchange_username'];
}
@@ -576,7 +584,9 @@ class Value
{
$db = db_connection();
- $sql = new Sql( 'SELECT id FROM {t_value}'.
+ $sql = new Sql( 'SELECT {t_value}.*,{t_user}.name as lastchange_username'.
+ ' FROM {t_value}'.
+ ' LEFT JOIN {t_user} ON {t_user}.id={t_value}.lastchange_userid'.
' WHERE elementid ={elementid}'.
' AND pageid ={pageid}'.
' AND languageid={languageid}'.
@@ -585,7 +595,27 @@ class Value
$sql->setInt( 'pageid' ,$this->pageid );
$sql->setInt( 'languageid',$this->languageid);
- return $db->getCol( $sql->query );
+ $list = array();
+ foreach( $db->getAll( $sql->query ) as $row )
+ {
+ $val = new Value();
+ $val->valueid = $row['id'];
+
+ $val->text = $row['text'];
+ $val->valueid = intval($row['id'] );
+ $val->linkToObjectId = intval($row['linkobjectid']);
+ $val->number = intval($row['number' ]);
+ $val->date = intval($row['date' ]);
+
+ $val->active = ( $row['active' ]=='1' );
+ $val->publish = ( $row['publish']=='1' );
+
+ $val->lastchangeTimeStamp = intval($row['lastchange_date' ]);
+ $val->lastchangeUserId = intval($row['lastchange_userid' ]);
+ $val->lastchangeUserName = $row['lastchange_username'];
+ $list[] = $val;
+ }
+ return $list;
}
@@ -836,9 +866,9 @@ class Value
}
elseif ( $this->simple )
{
- $p = new Page( $objectid );
- $p->load();
- $inhalt = $p->name;
+ $o = new Object( $objectid );
+ $o->load();
+ $inhalt = $o->name;
}
else
{