MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨  AKULTA INFORMATIKY !"#$%&'()+,-./012345

Komunitní služby nad systémem WordPress

DIPLOMOVÁ PRÁCE

Michal Meloun

Brno, 2010 Prohlášení

Prohlašuji, že tato diplomová práce je mým p ˚uvodnímautorským dílem, které jsem vypra- coval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování použí- val nebo z nich ˇcerpal,v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj.

Vedoucí práce: doc. RNDr. Tomáš Pitner, Ph.D.

ii Podˇekování

Na tomto místˇebych rád podˇekovalvedoucímu mé diplomové práce doc. RNDr. Tomáši Pitnerovi, Ph.D. za jeho ochotu a pomoc pˇripsaní této práce. Dále bych rád podˇekovalpanu Josefu Morávkovi za jeho vstˇrícnost,trpˇelivosta za to, že mi umožnil spolupráci se spoleˇc- ností Abstract s.r.o. a nabídl mi možnost podílet se na zajímavém projektu. Zajména bych ale rád podˇekovalmé rodinˇeza podporu, které se mi dostávalo bˇehemmých studií, jejich výchovu, lásku a trpˇelivost.

iii Shrnutí

Náplní této práce je prozkoumat možnosti redakˇcníhosystému WordPress pro implemen- taci komunitních systém ˚uv komerˇcnímprostˇredía dle specifikace konkrétního komerˇcního subjektu takový systém s použitím uvedené platformy implementovat. Ctenáˇrjeˇ nejdˇríve seznámen s pojmem komunitní systém a systém redakˇcní,respektive pro správu obsahu. Následuje nahlédnutí na souˇcasnéalternativní platformy jevící se jako vhodné ˇrešenípro implementaci komunitní webové aplikace respektující principy bˇežnépro Web 2.0. Dále je v práci pˇriblíženredakˇcnísystém WordPress a jeho rozšíˇreníWordPress MU, respektive ko- munitní nadstavba Buddypress. Práce seznamuje ˇctenáˇres tˇemitoplatformami, základními datovými modely a metodikou pro jejich další rozšiˇrování.Prostor je vˇenovántaké komu- nitním službám Facebook a Twitter, jelikož navržená webová aplikace dle specifikace zada- vatele tyto služby urˇcitýmzp ˚usobemintegruje. Obsahem další kapitoly je popis postupu pˇrinávrhu výsledného systému a seznámení s ním. V rámci závˇeru jsou shrnuty získané poznatky týkající se možností platformy WordPress pro ˇrešenízadaného úkolu.

iv Klíˇcováslova

WordPress, BuddyPress, komunitní systém, sociální programové vybavení, redakˇcnísys- tém, CMS, API, Web 2.0, Facebook, Twitter

v Obsah

1 Úvod ...... 1 2 Komunity ...... 3 2.1 Pojem komunita ...... 3 2.2 Komunitní programové vybavení ...... 4 2.3 Komunikaˇcnínástroje ...... 5 3 Redakˇcnísystémy ...... 7 3.1 Pˇredpokladypro kvalitní redakˇcnísystém ...... 7 3.2 Funkcionalita redakˇcníchsystém ˚u ...... 8 3.3 Klasifikace ...... 8 3.3.1 Cena ...... 9 3.3.2 Systémové požadavky ...... 9 3.3.3 Bezpeˇcnost...... 9 3.3.4 Výkon ...... 10 3.3.5 Podpora ...... 11 3.3.6 Jednoduchost použití ...... 11 4 WordPress ...... 13 4.1 Nadstavby systému ...... 14 4.1.1 Wordpres MU ...... 14 4.1.2 BuddyPress ...... 14 4.2 Technologie a technické požadavky ...... 15 5 Výbˇerplatformy pro implementaci ...... 16 5.1 Drupal ...... 17 5.2 ImpressCMS ...... 18 5.3 Elgg ...... 18 5.4 Shrnutí ...... 19 6 Vývoj a implementace systému WordPress ...... 21 6.1 Organizace zdrojového kódu ...... 21 6.1.1 WordPress MU a BuddyPress ...... 22 6.2 Datový model ...... 23 6.2.1 WordPress ...... 23 6.2.2 WordPress MU ...... 25 6.2.3 BuddyPress ...... 26 6.3 Aplikaˇcnírozhraní ...... 28 6.3.1 Vývoj zásuvných modul ˚u ...... 28 6.3.2 Háˇcky ...... 29 6.3.3 Štítky šablon ...... 32 6.3.4 Ukládání dat do databáze a mechanizmus voleb ...... 33 7 Vybrané komunitní systémy ...... 35 7.1 Facebook ...... 35 7.2 Twitter ...... 36

vi 8 Komunitní systém portálu Bydlení.cz ...... 38 8.1 Analýza ...... 38 8.1.1 Uživatelé systému a pˇrípadyužití ...... 38 8.1.2 Formy komunikace ...... 41 8.1.3 Integrace služeb Twitter a Facebook ...... 43 8.1.4 Komponenty systému ...... 43 8.2 Implementace ...... 46 8.2.1 Konfigurace systému ...... 47 8.2.2 Rozšíˇreníkonceptu uživatelských skupin ...... 48 8.2.3 Zavedení redakˇcnískupiny ...... 50 8.2.4 Rozšíˇrenío koncept stránek a jejich propojení se skupinami ...... 51 8.2.5 Profily uživatel ˚u ...... 52 8.2.6 Zasílání zpráv do sítˇeTwitter ...... 54 8.2.7 Zasílání pˇríspˇevk˚una stránku aplikace Facebook ...... 55 8.2.8 Pˇrihlašovánía registrace uživatel ˚us použitím Facebook úˇctu . . . . . 57 9 Závˇer ...... 58 Literatura ...... 61 A Administraˇcnípˇríruˇcka ...... 62 A.1 Kroky instalace a základní nastavení systému ...... 62 A.2 Zásuvné moduly ...... 63 B Obsah pˇriloženéhoCD ...... 70

vii Kapitola 1 Úvod

Dnešní webové technologie jsou stále složitˇejší,uživatelé o poznání nároˇcnˇejšía tv ˚urci web ˚u mají ménˇeˇcasunež dˇríve.Pomíjí doba, kdy i relativnˇerozsáhlé webové stránky byly psány v jednoduchém textovém editoru. Nastoupil svˇetsložitých a komplexních ˇrešení.Možnosti, které poskytuje služba World Wide Web1, se od dob jejího vzniku rozšiˇrujía rozšiˇrovatbu- dou i nadále. Zmínˇenáslužba byla ve svých poˇcátcíchzaložena na obsahu statického cha- rakteru, návštˇevnícinemˇelipˇrílišmnoho d ˚uvod˚use na takové stránky vracet a jejich inter- aktivita byla témˇeˇrnulová, stejnˇejako vliv tˇechtoˇctenáˇr˚una obsah. Všechny uvedené vlast- nosti se již stávají minulostí. V rámci souˇcasnéslužby WWW obsah není utváˇrenvýhradnˇe jeho vlastníkem, na jeho tvorbˇese mohou podílet i ˇradovínávštˇevníci,vlastník m ˚užebýt pˇresunutdo role moderátora. Typickým jevem pro souˇcasnýstav služby je vysoká interakce návštˇevník˚unapˇríkladve formˇediskuzí, s pomocí takzvaných chat ˚u,ale tˇrebai s použitím aplikací, které umožˇnujísdílet sociální profil. D ˚uležitýmaspektem je návštˇevník,který již není pouze pasivním pˇríjemceminformací, ale je mu umožnˇenostát se souˇcástíkomunity a m ˚užeutváˇretvlastní profil. Aby mohla souˇcasnáslužba WWW takovéto možnosti nabízet, je zapotˇrebítechnolo- gií, s jejichž pomocí m ˚užebýt vytvoˇrenopatˇriˇcnéprostˇredí.Naštˇestíjsou již k dispozici nástroje umožˇnujícírelativnˇejednoduše zvládnout i složité úlohy. Nejen tvorba, ale i ná- sledná správa webových aplikací je tak pˇrístupnábˇežnýmzruˇcnˇejšímuživatel ˚umosobních poˇcítaˇc˚u.V souˇcasnédobˇejiž existuje nepˇrebernémnožství pˇripravenýchsystém ˚u,které umožˇnujísnadno a efektivnˇewebový obsah spravovat. Takovéto systémy jsou obecnˇeozna- ˇcoványjako systémy pro správu obsahu, v jazyce ˇceskémˇcastojako systémy redakˇcní,aˇc- koliv vzhledem k jejich souˇcasnýmmožnostem je již toto oznaˇcenímírnˇezavádˇející.Do- ménˇeredakˇcníchsystém ˚ubude vˇenovánacelá jedna kapitola. Je však na tomto místˇenutné poznamenat, že tato práce byla ˇrešenave spolupráci se spoleˇcnostíAbstract s.r.o., komerˇc- ním subjektem a pr ˚umyslovýmpartnerem Fakulty informatiky Masarykovy univerzity. Tato skuteˇcnostje d ˚uležitázejména z toho d ˚uvodu,že zadavatel kladl urˇcité nároky na technolo- gie použité pˇriimplementaci systému a upˇrednostˇnovalpoužití redakˇcníhosystému Wor- dPress pro implementaci komunitního systému. Aˇcklivexistují robustní a široce škálova- telné redakˇcnísystémy stavˇenéna nejmodernˇejšíchtechnologiích, ne vždy je jejich využití vhodné a žádoucí. V rámci této práce tedy bude kladen d ˚urazzejména na systémy, které jsou vystavˇenyna relativnˇejednoduchých, nicménˇev praxi široce využívaných technologi-

1.

1 1. ÚVOD

ích. Pˇrínosempráce tak bude mimojiné ukázat jejich praktické využití. V rámci úvodu bude dále pˇriblíženaoblast komunitních systém ˚u,nebot’ implemento- vaný systém spadá právˇedo této kategorie. Po následujícím nahlédnutí do oblasti systém ˚u pro správu obsahu bude pˇriblíženavybraná platforma, tedy systém WordPress a jeho další rozšíˇrení.V této ˇcástipráce bude kladen d ˚urazna vhodnou metodiku pro implementaci a rozšiˇrováníuvedeného systému, uvedeny budou datové modely a nahlédnuto bude i do organizace zdrojového kódu. Poté následuje kratší kapitola vˇenovanákomunitním službám Twitter a Facebook, nebot’ dle zadavatele by mˇelybýt do implementovaného systému tyto služby urˇcitým zp ˚usobemintegrovány. V posledních kapitolách je vˇenovánprostor navrho- vanému systému a v rámci závˇeru jsou shrnuty získané poznatky.

2 Kapitola 2 Komunity

2.1 Pojem komunita

Jelikož v rámci této práce je operováno s termíny komunitní služba a komunita, je vhodné je alespoˇnstruˇcnˇedefinovat. Pro hlubší seznámení s tˇemitopojmy lze doporuˇcitˇclánek[11] od Davida Antoše, který vyˇcerpávajícímzp ˚usobempopisuje problematiku komunit a také tak- zvaných komunitních server ˚u.Komunitu zde definuje jako jakoukoliv skupinu lidí, která mezi sebou urˇcitýmzp ˚usobemkomunikuje ˇciprovádí jiné interakce. Každá komunita ob- vykle potˇrebujenˇejakýd ˚uvod,proˇcse v konkrétním složení zformovala. M ˚užeto být fy- zická blízkost, stejné zájmy, škola, práce atp. Vˇetšinalidí je ˇclenemr ˚uznýchkomunit. Lze také specifikovat pojem internetová komunita jako komunitu osob, které se spolu nˇejakým zp ˚usobemdoruzumívají prostˇrednictvímsítˇeInternet. Taková komunita v žádném pˇrípadˇe nemusí být ˇcistˇevirtuální, tedy bez existence ve fyzickém svˇetˇe,nebot’ m ˚užejít o komunitu pouze využívající výhod Internetu. Jako pˇríkladykomunitních služeb lze jmenovat napˇríkladLidé1, MySpace2, Nyx3, Web- trh4, ale tˇrebai ICQ5 a do jisté míry i elektronickou poštu. Toto vcelku nesourodé spektrum služeb je vhodné dále ˇclenit.Lze použít dvˇeoznaˇcení,a to sice takzvané makrokomunity a mikrokomunity. Stejnˇetak by se s trochu posunutým významem daly rozlišovat gene- rické a specifické komunitní služby. Makro a mikro terminologie však umožˇnujeadekvátnˇe akcentovat hlavní odlišnost tˇechtotyp ˚u– jejich velikost. David Antoš popisuje uvedené ˇclenˇenítak, že podle pˇredpokladumají komunity ob- vykle nˇejakýidentifikaˇcnízáklad, zp ˚usob,jak se urˇcujílidé uvnitˇra vnˇe.Nejjednodušeji lze rozdíl mezi mikro a makro komunitou vysvˇetlittak, že mikrokomunity s touto identi- fikací pracují, zatímco makrokomunity ne. Hypotetickou ambicí makrokomunity je obsáh- nout celý svˇet,všechny druhy interakcí a všechny uživatele. To je ovšem nemožné, pokud by se dovnitˇrtéto služby neuzavˇrelcelý Internet. Reálné ambice jsou proto o nˇecoskrom- nˇejší.Služba ICQ tak tˇrebam ˚užeusilovat o roli univerzálního textového komunikátoru mezi dvˇemaosobami v reálném ˇcase,Lidé o univerzální chat, seznamku ˇcidiskusi a tak podobnˇe. D ˚uležitéje, že makrokomunity vždy obsahují vˇetší ˇradukomunit a samy jako celek žádnou

1. 2. 3. 4. 5.

3 2.2. KOMUNITNÍ PROGRAMOVÉ VYBAVENÍ netvoˇrí,pokud za komunitu nebude považováno celé lidstvo. V kontextu této práce je vhodné se zamyslet, zda uživatelé navrhovaného systému bu- dou tvoˇritmikro ˇcimakrokomunitu. Odpovˇed’ nemusí být zcela jednoznaˇcná.Hypotetickou ambicí systému není obsáhnout celý svˇet, nicménˇeani vytvoˇreníkomunikaˇcníhoprostˇredí pro jednu specifickou komunitu. Úkolem je vytvoˇritkomunikaˇcnísystém pro více skupin subjekt ˚u,které urˇcitýmzp ˚usobemvyužívají služby souˇcasnéhoportálu Bydlení.cz a por- tál ˚upˇridružených. Lze hovoˇritspíše o prostˇredí,které propojuje urˇcitémnožství komunit, jakými jsou napˇríkladspoleˇcenstvívlastník ˚u,ˇctenáˇriinternetového magazínu, zamˇestnanci firmy provozující portál nebo napˇríkladskupiny odborník ˚uˇciobchodník ˚u.Navzdory této skuteˇcnostivšak nelze ˇríci,že tyto komunity jsou izolované a netvoˇríurˇcitýcelek. I pˇres výše uvedené skuteˇcnostise lze pˇriklonitspíše k názoru, že uživatelé systému budou tvoˇrit více mikrokomunitu než makrokomunitu.

2.2 Komunitní programové vybavení

Komunitní ˇcisociální programové vybavení, nˇekdyzkracováno jako socioware na základˇe anglického ekvivalentu, je obecnˇea struˇcnˇeˇreˇcenokaždé programové vybavení, které umož- ˇnujelidem potkávat se, spolupracovat a tvoˇritkomunity s pomocí poˇcítaˇcovýchpropojení. Zahrnuje široké spektrum systém ˚u,které umožˇnujíuživatel ˚uminteragovat a sdílet data. Za pr ˚ukopníkyv této oblasti lze považovat služby jako MySpace6 nebo Facebook7, dále pak služby pro sdílení médií jako Flickr8 nebo YouTube 9 a další. Vˇetšinapodobných sys- tém ˚usdílí spoleˇcnéchatakteristiky, jako je otevˇrenéaplikaˇcnírozhraní, návrh orientovaný na služby a schopnost sdílet data a média. Tento druh programového vybavení je ˇcastospo- jován s termíny Web 2.0 a Enterprise 2.0 pro velké podnikové aplikace. Existuje i specifický termín systém pro spolupráci pocházející z anglického spojení collaborative software, který oznaˇcujepˇrímoaplikace založené na spolupráci uživatel ˚u. Aplikace z oblasti sociálního programového vybavení zahrnují zejména nástroje pro ko- munikaci a interakci. Komunikaˇcnínástroje mají typicky za úkol zachytit, uložit a prezen- tovat komunikaci uživatel ˚u,a to nejen v podobˇepísemné, ale i napˇríkladve formˇezvuku nebo videa. Nástroje pro interakci mají pak za úkol zajistit propojení mezi párem nebo sku- pinou uživatel ˚u.Jsou zamˇeˇrenyzejména na ustanovení a udržování spojení. Navíc v dnešní dobˇejiž není pravdou, že by tento druh systém ˚ubyl orientován pouze na mladou generaci, která by jej používala pro komunikaci s pˇráteli.Skuteˇcnost,že i spoleˇcnostIBM, velký hráˇc ve svˇetˇeinformaˇcníchtechnologií, se velmi aktivnˇev oblasti komunitních systém ˚uanga- žuje, to potvrzuje. Koncem roku 2009 spoleˇcnostohlásila novinku v podobˇerozšíˇrenésady nástroj ˚ua funkcí sociálního programového vybavení pro podnikovou spolupráci. Jedná se o systém Lotus Connections 2.5, který obsahuje nové funkce a možnosti pro ˇcinnostiko- munit. Inovovaná verze produktu je výsledkem plánu spoleˇcnostiuvést na trh sociální pro-

6. 7. 8. 9.

4 2.3. KOMUNIKACNÍNÁSTROJEˇ gramovou platformu pro firmy. Díky extranetovým, internetovým a intranetovým službám spolupráce, které poskytuje IBM a její zákazníci, má novinka umožnit desítkám milión ˚u uživatel ˚upo celém svˇetˇejednoduché spojení a spolupráci. Spoleˇcnostpˇredstavilasadu ná- stroj ˚ua funkcí pro podnikovou spolupráci, která pˇrinášíoblíbené funkce jako mikroblogy z domácího do podnikového prostˇredí.Podle oznámení spoleˇcnostiIBM zákazníci spoleˇc- nosti rychle pˇrijaliza své nové nástroje pro chytˇrejšíspolupráci jako jsou mikroblogy, wiki a sdílení soubor ˚u.Mezi první zákazníky platformy IBM pro spolupráci Lotus Connections 2.5 patˇrípˇredníspoleˇcnostijako NEC Electronics GmbH a Sogeti. Více o této novince se lze doˇcístna domovské stránce projektu10.

2.3 Komunikaˇcnínástroje

Existuje celá ˇradanástroj ˚upro komunikaci a interakci uživatel ˚uv rámci komunitních sys- tém ˚u.Jejich podrobný výˇcetlze nalézt napˇríkladv [20], v rámci této práce jsou uvedeny základní komunikaˇcnínástroje bˇežnˇepoužívané v rámci služeb dnešní sítˇeInternet.

Instant messaging Pro tento termín lze obtížnˇehledat ˇceskýekvivalent, proto je vhod- nˇejšíz ˚ustatu anglického oznaˇcení.Jedná se o internetovou službu umožˇnujícísvým uživatel ˚umsledovat, kteˇríjejich pˇráteléjsou právˇepˇripojeni,a dle potˇrebyjim posílat zprávy, pˇreposílatsoubory a i jinak komunikovat. Hlavní výhoda oproti používání napˇríkladelektronické pošty spoˇcíváv principu odesílání a pˇrijímánízpráv v reál- ném ˇcase.Zpráva je doruˇcenave velmi krátké dobˇeod odeslání (vˇetšinouv rámci stovek milisekund).

Chat Jedná se o krátkou komunikaci nebo rozhovor dvou ˇcivíce lidí prostˇrednictvímko- munikaˇcnísítˇe.Uskuteˇcˇnujese vždy v reálném ˇcase.V užším smyslu se pˇrichatu komunikuje formou psaného textu. Opˇettermín, pro který se neustálil žádný ˇceský ekvivalent. V angliˇctinˇese toto slovo používá pro bˇežnépovídání si, spíše ve smyslu pˇrátelskéhorozhovoru. V technologickém smyslu se p ˚uvodnˇejednalo o ˇcistˇetexto- vou formu komunikace, pˇrikteré mohly být vymˇeˇnoványpouze znaky. Pro chat byl zaveden komunikaˇcníprotokol IRC. Pozdˇejise k tomuto zp ˚usobupˇridalamožnost pˇrenášetzvuk, pˇrípadnˇei obraz. Mluvíme pak o audiochatu, pˇrípadnˇevideochatu.

Internetová diskuse Internetová diskuse je stránka (místo) na internetu, kam lidé vklá- dají své názory a reakce a ty se následnˇena této stránce zobrazují. Oproti IRC kaná- l ˚umnebo chatu se internetová diskuse obvykle liší tím, že pˇrispˇevatelénemusí být ke stránce pˇripojenisouˇcasnˇea reagovat bezprostˇrednˇe, ale i s odstupem mnoha dní ˇci mˇesíc˚u.Mnohé diskusní stránky však mají zároveˇni znaky výše popsaného chatu.

10.

5 2.3. KOMUNIKACNÍNÁSTROJEˇ

Blogy Blog je webová aplikace obsahující pˇríspˇevkyvˇetšinoujednoho autora na jedné webové stránce. Nejˇcastˇeji,nikoli však nezbytnˇe,jsou zobrazovány v obráceném chro- nologickém poˇradí.Autor se nazývá blogger, v ˇceskémjazyce ˇcastopsáno bloger, veš- keré blogy a jejich vzájemné vztahy jsou oznaˇcoványtermínem blogosféra. Slovo blog vzniklo stažením anglického web log, což lze pˇreložitjako webový zápisník, a zkráce- ním slova weblog. Weblogy tvoˇrínesmírnˇeširoké a diferencované pole, takže pokusy o struˇcnouvyˇcerpávajícídefinici formálními kritérii bývají neúspˇešné.Spektrum sahá od osobních deník ˚upo oficiální zpravodajství firem, sdˇelovacíchprostˇredk˚ua poli- tických kampaní. Do weblogu m ˚užepˇrispívatstejnˇetak jediný autor, malá skupina pˇrátelnebo široká komunita. Mnoho weblog ˚uumožˇnujepˇridávatkomentáˇrek jed- notlivým pˇríspˇevk˚um,ˇcímžkolem nich vzniká ˇctenáˇrskákomunita, jiné jsou neinter- aktivní.

