openrat-cms

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

commit 720737a8c823ddfa652aca8625c263f4586cc8b1
parent f8b5f15cc9f565750d3c2b2e16a71504f7522378
Author: dankert <devnull@localhost>
Date:   Sun, 26 Dec 2004 02:06:31 +0100

Perfomanceverbesserung Seite/Elemente

Diffstat:
actionClasses/PageAction.class.php | 5-----
actionClasses/PageelementAction.class.php | 50++++++++++++++++++++++++--------------------------
objectClasses/Element.class.php | 25+++++++++++++++----------
objectClasses/Page.class.php | 58+++++++++++++++++++++++++---------------------------------
objectClasses/Template.class.php | 32+++++++++++++++++++++++++++++++-
objectClasses/Value.class.php | 58++++++++++++++++++++++++++++++++++++++++++++--------------
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().' &gt; '.$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 {