--=REKLAMA=--

Mtwmigrator/Inne komponenty

Z Joomla!WikiPL

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.


Dziękujemy za wkład

» Stefan Wajda [zwiastun],