Wiki Jedná se o oznaˇceníobecnˇeˇreˇcenohypertextových dokument ˚u,které umožˇnujíuži- vatel ˚umpˇridávatobsah, podobnˇejako v internetových diskusích, ale navíc také umož- ˇnujímˇenitobsah stávající. V pˇrenesenémsmyslu se jako wiki oznaˇcujeprogramové vybavení, které takovéto weby vytváˇrí.P ˚uvodnˇese termín používal zcela opaˇcnˇe. Oznaˇcovaltyp programového vybavení a weby postavené na wiki byly nazývány jako wiki-weby. Postupnˇedošlo k pˇrenesenívýznamu na výsledný web a pro použí- vanou platformu byl zaveden termín wiki-software. Wiki umožˇnujevytváˇretdoku- menty kolektivnˇepomocí jednoduchého znaˇckovacíhojazyka za použití webového prohlížeˇce.Jedna strana je oznaˇcovánajako wiki stránka, zatímco celá skupina strá- nek, které bývají obvykle propojeny, je nazývána wiki. Jedna z definiˇcníchcharak- teristik této technologie je snadné vytváˇrenía aktualizace stránek. Obecnˇenení pˇred pˇrijetímstránky provádˇenažádná kontrola a vˇetšinatˇechtosystém ˚uje otevˇrenaveˇrej- nosti nebo komukoli, kdo má pˇrístupna server. Zpravidla není vyžadována registrace uživatele.

Výše byly pˇriblíženynástroje, které jsou dnes známy každému uživateli. Existuje však ˇradadalších, které se stále více prosazují, nicménˇejejich používání není tak ˇcasté.Lze jmeno- vat napˇríkladnástroje pro simultánní úpravu textu nˇekolikauživateli, služby pro spoleˇcné sdílení záložek a nebo také napˇríkladspeciální vyhledávací služby, které využívají sociální sítˇek organizaci, upˇrednostˇnovánía filtraci vyhledaných výsledk ˚u.V této souvislosti je za- jímavé zmínit mikroformát XFN (XHTML Friends Network)11 umožˇnujícísémantický zápis vztah ˚umezi lidmi pomocí jazyk ˚uHTML nebo XHTML.

11.

6 Kapitola 3 Redakˇcnísystémy

Nyní již k samotnému pojmu redakˇcnísystém. Pozdˇejipoužitá platforma WordPress pro implementaci komunitního systému je ˇcastooznaˇcovánajako systém pro správu blog ˚ua primárnˇebyla pro tento úˇcelnavržena, nicménˇevzhledem k její pˇripravenostipro rozší- ˇreníji lze považovat za plnohodnotný redakˇcnísystém. Zárovˇeˇnje vhodné si uvˇedomit,že pˇriimplementaci komunitního systému je spravován specifický obsah, d ˚urazje kladen na uživatele, jejich vztahy a na komunikaˇcnínástroje. Pojem redakˇcnísystém je v dnešní dobˇevelmi rozšíˇren,nicménˇenení snadné nalézt de- finici plnˇejej vystihující. Za zdaˇriloulze považovat napˇríkladtu od JiˇríhoLukáše uvedenou v [3]. Redakˇcnísystém definuje jako aplikaci která spravuje data a informace r ˚uznéhocha- rakteru i obsahu, zároveˇnse stará o jejich efektivní využití a zobrazení na nˇekterémz pˇred- pˇripravenýchvýstup ˚u.Jak je uvedeno v [8], základní úlohou redakˇcníhosystému je zjed- nodušení práce, odstranˇenírutinních úkon ˚ua obecnˇezvýšení produktivity práce a jejího komfortu, v ˇradˇeneposlední i zlepšení návštˇevníkovaprožitku. Spolu s prudkým rozvojem sítˇeInternet a potˇreboupublikovat na nˇeminformace vznikla potˇrebavyužívat pro tento úˇcelnástroje usnadˇnujícípráci s velkým množstvím informací. P ˚uvodnˇevyvinuté protokoly Internetu urˇcenépro pˇredáváníinformací se ukázaly být pro efektivní práci samostatnˇenepoužitelné, a proto jednotlivé firmy zaˇcalypostupnˇepˇri- cházet se servisními programy a aplikacemi využívajícími standardní, nebo navrhující pro- prietární protokoly k publikování informací na Internetu. Jelikož podobné systémy již v mé- diích existovaly a i na Internetu bylo jejich p ˚uvodnífunkcí podporovat práci redakce, ustálil se pro tyto systémy název redakˇcní.Dnes již vˇetšinatˇechtoaplikací ze svého p ˚uvodního urˇcenívyboˇcuje,je proto vhodnˇejšínazývat je spíše dle anglického ekvivalentu systémy pro správu obsahu, nebot’ v anglickém jazyce se pro tento druh systém ˚uustálil pojem content management systems zkracovaný na CMS.

3.1 Pˇredpokladypro kvalitní redakˇcnísystém

Od redakˇcníchsystém ˚use v souˇcasnédobˇeoˇcekávápráce se strukturovanými informa- cemi, tedy možnost jejich vkládání, vyhledávání, tˇrídˇenía následného publikování na Inter- netu. Jedná se o aplikace, která pracují s daty v obou smˇerech, tedy na vstupu i na výstupu. V praxi to znamená, že mají vstupní a výstupní rozhraní, pˇriˇcemžvstupní rozhraní slouží pro vkládání dat a výstupní pro jejich prezentaci. Vzhledem ke skuteˇcnosti,že prezentace dat je zajišt’ována automaticky dle nastavení systému, správce má v podstatˇepouze jediný

7 3.2. FUNKCIONALITA REDAKCNÍCHSYSTÉMˇ U˚

úkol, kterým je plnit systém aktuálními daty. Je vhodné dodat, že vyspˇelémoderní redakˇcní systémy jsou již schopny tuto funkci delegovat na uživatele s nižšími právy a umožˇnujítak vytvoˇritstandardní hierarchii redaktor ˚ua autor ˚u.Protože vˇetšinaredakˇcníchsystém ˚udis- ponuje více funkcemi, které je nutné obsluhovat, vyvstal požadavek na tzv. administraˇcní rozhraní. Administraˇcnírozhraní slouží ke globální konfiguraci systému a umožˇnujeplnit jeho jednotlivé ˇcástiodpovídajícími daty. Toto rozhraní je vˇetšinoudostupné prostˇrednic- tvím webových stránek, které jsou chránˇenyautorizaˇcnímsystémem.

3.2 Funkcionalita redakˇcníchsystém ˚u

V této fázi je vhodné zmínit základní funkcionalitu, která se od redakˇcníchsystém ˚uoˇcekává. Je žádoucí zd ˚uraznitslovo základní, nebot’ soudobé systémy nabízejí nepˇrebernémnožství funkcí, které jsou ale ˇcastoimplementovány jako pˇrídavnémoduly k jádru systému. Na otázku, jaká funkcionalita by mˇelabýt v jádˇreobsažena, neexistuje jedna správná odpovˇed’, nicménˇelze oˇcekávatnapˇríklad možnost inteligentní správy uživatel ˚us alespoˇnzákladní schopností delegace pˇrístupovýchpráv a možnost komplexní správy ˇclánk˚u.Žádoucí je schopnost konfigurovat obsahové oblasti výsledné stránky, vítána m ˚užebýt schopnost sys- tému definovat rubriky, pˇrítomnostvyhledávacího subsystému, novinkového subsystému, komentáˇrovéhosubsystému, existence sekce pro stahování soubor ˚ua v neposlední ˇradˇe schopnosti pˇrijímatdalší rozšíˇrení,nebot’ kvalitní redakˇcnísystém by mˇelbýt modulární a mˇelby disponovat kvalitním aplikaˇcnímrozhraním. Redakˇcnísytémy lze nasazovat v r ˚uznýchoblastech. Jejich uplatnˇenílze nalézt napˇrí- klad pro rozsáhlé firemní webové stránky, standardní komerˇcnífiremní webové stránky, in- ternetové obchody, intranetové a extranetové portály, stránky institucí, škol a obcí, stránky neziskových organizací, internetové ˇcasopisy, osobní stránky a komunitní systémy, jak bude demonstrováno dále v této práci. Možnost nasazení redakˇcníhosystému v dané oblasti nemusí vždy znamenat, že se jedná o vhodné použití. Jak napˇríkladuvádí JiˇríLukáš v [4], u elektronických obchod ˚uzpravidla bývá lepší využít aplikaci, která je pro tento typ ˇcinnostinavrhovaná již od samého poˇcátku. Podobnˇevelké firemní prezentace mají ˇcastosložitou strukturu a kombinují statický a dy- namický pˇrístupk tvorbˇestránek, nemluvˇeo r ˚uznýchúrovních pˇrístupua požadavcích na napojení na interní informaˇcnísystém. V takových pˇrípadechse vyplatí nechat si vytvoˇrit webové stránky na míru. Vždy je žádoucí provést d ˚ukladnouanalýzu, na základˇekteré je vyhodnoceno, zda je nasazení vybraného redakˇcníhosystému pro dané potˇrebyvhodné.

3.3 Klasifikace

Existuje celá ˇradakritérií, na základˇekterých je možné existující redakˇcnísystémy hodnotit ˇcije dˇelitdo skupin. Mohou být cíleny pro specifické použití a v pˇrípadˇe,že je uvažováno jejich nasazení, zvážit celou ˇraduaspekt ˚u.Budoucí provozovatel si nejdˇrívevytvoˇríjas- nou pˇredstavu,k ˇcemubude nový systém používat, jaké má dostupné technologie pro jeho

8 3.3. KLASIFIKACE provoz, jak citlivá data bude v systému uchovávat, jakou podporu od pˇrípadnéhododa- vatele oˇcekává,jaké má nároky na uživatelské rozhraní, výkon systému a mnoho dalších. V rámci sítˇeInternet lze nalézt zajímavé nástroje pro porovnávání rozšíˇrenˇejšíchredakˇcních systém ˚u.Za velmi povedený lze považovat napˇríkladnástroj CMS Matrix1.

3.3.1 Cena

Kromˇeprodukt ˚u,jejichž zdrojový kód si jednotlivé spoleˇcnostihlídají, existuje celá ˇradare- dakˇcníchsystém ˚u,které jsou vyvíjeny pod GNU GPL (GNU General Public licence) licencí. Castoˇ se lze také setkat s modelem, kdy spoleˇcnostivyvíjejí sv ˚ujprodukt pod GNU GPL, re- spektive LGPL(GNU Lesser General Public licence) licencí a zdrojem jejich pˇríjm˚ujsou pak implementace pro jednotlivé zákazníky. V této souvislosti se lze zamyslet nad otázkou, zda jsou proprietární aplikace bezpeˇcnˇejšíˇcinikoliv, což však není jednoznaˇcnˇerozhodnutelné. Zajímavé informace lze získat z ˇclánku[7]. V kontextu této práce je podstatné, že existuje celá ˇradakvalitních produkt ˚ušíˇritelnýchpod licencí GNU GPL, které jsou pro vývoj sys- tému splˇnujícíhozadání dostaˇcující.

3.3.2 Systémové požadavky

Pro samotné zprovoznˇeníredakˇcníhosystému je d ˚uležitázejména skuteˇcnost,jaké prostˇredí je tˇrebapro jeho chod. Jako základní požadavky lze uvažovat nároky na webový a aplikaˇcní server, databázový server, operaˇcnísystém a pˇrípadnˇesamotný programovací jazyk, ve kte- rém je systém napsán. Castᡠje kombinace požadavk ˚uzkracovaná jako LAMP, která v sobˇe ukrývá slova Linux, Apache (webový server), MySQL (databázový server) a PHP (skripto- vací jazyk). Omezení na operaˇcnísystém však v praxi tak ˇcastánejsou. Výše uvedené ná- roky jsou pouze ty základní, nˇekteréredakˇcnísystémy vyžadují pomˇernˇecitlivá nastavení, a proto je obtížné je zprovoznit v rámci základních služeb, které nabízejí nˇekteˇríposkytova- telé prostoru pro webové stránky.

3.3.3 Bezpeˇcnost

D ˚uležitoukapitolou je bezpeˇcnost.Jak je mimojiné uvedeno v [5], skuteˇcnost,že CMS sys- témy pˇrijímajíuživatelem generovaný obsah, je znaˇcnýmbezpeˇcnostnímrizikem. V rámci klasifikace existuje ˇradabezpeˇcnostníchprvk ˚u,které jsou v nˇekterýchredakˇcníchsystémech obsaženy, v jiných ne a nˇekteréje možné rozšíˇrit.Konkrétnˇelze zmínit napˇríkladmož- nost Kerberos ˇciLDAP autentizace uživatel ˚u,možnost nastavení zrnkových práv (nasta- vení práv pro jednotlivé kategorie nebo obsah), zaznamenávání historie pˇrihlášení,možnost spravovat uživatelské relace, SSL pˇrihlášení,takzvaný CAPTCHA test pˇriregistraci nových uživatel ˚unebo pˇrítomnostmechanizmu pro verifikaci elektronické pošty.

1. cmsmatrix.org/

9 3.3. KLASIFIKACE

3.3.4 Výkon Rychlost práce se systémem je pro uživatele nesmírnˇed ˚uležitýaspekt. Existují projekty, jako napˇríkladMovable Type 2, které se na rychlost zamˇeˇrují.V rámci výkonu lze sledovat, zda jednotlivé redakˇcnísystémy disponují možnostmi, jako je rozšíˇrenépoužívání vyrovnávací pamˇeti,replikace databáze nebo ukládání jednotlivých stránek do vyrovnávací pamˇeti. O zajímavém testu se lze doˇcístv [6]. Jedná se již bohužel pouze o reprodukci výsledk ˚u, stránky projektu nejsou dostupné. Jelikož navíc doposud nebyla v práci vˇenovánápozor- nost konkrétním redakˇcnímsystém ˚um,lze v tuto chvíli následující grafy brát pouze jako demonstraci odlišnosti v rychlosti naˇcítánístránek publikovaných s použitím r ˚uznýchre- dakˇcníchsystém ˚u.Samotný test probíhal tak, že jeho autor vybral právˇedevˇetredakˇcních systém ˚uz kategorie tˇechrozšíˇrenˇejšícha s pomocí vyhledávaˇceGoogle vybral 2200 stránek vytvoˇrenýchv nˇekterémz vybraných systém ˚u.Obrázek 3.1 popisuje dobu jejich naˇcítání, pˇriˇcemžhodnoty na horizontální ose lze popsat jako indexy stránek konkrétního redakˇc- ního systému, stránky jsou uspoˇrádánydle jejich rychlosti naˇctení.Údaje na svislé ose jsou z obrázku zˇrejmé.

Obrázek 3.1: Casyˇ potˇrebnépro naˇctenístránky

Dalším výstupem testu je graf zobrazující ˇcaspotˇrebnýk naˇcteníprvního bajtu vybra- ných stránek. Tato míra je ˇcastopoužívána k indikaci odezvy webového serveru nebo jiných sít’ových zdroj ˚u.Jedná se o ˇcasod chvíle, kdy virtuální uživatel provede požadavek pˇres HTTP protokol, do okamžiku, kdy prohlížeˇcobdrží první bajt. Obrázek 3.2 demostruje, jaká byla odezva u stránek vytvoˇrenýchs pomocí vybraného redakˇcníhosystému. Uspoˇrádání stránek na horizontální ose odpovídá jejich uspoˇrádánív grafu výše.

2.

10 3.3. KLASIFIKACE

Obrázek 3.2: Casyˇ potˇrebnék obdržení prvního bajtu

3.3.5 Podpora

Aspektem, na který by rozhodnˇenemˇelobýt zapomínáno, je jakákoliv podpora pro práci s daným systémem. Lze uvažovat i podporu komerˇcnínapˇríkladve formˇeplacených manu- ál ˚u,placené zákaznické podpory ˇciv podobˇeodborných školení. Za dostaˇcujícílze považo- vat skuteˇcnost,že existuje silná komunita uživatel ˚ua vývojaˇr˚udaného redakˇcníhosystému a dostupnost komunitních prostˇredk˚u.Konkrétnˇelze zmínit veˇrejnátématická fóra, komu- nitou spravovanou dokumentaci ˇcinapˇr.veˇrejnýseznam adres elektronické pošty. Velmi d ˚uležitým,v práci již zmínˇeným,aspektem je kvalitní a dobˇredokumentované aplikaˇcní rozhraní pro pˇrípadnározšíˇrení. Opomenutí uživatelské a vývojáˇrsképodpory by se mohlo do budoucna ukázat jako nezanedbatelný problém pro bezproblémový chod nasazeného redakˇcníhosystému a jeho další vývoj.

3.3.6 Jednoduchost použití

Nemˇeloby se zapomínat na fakt, že se systémem budou pracovat uživatelé. Uvažovat lze ce- lou ˇradufunkcí, které umožní uživatel ˚umpracovat se systémem efektivnˇea pohodlnˇenebo které ˇcinípráci se systémem intuitivnˇejší.Konkrétnˇelze zmínit napˇríkladmožnost praco- vat spravovat obsahem s pomocí takzvaného Drag’n Drop mechanizmu pro intuitivní práci v uživatelském rozhraní, existenci pˇrátelskýchURL, které umožˇnujípˇrehlednˇejiidentifi- kovat konkrétní obsah, pˇrítomnostWYSIWYG editoru pro formátování textového obsahu, více úrovní uživatelského rozhraní, použitelnost funkce „Zpˇet“internetového prohlížeˇce, pˇrítomnostsystému pro tvorbu šablon, vlastní jazyk pro šablony nebo napˇríkladpˇrítom-

11 3.3. KLASIFIKACE nost mechanizmu pro kontrolu chyb v textu. V rámci této podkapitoly byla zmínˇenanˇekterákritéria, na základˇekterých lze vybrané redakˇcnísystémy hodnotit. Kromˇezde zmínˇenýchje možné uvažovat mnoho dalších, jako napˇríkladdostupnost nástroj ˚upro správu obsahu, možnost administrace v prohlížeˇcipˇrímo na úrovni zobrazení výstupu, možnost volby vzhledu, vytváˇrenístatistik nebo vlastní koš pro odstranˇenýobsah. Dále je možné zamˇeˇritse na nástroje pro interoperabilitu. Pˇríkladem m ˚užebýt podpora protokolu FTP (File Transfer Protocol), syndikace obsahu nebo podpora nástroj ˚uWebDAV3 (Web-based Distributed Authoring and Versioning).

3.

12 Kapitola 4 WordPress

Jak je uvedeno v [14], WordPress1 je redakˇcnísystém vyvíjený jako projekt s otevˇreným zdrojovým kódem (šíˇritelnýpod licencí GPL), což umožˇnujekaždému programátorovi za- pojit se do vývoje, upravovat jeho ˇcástia pˇrizp˚usobitsi jej dle vlastních pˇredstav. WordPress byl navržen jako systém urˇcenýpro vedení blog ˚u,nicménˇesnadná rozšíˇritelnostz nˇejˇciní témˇeˇrkompletní systém pro správu obsahu. PoˇcátkyWordPressu sahají do roku 2003. V té dobˇedisponoval pouze krátkým zdrojo- vým kódem, nicménˇeod té doby prošel nespoˇctemzmˇena stal se jedním z nejpoužívanˇej- ších publikaˇcníchnástroj ˚u.V dnešní dobˇejiž lze hovoˇrito vyspˇeléma stabilním produktu, který je zamˇeˇrenna uživatele a webové standardy. Mezi jeho hlavní klady lze ˇraditzp ˚usob ˇclenˇeníuživatel ˚udo úrovní, dle kterých lze vykonávat konkrétní operace. Samozˇrejmostí je možnost spravovat vlastní uživatelský profil, pˇriˇcemžtento koncept je znaˇcnˇerozšíˇren v rámci komunitní nadstavby BuddyPress. Vývojáˇrikladou d ˚urazna snadnou instalaci a pˇrechodyna vyšší verze. Jednotlivé stránky jsou generovány dynamicky z dat uložených v databázi s použitím takzvaných šablon, což umožˇnujevelmi rychlé aktualizace a minima- lizuje nároˇcnostna velikost datového úložištˇe.Dobˇreje ˇrešenainternacionalize a lokalizace s použitím balíˇckugettext2. Co se publikování obsahu týká, plnˇejsou podporovány specifikace RSS 1.03, RSS 2.04 a ATOM5. Systém vytváˇrípro každý pˇríspˇevekstrukturovaný a pro ˇclovˇekai stroj jednoduše ˇcitelnýodkaz, což je d ˚uležitýaspekt z hlediska optimalizace pro vyhledávaˇce. Za velmi zdaˇrilýlze považovat mechanizmus platformy WordPress pro úpravy prezen- taˇcnívrstvy webové aplikace s použitím šablon a jejich štítk ˚u(pojmy budou popsány níže). Vizuální podobu stránek je možné dále upravovat vytváˇrenímtakzvaných motiv ˚uvzhledu, pˇriˇcemžv souˇcasnédobˇejich je volnˇek dispozici nemalé množství. D ˚uležitýmaspektem kvalitního redakˇcníhosystému jsou dostupné nástroje a mechani- zmy pro tvorbu obsahu, pˇriˇcemžv této oblasti nabízí WordPress ˇraduzajímavých možností. Umožˇnujenapˇríkladchránit publikované ˇclánkyheslem, tvorbu pˇríspˇevk˚ua jejich auto- matizovanou pozdˇejšípublikaci, ocenit lze také možnost dˇelitpˇríspˇevkyna více stránek. Samozˇrejmostíje vkládání soubor ˚u, obrázk ˚ua jiných multimediálních dat do zveˇrejˇnova-

1. 2. 3. 4. 5.

13 4.1. NADSTAVBY SYSTÉMU ných ˇclánk˚u.Pˇríspˇevkymohou být ˇclˇenˇenydo kategorií a podkategorií, mohou být také oznaˇcoványs pomocí štítk ˚u.Ocenitelná je možnost ukládat pr ˚ubˇežnˇepracovní verze psa- ných pˇríspˇevk˚unebo bˇehem editace nahlížet na jejich výslednou podobu. Vítána m ˚užebýt také schopnost systému vytváˇretobsah s použitím desktopových aplikací implementujících rozhraní MetaWeblog6 nebo Blogger7. Pˇríspˇevkyv systému lze vkládat i s použitím elektro- nické pošty. Závˇerem je vhodné uvést, že systém disponuje kvalitním vlastním vyhledávaˇcem,pro- pracovaným systémem pro archivaci obsahu, pˇrijehož vytváˇreníje umožnˇenovyužít jazyka HTML. Uživatel m ˚užebýt informován o aktualitách systému elektronickou poštou a k dis- pozici je propracovaný systém pro správu komentáˇr˚u.

4.1 Nadstavby systému

4.1.1 Wordpres MU První zde zmínˇenérozšíˇrenízákladní verze systému nese oznaˇcníWordPress MU (Multi User). Uvažejeme-li samotný WordPress jako nástroj urˇcenýˇcistˇepro vedení blog ˚u,lze vi- dˇetjako jeho nedostatek skuteˇcnost,že v rámci jedné instalace umožˇnujevytvoˇritpouze jedinou instanci. U vˇetších komunit m ˚užebýt vhodné mít k dispozici nástroj umožˇnující uživatel ˚umvést své vlastní blogy, aniž by museli ˇrešitjakékoliv technické záležitosti týka- jící se instalace systému a jeho správy. Pro tento úˇcelbyl navržen systém WordPress MU, který vytváˇrípro každý jednotlivý web vlastní komunitu a umožˇnujeovládat ˇcimoderovat všechny blogy z jednoho místa. Na rozdíl od základní verze nemohou majitelé jednotlivých blog ˚udoplˇnovatsystém o zásuvné moduly a motivy vzhledu, avšak mohou vybírat z na- bídky, která je poskytnuta administrátorem systému. Mezi výhody z pohledu provozovatele lze ˇraditzejména možnost vytvoˇrithostitelské prostˇredípro komunitu uživatel ˚u,poskyto- vat prostor zdarma jako alternativu k placeným službám, zajistit bezpeˇcnostz jednoho místa nebo možnost libovolnˇenastavit prostˇredípro administraci.

4.1.2 BuddyPress BuddyPress je projekt založený na systému WordPress MU. Smyslem této nadstavby je po- sunout systém do oblasti, dnes tolik populárních, sociálních sítí. Jedná se o projekt relativnˇe mladý, nebot’ první verze byla oficiálnˇevydána v dubnu roku 2009. BuddyPress lze popsat jako sadu motiv ˚uvzhledu a zásuvných modul ˚udoplˇnujícíchWordPress MU pˇredevším o funkce pro komunikaci uvnitˇrkomunity publikujících. Konkrétnˇese jedná zejména o ná- sledná rozšíˇrení:

Rozšírenéˇ profily Administrátor má možnost pˇridávatdo profilu uživatel ˚udoplˇnující pole, které jsou plnˇedefinovatelné vˇcetnˇetypu formuláˇrovéhoprvku.

6. 7.

14 4.2. TECHNOLOGIE A TECHNICKÉ POŽADAVKY

Osobní vzkazy Poskytuje základní funkcionalitu k zasílání textových zpráv mezi uživa- teli systému.

Práteléˇ Jedná se o koncept u systém ˚utohoto typu bˇežný.Uživatel má možnost požádat jiného uživatele o vytvoˇrení vztahu pˇrátelství.D ˚usledkemm ˚užebýt napˇríkladzpˇrí- stupnˇeníneveˇrejnýchprofilových informací.

Skupiny Systém v základním nastavení poskytuje veˇrejné,soukromé a skryté skupiny, v rámci kterých mohou ˇclenovékomunikovat.

Sledování aktivit uživatel˚u Tato funkcionalita je navržená ke sledování aktivit jed- notlivých uživatel ˚uv rámci celého systému. Zejména v rámci verze 1.2 bylo zapra- cováno na netriválním konceptu, na základˇekterého lze sledovat široké spektrum aktivit a na patˇriˇcnýchmístech je žádoucím zp ˚usobemfiltrovat.

Diskuzní fóra Nechybí ani jedna ze základních funkcionalit komunitních systém ˚u.Fóra jsou v systému vˇclenˇenado uživatelských skupin. BuddyPress je urˇcenzejména k vytváˇreníkomunitního prostˇredípro zájmové skupiny menšího až stˇredníhorozsahu, pro sociální sít’e velkého rozsahu vhodný není. Podrobnˇejší informace je možné nalézt na domovských stránkách8. Poslední verze systému byla uvol- nˇenav únoru roku 2010 a nese oznaˇceníBuddyPress 1.2. Na systému aktivnˇepracuje ˇrada dobrovolník ˚u,nˇekterározšíˇreníjsou nabízena zdarma, jiná za urˇcitýpoplatek respektive placené ˇclenstvív komunitˇe.Velice zajímavé informace o projektu lze získat z rozhovoru9, který se uskuteˇcnilv rámci veletrhu CeBIT v roce 2010.

4.2 Technologie a technické požadavky

Základní systémové požadavky redakˇcníhosystému Wordpress jsou velmi nenároˇcné.Nej- novˇejšíverze pro sv ˚ujchod vyžaduje pouze interpretaci jazyka PHP verze 4.3 nebo vyšší a databázi MySQL alespoˇnve verzi 4.0. Pro bezproblémovou funkˇcnostsystému je doporu- ˇcenonastavit na webovém serveru hodnotu php_memory_limit alespoˇnna 32 MB. Zmí- nˇenáhodnota urˇcuje,kolik MB maximálnˇelze poskytnout skriptu jazyka PHP. Jako webový server je obecnˇedoporuˇcovánApache10, v rámci kterého je nutné mít aktivován modul mod_rewrite.

8. 9. 10.

15 Kapitola 5 Výbˇerplatformy pro implementaci

Aˇckolivjiž v rámci zadání bylo vyžadováno využít pro implementaci redakˇcnísystém Wor- dPress, je vhodné zd ˚uvodnittuto volbu. D ˚uležitáje skuteˇcnost,že zadavatel preferoval vy- užít platformu založenou na tzv. LAMP technologiích, nebot’ má s tímto ˇrešenímznaˇcné zkušenosti. Pˇrestoje vhodné alespoˇnzmínit, že existuje celá ˇradavolnˇedostupných sys- tém ˚upro správu obsahu vytvoˇrenýchs použitím pokoroˇcilejšíchtechnologií. Jmenovat lze napˇríkladsystémy OpenCms1, jAPS2, Liferay3 ˇciDSpace4, které jsou napsány v jazyce Java a dokáží spolupracovat s celou ˇradoudatabázových systém ˚u,stejnˇejako napˇríkladDotNet- Nuke5, Umbraco6 nebo mojoPortal7, které jsou vytvoˇrenys použitím technologie ASP.NET. Tyto platformy se již ze své podstaty jeví jako vhodnˇejšípro návrh robustních a škálovatel- ných webových aplikací, nicménˇevýhodou systém ˚uzaložených na jednodušších technolo- giích jsou nižší nároky na prostˇredípro jejich provoz a široká základna programátor ˚u,kteˇrí tyto technologie plnˇeovládají a mohou systémy dále spravovat a vyvíjet. Kromˇepožadavk ˚una technologie je tˇrebabrát v úvahu skuteˇcnost,že zadáním je im- plementovat komunitní systém. Tento fakt je d ˚uležitýz toho d ˚uvodu,že urˇcitésystémy pro správu obsahu již ve svém jádru obsahují funkcionalitu pro tento druh webových apli- kací, pˇrípadnˇejsou pro nˇek dispozici moduly komunitní služby doplˇnující.Výˇcettakových platforem lze nalézt napˇríkladv [13]. Po urˇcitémzkoumání byly vybrány ˇctyˇriredakˇcní systémy, které se jeví jako vhodné pro ˇrešenízadaného úkolu. Kromˇevýše popsané plat- formy WordPress lze uvažovat Drupal8, který je obecnˇepovažován jako vhodné ˇrešenípro implementaci komplexních webových aplikací, a bude mu proto v této práci vˇenovánpro- stor. Totéž je možné ˇrício dalším uvažovaném systému, který je nazván Joomla9. Jedná se o velmi rozšíˇrenýprodukt, ke kterému lze snadno dohledat dostateˇcnémnožství informací. Z toho d ˚uvoduje zde jeho popis vynechán na úkor menších, nicménˇepro implementaci

1. 2. 3. 4. 5. 6. 7. 8. 9.

16 5.1. DRUPAL komunitních systému vhodných, platforem Elgg10 a ImpressCMS11.

5.1 Drupal

Drupal je systém pro správu obsahu umožˇnujícítvorbu internetových ˇcasopis ˚u,blog ˚u,in- ternetových obchod ˚u,ale i komunitních a jiných komplexních systém ˚u.Oficiálnˇepodporo- vanými databázemi jsou MySQL a PostgreSQL, do nové verze se pˇripravujepodpora pro databázi Oracle. Drupal je postaven modulárním zp ˚usobema udává jako svou filozofii pˇre- hlednost kódu a otevˇrenostaplikaˇcníhorozhraní. Velkým kladem je dobˇrepromyšlená ar- chitektura databáze. V centru dˇenístojí jednotka zvaná node neboli jednotka obsahu, kterou m ˚užebýt pˇríspˇevekdo blogu, anketní otázka, bˇežnástránka nebo i vlastní definovaný typ. Ke každé této jednotce je umožnˇenopˇripojitkomentáˇre,m ˚užebýt syndikována v RSS12, zobrazovat ji lze r ˚uznýmizp ˚usobya m ˚užebýt i verzována. Výhodou tohoto návrhu je sku- teˇcnost,že moduly pracují s obsahem jednotnˇe.Vyzdvihnout lze také propracovaný systém autorizace uživatel ˚u.Jádro i moduly tˇretíchstran mohou definovat oprávnˇení,která daný uživatel musí mít, aby mohl vykonat urˇcitouˇcinnost.Lokalizace je základním zp ˚usobem vestavˇena.V rámci systému je monitorována a zaznamenávána veškerá aktivita, ˇcehožlze využít napˇríkladpro jednoduché statistiky návštˇevnosti.Pro generování vzhledu používá Drupal šablonovací systémy. Za zmínku stojí také integrované vyhledávání s možnostmi pro nastavení indexace. V neposlední ˇradˇeje nespornou výhodou tohoto redakˇcníhosys- tému poˇcetnáa aktivní komunita vývojáˇr˚u. V odstavci výše byly zmínˇenyaspekty, které ˇciníDrupal jedním z nejpopulárnˇejšícha velmi používaným. Mezi jeho slabiny lze naopak ˇraditskuteˇcnost,že není napsán na prin- cipu objektovˇeorientovaného pˇrístupu,nicménˇei v souˇcasnostiprocedurální model vý- vojáˇrihájí. Další výtkou m ˚užebýt málo graficky zajímavých motiv ˚uvzhledu v základní instalaci. Lze sice relativnˇesnadno vytvoˇritvzhled vlastní, ale ˇradaalternativních platforem disponuje širší nabídkou. V poˇcáteˇcníchfázích implementace je zpravidla nutné vˇenovat urˇcitéúsilí nalezení vhodných modul ˚u. Drupal není vhodný napˇríkladpro implementaci jednoduchého weblogu nebo systému pro diskusní fóra, nebot’ pro dosažení takovéto konkrétní funkcionality existují vhodnˇejší ˇrešení.Vhodný se naopak jeví pro implementaci komplexních webových aplikací. Potenciál Drupalu pro implementaci komunitních systém ˚unení malý. V ˇclánku[23] popisuje zkušený vývojaˇrErnest Lilley své pozitivní zkušenosti pˇrivývojí takového systému a lze zde nalézt i odkazy na literaturu, která je specializována právˇena vývoj komunitních systém ˚us po- mocí Drupalu. V ˇclánkuje rovnˇežuvedeno, že existuje celá ˇradapoužitelných modul ˚u.Jak autor v ˇclánkudále uvádí, implementace s použitím Drupalu vyžaduje urˇcitéúsilí zejména v poˇcáteˇcníchfázích, nicménˇeodmˇenoujsou jeho široké možnosti. Více o projektu Drupal obecnˇese lze doˇcístna jeho domovských stránkách13, nebo napˇríkladv ˇclánku[17].

10. 11. 12. 13.

17 5.2. IMPRESSCMS

5.2 ImpressCMS

Jak se lze doˇcístv [10], ImpressCMS je možné použít jak pro implementaci rozsáhlé podni- kové komunitní sítˇe,tak napˇríkladi pro jednoduché systémy pro správu blog ˚u.Dle infor- mací z uvedeného zdroje je systém vysoce škálovatelný a lze jej nasadit napˇríkladv rámci interní sítˇepodniku pro 20 000 zamˇestnanc˚u,stejnˇetak jej lze ale použít pro sestavení jed- noduchých propagaˇcníchwebových stránek spoleˇcnosti.ImpressCMS se jeví jako velmi po- užitelný pro správu online komunit, nebot’ disponuje funkcionalitou pro vytváˇrenískupin a pˇriˇrazováníoprávnˇenípro správu jejich obsahu. Pro autentizaci uživatel ˚um ˚užebýt po- užito vlastního mechanizmu, kterým ImpressCMS disponuje, nebo lze využít systém pro správu uživatelských úˇct˚uLDAP. K dispozici jsou funkce pro bezpeˇcnoumanipulaci s da- tabázovým obsahem, nástroje pro validaci dat zadávaných s pomocí formuláˇr˚ua mnoho dalších bezpeˇcnostníchprvk ˚u.Registrovaní uživatelé mohou spravovat své profily, vybí- rat své vlastní motivy vzhledu a celkovˇemají k dispozici mnoho nástroj ˚upro pˇrizp˚usobení chování systému dle jejich potˇreb. ImpressCMS v souˇcasnédobˇepodporuje pouze databázový systém MySQL. Úvadˇenou silnou stránkou je znaˇcnámodularita, umožˇnujícíspravovat obsah právˇev rámci jednot- livých modul ˚u.Jako pˇríkladylze uvést moduly pro správu novinek nebo fotogalerií. Na domovských stránkách lze nalézt informace o široké komunitˇevývojaˇr˚u,nicménˇes komu- nitami redakˇcníchsystém ˚uDrupal, WordPress a Joomla tuto srovnávat zatím nelze. Pro- blematická m ˚užebýt lokalizace systému a jeho modul ˚u.Aˇckolivse lze doˇcísto podpoˇre širokého spektra jazyk ˚u,napˇríkladˇceskálokalizace pravdˇepodobnˇezatím neexistuje. Popisovaná platforma se jeví jako velmi zajímavá alternativa pro implementaci nejen ko- munitních systém ˚u.Za urˇcitounevýhodu lze považovat jeho menší rozšíˇrenost.Na druhou stranu je systém aktivnˇevyvíjen a je možné, že se stane velmi silným hráˇcem.V pˇrípadˇe,že by zadavatel nebyl orientován na systém WordPress, urˇcitˇeby bylo možné vážnˇejiuvažovat o použití tohoto systému pro implementaci zadaného ˇrešení.

5.3 Elgg

Platforma Elgg je urˇcenapˇredevšímpro implementaci komunitních systém ˚u.V rámci zá- kladních modul ˚udisponuje Elgg funkcemi, které jsou pro nˇetypické. Jmenovat lze napˇrí- klad správu aktivit uživatel ˚ua jejich volnˇeupravovatelné profily. Systém obsahuje propra- cované funkce pro informování uživatel ˚uo dˇenív rámci sítˇe.Je v nˇemtaké zabudována podpora napˇríkladpro elektronickou poštu, ale i pro další alternativy a lze tak napˇríklad na- stavit informování s pomocí technologie SMS. Samozˇrejmostíje rozsáhlý systém pro správu skupin a jejich oprávnˇení,evidenci blog ˚u,možnost vkládat bˇežnédokumenty a multime- diální data. Za zajímavé lze považovat moduly pro vytváˇrenía ukládání stránek v hierar- chické struktuˇrea možnost urˇcit,kdo je m ˚užeˇcístˇcido nich m ˚užezapisovat. Díky propraco- vanému systému práv lze jednoduše ˇríditpˇrístupyjednotlivých úˇcastník˚uk obsahu. Každý systém postavený na Elggu disponuje výhodami pramenícími z technologií RSS, Open So-

18 5.4. SHRNUTÍ cial14, OpenID15, FOAF16, JSON17, serializované PHP nebo XML. V pˇredchozímodstavci byly popsány základní vlastnosti systému, nicménˇeje vhodné pokusit se odpovˇedˇetna otázku, ˇcímsystém vyniká. O shrnutí se pokusila Jane Hart ve svém blogu [9]. Dle tohoto ˇclánkuElgg nabízí kompletní sadu komunitních nástroj ˚upohromadˇea není tˇrebaspoléhat se na propojování externích nástroj ˚u.Dále vyzdvihuje vysokou úroveˇn zabezpeˇceníuchovávaných dat v rámci organizace a zejména obecnˇehomogenní komunitní prostˇredí.Dle uvedeného shrnutí je možné efektivnˇenasazovat systém v rámci interních sítí v organizacích a jedná se o kvalitní nástroj pro podporu vzdˇelávání,který m ˚užebýt nasazen v akademickém ˇciškolním prostˇredí.Stejnˇetak lze Elgg využít v oblasti otevˇrenýchsítí, napˇríkladpro komunikaci týmu programátor ˚u. Z dostupných informací se systém Elgg jeví jako vhodná platforma poskytující široké spektrum nástroj ˚upro komunitní systémy, nicménˇeotázkou z ˚ustává,jak problematické je další rozšiˇrovánísystému v pˇrípadˇepotˇreb.Komunita uživatel ˚ua vývojáˇr˚unedosahuje ta- kové velikosti, jako tomu je u výše popsaných systém ˚u.Lze tedy požadovat za žádoucí provést d ˚ukladnouanalýzu požadavk ˚una systém a použít jej pro implementaci v pˇrípadˇe, že poskytované nástroje jsou dostaˇcující.

5.4 Shrnutí

V textu výše byly pˇriblíženyalternativní vybrané platformy, které se jeví jako vhodné pro implementaci komunitních systém ˚u.Souˇcástípopisu bylo i krátké shrnutí jejich potenciálu pro ˇrešenízadaného úkolu. Porovnání vybraných platforem dle aspekt ˚uzmínˇenýchve tˇretí kapitole lze shlédnout na obrázku 5.1. I z tohoto zjednodušeného srovnání lze vypozorovat silná a slabá místa jednotlivých systém ˚u.Pro implementaci použitý WordPress se jeví jako relativnˇekomplexní systém, jehož jádro poskytuje omezenou funkcionalitu, kterou lze roz- šiˇrovats použitím dostupných zásuvných modul ˚u.D ˚urazje kladen na pˇrívˇetivéuživatelské rozhraní a dostupná je nekomerˇcnípodpora. Systém disponuje základními bezpeˇcnostními prvky, pˇrípadnˇeje o požadovou funkcionalitu rozšíˇritelný.Za znaˇcnápozitiva lze považo- vat poˇcetnoukomunitu vývojáˇr˚u,lokalizaci jádra do ˇceskéhojazyka, otevˇrenostpro úpravu prezentaˇcnívrstvy a dostupnost ucelené komunitní nadstavby BuddyPress. Silnou stránkou alternativní platformy Drupal je její komplexnost, nicménˇeta m ˚užebýt v nˇekterýchpˇrípadechpˇrekážkou.Specifikovaný komunitní systém by bylo možné s použi- tím Drupalu implementovat, nicménˇepracnost by v takovém pˇrípadˇebyla pravdˇepodobnˇe vyšší než v pˇrípadˇeWordPressu. Obdobný závˇerlze úˇcinitpro platformu Joomla, kterou lze obecnˇepovažovat za velmi kvalitní systém pro správu obsahu.

14. 15. 16. 17.

19 5.4. SHRNUTÍ

Obrázek 5.1: Základní porovnání vybraných platforem

20 Kapitola 6 Vývoj a implementace systému WordPress

Smyslem této kapitoly je pˇriblížitzáklady, které je žádoucí znát pro rozšiˇrováníjádra sys- tému WordPress. Doplˇnovánífunkcionality lze ˇrešitpatˇriˇcnýmiúpravami na úrovni zdro- jového kódu jádra, nicménˇetento pˇrístuppˇrinášíˇradukomplikací. Obecnˇeje proto žádoucí dodržovat principy uvedené v [24]. Pˇredpokladempro porozumˇenítextu je znalost relaˇc- ních databází a jazyk ˚uPHP a (X)HTML. Pro vývoj rozšiˇrujícíchmodul ˚uje dále vhodné ovládat techonologii CSS, skriptovací jazyk JavaScript a databázový systém MySQL.

6.1 Organizace zdrojového kódu

Pˇristoupitke zdrojovým kód ˚umsystému WordPress lze snadno, nebot’ jsou veˇrejnˇedo- stupné v instalaˇcnímbalíˇcku.Samotná instalace je ˇrešenaumístˇenímtohoto balíˇckuna ser- ver a vykonáním instalaˇcníhoskriptu pˇriprvním naˇctení.Zmínˇenýskript zajišt’uje nasta- vení systému, zejména vytváˇrídatabázi pro uchovávání dat. Jedná se o webovou aplikaci využívající jazyk PHP a ˇcitelnostzdrojového kódu je na velmi vysoké úrovni. Pro pochopení fungování systému je vhodné otevˇrít ve webovém prohlížeˇciúvodní stránku a nahlédnout v koˇrenovémadresáˇrido obsahu souboru index.php. Zde je na- stavena konstanta sdˇelujícísystému, že má pracovat s motivy pro vzhled, a je zde zahrnut soubor, po jehož vložení dochází k naˇctenísystémového prostˇredía patˇriˇcnýchšablon. Takto lze systém dále procházet a v souborech se zdrojovými kódy sledovat, k ˇcemudochází. Co se dalšího obsahu koˇrenovéhoadresáˇretýká, je možné nalézt zde pomocné a konfigu- raˇcnískripty, jako napˇríkladˇrešenípro pˇrihlašováníuživatele, pˇridávánípˇríspˇevk˚uz elek- tronické poštovní schránky, registraˇcníformuláˇr,podporu pro technologie ATOM1, RSS2, OPML3 a další. Nˇekterézdejší skripty jsou oznaˇcenyjako nevhodné pro používání a k dis- pozici jsou pouze z d ˚uvoduzpˇetnˇekompatibility. V základní instalaci systému se dále na- chází tyto tˇripodadresáˇre: wp-admin Obsahem jsou soubory s komponentami a skripty pro adminstrátorské rozhraní. Dále zde lze nalézt adresáˇr css s definicí kaskádových styl ˚u,adresáˇr images pro

1. 2. 3.

21 6.1. ORGANIZACE ZDROJOVÉHO KÓDU

použité obrázky, import pro skripty zajišt’ující import externích dat s použitím pat- ˇriˇcnýchtechnologií, includes obsahující aplikaˇcnírozhraní, pˇrípadnédalší kompo- nenty zahrnované do administrátorského rozhraní a adresáˇr js, ve kterém se nalézají externˇedefinované funkce jazyka JavaScript pro tuto sekci. wp-content Zdejším obsahem jsou adresáˇre plugins, ve kterém se nachází zásuvné mo- duly, themes s motivy vzhledu prezentaˇcnívrstvy systému a languages, do kte- rého jsou ukládány soubory s lokalizací. wp-includes Zde lze nalézt definice tˇríd,šablon a jiných skript ˚u,které jsou používány pˇripohybu na stránkách. Adresáˇrje takto nazván z toho d ˚uvodu,že k tˇemtosou- bor ˚umse nikdy nepˇristupujepˇrímo,ale jsou vkládány s pomocí funkcí include, require, respektive require_once jazyka PHP. Totéž platí pro adminstrátorské rozhraní. Kromˇezmínˇenýchsoubor ˚use zde nachází adresáˇre css, images, import, includes a js, jejichž obsah je obdobný jako ve výše popsaném adresáˇri wp-admin, avšak neváží se k administrátorskému rozhraní, nýbrž k bˇežnémuuživatelskému roz- hraní.

6.1.1 WordPress MU a BuddyPress Nadstavba WordPress MU zavádí do výše popsané struktury nové soubory, nicménˇeje- jich jednotlivý popis zde uveden nebude. Za upozornˇenístojí nový adresáˇr mu-plugins nacházející se ve složce wp-content. Je urˇcenpro zásuvné moduly podobnˇejako adresáˇr plugins, nicménˇepodstatnou odlišností je skuteˇcnost,že všechny zde nahrané moduly se systém pokusí aktivovat automaticky v rámci všech existujících instancí blogu, nelze je proto ovládat z administrátorského rozhraní. V kontextu této práce je d ˚uležitépˇriblížit,jak jsou organizovány zdrojové kódy komu- nitní nadstavby BuddyPress. Ta je koncipována jako zásuvný modul, který je k dispozici na domovských stránkách projektu4. Pro zprovoznˇenínadstavby je tˇrebanahrát uvedený mo- dul do adresáˇre wp-content/plugins a standardnˇejej aktivovat z administrátorského rozhraní koˇrenovéhoblogu. Samotná struktura soubor ˚use zdrojovými kódy je pˇrehledná. V koˇrenovémadresáˇrimodulu se nachází soubory obsahující aplikaˇcnírozhraní jednotli- vých komponent a adresáˇre,ve kterých se nalézají potˇrebnézdrojové soubory pro konkrétní komponenty. Obsahem tˇechtosoubor ˚ujsou zejména tˇrídydané komponenty, štítky šablon a pomocné tˇrídyˇcifunkce. V této fázi je také vhodné zmínit, jaké komponenty utváˇrísysté- movou nadstavbu BuddyPress. • activity zapouzdˇrujícífunkcionalitu aktivit v rámci systému • blogs zapouzdˇrujícífunkcionalitu blog ˚u

4.

22 6.2. DATOVÝ MODEL

• core poskytující základní funkcionalitu nadstavby

• forums zapouzdˇrujícífunkcionalitu diskuzních fór

• friends zapouzdˇrujícífunkcionalitu propojování uživatel ˚ustavem pˇrátelství

• groups zapouzdˇrujícífunkcionalitu uživatelských skupin

• messages zapouzdˇrujícífunkcionalitu zpráv v rámci systému

• xprofile zapouzdˇrujícífunkcionalitu uživatelských profil ˚u

Již zmínˇenésoubory v koˇrenovémadresáˇrimodulu BuddyPress obsahují široké spek- trum funkcí pro pˇrístupk dat ˚umdaných komponent. V pˇrípadˇe,že je BuddyPress ˇrádnˇe zapojen, lze tyto funkce velmi efektivnˇevyužívat, aniž by bylo nutné znát datový model nadstavby, ˇcehožbylo velmi využíváno pˇriimplementaci rozšiˇrujícífunkcionality. Jako jed- noduchý a názorný pˇríkladz praktické ˇcástipráce lze uvést postup pro získání abecednˇe usporádaného seznamu pˇrátelpˇrihlášenéhouživatele, ˇcehožlze docílit napˇríkladnásledu- jícím zp ˚usobem: $friends = friends_get_alphabetically( $bp->loggedin_user->id ); foreach ( $friends[’users’] as $user ) { echo ’’ . $user->display_name . ’’; }

Jedná se o podstatnˇezkrácenou ˇcástkódu, nicménˇelze vidˇet,jak jednoduše lze k ob- jekt ˚umpˇristupovat.Je ale nutné podotknout, že v rámci systému WordPress, respektive BuddyPress, lze jít ještˇeo úroveˇnvýše a používat štítky šablon, avšak tento mechanizmus bude popsán níže v kapitole zabývající se hloubˇejiaplikaˇcnímrozhraním.

6.2 Datový model

V rámci této podkapitoly bude vˇenovánprostor nejdˇrívedatovému modelu jádra systému WordPress. V kontextu práce je d ˚uležitéznát datový model systému Wordpress MU, respek- tive nadstavby BuddyPress, avšak ty ze základního schématu vycházejí. V rámci nových verzí WordPressu dochází k urˇcitýmúpravám, avšak ty nebývají pˇrílišrozsáhlé. Modely popisované v této práci odpovídají verzi 2.9.1, resp. verzi 1.2 BuddyPressu.

6.2.1 WordPress

Základní datový model je složen z deseti tabulek, pˇriˇcemžnˇekteréz nich obsahují atributy nevyužité v samotném jádru, ale jsou pˇripraveny pro pˇrípadnározšíˇrení.Význam tabulek

23 6.2. DATOVÝ MODEL

Obrázek 6.1: Datový model systému Wordpress wp_comments, uchovávající veškeré komentáˇrev rámci instalace, a wp_links, spravující uložené odkazy, je zˇrejmý.Pro evidenci uživatelských úˇct˚uje k dispozici tabulka wp_users obsahující pole pro základní informace vážící se k danému uživateli. Pokud je zapotˇrebíevi- dovat informace další, není vhodné doplˇnovatje do této tabulky. Pro uvedený úˇcelje pˇri- pravena tabulka wp_usermeta, do které lze ukládat jakékoliv další údaje v podobˇetrojice identifikaˇcníˇcíslouživatele, klíˇcinformace a její hodnota. Tento jednoduchý model nabízí dostateˇcnéprostˇredípro ukládání potˇrebnýchdat. Již v rámci základní instalace jsou zde vkládány d ˚uležitézáznamy, jako jsou napˇríkladuživatelská oprávnˇení. Výše uvedený pˇrístupje využit rovnˇežpro ukládání pˇríspˇevk˚uv systému. Tabulka wp_ posts drží základní data, pro jakákoliv další je dostupná tabulka wp_postmeta. Zajímavý je rovnˇežzp ˚usob,jakým jsou drženy informace spojené s oznaˇcenímpˇríspˇevkuštítkem a jejich ˇclenˇenímdo kategorií. Základní informace o objektu jsou drženy v tabulce wp_terms. Z tohoto záznamu samotného není zˇrejmé,zda se jedná o štítek ˇcikategorii. Pro tento úˇcelje navržena tabulka wp_termtaxonomy, která teprve urˇcujetaxonomii daného záznamu. Na

24 6.2. DATOVÝ MODEL samotný pˇríspˇevekje pak navázán štítek ˇcikategorie pˇresrelaci wp_term_relationship. Poslední tabulkou je wp_options, ve které jsou ukládány veškeré volby nastavitelné v administrátorském rozhraní v podobˇetrojice identifikátor volby, její název a hodnota. Již v základní verzi systému WordPress je zde k dispozici atribut blog_id, nicménˇeten je vy- užíván až v rámci rozšíˇreníWordPress MU. Mechanizmus ukládání voleb bude podrobnˇeji popsán v kapitole zabývající se rozšiˇrovánímsystému.

6.2.2 WordPress MU

Obrázek 6.2: Datový model systému Wordpress MU

Úvodem je vhodné pˇripomenout,co systém Wordpress MU pˇrináší.Jedná se o rozšíˇrení redakˇcníhosystému WordPress, které umožˇnujespravovat více instancí blogu na jedné in- stalaci systému. V databázi je žádoucí ukládat údaje o každém vedeném blogu a dále je tˇreba držet informace týkající se organizace celého systému. Pro jednotlivé instance jsou v data- bázi vytvoˇrenytabulky odpovídající základnímu datovému modelu. Výjimky tvoˇrídvojice wp_users a wp_usermeta. Seznam uživatel ˚unení žádoucí spravovat pro každou instanci blogu zvlášt’, proto je uchováván jednotnˇe.Jelikož je tˇrebatabulky jednotlivých blog ˚uod-

25 6.2. DATOVÝ MODEL lišit, je každá uložena ve formátu wp_[id_blogu]_[název_tabulky]. Datový model je dále rozšíˇreno sedm dalších relací, které drží informace spoleˇcnépro celý systém. Za d ˚uležitoulze považovat tabulku wp_blogs, ve které jsou uchovávány záznamy o jed- notlivých instancích blogu v rámci celého systému. Tabulka wp_blog_versions slouží k ukládání jejich verzí na základˇestavu databáze, nicménˇepodrobnˇejšíinformace o tomto mechanizmu lze dohledávat velmi obtížnˇe.Co se tabulky wp_registration_log týká, jejím úˇcelemje ukládat záznamy o registracích uživatel ˚udo jednotlivých blog ˚uv rámci in- stalace. K dispozici je dále tabulka wp_signups evidující kompletní záznamy žádostí o re- gistraci do systému. Poslední tˇritabulky jsou navrženy pro pˇrípad,že je v rámci instalace systému WordPress MU provozováno více oddˇelenýchprostˇrední,nebo-li stránek s vlast- ními blogy a uživateli. V tabulce wp_site jsou uchovávány základní informace (doména, kontextová cesta), další potˇrebnéúdaje (napˇríkladnázev prostˇredí)jsou drženy v tabulce wp_sitemeta a s pomocí záznam ˚uz tabulky wp_categries lze evidovat kategorie pro jednotilvé stránky.

