diff --git a/_lastchanges.txt b/_lastchanges.txt index 6c2930eb3..55b216f6d 100644 --- a/_lastchanges.txt +++ b/_lastchanges.txt @@ -9,9 +9,15 @@ angehandelt. Version 4.3.2 (2010-xx-xx) + Neu + * Update 4.x -> 4.3 durch Upload einer Exportdatei + Anpassungen * Cronjobzeitspeicherung nun vor der Aktion, so dass der Prozess nicht mehrmals ausgeführt wird. * PHPMailer auf Versin 5.1 gebracht .. Dadurch nur noch mit php5 lauffähig + * Addoninstallation: SQL-Dateien der Addons werden mit dem entsprechenden Defaultcharset (utf8 oder latin1) versehen + * Import/Export-Addon: importierte SQL-Dateien werden mit dem entsprechenden Defaultcharset (utf8 oder latin1) versehen + * Installation: die Datenbanktabellen werden mit dem entsprechenden Defaultcharset (utf8 oder latin1) installiert Bugfixes * Metadaten Strings / Textfelder - Bug bei Sonderzeichen "|" diff --git a/redaxo/include/addons/import_export/functions/function_import_export.inc.php b/redaxo/include/addons/import_export/functions/function_import_export.inc.php index 7dbb32862..6a15b58b1 100644 --- a/redaxo/include/addons/import_export/functions/function_import_export.inc.php +++ b/redaxo/include/addons/import_export/functions/function_import_export.inc.php @@ -76,8 +76,11 @@ function rex_a1_import_db($filename) // charset entfernen $charset = $matches[1]; $conts = trim(str_replace('## charset '. $charset, '', $conts)); - - if($I18N->msg('htmlcharset') != $charset) + if($I18N->msg('htmlcharset') == 'utf-8' AND $charset != 'utf-8') + { + $conts = utf8_encode($conts); + } + elseif($I18N->msg('htmlcharset') != $charset) { $return['message'] = $I18N->msg('im_export_no_valid_charset').'. '.$I18N->msg('htmlcharset').' != '.$charset; return $return; @@ -120,6 +123,17 @@ function rex_a1_import_db($filename) $sql = rex_sql::factory(); foreach ($lines as $line) { + $line['query'] = trim($line['query']); + + if(rex_lang_is_utf8() AND strpos($line['query'], 'CREATE TABLE') === 0 AND !strpos($line['query'], 'DEFAULT CHARSET')) + { + $line['query'] .= ' DEFAULT CHARSET=utf8'; + } + elseif(!rex_lang_is_utf8() AND strpos($line['query'], 'CREATE TABLE') === 0 AND !strpos($line['query'], 'DEFAULT CHARSET')) + { + $line['query'] .= ' DEFAULT CHARSET=latin1'; + } + $sql->setQuery($line['query']); if($sql->hasError()) @@ -161,7 +175,13 @@ function rex_a1_import_db($filename) lasttrydate int(11) NOT NULL DEFAULT 0, session_id varchar(255) NOT NULL, PRIMARY KEY(user_id) - ) TYPE=MyISAM;'; + ) TYPE=MyISAM'; + + if(rex_lang_is_utf8()) + $create_user_table .= ' DEFAULT CHARSET=utf8'; + else + $create_user_table .= ' DEFAULT CHARSET=latin1'; + $db = rex_sql::factory(); $db->setQuery($create_user_table); $error = $db->getError(); diff --git a/redaxo/include/functions/function_rex_addons.inc.php b/redaxo/include/functions/function_rex_addons.inc.php index 279404d59..639342913 100644 --- a/redaxo/include/functions/function_rex_addons.inc.php +++ b/redaxo/include/functions/function_rex_addons.inc.php @@ -79,6 +79,17 @@ function rex_install_prepare_query($qry) $qry = str_replace('%TABLE_PREFIX%', $REX['TABLE_PREFIX'], $qry); $qry = str_replace('%TEMP_PREFIX%', $REX['TEMP_PREFIX'], $qry); + $qry = trim($qry); + + if(rex_lang_is_utf8() AND strpos($qry, 'CREATE TABLE') === 0 AND !strpos($qry, 'DEFAULT CHARSET')) + { + $qry .= ' DEFAULT CHARSET=utf8'; + } + elseif(!rex_lang_is_utf8() AND strpos($line['query'], 'CREATE TABLE') === 0 AND !strpos($line['query'], 'DEFAULT CHARSET')) + { + $qry .= ' DEFAULT CHARSET=latin1'; + } + return $qry; } diff --git a/redaxo/include/lang/de_de.lang b/redaxo/include/lang/de_de.lang index 48e1ee788..c5c93cc31 100644 --- a/redaxo/include/lang/de_de.lang +++ b/redaxo/include/lang/de_de.lang @@ -233,7 +233,7 @@ delete_template = Template l header_template_caption = Liste der verfügbaren Templates header_template_summary = Auflistung aller Templates modules_available = Nur folgende Module sind verfügbar -modules_available_all = Alle Module verfügbar +modules_available_all = Alle Module verfügbar # redaxo\include\functions\function_rex_category.inc.php article = Artikel @@ -442,11 +442,16 @@ setup_033 = Bitte richten Sie die Datenbank erneut ein. setup_034 = Datenbank einrichten setup_035 = Datenbank einrichten und alte überschreiben falls vorhanden [{0}Vorsicht{1} - Alte Seite wird komplett gelöscht!] setup_036 = Datenbank existiert schon [Weiter ohne Datenbankimport] -setup_037 = Vorhandenen Export einspielen [Demo einspielen]: +setup_037 = REDAXO 4.3 Export einspielen [Demo einspielen]: setup_03701 = Bitte wählen Sie einen Export aus! setup_03702 = Export-Dateien konnten nicht gefunden werden! setup_03703 = Import/Export AddOn wurde nicht gefunden! -setup_038 = Datenbank aktualisieren von REDAXO 4.x [vorher sichern!] +setup_038 = REDAXO 4.x Export einspielen [User müssen neu angelegt werden!]. +setup_03801 = Keine Export Datei ausgewählt. +setup_03802 = Datei konnte nicht hochgeladen werden. +setup_03803 = Sie haben keine Schreibrechte in +setup_03804 = Temporäre SQL Datei konnte nicht gelesen werden. +setup_03805 = Temporäre SQL Datei konnte nicht geschrieben werden. setup_039 = Weiter zu Schritt 4 setup_step4 = Setup: Schritt 4 von 5 setup_040 = Bitte geben Sie das Administratorlogin ein! diff --git a/redaxo/include/lang/en_gb.lang b/redaxo/include/lang/en_gb.lang index 1428c29f6..0876b7610 100644 --- a/redaxo/include/lang/en_gb.lang +++ b/redaxo/include/lang/en_gb.lang @@ -519,11 +519,16 @@ setup_033 = Please enter database specifications again. setup_034 = Setup database setup_035 = Setup database and overwrite existing [{0}Caution{1} - current site will be completely deleted!] setup_036 = Database exists [Continue without import] -setup_037 = Import existing export [Import Demo]: +setup_037 = Import REDAXO 4.3 export [Import Demo]: setup_03701 = Please choose and export! setup_03702 = Export files not found! setup_03703 = Import/Export AddOn not found! -setup_038 = Update database from REDAXO 4.x [backup before!] +setup_038 = Import REDAXO 4.x export [all user have to be created again!] +setup_03801 = No export file chosen. +setup_03802 = Fiele could not be exported. +setup_03803 = No permissions to write. +setup_03804 = Temporary SQL file could not be read. +setup_03805 = Temporary SQL file could not be written. [save first!] setup_039 = Proceed to step 4 setup_step4 = Setup: Step 4 of 5 setup_040 = Enter admin login! diff --git a/redaxo/include/pages/setup.inc.php b/redaxo/include/pages/setup.inc.php index 650d38cec..65a2a2d7b 100644 --- a/redaxo/include/pages/setup.inc.php +++ b/redaxo/include/pages/setup.inc.php @@ -2,11 +2,11 @@ /** * Direkter Aufruf, um zu testen, ob der Ordner redaxo/include - * erreichbar ist. Dies darf aus Sicherheitsgründen nicht möglich sein! + * erreichbar ist. Dies darf aus Sicherheitsgr¸nden nicht mˆglich sein! */ if (!isset($REX)) { - echo ' + echo ' @@ -21,7 +21,7 @@ '; - exit(); + exit(); } @@ -38,305 +38,331 @@ */ function rex_setup_title($title) { - rex_title($title); + rex_title($title); - echo '
'; + echo '
'; } function rex_setup_import($import_sql, $import_archiv = null) { - global $REX, $I18N, $export_addon_dir; - - $err_msg = ''; - - if (!is_dir($export_addon_dir)) - { - $err_msg .= $I18N->msg('setup_03703').'
'; - } - else - { - if (file_exists($import_sql) && ($import_archiv === null || $import_archiv !== null && file_exists($import_archiv))) - { - // Hier I18N_IM_EXPORT global definieren, damit es aus der config.inc.php übernommen - // wird und auch in der danach includeten function verfügbar ist - global $I18N_IM_EXPORT; - - $I18N->appendFile($REX['INCLUDE_PATH'].'/addons/import_export/lang/'); - require_once $export_addon_dir.'/classes/class.tar.inc.php'; - require_once $export_addon_dir.'/classes/class.rex_tar.inc.php'; - - // DB Import - $state_db = rex_a1_import_db($import_sql); - if ($state_db['state'] === false) - { - $err_msg .= nl2br($state_db['message']) .'
'; - } - - // Archiv optional importieren - if ($state_db['state'] === true && $import_archiv !== null) - { - $state_archiv = rex_a1_import_files($import_archiv); - if ($state_archiv['state'] === false) - { - $err_msg .= $state_archiv['message'].'
'; - } - } - } - else - { - $err_msg .= $I18N->msg('setup_03702').'
'; - } - } - - return $err_msg; + global $REX, $I18N, $export_addon_dir; + + $err_msg = ''; + + if (!is_dir($export_addon_dir)) + { + $err_msg .= $I18N->msg('setup_03703').'
'; + } + else + { + if (file_exists($import_sql) && ($import_archiv === null || $import_archiv !== null && file_exists($import_archiv))) + { + // Hier I18N_IM_EXPORT global definieren, damit es aus der config.inc.php übernommen + // wird und auch in der danach includeten function verfügbar ist + global $I18N_IM_EXPORT; + + $I18N->appendFile($REX['INCLUDE_PATH'].'/addons/import_export/lang/'); + require_once $export_addon_dir.'/classes/class.tar.inc.php'; + require_once $export_addon_dir.'/classes/class.rex_tar.inc.php'; + + // DB Import + $state_db = rex_a1_import_db($import_sql); + if ($state_db['state'] === false) + { + $err_msg .= nl2br($state_db['message']) .'
'; + } + + // Archiv optional importieren + if ($state_db['state'] === true && $import_archiv !== null) + { + $state_archiv = rex_a1_import_files($import_archiv); + if ($state_archiv['state'] === false) + { + $err_msg .= $state_archiv['message'].'
'; + } + } + } + else + { + $err_msg .= $I18N->msg('setup_03702').'
'; + } + } + + return $err_msg; } function rex_setup_is_writable($items) { - global $REX; - $res = array(); + global $REX; + $res = array(); - foreach($items as $item) - { - $is_writable = _rex_is_writable($item); + foreach($items as $item) + { + $is_writable = _rex_is_writable($item); - // 0 => kein Fehler - if($is_writable != 0) - { - $res[$is_writable][] = $item; - } - } + // 0 => kein Fehler + if($is_writable != 0) + { + $res[$is_writable][] = $item; + } + } - return $res; + return $res; } -// -------------------------- System AddOns prüfen +// -------------------------- System AddOns pr¸fen function rex_setup_addons($uninstallBefore = false, $installDump = true) { - global $REX, $I18N; + global $REX, $I18N; - require_once $REX['INCLUDE_PATH'].'/functions/function_rex_addons.inc.php'; + require_once $REX['INCLUDE_PATH'].'/functions/function_rex_addons.inc.php'; - $addonErr = ''; - $ADDONS = rex_read_addons_folder(); - $addonManager = new rex_addonManager($ADDONS); - foreach($REX['SYSTEM_ADDONS'] as $systemAddon) - { - $state = true; + $addonErr = ''; + $ADDONS = rex_read_addons_folder(); + $addonManager = new rex_addonManager($ADDONS); + foreach($REX['SYSTEM_ADDONS'] as $systemAddon) + { + $state = true; - if($state === true && $uninstallBefore) - $state = $addonManager->uninstall($systemAddon); + if($state === true && $uninstallBefore) + $state = $addonManager->uninstall($systemAddon); - if($state === true && !OOAddon::isInstalled($systemAddon)) - $state = $addonManager->install($systemAddon, $installDump); + if($state === true && !OOAddon::isInstalled($systemAddon)) + $state = $addonManager->install($systemAddon, $installDump); - if($state === true && !OOAddon::isActivated($systemAddon)) - $state = $addonManager->activate($systemAddon); + if($state === true && !OOAddon::isActivated($systemAddon)) + $state = $addonManager->activate($systemAddon); - if($state !== true) - $addonErr .= '
  • '. $systemAddon .'
    • '. $state .'
  • '; - } + if($state !== true) + $addonErr .= '
  • '. $systemAddon .'
    • '. $state .'
  • '; + } - if($addonErr != '') - { - $addonErr = '