openrat-cms

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

commit 0a0354819f706f4178506af946fcb1892f461d6f
parent a0788c055368ca06d36fb6163876a87a226a6e1e
Author: dankert <devnull@localhost>
Date:   Fri, 17 Sep 2010 23:23:42 +0200

Benutzerinformationen mit kopieren, wenn das Projekt in die gleiche Datenbank exportiert (also kopiert) wird.

Diffstat:
objectClasses/Project.class.php | 29+++++++++++------------------
1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/objectClasses/Project.class.php b/objectClasses/Project.class.php @@ -420,7 +420,6 @@ SQL { foreach( $languages as $lid ) { - //Html::debug($lid,'lid'); $value = new Value(); $value->element = new Element($eid); $value->pageid = $page->pageid; @@ -476,10 +475,12 @@ EOF /** * Kopiert ein Projekt von einer Datenbank zu einer anderen.<br> * <br> - * Alle Projektinhalte werden kopiert, die Fremdschl�sselbeziehungen werden entsprechend angepasst.<br> + * Alle Projektinhalte werden kopiert, die Fremdschluesselbeziehungen werden entsprechend angepasst.<br> * <br> - * Alle Beziehungen zu Benutzern, z.B. "Zuletzt ge�ndert von", "angelegt von" sowie<br> + * Alle Beziehungen zu Benutzern, z.B. "Zuletzt geaendert von", "angelegt von" sowie<br> * alle Berechtigungsinformationen gehen verloren!<br> + * + * @param dbid_destination ID der Ziel-Datenbank */ function export( $dbid_destination ) { @@ -488,12 +489,13 @@ EOF $db_src = db_connection(); $db_dest = new DB( $conf['database'][$dbid_destination] ); + $db_dest->id = $dbid_destination; $db_dest->start(); -// $aa = 5000; // Bisher nicht erreichte ID in der Zieldatenbank - + $sameDB = ( $db_dest->id == $db_src->id ); + Html::debug($sameDB); + // ------------------------------------------------------- -// $prefix = 'a24_'; $mapping = array(); $ids = array('project' => array('foreign_keys'=>array(), 'primary_key' =>'id', @@ -555,12 +557,11 @@ EOF ); foreach( $ids as $tabelle=>$data ) { -// Html::debug($tabelle,"Tabelle"); $mapping[$tabelle] = array(); $idcolumn = $data['primary_key']; - // N�chste freie Id in der Zieltabelle ermitteln. + // Naechste freie Id in der Zieltabelle ermitteln. $sql = new Sql( 'SELECT MAX('.$idcolumn.') FROM {t_'.$tabelle.'}',$dbid_destination); $maxid = intval($db_dest->getOne($sql)); $nextid = $maxid; @@ -584,8 +585,6 @@ EOF { $mapping[$tabelle][$srcid] = ++$nextid; -// Html::debug($mapping,"Mapping"); - $sql = new Sql( 'SELECT * FROM {t_'.$tabelle.'} WHERE id={id}'); $sql->setInt('id',$srcid); $row = $db_src->getRow( $sql ); @@ -598,9 +597,6 @@ EOF { if ( intval($row[$fkey_column]) != 0 ) $row[$fkey_column] = $mapping[$target_tabelle][$row[$fkey_column]]; -// if ( !isset($mapping[$target_tabelle][$row[$fkey_column]])) -// Html::debug('Fehler: T='.$target_tabelle.', Column='.$fkey_column); - } foreach( array_keys($row) as $key ) @@ -609,14 +605,13 @@ EOF { // Nachschauen, ob es einen UNIQUE-Key in der Zieltabelle schon gibt. $sql = new Sql( 'SELECT 1 FROM {t_'.$tabelle.'} WHERE '.$key."='".$row[$key]."'",$dbid_destination); -// Html::debug($sql); if ( intval($db_dest->getOne( $sql )) == 1 ) $row[$key] = $row[$key].$zeit; } - if ( isset($data['erase']) && in_array($key,$data['erase']) ) + if ( !$sameDB && isset($data['erase']) && in_array($key,$data['erase']) ) $row[$key] = null; if ( isset($data['self_key']) && $key == $data['self_key'] && intval($row[$key]) > 0 ) @@ -642,13 +637,11 @@ EOF $row[$data['binary']] = base64_decode($row[$data['binary']]); } -// Html::debug($row,'Zeile'); - // Daten in Zieltabelle einf�gen. $sql = new Sql( 'INSERT INTO {t_'.$tabelle.'} ('.join(array_keys($row),',').') VALUES({'.join(array_keys($row),'},{').'})',$dbid_destination); foreach( $row as $key=>$value ) { - if ( isset($data['erase']) && in_array($key,$data['erase']) ) + if ( !$sameDB && isset($data['erase']) && in_array($key,$data['erase']) ) $sql->setNull($key); else $sql->setVar($key,$value);