6.2.3 BuddyPress

Komunitní nadstavba BuddyPress pˇridávádo základního datového schématu systému Wor- dPress MU celou ˇradunových záznam ˚u. Ctyˇritabulkyˇ byly navrženy za úˇcelemukládání dat o rozšíˇrenýchuživatelských profilech. Základní jednotkou jsou pole ukládané v wp_bp_ xprofile_fields sdružující konkrétní data o profilu uživatele, která lze nalézt uložené v tabulce wp_bp_xprofile_data. Pole mohou být dále sdružena do skupin, které jsou uloženy v wp_bp_xprofile_groups. Tabulka wp_bp_xprofile_wire již není v nových verzích využívána. V rámci verze BuddyPress 1.2 naopak získaly na významu tabulky pro ukládání aktivit, tedy konkrétnˇe wp_bp_activity a wp_bp_activity_meta pro rozši- ˇrujícíinformace. V kapitole výše již bylo zmínˇeno,že nadstavba BuddyPress umožˇnujepropojovat uživa- tele vztahem pˇrátelství.Pro tento vztah je vyˇclenˇenatabulka wp_bp_friends, ve které jsou drženy související informace. D ˚uležitouroli v systému mají uživatelské skupiny. Základní popisné údaje lze hledat v wp_bp_groups, pˇrípadnádalší metadata v wp_bp_groupmeta. Pro držení informace o ˇclenstvíuživatele ve skupinˇeje urˇcenatabulka wp_bp_groups_ members, ve které mohou být drženy napˇríkladinformace o zákazu vstupu konkrétního uživatele do skupiny nebo jeho role v ní. Tabulka wp_bp_groups_wire v nové verzi vyu- žívána není, nebot’ záznamy ve starších verzích zde ukládané jsou novˇevkládány do wp_ bp_activity. Systém BuddyPress drží informace o jednotlivých instancích blogu, respektive o jejich provázanosti s uživateli a pˇríspˇevky. V tabulce wp_bp_user_blogs je ukládán vztah nále- žitosti uživatele k urˇcitémublogu, v tabulce wp_bp_user_blogs_blogmeta další metain- formace k tomuto vztahu. Do tabulky wp_bp_user_blogs_posts jsou podobnˇeukládány vztahy mezi blogem, pˇríspˇevkema jeho autorem a v wp_bp_user_blogs_comments lze nalézt obdobnou informaci pro jednotlivé komentáˇre. Pro interní zprávy v systému jsou navrženy tabulky tˇri.Bˇežnézprávy jsou ukládány do

26 6.2. DATOVÝ MODEL

Obrázek 6.3: Datový model systému BuddyPress

wp_bp_messages_messages a lze je sdružovat do vláken s použitím atributu thread_id. Pro adresáty zpráv je poté k dispozici tabulka wp_bp_messages_recipients. Kromˇe bˇežnýchzpráv má administrátor systému možnost rozesílat takzvané pˇripomínky. Ty jsou šíˇrenymezi všechny uživatele a jsou ukládány v wp_bp_messages_notices. Poslední, doposud nezmínˇenou,tabulkou je wp_bp_notification. V té jsou ukládána oznámení upozorˇnujícíuživatele na d ˚uležitésystémové události. Takovým oznámením m ˚užebýt na- pˇríkladnová zpráva, žádost o pˇrátelství,pˇrizvánído skupiny a další. Tyto záznamy jsou drženy pouze do chvíle, než si uživatel oznámení pˇreˇcte.

27 6.3. APLIKACNÍROZHRAN͡

6.3 Aplikaˇcnírozhraní

V rámci této podkapitoly bude vˇenovánprostor rozšiˇrovánífunkcionality jádra systému WordPress. Jak bylo naznaˇcnov úvodu, zdrojový kód je otevˇrenpro úpravy, je proto teore- ticky možné libovolnˇejej doplˇnovat.Pokud by však byly tyto úpravy provádˇenypˇrímodo zdrojových kód ˚ujádra, naskýtá se celá ˇradakomplikací. Vývojáˇrm ˚užebrzy ztratit pˇrehled o provedených úpravách, což je také pˇredpokladempro další komplikaci, kterou je pˇrí- padný pˇrechodna novou verzi systému. V rámci pˇrechodudochází k pˇrepsánívelké ˇcásti zdrojových soubor ˚u,ˇcímžm ˚užedojít pˇrinejmenším ke ztrátˇeprovedených úprav. Naštˇestí je systém Wordpress navržen tak, že umožˇnujevývojaˇr˚umjej efektivnˇerozšiˇrovatvytváˇre- ním zásuvných modul ˚u.Ten je v [24] definován jako program nebo sada funkcí napsaných ve skriptovacím jazyce PHP, které pˇridávající specifickou funkcionalitu do jádra systému. Integrovat jej lze s pomocí pˇrípojnýchbod ˚u,které jsou systémem poskytovány v rámci apli- kaˇcníhoprogramového rozhraní. Pˇripojitnavržený modul k jádru systému je záležitost tri- viální. To také implikuje další nespornou výhodu zásuvných modul ˚u,kterou je jejich jed- noduchá distribuovatelnost. Více o této problematice se lze doˇcístv oficiální dokumentaci [24] a v publikaci [15], kde lze nalézt široké spektrum zajímavých informací. Pˇristudiu této problematiky bylo dále ˇcerpánoz publikace [19].

6.3.1 Vývoj zásuvných modul ˚u

Úvodem této ˇcástije vhodné uvést alespoˇnstruˇcnˇezákladní konvence pro tvorbu zásuv- ného modulu, které by mˇelybýt dodržovány zejména v pˇrípadˇe,že bude modul veˇrejnˇe distribuován. Novˇevytvoˇrenýmodul by mˇelbýt rozumnˇea nejlépe unikátnˇepojmenován, aby už z jeho názvu mohla být odhadnuta funkcionalita. Zdrojový kód modulu m ˚užebýt obsažen v jediném souboru, který by mˇelnést jeho název, nebo m ˚užebýt rozložen do více soubor ˚u.Hlavní soubor se zdrojovým kódem obsahující hlaviˇckuby mˇelbýt pojmenován stejnˇejako celý adresáˇr,který bude v rámci instalace vložen na patˇriˇcnémísto ve struktuˇre zdrojových kód ˚usystému WordPress. V pˇrípadˇeveˇrejnédistribuce je také vhodné dopl- nit soubor readme.txt s patˇriˇcnýmpopisem a uvedena by mˇelabýt i licence, pod kterou m ˚užebýt produkt šíˇren. Již bylo naznaˇceno,že každý zásuvný modul obsahuje hlaviˇcku.S její pomocí je systém WordPress schopen identifikovat samotnou existenci modulu a bez ní by nebylo možné jej aktivovat. Hlaviˇckaby mˇelaodpovídat následujícímu formátu:

/* Plugin Name: Název zásuvného modulu Plugin URI: Domovská stránka zásuvného modulu Description: Krátký popis funkcionality Version: Verze modulu, napríkladˇ znacenaˇ jako 1.0 Author: Jméno autora Author URI: Autorova domovská stránka License: Krátké oznaceníˇ licence */

28 6.3. APLIKACNÍROZHRAN͡

Podstatná je zejména pˇrítomnostpoložky popisující název. Pouze její pˇrítomnostje pˇredpo- kladem pro idnetifikaci modulu systémem. Žádoucí je uvést pˇrinejmenšímještˇepopis, který je zobrazován administrátorovi v sekci pro aktivaci zásuvných modul ˚u.Na obrázku 6.4 lze vidˇet,jak náhled modul popsaný výše vypadá.

Obrázek 6.4: Zobrazení zásuvného modulu v administrátorském rozhraní

6.3.2 Háˇcky

Mnoho zásuvných modul ˚usystému WordPress dosahuje své funkcionality s využitím tak- zvaných háˇck˚u(v jazyce anglickém hooks). Jedná se o mechanizmus umožˇnujícívolat funkce definované ve vytvoˇrenýchmodulech v pˇresnˇespecifikovaném okamžiku. Je-li naˇcítána stránka v prohlížeˇci,systém prochází všechny funkce, které jsou potˇrebnépro její vyge- nerování. Volané funkce je možné použít právˇejako háˇcky, s pomocí kterých lze pˇripojit požadovanou funkcionalu. Háˇckyjsou dˇelenydo dvou kategorií.

Háckyˇ akcí (action hooks) Funkce pˇripojenák tomuto háˇckuje spuštˇenav okamžiku vyvolání urˇcitéudálosti systému WordPress. Ve zdrojovém kódu systému jsou pro vyvolání takových událostí pˇresnˇedefinovaná místa. Jako pˇríkladlze uvést vložení pˇríspˇevkunebo komentáˇre,odeslání elektronické pošty ˇcinapˇríkladobecná zmˇena v databázi.

Háckyˇ pro filtry (filter hooks) Jsou používány k modifikaci obsahu napˇríklad v okamžiku vkládání textu na stránku nebo do databáze. Filtr tak m ˚užeupravit daný obsah v pˇresnˇepožadovaném okamžiku.

Castoˇ se lze setkat se situací, kdy k dosažení stejného výsledku lze použít obˇez uve- dených možností. Pro lepší pˇredstavu,jak mechanizmus funguje, je vhodné demonstrovat použití tˇechtoháˇck˚u.Pro ukázku je vybrán fragment kódu, který je souˇcástízásuvného mo- dulu BCZ presenting group vytvoˇrenéhov rámci této práce, a jehož funkcí je rozšíˇrit systém skupin o nový druh. Komunitní nadstavba BuddyPress ve svém základním nasta- vení nabízí tˇridruhy skupin, které mají odlišnou viditelnost a politiku pro vstup uživatele. Do základního ˇclenˇenína veˇrejné,soukromé a skryté byl pˇridánnový typ, jehož nastavení je podobné skupinám veˇrejným.Rozdíl spoˇcíváve skuteˇcnosti,že do skupin nového typu mohou pˇrispívatpouze administrátoˇria moderátoˇri,role ˇradovýchˇclen˚uje pasivní, mohou pouze vidˇetobsah. Typ skupiny je ukládán v rámci její administrace s použitím patˇriˇcného

29 6.3. APLIKACNÍROZHRAN͡ formuláˇre,který je popisovaným zásuvným modulem rozšíˇrentak, aby byla nabízena mož- nost nastavit novˇepˇridanýtyp. Po naˇcteníformuláˇredo stránky vyvolá systém BuddyPress událost bp_after_group_settings_admin a právˇev tomto okamžiku je vhodné dopl- nit formuláˇr,ve kterém bude umožnˇenonový typ skupiny vybrat. Implementace funkce formuláˇrrozšiˇrujícím ˚uževypadat napˇríkladtakto: function bcz_add_presenting_group_form() {?>

5. 6.

30 6.3. APLIKACNÍROZHRAN͡