LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> phpMyAdmin (6.) - MIME transformace

Do databáze se dají ukládat různá data a phpMyAdmin nám umožňuje nadefinovat jejich zobrazení v uživatelském rozhraní.

26.1.2005 07:00 | Michal Čihař | Články autora | přečteno 12968×

Co zobrazovat

Protože naše současná databáze zatím obsahuje poměrně málo položek, tak jí rozšíříme ještě o screenshot programu. Bude to sloupec typu mediumblob, jeho přidání jistě již nemusím popisovat. Po nahrání obrázku do tohoto pole se nám zobrazí při procházení tabulky jen informace o velikosti pole: "[BLOB - 59.0 kB]".

Předdefinované transformace

phpMyAdmin přichází s mnoha předdefinovanými transformacemi, které pokrývají nejčastěji používané operace:

application/octetstream: download
Zobrazí odkaz na stáhnutí dat.
image/jpeg: inline
Zobrazí náhled obrázku s odkazem na obrázek
image/jpeg: link
Zobrazí odkaz na obrázek (například stáhnutí pole blob).
image/png: inline
Viz image/jpeg: inline
text/plain: dateformat
Zobrazí datum nebo čas (TIME, TIMESTAMP a DATETIME) podle místního nastavení.
text/plain: external
Spustí externí program, na jeho standardní vstup pošle obsah pole a zobrazí výstup programu. Tato transformace může přinášet bezpečnostní rizika, takže je standardně vypnutá.
text/plain: formatted
Zachová původní formátování sloupce, tak jak je uložen v databázi.
text/plain: imagelink
Zobrazí obrázek a odkaz z pole obsahujícího odkaz na obrázek.
text/plain: link
Zobrazí odkaz z pole obsahující odkaz.
text/plain: substr
Zobrazí jen část textu.

Pro naší databázi se nám hodí transformace image/jpeg: inline pro zobrazení obrázku a text/plain: link pro zobrazení odkazů. Nastavíme proto tyto transformace (na obrázku jsou jen vybrané sloupce):

Nyní již při procházení databáze vidíme odkaz a náhled obrázku:

Vlastní transformace

Kromě předdefinovaných transformací můžeme vytvořit i svoje vlastní. Například se rozhodneme, že do popis programu může obsahovat formátovací značky BBCode (obsahuje základní formátováná, používá se například v phpBB.

Transformaci pojmenujeme bbcode, a protože bude zpracovávat text, tak MIME typ bude text/plain. V adresáři libraries/transformations tedy vytvoříme soubor text_plain__bbcode.inc.php, který musí obsahovat funkci PMA_transformation_text_plain__bbcode, která bude zavolána pro každou položku s prvním parametrem obsahujícím hodnotu pole v databázi, další dva parametry nebudeme pro naší transformaci potřebovat, ale obsahují případné parametry transformace a meta informace o sloupci tabulky.

Po chvíli hledání na internetu nalezneme funkci pro zpracování BBCode:

$GLOBALS['bb_patterns'] = array(
    '`\[b\](.+?)\[/b\]`is',
    '`\[i\](.+?)\[/i\]`is',
    '`\[u\](.+?)\[/u\]`is',
    '`\[strike\](.+?)\[/strike\]`is',
    '`\[color=#([0-9a-fA-F]{6})\](.+?)\[/color\]`is',
    '`\[email\](.+?)\[/email\]`is',
    '`\[img\](.+?)\[/img\]`is',
    '`\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?' .
       '(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]`si',
    '`\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+' .
       '(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]`si',
    '`\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?' .
       '(/[^ \"\n\r\t<]*?)?)\[/url\]`si',
    '`\[flash=([0-9]+),([0-9]+)\](.+?)\[/flash\]`is',
    '`\[quote\](.+?)\[/quote\]`is',
    '`\[indent](.+?)\[/indent\]`is',
    '`\[size=([1-6]+)\](.+?)\[/size\]`is'
);

$GLOBALS['bb_replaces'] =  array(
    '<span style="font-weight: bold">\1</span>',
    '<span style="font-style: italic">\1</span>',
    '<span style="border-bottom: 1px dotted">\1</span>',
    '<strike>\1</strike>',
    '<span style="color:#\1;">\2</span>',
    '<a href="mailto:\1">\1</a>',
    '<img src="\1" alt="" style="border:0px;" />',
    '<a href="\1\2">\6</a>',
    '<a href="\1\2">\1\2</a>',
    '<a href="http://\1">\1</a>',
    '<object width="\1" height="\2"><param name="movie" value="\3" />' .
       '<embed src="\3" width="\1" height="\2"></embed></object>',
    '<strong>Quote:</strong><div style="margin:0px 10px;padding:5px;' .
       'background-color:#F7F7F7;border:1px dotted #CCCCCC;' .
       'width:80%;"><em>\1</em></div>',
    '<pre>\\1</pre>',
    '<h\1>\2</h\1>'
);

function bbcode( $string){

    global $bb_patterns, $bb_replaces;
    return preg_replace($bb_patterns, $bb_replaces , 
        nl2br(htmlspecialchars($string)));
}

A nyní již zbývá jen napsat transformační funkci, ta bude v tomto jednoduchém případě spočívat jen v zavolání jiné funkce:

function PMA_transformation_text_plain__bbcode(
    $buffer, $options = array(), $meta = '') {

    return bbcode($buffer);
}

Hotovou transformaci si můžete stáhnout zde. Teď již jen zbývá nastavit používání této transformace na sloupec s popisem a můžeme využít formátovací možnosti BBCode:

[color=#999999]Nějaký[/color] [strike]text[/strike]
[flash=100,100]http://kecy.roumen.cz/archive/vajicko.swf[/flash]
[i]Italic[/i]
[email]michal@cihar.com[/email]
[url=http://www.linuxsoft.cz]
[img]http://www.linuxsoft.cz/img/ls.gif[/img][/url]
[url]http://www.linuxsoft.cz[/url]
[url=http://www.linuxsoft.cz]Linuxsoft[/url]
[quote]Quote![/quote]

Podobným způsobem můžeme vytvořit libovolnou transformaci zpracovávající data při zobrazování. V některé s následujících verzí phpMyAdmina se možná dočkáte i podobné transformace pro editaci dat, ale to je ještě hudba vzdálené budoucnosti :-).

Tak to je vše o transformacích a v dalším díle si nastavíme phpMyAdmina tak, aby vypadal jak chceme.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

18.6.2018 0:43 /František Kučera

Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.


Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

13.2.2018 0:41 /František Kučera
Únorový pražský sraz OpenAltu se koná 15. 2. 2018 a tentokrát se vydáme na návštěvu do jednoho pražského datacentra. Sejdeme se v 17:50 v severovýchodní části nástupiště tramvajové zastávky Koh-I-Noor. Po exkurzi se přesuneme do restaurace U Pštrosa (Moskevská 49), kde probereme tradiční témata (svobodný software a hardware, DIY, CNC, SDR, 3D tisk…) a tentokrát bude k vidění i IoT brána od The Things Network.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze