--=REKLAMA=--
Oprócz rdzennych rozszerzeń, korzystamy zwykle z komponentów i modułów zaprojektowanych przez innych twórców. Projektanci popularnych rozszerzeń często oferują narzędzia migracji danych ze starszych do nowszych wersji.
Możliwość migracji danych 8 komponentów zakodował w komponencie mtwMigrator jego twórca. W polskim wydaniu dodaliśmy możliwość przeniesienia danych dwóch kolejnych.
Jeśli nie istnieją narzędzia migracji komponentów, których używałeś w starej witrynie, a istnieją wersje tych komponentów dla Joomla 1.5, możesz spróbować rozszerzyć funkcjonalność komponentu mtwMigrator. Oto jakich zmian dokonaliśmy w polskim wydaniu, aby umożliwić migrację danych komponentu Bookmarks:
1. W pliku administrator/components/com_mtwmigrator/models/config.php po wierszu 53 został dodany wiersz:
$configText .= "\$mtwCFG['ext_bm'] = \"" . $post['ext_bm'] . "\";\n";
Użyta tutaj zmienna ext_bm to skróty słów extension i bookmarks. Będzie wykorzystana w kolejnych łatkach.
2. W pliku administrator/components/com_mtwmigrator/models/migrate.php po wierszu 203 został dodany kod:
if ($mtwCFG['ext_bm'] == 1) $this->_status['ext_bm'] = $this->__migrateBM(); else $this->_status['ext_bm'] = "9999";
Kod został skopiowany z poprzednich wiersz, zamieniono w nim nazwy zmiennych na ext_bm oraz funkcji na __migrateBM()
3. W tym samym pliku za deklaracją funkcji (około wiersza 815) umieszczono deklarację funkcji __migrateBM():
function __migrateBM() { $ret = $this->migrateTable('#__bookmarks'); $this->migrateTable('#__bookmarks_categories'); $this->migrateTable('#__bookmarks_itemcat'); $this->migrateTable('#__bookmarks_columns'); $this->migrateTable('#__bookmarks_prefs'); $this->migrateTable('#__bookmarks_vote'); return $ret; }
W pierwszym wierszu zdefiniowano zmienną $ret przechowującą wynik migracji tabeli bazy danych #__bookmarks, w następnych wskazano kolejne tabele, z których należy migrować dane. Aby dowiedzieć się, z jakich tabel należy migrować dane, trzeba zajrzeć do bazy danych.
4. W pliku administrator/components/com_mtwmigrator/views/config/view.html.php po wierszu 151 został dodany kod:
// Bookmarks $query = "SELECT `option` FROM #__components WHERE `option` = 'com_bookmarks' LIMIT 1"; $db->setQuery( $query ); $ext['bm'] = $db->loadResult(); if ($ext['bm'] == "com_bookmarks") { $lists['ext_bm'] = JHTML::_('select.booleanlist', 'ext_bm', '', $mtwCFG['ext_bm']); }else{ $lists['ext_bm'] = JHTML::_('select.booleanlist', 'ext_bm', 'disabled', 0); }
Kod ten umieszcza informację o komponencie Bookmarks w tabeli #__components. Treść kodu została skopiowana z poprzednich wierszy odnoszących się do komponentu Letterman. W skopiowanym kodzie poprawiono tablice zmiennych $ext['bm'], nazwy komponentu oraz zmiennej konfiguracyjnej $mtwCFG['ext_bm']
5. W pliku administrator/components/com_mtwmigrator/views/config/tmpl/default.php po wierszu 345 został dodany kod:
<tr> <td align="right"> <?php echo JText::_( "Bookmarks" ); ?> </td> <td> <?php echo $this->lists['ext_bm']; if ($this->ext['bm'] != "com_bookmarks") { echo "<div style=\"float: right; color: red; \">" . JText::_( "Bookmarks Uninstalled" ) . "</div>"; }else{ echo "<div style=\"float: right; color: blue; \">" . JText::_( "Bookmarks Installed" ) . "</div>"; } ?> </td> </tr>
Podobnie jak w poprzednich przypadkach, najpierw skopiowano fragment z kodu umieszczonego w tym pliku w wierszach 329-345, a następnie poprawiono w nim tablice zmiennych, nazwę komponentu i deklarację stałych językowych.
6. W pliku administrator/components/com_mtwmigrator/views/migrate/tmpl/default.php po wierszu 192 został dodany kod:
<tr class="row1"> <td align="right"> <?php echo JText::_( 'Migrate Bookmarks' ); ?> </td> <td> <?php echo $this->errors['ext_bm']; ?> </td> </tr>
W tym przypadku również posłużono się kopią kodu z oryginalnego pliku.