}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Komunitní služby nad systémem WordPress D IPLOMOVÁ PRÁCE
Michal Meloun
Brno, 2010
Prohlášení Prohlašuji, že tato diplomová práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji 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ˇe bych rád podˇekoval vedoucímu mé diplomové práce doc. RNDr. Tomáši Pitnerovi, Ph.D. za jeho ochotu a pomoc pˇri psaní této práce. Dále bych rád podˇekoval panu Josefu Morávkovi za jeho vstˇrícnost, trpˇelivost a za to, že mi umožnil spolupráci se spoleˇcností 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ˇekoval mé rodinˇe za podporu, které se mi dostávalo bˇehem mých studií, jejich výchovu, lásku a trpˇelivost.
iii
Shrnutí Náplní této práce je prozkoumat možnosti redakˇcního systému WordPress pro implementaci komunitních systému˚ v komerˇcním prostˇredí a dle specifikace konkrétního komerˇcního ˇ subjektu takový systém s použitím uvedené platformy implementovat. Ctenᡠr je 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é rˇ ešení pro implementaci komunitní webové aplikace respektující principy bˇežné pro Web 2.0. Dále je v práci pˇriblížen redakˇcní systém WordPress a jeho rozšíˇrení WordPress MU, respektive komunitní nadstavba Buddypress. Práce seznamuje cˇ tenáˇre s tˇemito platformami, základními datovými modely a metodikou pro jejich další rozšiˇrování. Prostor je vˇenován také komunitním službám Facebook a Twitter, jelikož navržená webová aplikace dle specifikace zadavatele tyto služby urˇcitým zpusobem ˚ integruje. Obsahem další kapitoly je popis postupu pˇri ná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 rˇ ešení zadaného úkolu.
iv
Klíˇcová slova WordPress, BuddyPress, komunitní systém, sociální programové vybavení, redakˇcní systém, CMS, API, Web 2.0, Facebook, Twitter
Úvod Dnešní webové technologie jsou stále složitˇejší, uživatelé o poznání nároˇcnˇejší a tvurci ˚ webu˚ mají ménˇe cˇ asu než dˇríve. Pomíjí doba, kdy i relativnˇe rozsáhlé webové stránky byly psány v jednoduchém textovém editoru. Nastoupil svˇet složitých a komplexních rˇ ešení. Možnosti, které poskytuje služba World Wide Web1 , se od dob jejího vzniku rozšiˇrují a rozšiˇrovat budou i nadále. Zmínˇená služba byla ve svých poˇcátcích založena na obsahu statického charakteru, návštˇevníci nemˇeli pˇríliš mnoho duvod ˚ u˚ se na takové stránky vracet a jejich interaktivita byla témˇerˇ nulová, stejnˇe jako vliv tˇechto cˇ tenáˇru˚ na obsah. Všechny uvedené vlastnosti se již stávají minulostí. V rámci souˇcasné služby WWW obsah není utváˇren výhradnˇe jeho vlastníkem, na jeho tvorbˇe se mohou podílet i rˇ adoví návštˇevníci, vlastník muže ˚ být pˇresunut do role moderátora. Typickým jevem pro souˇcasný stav služby je vysoká interakce návštˇevníku˚ napˇríklad ve formˇe diskuzí, s pomocí takzvaných chatu, ˚ ale tˇreba i s použitím aplikací, které umožnují ˇ sdílet sociální profil. Duležitým ˚ aspektem je návštˇevník, který již není pouze pasivním pˇríjemcem informací, ale je mu umožnˇeno stát se souˇcástí komunity a muže ˚ utváˇret vlastní profil. Aby mohla souˇcasná služba WWW takovéto možnosti nabízet, je zapotˇrebí technologií, s jejichž pomocí muže ˚ být vytvoˇreno patˇriˇcné prostˇredí. Naštˇestí jsou již k dispozici nástroje umožnující ˇ relativnˇe jednoduš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ým zruˇcnˇejším uživatelum ˚ osobních poˇcítaˇcu. ˚ V souˇcasné dobˇe již existuje nepˇreberné množství pˇripravených systému, ˚ které umožnují ˇ snadno a efektivnˇe webový obsah spravovat. Takovéto systémy jsou obecnˇe oznacˇ ovány jako systémy pro správu obsahu, v jazyce cˇ eském cˇ asto jako systémy redakˇcní, aˇckoliv vzhledem k jejich souˇcasným možnostem je již toto oznaˇcení mírnˇe zavádˇející. Doménˇe redakˇcních systému˚ bude vˇenována celá jedna kapitola. Je však na tomto místˇe nutné poznamenat, že tato práce byla rˇ ešena ve spolupráci se spoleˇcností Abstract s.r.o., komerˇcním subjektem a prumyslovým ˚ partnerem Fakulty informatiky Masarykovy univerzity. Tato skuteˇcnost je duležitá ˚ zejména z toho duvodu, ˚ že zadavatel kladl urˇcité nároky na technologie použité pˇri implementaci systému a upˇrednostnoval ˇ použití redakˇcního systému WordPress pro implementaci komunitního systému. Aˇckliv existují robustní a široce škálovatelné redakˇcní systémy stavˇené na nejmodernˇejších technologiích, ne vždy je jejich využití vhodné a žádoucí. V rámci této práce tedy bude kladen duraz ˚ zejména na systémy, které jsou vystavˇeny na relativnˇe jednoduchých, nicménˇe v praxi široce využívaných technologi1.
<www.w3.org/History.html>
1
1. Ú VOD ích. Pˇrínosem práce tak bude mimojiné ukázat jejich praktické využití. V rámci úvodu bude dále pˇriblížena oblast komunitních systému, ˚ nebot’ implementovaný systém spadá právˇe do této kategorie. Po následujícím nahlédnutí do oblasti systému˚ pro správu obsahu bude pˇriblížena vybraná platforma, tedy systém WordPress a jeho další rozšíˇrení. V této cˇ ásti práce bude kladen duraz ˚ na 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ˇely být do implementovaného systému tyto služby urˇcitým zpusobem ˚ integrovány. V posledních kapitolách je vˇenován prostor navrhované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 alesponˇ struˇcnˇe definovat. Pro hlubší seznámení s tˇemito pojmy lze doporuˇcit cˇ lánek [11] od Davida Antoše, který vyˇcerpávajícím zpusobem ˚ popisuje problematiku komunit a také takzvaných komunitních serveru. ˚ Komunitu zde definuje jako jakoukoliv skupinu lidí, která mezi sebou urˇcitým zpusobem ˚ komunikuje cˇ i provádí jiné interakce. Každá komunita obvykle potˇrebuje nˇejaký duvod, ˚ proˇc se v konkrétním složení zformovala. Muže ˚ to být fyzická blízkost, stejné zájmy, škola, práce atp. Vˇetšina lidí je cˇ lenem ruzných ˚ komunit. Lze také specifikovat pojem internetová komunita jako komunitu osob, které se spolu nˇejakým zpusobem ˚ doruzumívají prostˇrednictvím sítˇe Internet. Taková komunita v žádném pˇrípadˇe nemusí být cˇ istˇe virtuální, tedy bez existence ve fyzickém svˇetˇe, nebot’ muže ˚ jít o komunitu pouze využívající výhod Internetu. Jako pˇríklady komunitních služeb lze jmenovat napˇríklad Lidé1 , MySpace2 , Nyx3 , Webtrh4 , ale tˇreba i ICQ5 a do jisté míry i elektronickou poštu. Toto vcelku nesourodé spektrum služeb je vhodné dále cˇ lenit. Lze použít dvˇe oznaˇcení, a to sice takzvané makrokomunity a mikrokomunity. Stejnˇe tak by se s trochu posunutým významem daly rozlišovat generické a specifické komunitní služby. Makro a mikro terminologie však umožnuje ˇ adekvátnˇe akcentovat hlavní odlišnost tˇechto typu˚ – jejich velikost. David Antoš popisuje uvedené cˇ lenˇení tak, že podle pˇredpokladu mají komunity obvykle nˇejaký identifikaˇcní základ, zpusob, ˚ jak se urˇcují lidé uvnitˇr a vnˇe. Nejjednodušeji lze rozdíl mezi mikro a makro komunitou vysvˇetlit tak, že mikrokomunity s touto identifikací pracují, zatímco makrokomunity ne. Hypotetickou ambicí makrokomunity je obsáhnout celý svˇet, všechny druhy interakcí a všechny uživatele. To je ovšem nemožné, pokud by se dovnitˇr této služby neuzavˇrel celý Internet. Reálné ambice jsou proto o nˇeco skromnˇejší. Služba ICQ tak tˇreba muže ˚ usilovat o roli univerzálního textového komunikátoru mezi dvˇema osobami v reálném cˇ ase, Lidé o univerzální chat, seznamku cˇ i diskusi a tak podobnˇe. Duležité ˚ je, že makrokomunity vždy obsahují vˇetší rˇ adu komunit a samy jako celek žádnou 1. <www.lide.cz/> 2. <www.myspace.com/> 3. <www.nyx.cz/> 4. <www.webtrh.cz/> 5. <www.icq.com/>
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 budou tvoˇrit mikro cˇ i makrokomunitu. Odpovˇed’ nemusí být zcela jednoznaˇcná. Hypotetickou ambicí systému není obsáhnout celý svˇet, nicménˇe ani vytvoˇrení komunikaˇcního prostˇredí pro jednu specifickou komunitu. Úkolem je vytvoˇrit komunikaˇcní systém pro více skupin subjektu, ˚ které urˇcitým zpusobem ˚ využívají služby souˇcasného portálu Bydlení.cz a portálu˚ pˇridružených. Lze hovoˇrit spíše o prostˇredí, které propojuje urˇcité množství komunit, jakými jsou napˇríklad spoleˇcenství vlastníku, ˚ cˇ tenáˇri internetového magazínu, zamˇestnanci firmy provozující portál nebo napˇríklad skupiny odborníku˚ cˇ i obchodníku. ˚ Navzdory této skuteˇcnosti však nelze rˇ íci, že tyto komunity jsou izolované a netvoˇrí urˇcitý celek. I pˇres výše uvedené skuteˇcnosti se lze pˇriklonit spíše k názoru, že uživatelé systému budou tvoˇrit více mikrokomunitu než makrokomunitu.
2.2
Komunitní programové vybavení
Komunitní cˇ i sociální programové vybavení, nˇekdy zkracováno jako socioware na základˇe anglického ekvivalentu, je obecnˇe a struˇcnˇe rˇ eˇceno každé programové vybavení, které umožnuje ˇ lidem potkávat se, spolupracovat a tvoˇrit komunity s pomocí poˇcítaˇcových propojení. Zahrnuje široké spektrum systému, ˚ které umožnují ˇ uživatelum ˚ interagovat a sdílet data. Za prukopníky ˚ v 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šina podobných systému˚ sdí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 cˇ asto spojová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ˇcuje pˇrímo aplikace založené na spolupráci uživatelu. ˚ Aplikace z oblasti sociálního programového vybavení zahrnují zejména nástroje pro komunikaci a interakci. Komunikaˇcní nástroje mají typicky za úkol zachytit, uložit a prezentovat komunikaci uživatelu, ˚ a to nejen v podobˇe písemné, ale i napˇríklad ve formˇe zvuku nebo videa. Nástroje pro interakci mají pak za úkol zajistit propojení mezi párem nebo skupinou uživatelu. ˚ Jsou zamˇerˇ eny zejména na ustanovení a udržování spojení. Navíc v dnešní dobˇe již není pravdou, že by tento druh systému˚ byl orientován pouze na mladou generaci, která by jej používala pro komunikaci s pˇráteli. Skuteˇcnost, že i spoleˇcnost IBM, velký hráˇc ve svˇetˇe informaˇcních technologií, se velmi aktivnˇe v oblasti komunitních systému˚ angažuje, to potvrzuje. Koncem roku 2009 spoleˇcnost ohlásila novinku v podobˇe rozšíˇrené sady nástroju˚ a 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 cˇ innosti komunit. Inovovaná verze produktu je výsledkem plánu spoleˇcnosti uvést na trh sociální pro6. <www.myspace.com/> 7. <www.facebook.com/> 8. <www.flickr.com/> 9. <www.youtube.com/>
4
ˇ 2.3. KOMUNIKA CNÍ 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ónu˚ uživatelu˚ po celém svˇetˇe jednoduché spojení a spolupráci. Spoleˇcnost pˇredstavila sadu nástroju˚ a 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ˇcnosti IBM zákazníci spoleˇcnosti rychle pˇrijali za své nové nástroje pro chytˇrejší spolupráci jako jsou mikroblogy, wiki a sdílení souboru. ˚ Mezi první zákazníky platformy IBM pro spolupráci Lotus Connections 2.5 patˇrí pˇrední spoleˇcnosti jako NEC Electronics GmbH a Sogeti. Více o této novince se lze doˇcíst na domovské stránce projektu10 .
2.3
Komunikaˇcní nástroje
Existuje celá rˇ ada nástroju˚ pro komunikaci a interakci uživatelu˚ v rámci komunitních systému. ˚ Jejich podrobný výˇcet lze nalézt napˇríklad v [20], v rámci této práce jsou uvedeny základní komunikaˇcní nástroje bˇežnˇe používané v rámci služeb dnešní sítˇe Internet. Instant messaging Pro tento termín lze obtížnˇe hledat cˇ eský ekvivalent, proto je vhodnˇejší zustat ˚ u anglického oznaˇcení. Jedná se o internetovou službu umožnující ˇ svým uživatelum ˚ sledovat, kteˇrí jejich pˇrátelé jsou právˇe pˇripojeni, a dle potˇreby jim posílat zprávy, pˇreposílat soubory a i jinak komunikovat. Hlavní výhoda oproti používání napˇríklad elektronické pošty spoˇcívá v principu odesílání a pˇrijímání zpráv v reálném cˇ ase. Zpráva je doruˇcena ve velmi krátké dobˇe od odeslání (vˇetšinou v rámci stovek milisekund). Chat Jedná se o krátkou komunikaci nebo rozhovor dvou cˇ i více lidí prostˇrednictvím komunikaˇcní sítˇe. Uskuteˇcnuje ˇ se vždy v reálném cˇ ase. V užším smyslu se pˇri chatu komunikuje formou psaného textu. Opˇet termín, pro který se neustálil žádný cˇ eský ekvivalent. V angliˇctinˇe se toto slovo používá pro bˇežné povídání si, spíše ve smyslu pˇrátelského rozhovoru. V technologickém smyslu se puvodnˇ ˚ e jednalo o cˇ istˇe textovou formu komunikace, pˇri které mohly být vymˇenovány ˇ pouze znaky. Pro chat byl zaveden komunikaˇcní protokol IRC. Pozdˇeji se k tomuto zpusobu ˚ pˇridala možnost pˇrenášet zvuk, pˇrípadnˇe i obraz. Mluvíme pak o audiochatu, pˇrípadnˇe videochatu. 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ˇe na této stránce zobrazují. Oproti IRC kanálum ˚ nebo chatu se internetová diskuse obvykle liší tím, že pˇrispˇevatelé nemusí být ke stránce pˇripojeni souˇcasnˇe a reagovat bezprostˇrednˇe, ale i s odstupem mnoha dní cˇ i mˇesícu. ˚ Mnohé diskusní stránky však mají zárovenˇ i znaky výše popsaného chatu. 10. <www-01.ibm.com/software/cz/lotus/products/connections/>
5
ˇ 2.3. KOMUNIKA CNÍ NÁSTROJE
Blogy Blog je webová aplikace obsahující pˇríspˇevky vˇetšinou jednoho autora na jedné webové stránce. Nejˇcastˇeji, nikoli však nezbytnˇe, jsou zobrazovány v obráceném chronologickém poˇradí. Autor se nazývá blogger, v cˇ eském jazyce cˇ asto psáno bloger, veškeré blogy a jejich vzájemné vztahy jsou oznaˇcovány termínem blogosféra. Slovo blog vzniklo stažením anglického web log, což lze pˇreložit jako webový zápisník, a zkrácením slova weblog. Weblogy tvoˇrí nesmírnˇe široké a diferencované pole, takže pokusy o struˇcnou vyˇcerpávající definici formálními kritérii bývají neúspˇešné. Spektrum sahá od osobních deníku˚ po oficiální zpravodajství firem, sdˇelovacích prostˇredku˚ a politických kampaní. Do weblogu muže ˚ pˇrispívat stejnˇe tak jediný autor, malá skupina pˇrátel nebo široká komunita. Mnoho weblogu˚ umožnuje ˇ pˇridávat komentáˇre k jednotlivým pˇríspˇevkum, ˚ cˇ ímž kolem nich vzniká cˇ tenáˇrská komunita, jiné jsou neinteraktivní. Wiki Jedná se o oznaˇcení obecnˇe rˇ eˇceno hypertextových dokumentu, ˚ které umožnují ˇ uživatelum ˚ pˇridávat obsah, podobnˇe jako v internetových diskusích, ale navíc také umožnují ˇ mˇenit obsah stávající. V pˇreneseném smyslu se jako wiki oznaˇcuje programové vybavení, které takovéto weby vytváˇrí. Puvodnˇ ˚ e se termín používal zcela opaˇcnˇe. Oznaˇcoval typ programového vybavení a weby postavené na wiki byly nazývány jako wiki-weby. Postupnˇe došlo k pˇrenesení významu na výsledný web a pro používanou platformu byl zaveden termín wiki-software. Wiki umožnuje ˇ vytváˇret dokumenty kolektivnˇe pomocí jednoduchého znaˇckovacího jazyka za použití webového prohlížeˇce. Jedna strana je oznaˇcována jako wiki stránka, zatímco celá skupina stránek, které bývají obvykle propojeny, je nazývána wiki. Jedna z definiˇcních charakteristik této technologie je snadné vytváˇrení a aktualizace stránek. Obecnˇe není pˇred pˇrijetím stránky provádˇena žádná kontrola a vˇetšina tˇechto systému˚ je otevˇrena veˇrejnosti nebo komukoli, kdo má pˇrístup na server. Zpravidla není vyžadována registrace uživatele. Výše byly pˇriblíženy nástroje, které jsou dnes známy každému uživateli. Existuje však rˇ ada dalších, které se stále více prosazují, nicménˇe jejich používání není tak cˇ asté. Lze jmenovat napˇríklad nástroje pro simultánní úpravu textu nˇekolika uživateli, služby pro spoleˇcné sdílení záložek a nebo také napˇríklad speciální vyhledávací služby, které využívají sociální sítˇe k organizaci, upˇrednostnování ˇ a filtraci vyhledaných výsledku. ˚ V této souvislosti je za11 jímavé zmínit mikroformát XFN (XHTML Friends Network) umožnující ˇ sémantický zápis vztahu˚ mezi lidmi pomocí jazyku˚ HTML nebo XHTML.
11.
6
Kapitola 3
Redakˇcní systémy Nyní již k samotnému pojmu redakˇcní systém. Pozdˇeji použitá platforma WordPress pro implementaci komunitního systému je cˇ asto oznaˇcována jako systém pro správu blogu˚ a primárnˇe byla pro tento úˇcel navržena, nicménˇe vzhledem k její pˇripravenosti pro rozšírˇ ení ji lze považovat za plnohodnotný redakˇcní systém. Zárovˇenˇ je vhodné si uvˇedomit, že pˇri implementaci komunitního systému je spravován specifický obsah, duraz ˚ je kladen na uživatele, jejich vztahy a na komunikaˇcní nástroje. Pojem redakˇcní systém je v dnešní dobˇe velmi rozšíˇren, nicménˇe není snadné nalézt definici plnˇe jej vystihující. Za zdaˇrilou lze považovat napˇríklad tu od Jiˇrího Lukáše uvedenou v [3]. Redakˇcní systém definuje jako aplikaci která spravuje data a informace ruzného ˚ charakteru i obsahu, zárovenˇ se stará o jejich efektivní využití a zobrazení na nˇekterém z pˇredpˇripravených výstupu. ˚ Jak je uvedeno v [8], základní úlohou redakˇcního systému je zjednodušení práce, odstranˇení rutinních úkonu˚ a obecnˇe zvýšení produktivity práce a jejího komfortu, v rˇ adˇe neposlední i zlepšení návštˇevníkova prožitku. Spolu s prudkým rozvojem sítˇe Internet a potˇrebou publikovat na nˇem informace vznikla potˇreba využívat pro tento úˇcel nástroje usnadnující ˇ práci s velkým množstvím informací. Puvodnˇ ˚ e vyvinuté protokoly Internetu urˇcené pro pˇredávání informací se ukázaly být pro efektivní práci samostatnˇe nepoužitelné, a proto jednotlivé firmy zaˇcaly postupnˇe pˇricházet se servisními programy a aplikacemi využívajícími standardní, nebo navrhující proprietární protokoly k publikování informací na Internetu. Jelikož podobné systémy již v médiích existovaly a i na Internetu bylo jejich puvodní ˚ funkcí podporovat práci redakce, ustálil se pro tyto systémy název redakˇcní. Dnes již vˇetšina tˇechto aplikací ze svého puvodní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ému˚ ustálil pojem content management systems zkracovaný na CMS.
3.1
Pˇredpoklady pro kvalitní redakˇcní systém
Od redakˇcních systému˚ se v souˇcasné dobˇe oˇcekává práce se strukturovanými informacemi, tedy možnost jejich vkládání, vyhledávání, tˇrídˇení a následného publikování na Internetu. 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ˇe pouze jediný 7
ˇ ˚ 3.2. FUNKCIONALITA REDAK CNÍCH SYSTÉ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ˇrit standardní hierarchii redaktoru˚ a autoru. ˚ Protože vˇetšina redakˇcních systému˚ disponuje 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žnuje ˇ plnit jeho jednotlivé cˇ ásti odpovídajícími daty. Toto rozhraní je vˇetšinou dostupné prostˇrednictvím webových stránek, které jsou chránˇeny autorizaˇcním systémem.
3.2
Funkcionalita redakˇcních systému˚
V této fázi je vhodné zmínit základní funkcionalitu, která se od redakˇcních systému˚ oˇcekává. Je žádoucí zduraznit ˚ slovo základní, nebot’ soudobé systémy nabízejí nepˇreberné množství funkcí, které jsou ale cˇ asto implementovány jako pˇrídavné moduly k jádru systému. Na otázku, jaká funkcionalita by mˇela být v jádˇre obsažena, neexistuje jedna správná odpovˇed’, nicménˇe lze oˇcekávat napˇríklad možnost inteligentní správy uživatelu˚ s alesponˇ základní schopností delegace pˇrístupových práv a možnost komplexní správy cˇ lánku. ˚ Žádoucí je schopnost konfigurovat obsahové oblasti výsledné stránky, vítána muže ˚ být schopnost systému definovat rubriky, pˇrítomnost vyhledávacího subsystému, novinkového subsystému, komentáˇrového subsystému, existence sekce pro stahování souboru˚ a v neposlední rˇ adˇe schopnosti pˇrijímat další rozšíˇrení, nebot’ kvalitní redakˇcní systém by mˇel být modulární a mˇel by disponovat kvalitním aplikaˇcním rozhraním. Redakˇcní sytémy lze nasazovat v ruzných ˚ oblastech. Jejich uplatnˇení lze nalézt napˇríklad pro rozsáhlé firemní webové stránky, standardní komerˇcní firemní webové stránky, internetové obchody, intranetové a extranetové portály, stránky institucí, škol a obcí, stránky neziskových organizací, internetové cˇ asopisy, osobní stránky a komunitní systémy, jak bude demonstrováno dále v této práci. Možnost nasazení redakˇcního systému v dané oblasti nemusí vždy znamenat, že se jedná o vhodné použití. Jak napˇríklad uvádí Jiˇrí Lukáš v [4], u elektronických obchodu˚ zpravidla bývá lepší využít aplikaci, která je pro tento typ cˇ innosti navrhovaná již od samého poˇcátku. Podobnˇe velké firemní prezentace mají cˇ asto složitou strukturu a kombinují statický a dynamický pˇrístup k tvorbˇe stránek, nemluvˇe o ruzných ˚ úrovních pˇrístupu a požadavcích na napojení na interní informaˇcní systém. V takových pˇrípadech se vyplatí nechat si vytvoˇrit webové stránky na míru. Vždy je žádoucí provést dukladnou ˚ analýzu, na základˇe které je vyhodnoceno, zda je nasazení vybraného redakˇcního systému pro dané potˇreby vhodné.
3.3
Klasifikace
Existuje celá rˇ ada kritérií, na základˇe kterých je možné existující redakˇcní systémy hodnotit cˇ i je dˇelit do 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 rˇ adu aspektu. ˚ Budoucí provozovatel si nejdˇríve vytvoˇrí jasnou pˇredstavu, k cˇ emu bude 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ého dodavatele oˇcekává, jaké má nároky na uživatelské rozhraní, výkon systému a mnoho dalších. V rámci sítˇe Internet lze nalézt zajímavé nástroje pro porovnávání rozšíˇrenˇejších redakˇcních systému. ˚ Za velmi povedený lze považovat napˇríklad nástroj CMS Matrix1 . 3.3.1 Cena Kromˇe produktu, ˚ jejichž zdrojový kód si jednotlivé spoleˇcnosti hlídají, existuje celá rˇ ada redakˇcních systému, ˚ které jsou vyvíjeny pod GNU GPL (GNU General Public licence) licencí. ˇ Casto se lze také setkat s modelem, kdy spoleˇcnosti vyvíjejí svuj ˚ produkt pod GNU GPL, respektive LGPL(GNU Lesser General Public licence) licencí a zdrojem jejich pˇríjmu˚ jsou 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ší cˇ i nikoliv, což však není jednoznaˇcnˇe rozhodnutelné. Zajímavé informace lze získat z cˇ lánku [7]. V kontextu této práce je podstatné, že existuje celá rˇ ada kvalitních produktu˚ šíˇritelných pod licencí GNU GPL, které jsou pro vývoj systému splnujícího ˇ zadání dostaˇcující. 3.3.2 Systémové požadavky Pro samotné zprovoznˇení redakˇcního systému je duležitá ˚ zejména skuteˇcnost, jaké prostˇredí je tˇreba pro 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ˇe samotný programovací jazyk, ve kteˇ rém je systém napsán. Castá je kombinace požadavku˚ zkracovaná jako LAMP, která v sobˇe ukrývá slova Linux, Apache (webový server), MySQL (databázový server) a PHP (skriptovací jazyk). Omezení na operaˇcní systém však v praxi tak cˇ astá nejsou. Výše uvedené nároky jsou pouze ty základní, nˇekteré redakˇcní systémy vyžadují pomˇernˇe citlivá nastavení, a proto je obtížné je zprovoznit v rámci základních služeb, které nabízejí nˇekteˇrí poskytovatelé prostoru pro webové stránky. 3.3.3 Bezpeˇcnost Duležitou ˚ kapitolou je bezpeˇcnost. Jak je mimojiné uvedeno v [5], skuteˇcnost, že CMS systémy pˇrijímají uživatelem generovaný obsah, je znaˇcným bezpeˇcnostním rizikem. V rámci klasifikace existuje rˇ ada bezpeˇcnostních prvku, ˚ které jsou v nˇekterých redakˇcních systémech obsaženy, v jiných ne a nˇekteré je možné rozšíˇrit. Konkrétnˇe lze zmínit napˇríklad možnost Kerberos cˇ i LDAP autentizace uživatelu, ˚ možnost nastavení zrnkových práv (nastavení 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ˇri registraci nových uživatelu˚ nebo pˇrítomnost mechanizmu 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ˇe duležitý ˚ aspekt. Existují projekty, jako napˇríklad Movable Type 2 , které se na rychlost zamˇerˇ ují. 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íst v [6]. Jedná se již bohužel pouze o reprodukci výsledku, ˚ stránky projektu nejsou dostupné. Jelikož navíc doposud nebyla v práci vˇenováná pozornost konkrétním redakˇcním systémum, ˚ 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 ruzných ˚ redakˇcních systému. ˚ Samotný test probíhal tak, že jeho autor vybral právˇe devˇet redakˇcních systému˚ z kategorie tˇech rozšíˇrenˇejších a s pomocí vyhledávaˇce Google vybral 2200 stránek vytvoˇrených v nˇekterém z vybraných systému. ˚ 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ˇcního systému, stránky jsou uspoˇrádány dle 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í cˇ as potˇrebný k naˇctení prvního bajtu vybraných stránek. Tato míra je cˇ asto používána k indikaci odezvy webového serveru nebo jiných sít’ových zdroju. ˚ Jedná se o cˇ as od chvíle, kdy virtuální uživatel provede požadavek pˇres HTTP protokol, do okamžiku, kdy prohlížeˇc obdrží první bajt. Obrázek 3.2 demostruje, jaká byla odezva u stránek vytvoˇrených s pomocí vybraného redakˇcního systému. Uspoˇrádání stránek na horizontální ose odpovídá jejich uspoˇrádání v grafu výše. 2.
<www.movabletype.org/>
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ˇe nemˇelo bý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íklad ve formˇe placených manuálu, ˚ placené zákaznické podpory cˇ i v podobˇe odborných školení. Za dostaˇcující lze považovat skuteˇcnost, že existuje silná komunita uživatelu˚ a vývojaˇru˚ daného redakˇcního systému a dostupnost komunitních prostˇredku. ˚ Konkrétnˇe lze zmínit veˇrejná tématická fóra, komunitou spravovanou dokumentaci cˇ i napˇr. veˇrejný seznam adres elektronické pošty. Velmi duležitým, ˚ v práci již zmínˇeným, aspektem je kvalitní a dobˇre dokumentované 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ího systému a jeho další vývoj. 3.3.6 Jednoduchost použití Nemˇelo by se zapomínat na fakt, že se systémem budou pracovat uživatelé. Uvažovat lze celou rˇ adu funkcí, které umožní uživatelum ˚ pracovat se systémem efektivnˇe a pohodlnˇe nebo které cˇ iní práci se systémem intuitivnˇejší. Konkrétnˇe lze zmínit napˇríklad možnost pracovat spravovat obsahem s pomocí takzvaného Drag’n Drop mechanizmu pro intuitivní práci v uživatelském rozhraní, existenci pˇrátelských URL, které umožnují ˇ pˇrehlednˇeji identifikovat konkrétní obsah, pˇrítomnost WYSIWYG 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ítomnost systému pro tvorbu šablon, vlastní jazyk pro šablony nebo napˇríklad pˇrítom11
3.3. KLASIFIKACE nost mechanizmu pro kontrolu chyb v textu. V rámci této podkapitoly byla zmínˇena nˇekterá kritéria, na základˇe kterých lze vybrané redakˇcní systémy hodnotit. Kromˇe zde zmínˇených je možné uvažovat mnoho dalších, jako napˇríklad dostupnost nástroju˚ pro správu obsahu, možnost administrace v prohlížeˇci pˇ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ˇerˇ it se na nástroje pro interoperabilitu. Pˇríkladem muže ˚ být podpora protokolu FTP (File Transfer Protocol), syndikace obsahu nebo podpora nástroju˚ WebDAV3 (Web-based Distributed Authoring and Versioning).
3.
<www.webdav.org/>
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žnuje ˇ každému programátorovi zapojit se do vývoje, upravovat jeho cˇ ásti a pˇrizpusobit ˚ si jej dle vlastních pˇredstav. WordPress byl navržen jako systém urˇcený pro vedení blogu, ˚ nicménˇe snadná rozšíˇritelnost z nˇej cˇ iní témˇerˇ kompletní systém pro správu obsahu. Poˇcátky WordPressu sahají do roku 2003. V té dobˇe disponoval pouze krátkým zdrojovým kódem, nicménˇe od té doby prošel nespoˇctem zmˇen a stal se jedním z nejpoužívanˇejších publikaˇcních nástroju. ˚ V dnešní dobˇe již lze hovoˇrit o vyspˇelém a stabilním produktu, který je zamˇerˇ en na uživatele a webové standardy. Mezi jeho hlavní klady lze rˇ adit zpusob ˚ cˇ lenˇení uživatelu˚ do ú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ˇe rozšíˇren v rámci komunitní nadstavby BuddyPress. Vývojáˇri kladou duraz ˚ na snadnou instalaci a pˇrechody na 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žnuje ˇ velmi rychlé aktualizace a minimalizuje nároˇcnost na velikost datového úložištˇe. Dobˇre je rˇ ešena internacionalize a lokalizace s použitím balíˇcku gettext2 . Co se publikování obsahu týká, plnˇe jsou podporovány specifikace RSS 1.03 , RSS 2.04 a ATOM5 . Systém vytváˇrí pro každý pˇríspˇevek strukturovaný a pro cˇ lovˇeka i stroj jednoduše cˇ itelný odkaz, což je duležitý ˚ aspekt z hlediska optimalizace pro vyhledávaˇce. Za velmi zdaˇrilý lze považovat mechanizmus platformy WordPress pro úpravy prezentaˇcní vrstvy webové aplikace s použitím šablon a jejich štítku˚ (pojmy budou popsány níže). Vizuální podobu stránek je možné dále upravovat vytváˇrením takzvaných motivu˚ vzhledu, pˇriˇcemž v souˇcasné dobˇe jich je volnˇe k dispozici nemalé množství. Duležitým ˚ aspektem kvalitního redakˇcního systému jsou dostupné nástroje a mechanizmy pro tvorbu obsahu, pˇriˇcemž v této oblasti nabízí WordPress rˇ adu zajímavých možností. Umožnuje ˇ napˇríklad chránit publikované cˇ lánky heslem, tvorbu pˇríspˇevku˚ a jejich automatizovanou pozdˇejší publikaci, ocenit lze také možnost dˇelit pˇríspˇevky na více stránek. Samozˇrejmostí je vkládání souboru, ˚ obrázku˚ a jiných multimediálních dat do zveˇrejnovaˇ 1. <www.wordpress.org/> 2. <www.buddypress.org/> 3. 4. 5. <www.atomenabled.org/developers/syndication/atom-format-spec.php>
13
4.1. NADSTAVBY SYSTÉMU ných cˇ lánku. ˚ Pˇríspˇevky mohou být cˇ lˇenˇeny do kategorií a podkategorií, mohou být také oznaˇcovány s pomocí štítku. ˚ Ocenitelná je možnost ukládat prubˇ ˚ ežnˇe pracovní verze psaných pˇríspˇevku˚ nebo bˇehem editace nahlížet na jejich výslednou podobu. Vítána muže ˚ být také schopnost systému vytváˇret obsah s použitím desktopových aplikací implementujících rozhraní MetaWeblog6 nebo Blogger7 . Pˇríspˇevky v systému lze vkládat i s použitím elektronické pošty. Závˇerem je vhodné uvést, že systém disponuje kvalitním vlastním vyhledávaˇcem, propracovaným systémem pro archivaci obsahu, pˇri jehož vytváˇrení je umožnˇeno využít jazyka HTML. Uživatel muže ˚ být informován o aktualitách systému elektronickou poštou a k dispozici je propracovaný systém pro správu komentáˇru. ˚
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ý cˇ istˇe pro vedení blogu, ˚ lze vidˇet jako jeho nedostatek skuteˇcnost, že v rámci jedné instalace umožnuje ˇ vytvoˇrit pouze jedinou instanci. U vˇetších komunit muže ˚ být vhodné mít k dispozici nástroj umožnující ˇ uživatelum ˚ vést své vlastní blogy, aniž by museli rˇ ešit jakékoliv technické záležitosti týkající se instalace systému a jeho správy. Pro tento úˇcel byl navržen systém WordPress MU, který vytváˇrí pro každý jednotlivý web vlastní komunitu a umožnuje ˇ ovládat cˇ i moderovat všechny blogy z jednoho místa. Na rozdíl od základní verze nemohou majitelé jednotlivých blogu˚ doplnovat ˇ systém o zásuvné moduly a motivy vzhledu, avšak mohou vybírat z nabídky, která je poskytnuta administrátorem systému. Mezi výhody z pohledu provozovatele lze rˇ adit zejména možnost vytvoˇrit hostitelské prostˇredí pro komunitu uživatelu, ˚ poskytovat prostor zdarma jako alternativu k placeným službám, zajistit bezpeˇcnost z jednoho místa nebo možnost libovolnˇe nastavit prostˇredí pro administraci. 4.1.2 BuddyPress BuddyPress je projekt založený na systému WordPress MU. Smyslem této nadstavby je posunout 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ˇe vydána v dubnu roku 2009. BuddyPress lze popsat jako sadu motivu˚ vzhledu a zásuvných modulu˚ doplnujících ˇ WordPress MU pˇredevším o funkce pro komunikaci uvnitˇr komunity publikujících. Konkrétnˇe se jedná zejména o následná rozšíˇrení: Rozšíˇ rené profily Administrátor má možnost pˇridávat do profilu uživatelu˚ doplnující ˇ pole, které jsou plnˇe definovatelné vˇcetnˇe typu formuláˇrového prvku. 6. 7.
Osobní vzkazy Poskytuje základní funkcionalitu k zasílání textových zpráv mezi uživateli systému. Pˇ rátelé Jedná se o koncept u systému˚ tohoto typu bˇežný. Uživatel má možnost požádat jiného uživatele o vytvoˇrení vztahu pˇrátelství. Dusledkem ˚ muže ˚ být napˇríklad zpˇrístupnˇení neveˇrejných profilových informací. Skupiny Systém v základním nastavení poskytuje veˇrejné, soukromé a skryté skupiny, v rámci kterých mohou cˇ lenové komunikovat. Sledování aktivit uživatel˚ u Tato funkcionalita je navržená ke sledování aktivit jednotlivých uživatelu˚ v rámci celého systému. Zejména v rámci verze 1.2 bylo zapracováno na netriválním konceptu, na základˇe kterého lze sledovat široké spektrum aktivit a na patˇriˇcných místech je žádoucím zpusobem ˚ filtrovat. Diskuzní fóra Nechybí ani jedna ze základních funkcionalit komunitních systému. ˚ Fóra jsou v systému vˇclenˇena do uživatelských skupin. BuddyPress je urˇcen zejména k vytváˇrení komunitního prostˇredí pro zájmové skupiny menšího až stˇredního rozsahu, 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 uvolnˇena v únoru roku 2010 a nese oznaˇcení BuddyPress 1.2. Na systému aktivnˇe pracuje rˇ ada dobrovolníku, ˚ nˇekterá rozšíˇrení jsou nabízena zdarma, jiná za urˇcitý poplatek respektive placené cˇ lenství v komunitˇe. Velice zajímavé informace o projektu lze získat z rozhovoru9 , který se uskuteˇcnil v rámci veletrhu CeBIT v roce 2010.
4.2
Technologie a technické požadavky
Základní systémové požadavky redakˇcního systému Wordpress jsou velmi nenároˇcné. Nejnovˇejší verze pro svuj ˚ chod vyžaduje pouze interpretaci jazyka PHP verze 4.3 nebo vyšší a databázi MySQL alesponˇ ve verzi 4.0. Pro bezproblémovou funkˇcnost systému je doporucˇ eno nastavit na webovém serveru hodnotu php_memory_limit alesponˇ na 32 MB. Zmínˇená hodnota urˇcuje, kolik MB maximálnˇe lze poskytnout skriptu jazyka PHP. Jako webový server je obecnˇe doporuˇcován Apache10 , v rámci kterého je nutné mít aktivován modul mod_rewrite. 8. <www.buddypress.org/> 9. <www.linuxpromagazine.com/Events/Open-Source-Project-Lounge-2010/ CeBIT-Open-Source-Project-Lounge-WordPress-and-BuddyPress> 10.
15
Kapitola 5
Výbˇer platformy pro implementaci Aˇckoliv již v rámci zadání bylo vyžadováno využít pro implementaci redakˇcní systém WordPress, je vhodné zduvodnit ˚ tuto volbu. Duležitá ˚ je skuteˇcnost, že zadavatel preferoval využít platformu založenou na tzv. LAMP technologiích, nebot’ má s tímto rˇ ešením znaˇcné zkušenosti. Pˇresto je vhodné alesponˇ zmínit, že existuje celá rˇ ada volnˇe dostupných systému˚ pro správu obsahu vytvoˇrených s použitím pokoroˇcilejších technologií. Jmenovat lze napˇríklad systémy OpenCms1 , jAPS2 , Liferay3 cˇ i DSpace4 , které jsou napsány v jazyce Java a dokáží spolupracovat s celou rˇ adou databázových systému, ˚ stejnˇe jako napˇríklad DotNetNuke5 , Umbraco6 nebo mojoPortal7 , které jsou vytvoˇreny s použitím technologie ASP.NET. Tyto platformy se již ze své podstaty jeví jako vhodnˇejší pro návrh robustních a škálovatelných webových aplikací, nicménˇe výhodou systému˚ založených na jednodušších technologiích jsou nižší nároky na prostˇredí pro jejich provoz a široká základna programátoru, ˚ kteˇrí tyto technologie plnˇe ovládají a mohou systémy dále spravovat a vyvíjet. Kromˇe požadavku˚ na technologie je tˇreba brát v úvahu skuteˇcnost, že zadáním je implementovat komunitní systém. Tento fakt je duležitý ˚ z toho duvodu, ˚ že urˇcité systémy pro správu obsahu již ve svém jádru obsahují funkcionalitu pro tento druh webových aplikací, pˇrípadnˇe jsou pro nˇe k dispozici moduly komunitní služby doplnující. ˇ Výˇcet takových platforem lze nalézt napˇríklad v [13]. Po urˇcitém zkoumání byly vybrány cˇ tyˇri redakˇcní systémy, které se jeví jako vhodné pro rˇ ešení zadaného úkolu. Kromˇe výše popsané platformy WordPress lze uvažovat Drupal8 , který je obecnˇe považován jako vhodné rˇ ešení pro implementaci komplexních webových aplikací, a bude mu proto v této práci vˇenován prostor. Totéž je možné rˇ íci o 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 duvodu ˚ je zde jeho popis vynechán na úkor menších, nicménˇe pro implementaci
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 cˇ asopisu, ˚ blogu, ˚ internetových obchodu, ˚ ale i komunitních a jiných komplexních systému. ˚ Oficiálnˇe podporovanými databázemi jsou MySQL a PostgreSQL, do nové verze se pˇripravuje podpora pro databázi Oracle. Drupal je postaven modulárním zpusobem ˚ a udává jako svou filozofii pˇrehlednost kódu a otevˇrenost aplikaˇcního rozhraní. Velkým kladem je dobˇre promyšlená architektura databáze. V centru dˇení stojí jednotka zvaná node neboli jednotka obsahu, kterou muže ˚ být pˇríspˇevek do blogu, anketní otázka, bˇežná stránka nebo i vlastní definovaný typ. Ke každé této jednotce je umožnˇeno pˇripojit komentáˇre, muže ˚ být syndikována v RSS12 , zobrazovat ji lze ruznými ˚ zpusoby ˚ a muže ˚ být i verzována. Výhodou tohoto návrhu je skuteˇcnost, že moduly pracují s obsahem jednotnˇe. Vyzdvihnout lze také propracovaný systém autorizace uživatelu. ˚ Jádro i moduly tˇretích stran mohou definovat oprávnˇení, která daný uživatel musí mít, aby mohl vykonat urˇcitou cˇ innost. Lokalizace je základním zpusobem ˚ vestavˇena. V rámci systému je monitorována a zaznamenávána veškerá aktivita, cˇ ehož lze využít napˇríklad pro 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í rˇ adˇe je nespornou výhodou tohoto redakˇcního systému poˇcetná a aktivní komunita vývojáˇru. ˚ V odstavci výše byly zmínˇeny aspekty, které cˇ iní Drupal jedním z nejpopulárnˇejších a velmi používaným. Mezi jeho slabiny lze naopak rˇ adit skuteˇcnost, že není napsán na principu objektovˇe orientovaného pˇrístupu, nicménˇe i v souˇcasnosti procedurální model vývojáˇri hájí. Další výtkou muže ˚ být málo graficky zajímavých motivu˚ vzhledu v základní instalaci. Lze sice relativnˇe snadno vytvoˇrit vzhled vlastní, ale rˇ ada alternativních platforem disponuje širší nabídkou. V poˇcáteˇcních fázích implementace je zpravidla nutné vˇenovat urˇcité úsilí nalezení vhodných modulu. ˚ Drupal není vhodný napˇríklad pro implementaci jednoduchého weblogu nebo systému pro diskusní fóra, nebot’ pro dosažení takovéto konkrétní funkcionality existují vhodnˇejší rˇ ešení. Vhodný se naopak jeví pro implementaci komplexních webových aplikací. Potenciál Drupalu pro implementaci komunitních systému˚ není malý. V cˇ lánku [23] popisuje zkušený vývojaˇr Ernest Lilley své pozitivní zkušenosti pˇri vývojí takového systému a lze zde nalézt i odkazy na literaturu, která je specializována právˇe na vývoj komunitních systému˚ s pomocí Drupalu. V cˇ lánku je rovnˇež uvedeno, že existuje celá rˇ ada použitelných modulu. ˚ Jak autor v cˇ lánku dále uvádí, implementace s použitím Drupalu vyžaduje urˇcité úsilí zejména v poˇcáteˇcních fázích, nicménˇe odmˇenou jsou jeho široké možnosti. Více o projektu Drupal obecnˇe se lze doˇcíst na jeho domovských stránkách13 , nebo napˇríklad v cˇ lánku [17]. 10. 11. 12. 13.
Jak se lze doˇcíst v [10], ImpressCMS je možné použít jak pro implementaci rozsáhlé podnikové komunitní sítˇe, tak napˇríklad i pro jednoduché systémy pro správu blogu. ˚ Dle informací z uvedeného zdroje je systém vysoce škálovatelný a lze jej nasadit napˇríklad v rámci interní sítˇe podniku pro 20 000 zamˇestnancu, ˚ stejnˇe tak jej lze ale použít pro sestavení jednoduchých propagaˇcních webových stránek spoleˇcnosti. ImpressCMS se jeví jako velmi použ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živatelu˚ muže ˚ být použito vlastního mechanizmu, kterým ImpressCMS disponuje, nebo lze využít systém pro správu uživatelských úˇctu˚ LDAP. K dispozici jsou funkce pro bezpeˇcnou manipulaci s databázovým obsahem, nástroje pro validaci dat zadávaných s pomocí formuláˇru˚ a mnoho dalších bezpeˇcnostních prvku. ˚ Registrovaní uživatelé mohou spravovat své profily, vybírat své vlastní motivy vzhledu a celkovˇe mají k dispozici mnoho nástroju˚ pro pˇrizpusobení ˚ chování systému dle jejich potˇreb. ImpressCMS v souˇcasné dobˇe podporuje pouze databázový systém MySQL. Úvadˇenou silnou stránkou je znaˇcná modularita, umožnující ˇ spravovat obsah právˇe v rámci jednotlivých modulu. ˚ Jako pˇríklady lze uvést moduly pro správu novinek nebo fotogalerií. Na domovských stránkách lze nalézt informace o široké komunitˇe vývojaˇru, ˚ nicménˇe s komunitami redakˇcních systému˚ Drupal, WordPress a Joomla tuto srovnávat zatím nelze. Problematická muže ˚ být lokalizace systému a jeho modulu. ˚ Aˇckoliv se lze doˇcíst o podpoˇre širokého spektra jazyku, ˚ napˇríklad cˇ eská lokalizace pravdˇepodobnˇe zatím neexistuje. Popisovaná platforma se jeví jako velmi zajímavá alternativa pro implementaci nejen komunitních systému. ˚ Za urˇcitou nevýhodu lze považovat jeho menší rozšíˇrenost. Na druhou stranu je systém aktivnˇe vyví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ˇe by bylo možné vážnˇeji uvažovat o použití tohoto systému pro implementaci zadaného rˇ ešení.
5.3
Elgg
Platforma Elgg je urˇcena pˇredevším pro implementaci komunitních systému. ˚ V rámci základních modulu˚ disponuje Elgg funkcemi, které jsou pro nˇe typické. Jmenovat lze napˇríklad správu aktivit uživatelu˚ a jejich volnˇe upravovatelné profily. Systém obsahuje propracované funkce pro informování uživatelu˚ o dˇení v rámci sítˇe. Je v nˇem také zabudována podpora napˇríklad pro elektronickou poštu, ale i pro další alternativy a lze tak napˇríklad nastavit informování s pomocí technologie SMS. Samozˇrejmostí je rozsáhlý systém pro správu skupin a jejich oprávnˇení, evidenci blogu, ˚ možnost vkládat bˇežné dokumenty a multimediální data. Za zajímavé lze považovat moduly pro vytváˇrení a ukládání stránek v hierarchické struktuˇre a možnost urˇcit, kdo je muže ˚ cˇ íst cˇ i do nich muže ˚ zapisovat. Díky propracovanému systému práv lze jednoduše rˇ ídit pˇrístupy jednotlivých úˇcastníku˚ k obsahu. Každý systém postavený na Elggu disponuje výhodami pramenícími z technologií RSS, Open So18
5.4. SHRNUTÍ cial14 , OpenID15 , FOAF16 , JSON17 , serializované PHP nebo XML. V pˇredchozím odstavci byly popsány základní vlastnosti systému, nicménˇe je vhodné pokusit se odpovˇedˇet na otázku, cˇ ím systém vyniká. O shrnutí se pokusila Jane Hart ve svém blogu [9]. Dle tohoto cˇ lánku Elgg nabízí kompletní sadu komunitních nástroju˚ pohromadˇe a není tˇreba spoléhat se na propojování externích nástroju. ˚ Dále vyzdvihuje vysokou úrovenˇ zabezpeˇcení uchovávaných dat v rámci organizace a zejména obecnˇe homogenní komunitní prostˇredí. Dle uvedeného shrnutí je možné efektivnˇe nasazovat 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ý muže ˚ být nasazen v akademickém cˇ i školním prostˇredí. Stejnˇe tak lze Elgg využít v oblasti otevˇrených sítí, napˇríklad pro komunikaci týmu programátoru. ˚ Z dostupných informací se systém Elgg jeví jako vhodná platforma poskytující široké spektrum nástroju˚ pro komunitní systémy, nicménˇe otázkou zustává, ˚ jak problematické je další rozšiˇrování systému v pˇrípadˇe potˇreb. Komunita uživatelu˚ a vývojáˇru˚ nedosahuje takové velikosti, jako tomu je u výše popsaných systému. ˚ Lze tedy požadovat za žádoucí provést dukladnou ˚ analýzu požadavku˚ na 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íženy alternativní vybrané platformy, které se jeví jako vhodné pro implementaci komunitních systému. ˚ Souˇcástí popisu bylo i krátké shrnutí jejich potenciálu pro rˇ ešení zadaného úkolu. Porovnání vybraných platforem dle aspektu˚ zmínˇených ve 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ému. ˚ Pro implementaci použitý WordPress se jeví jako relativnˇe komplexní systém, jehož jádro poskytuje omezenou funkcionalitu, kterou lze rozšiˇrovat s použitím dostupných zásuvných modulu. ˚ Duraz ˚ je 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ˇe je o požadovou funkcionalitu rozšíˇritelný. Za znaˇcná pozitiva lze považovat poˇcetnou komunitu vývojáˇru, ˚ lokalizaci jádra do cˇ eského jazyka, otevˇrenost pro úpravu prezentaˇcní vrstvy a dostupnost ucelené komunitní nadstavby BuddyPress. Silnou stránkou alternativní platformy Drupal je její komplexnost, nicménˇe ta muže ˚ být v nˇekterých pˇrípadech pˇrekážkou. Specifikovaný komunitní systém by bylo možné s použitím Drupalu implementovat, nicménˇe pracnost by v takovém pˇrípadˇe byla pravdˇepodobnˇe vyšší než v pˇrípadˇe WordPressu. Obdobný závˇer lze úˇcinit pro platformu Joomla, kterou lze obecnˇe považovat za velmi kvalitní systém pro správu obsahu.
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ížit základy, které je žádoucí znát pro rozšiˇrování jádra systému WordPress. Doplnování ˇ funkcionality lze rˇ ešit patˇriˇcnými úpravami na úrovni zdrojového kódu jádra, nicménˇe tento pˇrístup pˇrináší rˇ adu komplikací. Obecnˇe je proto žádoucí dodržovat principy uvedené v [24]. Pˇredpokladem pro porozumˇení textu je znalost relaˇcních databází a jazyku˚ PHP a (X)HTML. Pro vývoj rozšiˇrujících modulu˚ je dále vhodné ovládat techonologii CSS, skriptovací jazyk JavaScript a databázový systém MySQL.
6.1
Organizace zdrojového kódu
Pˇristoupit ke zdrojovým kódum ˚ systému WordPress lze snadno, nebot’ jsou veˇrejnˇe dostupné v instalaˇcním balíˇcku. Samotná instalace je rˇ ešena umístˇením tohoto balíˇcku na server a vykonáním instalaˇcního skriptu pˇri prvním naˇctení. Zmínˇený skript zajišt’uje nastavení systému, zejména vytváˇrí databázi pro uchovávání dat. Jedná se o webovou aplikaci využívající jazyk PHP a cˇ itelnost zdrojové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ém adresáˇri do obsahu souboru index.php. Zde je nastavena 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 cˇ emu dochází. Co se dalšího obsahu koˇrenového adresáˇre týká, je možné nalézt zde pomocné a konfiguraˇcní skripty, jako napˇríklad rˇ ešení pro pˇrihlašování uživatele, pˇridávání pˇríspˇevku˚ z elektronické poštovní schránky, registraˇcní formuláˇr, podporu pro technologie ATOM1 , RSS2 , OPML3 a další. Nˇekteré zdejší skripty jsou oznaˇceny jako nevhodné pro používání a k dispozici jsou pouze z duvodu ˚ zpˇetnˇe kompatibility. V základní instalaci systému se dále nachází tyto tˇri podadresáˇ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 stylu, ˚ adresáˇr images pro 1. <www.atomenabled.org/> 2. <www.whatisrss.com/> 3. <www.opml.org/>
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 patrˇ iˇcných technologií, includes obsahující aplikaˇcní rozhraní, pˇrípadné další komponenty zahrnované do administrátorského rozhraní a adresáˇr js, ve kterém se nalézají externˇe definované funkce jazyka JavaScript pro tuto sekci. wp-content Zdejším obsahem jsou adresáˇre plugins, ve kterém se nachází zásuvné moduly, themes s motivy vzhledu prezentaˇcní vrstvy systému a languages, do kterého jsou ukládány soubory s lokalizací. wp-includes Zde lze nalézt definice tˇríd, šablon a jiných skriptu, ˚ které jsou používány pˇri pohybu na stránkách. Adresáˇr je takto nazván z toho duvodu, ˚ že k tˇemto souborum ˚ se nikdy nepˇristupuje pˇrímo, ale jsou vkládány s pomocí funkcí include, require, respektive require_once jazyka PHP. Totéž platí pro adminstrátorské rozhraní. Kromˇe zmínˇených souboru˚ se 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ému uživatelskému rozhraní. 6.1.1 WordPress MU a BuddyPress Nadstavba WordPress MU zavádí do výše popsané struktury nové soubory, nicménˇe jejich 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ˇcen pro zásuvné moduly podobnˇe jako adresáˇr plugins, nicménˇe podstatnou 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 duležité ˚ pˇriblížit, jak jsou organizovány zdrojové kódy komunitní 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ˇreba nahrát uvedený modul do adresáˇre wp-content/plugins a standardnˇe jej aktivovat z administrátorského rozhraní koˇrenového blogu. Samotná struktura souboru˚ se zdrojovými kódy je pˇrehledná. V koˇrenovém adresáˇri modulu se nachází soubory obsahující aplikaˇcní rozhraní jednotlivých komponent a adresáˇre, ve kterých se nalézají potˇrebné zdrojové soubory pro konkrétní komponenty. Obsahem tˇechto souboru˚ jsou zejména tˇrídy dané komponenty, štítky šablon a pomocné tˇrídy cˇ i funkce. 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 blogu˚
4.
22
6.2. DATOVÝ MODEL •
core poskytující základní funkcionalitu nadstavby
•
forums zapouzdˇrující funkcionalitu diskuzních fór
Již zmínˇené soubory v koˇrenovém adresáˇri modulu BuddyPress obsahují široké spektrum funkcí pro pˇrístup k datum ˚ daných komponent. V pˇrípadˇe, že je BuddyPress rˇ ádnˇe zapojen, lze tyto funkce velmi efektivnˇe využívat, aniž by bylo nutné znát datový model nadstavby, cˇ ehož bylo velmi využíváno pˇri implementaci rozšiˇrující funkcionality. Jako jednoduchý a názorný pˇríklad z praktické cˇ ásti práce lze uvést postup pro získání abecednˇe usporádaného seznamu pˇrátel pˇrihlášeného uživatele, cˇ ehož lze docílit napˇríklad následujícím zpusobem: ˚ $friends = friends_get_alphabetically( $bp->loggedin_user->id ); foreach ( $friends[’users’] as $user ) { echo ’loggedin_user->domain . $bp->members->slug . ’/’ . $user->user_login . ’">’ . $user->display_name . ’’; }
Jedná se o podstatnˇe zkrácenou cˇ ást kódu, nicménˇe lze vidˇet, jak jednoduše lze k objektum ˚ pˇristupovat. Je ale nutné podotknout, že v rámci systému WordPress, respektive BuddyPress, lze jít ještˇe o úrovenˇ výše a používat štítky šablon, avšak tento mechanizmus bude popsán níže v kapitole zabývající se hloubˇeji aplikaˇcním rozhraním.
6.2
Datový model
V rámci této podkapitoly bude vˇenován prostor nejdˇríve datovému modelu jádra systému WordPress. V kontextu práce je duležité ˚ znát datový model systému Wordpress MU, respektive 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áˇre v rámci instalace, a wp_links, spravující uložené odkazy, je zˇrejmý. Pro evidenci uživatelských úˇctu˚ je k dispozici tabulka wp_users obsahující pole pro základní informace vážící se k danému uživateli. Pokud je zapotˇrebí evidovat informace další, není vhodné doplnovat ˇ je do této tabulky. Pro uvedený úˇcel je pˇripravena tabulka wp_usermeta, do které lze ukládat jakékoliv další údaje v podobˇe trojice identifikaˇcní cˇ íslo uživatele, klíˇc informace a její hodnota. Tento jednoduchý model nabízí dostateˇcné prostˇredí pro ukládání potˇrebných dat. Již v rámci základní instalace jsou zde vkládány duležité ˚ záznamy, jako jsou napˇríklad uživatelská oprávnˇení. Výše uvedený pˇrístup je využit rovnˇež pro ukládání pˇríspˇevku˚ v systému. Tabulka wp_ posts drží základní data, pro jakákoliv další je dostupná tabulka wp_postmeta. Zajímavý je rovnˇež zpusob, ˚ jakým jsou drženy informace spojené s oznaˇcením pˇríspˇevku štítkem a jejich cˇ lenˇením do 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 cˇ i kategorii. Pro tento úˇcel je navržena tabulka wp_termtaxonomy, která teprve urˇcuje taxonomii daného záznamu. Na 24
6.2. DATOVÝ MODEL samotný pˇríspˇevek je pak navázán štítek cˇ i kategorie pˇres relaci 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ˇe trojice 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ˇe ten je využí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ím systé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ího systému WordPress, které umožnuje ˇ spravovat více instancí blogu na jedné instalaci 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 databázi vytvoˇreny tabulky odpovídající základnímu datovému modelu. Výjimky tvoˇrí dvojice wp_users a wp_usermeta. Seznam uživatelu˚ není žádoucí spravovat pro každou instanci blogu zvlášt’, proto je uchováván jednotnˇe. Jelikož je tˇreba tabulky jednotlivých blogu˚ od25
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šíˇren o sedm dalších relací, které drží informace spoleˇcné pro celý systém. Za duležitou ˚ lze považovat tabulku wp_blogs, ve které jsou uchovávány záznamy o jednotlivý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ˇe stavu databáze, nicménˇe podrobnˇejší informace o tomto mechanizmu lze dohledávat velmi obtížnˇe. Co se tabulky wp_registration_log týká, jejím úˇcelem je ukládat záznamy o registracích uživatelu˚ do jednotlivých blogu˚ v rámci instalace. K dispozici je dále tabulka wp_signups evidující kompletní záznamy žádostí o registraci do systému. Poslední tˇri tabulky jsou navrženy pro pˇrípad, že je v rámci instalace systému WordPress MU provozováno více oddˇelených prostˇrední, nebo-li stránek s vlastní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íklad název prostˇredí) jsou drženy v tabulce wp_sitemeta a s pomocí záznamu˚ z 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ˇ ri tabulky byly navrženy za úˇcelem ukládání dPress MU celou rˇ adu nových záznamu. ˚ Ctyˇ dat o rozšíˇrených už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širˇ ující informace. V kapitole výše již bylo zmínˇeno, že nadstavba BuddyPress umožnuje ˇ propojovat uživatele vztahem pˇrátelství. Pro tento vztah je vyˇclenˇena tabulka wp_bp_friends, ve které jsou drženy související informace. Duležitou ˚ roli 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 cˇ lenství uživatele ve skupinˇe je urˇcena tabulka wp_bp_groups_ members, ve které mohou být drženy napˇríklad informace 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ˇe vklá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ému blogu, v tabulce wp_bp_user_blogs_blogmeta další metainformace k tomuto vztahu. Do tabulky wp_bp_user_blogs_posts jsou podobnˇe ukládány vztahy mezi blogem, pˇríspˇevkem a 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ých zpráv má administrátor systému možnost rozesílat takzvané pˇripomínky. Ty jsou šíˇreny mezi 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í upozornující ˇ uživatele na duležité ˚ systémové události. Takovým oznámením muže ˚ být napˇríklad nová 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. APLIKA CNÍ ROZHRANÍ
6.3
Aplikaˇcní rozhraní
V rámci této podkapitoly bude vˇenován prostor rozšiˇrování funkcionality jádra systému WordPress. Jak bylo naznaˇcno v úvodu, zdrojový kód je otevˇren pro úpravy, je proto teoreticky možné libovolnˇe jej doplnovat. ˇ Pokud by však byly tyto úpravy provádˇeny pˇrímo do zdrojových kódu˚ jádra, naskýtá se celá rˇ ada komplikací. Vývojáˇr muže ˚ brzy ztratit pˇrehled o provedených úpravách, což je také pˇredpokladem pro další komplikaci, kterou je pˇrípadný pˇrechod na novou verzi systému. V rámci pˇrechodu dochází k pˇrepsání velké cˇ ásti zdrojových souboru, ˚ cˇ ímž muže ˚ dojít pˇrinejmenším ke ztrátˇe provedených úprav. Naštˇestí je systém Wordpress navržen tak, že umožnuje ˇ vývojaˇrum ˚ jej efektivnˇe rozšiˇrovat vytváˇrením zásuvných modulu. ˚ 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ých bodu, ˚ které jsou systémem poskytovány v rámci aplikaˇcního programového rozhraní. Pˇripojit navržený modul k jádru systému je záležitost triviální. To také implikuje další nespornou výhodu zásuvných modulu, ˚ kterou je jejich jednoduchá distribuovatelnost. Více o této problematice se lze doˇcíst v oficiální dokumentaci [24] a v publikaci [15], kde lze nalézt široké spektrum zajímavých informací. Pˇri studiu této problematiky bylo dále cˇ erpáno z publikace [19]. 6.3.1 Vývoj zásuvných modulu˚ Úvodem této cˇ ásti je vhodné uvést alesponˇ struˇcnˇe základní konvence pro tvorbu zásuvného modulu, které by mˇely být dodržovány zejména v pˇrípadˇe, že bude modul veˇrejnˇe distribuován. Novˇe vytvoˇrený modul by mˇel být rozumnˇe a nejlépe unikátnˇe pojmenován, aby už z jeho názvu mohla být odhadnuta funkcionalita. Zdrojový kód modulu muže ˚ být obsažen v jediném souboru, který by mˇel nést jeho název, nebo muže ˚ být rozložen do více souboru. ˚ Hlavní soubor se zdrojovým kódem obsahující hlaviˇcku by mˇel být pojmenován stejnˇe jako celý adresáˇr, který bude v rámci instalace vložen na patˇriˇcné místo ve struktuˇre zdrojových kódu˚ systému WordPress. V pˇrípadˇe veˇrejné distribuce je také vhodné doplnit soubor readme.txt s patˇriˇcným popisem a uvedena by mˇela být i licence, pod kterou muže ˚ bý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ˇcka by mˇela odpoví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, napˇ ríklad znaˇ cena jako 1.0 Author: Jméno autora Author URI: Autorova domovská stránka License: Krátké oznaˇ cení licence */
28
ˇ 6.3. APLIKA CNÍ ROZHRANÍ Podstatná je zejména pˇrítomnost položky popisující název. Pouze její pˇrítomnost je pˇredpokladem pro idnetifikaci modulu systémem. Žádoucí je uvést pˇrinejmenším ještˇe popis, který je zobrazován administrátorovi v sekci pro aktivaci zásuvných modulu. ˚ 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 modulu˚ systému WordPress dosahuje své funkcionality s využitím takzvaných háˇcku˚ (v jazyce anglickém hooks). Jedná se o mechanizmus umožnující ˇ volat funkce definované ve vytvoˇrených modulech v pˇresnˇe specifikované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í vygenerování. Volané funkce je možné použít právˇe jako háˇcky, s pomocí kterých lze pˇripojit požadovanou funkcionalu. Háˇcky jsou dˇeleny do dvou kategorií. Hᡠcky akcí (action hooks) Funkce pˇripojená k tomuto háˇcku je spuštˇena v 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ˇe definovaná místa. Jako pˇríklad lze uvést vložení pˇríspˇevku nebo komentáˇre, odeslání elektronické pošty cˇ i napˇríklad obecná 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 muže ˚ upravit daný obsah v pˇresnˇe požadovaném okamžiku. ˇ Casto se lze setkat se situací, kdy k dosažení stejného výsledku lze použít obˇe z uvedených možností. Pro lepší pˇredstavu, jak mechanizmus funguje, je vhodné demonstrovat použití tˇechto háˇcku. ˚ Pro ukázku je vybrán fragment kódu, který je souˇcástí zásuvného modulu BCZ presenting group vytvoˇreného v 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 nastavení nabízí tˇri druhy skupin, které mají odlišnou viditelnost a politiku pro vstup uživatele. Do základního cˇ lenˇení na veˇrejné, soukromé a skryté byl pˇridán nový 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ívat pouze administrátoˇri a moderátoˇri, role rˇ adových cˇ lenu˚ je pasivní, mohou pouze vidˇet obsah. Typ skupiny je ukládán v rámci její administrace s použitím patˇriˇcného 29
ˇ 6.3. APLIKA CNÍ ROZHRANÍ formuláˇre, který je popisovaným zásuvným modulem rozšíˇren tak, aby byla nabízena možnost nastavit novˇe pˇridaný typ. Po naˇctení formuláˇre do stránky vyvolá systém BuddyPress událost bp_after_group_settings_admin a právˇe v tomto okamžiku je vhodné doplnit formuláˇr, ve kterém bude umožnˇeno nový typ skupiny vybrat. Implementace funkce formuláˇr rozšiˇrující muže ˚ vypadat napˇríklad takto: function bcz_add_presenting_group_form() {?>
Pro porozumˇení je vhodné doplnit, že funkce bcz_presenting_group_setting oznaˇcí ve formuláˇri aktuálnˇe nastavený typ skupiny. Je-li výše uvedená funkce pˇripravena, zbývá pouze systému rˇ íci, po jaké události má být volána, což lze provést následujícím zpusobem: ˚ add_action(’bp_after_group_settings_admin’ , ’bcz_add_presenting_group_form’);
Výše bylo demonstrováno základní použití funkce add_action. Její kompletní popis lze nalézt v dokumentaci5 . Lze rˇ íci, že se jedná o velmi silný nástroj, který umožnuje ˇ rozšiˇrovat základní funkcionalitu systému. Akce lze z háˇcku˚ i jednoduše odebírat s použtím metody remove_action6 , která tak umožnuje ˇ nejen funkcionalitu v rámci zásuvných modulu˚ rozšiˇrovat, nýbrž i omezovat. Tato funkce byla použita napˇríklad pˇri implementaci triválního zásuvného modulu BCZ remove random menu. Duležité ˚ je zmínit, jak jsou akce vyvolávány. Pro tento úˇcel je dispozici funkce do_ action. Její umístˇení do kódu zaruˇcí na patˇriˇcném místˇe vyvolání akce, která bude této funkci pˇredána ve formˇe textového rˇ etˇezce. Napˇríklad po nahlédnutí do výchozí šablony BuddyPressu lze v souboru groups/single/admin.php nalézt skript generující výše zmínˇený formuláˇr pro úpravu nastavení skupiny, v rámci kterého je vyvolána výše použitá událost bp_after_group_settings_admin. Novˇe vytvoˇrená cˇ ást formuláˇre tak bude doplnˇena pˇresnˇe na místo, kde se nalézá funkce add_action. 5. 6.
30
ˇ 6.3. APLIKA CNÍ ROZHRANÍ
Práce s filtry a jejich háˇcky se od akcí v principu pˇríliš neliší. Základem je funkce, která se pˇripojuje na zvolený háˇcek. Vstupem jsou urˇcitá data a funkce vrací data zpravidla upravená. Pˇríklad lze uvést ze zásuvného modulu popsaného výše. V BuddyPressu je dispozici funkce bp_get_group_status, která vrací typ (status) skupiny. Vzhledem k novým úpravám je však tˇreba funkci upravit. Pokud bude pˇrihlášeným uživatelem administrátor nebo moderátor skupiny, chování funkce se nezmˇení, nicménˇe pokud bude pˇrihlášen pouze její cˇ len, vrátí funkce speciální typ presenting, což dále zpusobí ˚ omezení pro pˇridávání pˇríspˇevku˚ do skupiny. Popisovaná funkce muže ˚ vypadat napˇríklad takto: function bcz_filter_group_status( $status ) { global $bp; if ( bcz_get_presenting_group() == ’presenting’ ) if ( $bp->is_item_admin || $bp->is_item_mod ) return $status; else return ’presenting’; else return $status; }
Nyní zbývá pˇrichytit tuto funkci na patˇriˇcný háˇcek. Filtr jako svuj ˚ parametr pˇrevezme text, který vrací funkce bp_get_group_status, a patˇriˇcnˇe jej upraví. add_filter(’bp_get_group_status’, ’bcz_filter_group_status’);
Použití je relativnˇe snadné a jak již bylo zmínˇeno, jedná se o silný mechanizmus pro rozšiˇrování základní funkcionality jádra systému WordPress. K aktivaci funkcí pˇridaných s použitím háˇcku˚ pro akce cˇ i filtry dochází v okamžiku aktivace zásuvného modulu, ve kterém 31
ˇ 6.3. APLIKA CNÍ ROZHRANÍ jsou funkce definovány a pˇripojeny. Odpojeny jsou v okamžiku deaktivace modulu. Zajímavou dvojící jsou háˇcky register_activation_hook a register_deactivation_ hook, které lze použít v pˇrípadˇe, že je tˇreba specifikovat konkrétní chování pˇri aktivaci, respektive deaktivaci zásuvného modulu. Typickým pˇríkladem muže ˚ být potˇrebná úprava datového modelu. Dále je vhodné upozornit na funkci apply_filters7 , která zajišt’uje volání všech filtrovacích funkcí, které jsou na daném háˇcku pˇrichycené. 6.3.3 Štítky šablon Úvodem této cˇ ásti je žádoucí pˇriblížit princip šablon (templates) v systému WordPress. Jedná se technicky vzato o soubory ovládající zobrazení jednotlivých stránek. Získavají patrˇ iˇcné informace z databáze a generují HTML kód, který zasílají webovému prohlížeˇci. S pomocí tˇechto šablon lze vytváˇret nepˇrebené množství motivu˚ vzhledu, které urˇcují podobu prezentaˇcní vrstvy. Problematika šablon je relativnˇe obsáhlá a jelikož pˇredmˇetem této práce nebylo vytváˇrení šablon, pouze jejich úpravy, nebude této problematice vˇenováno více prostoru. Štítky šablon (templatetags) jsou používany v rámci šablon systému WordPress k dynamickému zobrazní informací, pˇrípadnˇe k úpravám stránek. Štítek je kód rˇ íkající systému, aby nˇeco provedl, respektive získal. Jejich jednoduché použití muže ˚ vypadat napˇríklad takto:
Pˇri umístˇení uvedeného fragmentu do šablony se systém na patˇriˇcném místˇe pokusí získat požadované informace a ty umístit na výstup. Jaké informace budou vráceny musí být v rámci zdrojového kódu systému definováno. V základní instalaci lze vˇetšinu funkcí pro dosupné štítky nalézt v souboru wp-includes/general-template.php. V pˇrípadˇe potˇreby definovat vlastní štítky staˇcí vytvoˇrit požadované funkce v rámci zásuvného modulu. Za speciální pˇrípad využití tˇechto štítku˚ lze považovat mechanizmus smyˇcek, zavedený již v základní verzi systému WordPress, ve kterém je urˇcen výhradnˇe pro výpis pˇríspˇevku, ˚ avšak smyˇcky jsou využívány zejména v rámci BuddyPressu. Podrobné informce o použití tohoto konceptu lze nalézt v sekci8 oficiální dokumentace WordPressu i v dokumentaci9 nadstavby BuddyPress. Mechanizmus smyˇcek byl pˇri implementaci výsledného systému velmi cˇ asto používán. Jako pˇríklad použití štítku˚ šablon a smyˇcek lze uvést zjednodušený fragment kódu, který zajišt’uje výpis aktuálnˇe pˇrihlášených uživatelu. ˚ "> 7. 8. 9.
32
ˇ 6.3. APLIKA CNÍ ROZHRANÍ
Výhodou tohoto rˇ ešení je znaˇcné ulehˇcení a znovupoužitelnost definovaných štítku. ˚ Jak lze vidˇet v ukázce výše, seznam vypsaných záznamu˚ lze ovlivnit s pomocí takzvaného filtru pˇredaného jako parametr funkci bp_has_members. Použitý filtr type=online&max=20 omezí vypsané cˇ leny na momentálnˇe pˇrihlášené a jejich poˇcet na hodnotou dvacet. Jaké parametry lze do filtru pˇredávat je tˇreba pro konkrétní funkce vyhledat ve zdrojovém kódu nadstavby BuddyPress nebo v dokumentaci. 6.3.4 Ukládání dat do databáze a mechanizmus voleb Je zˇrejmé, že i v rámci rozšíˇrení systému je žádoucí persistentnˇe ukládat data do databáze. Existují v principu tˇri pˇrístupy, jak tento problém rˇ ešit. •
Použití mechanizmu voleb, který bude níže podrobnˇeji popsán. Jedná se o vhodné rˇ ešení pro ukládání relativnˇe malého množství dat zejména v pˇrípadˇe, že se neoˇcekávají cˇ asté zmˇeny uložené informace. Využito bylo tohoto mechanismu napˇríklad pˇri implementaci zásuvného modulu BCZ mainpage activity, který je souˇcástí praktického výstupu této práce.
•
Využití tabulek pro metainformace. Toto rˇ ešení je vhodné pro ukládání dat spojených s jednotlivými uživateli, pˇríspˇevky cˇ i stránkami. Pˇresnˇeji byl tento princip ukládání dat pˇriblížen v kapitole zabývající se datovým modelem. V základní verzi systému WordPress i v komunitní nadstavbˇe jsou zpravidla k dispozici funkce, které jednoduše umožnují ˇ data do tabulek pro metainformace ukládat. Pro skupiny jsou tak k dispozici funkce groups_get_groupmeta, groups_update_groupmeta a další, které cˇ iní manipulaci s metainformacemi velmi snadnou. Tˇechto tabulek bylo pˇri implementaci využíváno relativnˇe cˇ asto, konkrétnˇe lze toto rˇ ešení shlédnout napˇríklad ve zdrojovém kódu zásuvného modulu BCZ group categories.
•
Vytvoˇrení nové tabulky, což je žádoucí zejména v pˇrípadˇe, že je do budoucna oˇcekáváno velké množství ukládaných dat, cˇ i tato data nelze rozumnˇe asociovat s datovými záznamy v základním databázovém modelu. V rámci implementace nebylo tˇreba nové tabulky vytváˇret, nicménˇe napˇríklad ve zdrojovém kódu zásuvného modulu BCZ blogs widget lze shlédnout následující rˇ ešení vkládající sloupec do tabulky wp_blogs: function BCZ_MP_blogs_plugin_activate() { global $wpdb; $blogs_mainpage_column = $wpdb->get_row( ’SHOW COLUMNS FROM wp_blogs LIKE "mainpage"’); if ( !$blogs_mainpage_column )
Jak bylo výše naznaˇceno, systém WordPress disponuje mechanizmem pro ukládání, aktualizaci a získávání dat, které jsou oznaˇcovány jako volby. Takovéto volby mohou být drženy ve formˇe textových rˇ etˇezcu, ˚ datových polí nebo objektu˚ jazyka PHP, které budou serializovány nebo pˇreloženy do textových rˇ etˇezcu˚ pˇred samotným uložením. Názvy voleb musí být unikátní, na což je tˇreba brát zˇretel pˇri tvorbˇe zásuvného modulu. Nejˇcastˇeji používané funkce pro práci s volbami jsou add_option, get_option($option), delete_ option($option) a update_option, pˇriˇcemž všechny zmínˇené jsou podrobnˇe popsány v dokumentaci10 . Volby spravované s použitím tohoto mechanizmu jsou ukládany do tabulky wp_options.
10.
34
Kapitola 7
Vybrané komunitní systémy 7.1
Facebook
Facebook je rozsáhlý spoleˇcenský webový systém sloužící zejména k tvorbˇe sociálních sítí, ke komunikaci mezi uživateli, sdílení multimediálních dat a udržování vztahu. ˚ Puvodnˇ ˚ e byl navržen pro studenty Harvardské univerzity, nicménˇe tato služba se velmi rychle rozšírˇ ila mezi širokou veˇrejností. V prosinci roku 2007 se stal Facebook s padesáti sedmi milióny aktivními cˇ leny stránkou s nejvˇetším poˇctem uživatelu˚ mezi studentskými weby a od záˇrí 2006 do záˇrí roku 2007 se dostal z šedesáté na sedmou pozici mezi nejnavštˇevovanˇejšími ˇ stránkami svˇeta. Ani Ceská republika nezustává ˚ v tomto trendu pozadu, vývoj zdejší návštˇevnosti stránky <www.facebook.com> lze shlédnout na obrázku 7.1. Další informace o této službˇe je možné nalézt v [16].
ˇ (Google Trends) Obrázek 7.1: Návštˇevnost webových stránek www.facebook.com z CR Vzhledem k rozšíˇrenosti a neustále rostoucí popularitˇe aplikace Facebook je logické, že upoutává pozornost komerˇcních subjektu, ˚ které se snaží využít potenciálu vysokého poˇctu uživatelu. ˚ Facebook disponuje velmi kvalitním aplikaˇcním rozhraním a lze tak jeho služby integrovat s firemními weby nebo elektronickými obchody, což umožnuje ˇ napˇríklad zobrazovat obsah této aplikace na stránkách spoleˇcnosti nebo publikovat na Facebooku vlastní obsah a pˇrilákat tím potenciální zákazníky. V rámci základního rozdˇelení lze uvažovat dva zpusoby, ˚ kterými je možné služby aplikace Facebook integrovat. První možnost je zprovoznit vlastní aplikaci pˇrímo v prostˇredí systému Facebook. Druhou možností je implementace aplikaˇcního rozhraní Facebook Con35
7.2. TWITTER nect, které umožnuje ˇ integraci služeb platformy Facebook do vlastní aplikace. S pomocí tohoto aplikaˇcního rozhraní lze návštˇevníkum ˚ stránek nabídnout napˇríklad možnost zasílání dat do sítˇe Facebook, komunikaci s jejich pˇráteli, pˇrenos údaju˚ z uživatelského profilu na vlastní stránky nebo možnost registrace a pˇrihlášení s využitím úˇctu v síti Facebook.
7.2
Twitter
Pˇeknou definici této služby lze nalézt v [22], kde je Twitter popsán jako poskytovatel sociální sítˇe a mikroblogu, který umožnuje ˇ posílat a cˇ íst pˇríspˇevky zaslané jinými uživateli. Tyto textové zprávy jsou nazývány tweety a jejich délka je omezena na 140 znaku. ˚ Pˇrispˇevatelé mohou omezit doruˇcování pˇríspˇevku˚ pouze na okruh svých pˇrátel, nebo povolit pˇrístup komukoliv. Uživatelé zasílají nebo odebírají tweety na webové stránce služby Twitter prostˇrednictvím krátkých textových zpráv SMS (Short Message Service) nebo s využitím externích aplikací. Podrobnˇejší informace o Twitteru je možné nalézt na domovské stránce projektu1 a pro snadné pochopení, jak službu používat, lze doporuˇcit napˇríklad cˇ lánek [1]. Od svého založení v roce 2006 získal Twitter velký význam a popularitu na celém svˇetˇe a právˇe z duvodu ˚ rostoucí popularity došlo k rozhodnutí využívat tuto službu v rámci aktivit portálu Bydlení.cz. Komerˇcní subjekty používají Twitter k publikování informací, ke své propagaci, komunikaci se zákazníky a budování znaˇcky. Na obrázku 7.2 zobrazujícím ˇ náštˇevnost webové stránky <www.twitter.com> v rámci Ceské republiky lze sledovat v prubˇ ˚ ehu roku 2009 zˇretelný rust. ˚ Tato informace sice nemá zcela pˇresnou vypovídací hodnotu o používanosti služby, nebot’ vyjadˇruje pouze návštˇevnosti webové stránky, avšak služba Twitter je cˇ asto využívána externími aplikacemi.
ˇ (Google Trends) Obrázek 7.2: Návštˇevnost webových stránek www.twitter.com z CR Co se aplikaˇcního rozhraní služby Twitter týká, k dispozici jsou v hrubém rozdˇelení tˇri varianty. Dvˇe z tˇechto variant jsou založené na pˇrístupu REST (Representational State Transfer) a tˇretí je založena na proudovém zpracování. Existence dvou aplikaˇcních rozhraní, které jsou založeny na stejném principu, je dána historickými duvody, ˚ nicménˇe v budoucnu by mˇely být sjednoceny. S použitím jejich metod mohou vývojáˇri pˇristupovat k základním 1.
<www.twitter.com>
36
7.2. TWITTER datum ˚ služby Twitter, jako jsou napˇríklad informace o uživatelích nebo stavová data. Proudové aplikaˇcní rozhraní nabízí oproti uvedenému pˇrístupu podporu pro déle trvající propojení v témˇerˇ reálném cˇ ase. Veškeré potˇrebné informace k této problematice jsou dostupné v [21].
37
Kapitola 8
Komunitní systém portálu Bydlení.cz Obsahem této kapitoly je pˇriblížení komunitního systému implementovaného v rámci této práce. Zadavatelem projektu je spoleˇcnost Abstract s.r.o., která v rámci svých aktivit provozuje internetový portál Bydlení.cz. Jedná se o nezávislý internetový magazín pro nejširší veˇrejnost, který orientuje, informuje a inspiruje návštˇevníky v široké problematice bydlení. Firmám pusobícím ˚ v této oblasti nabízí prostor pro reklamu a možnost informovat o svých produktech cˇ i aktivitách. Pomyslnou první fází projektu implementace komunitního systému pro portál Bydlení.cz byl vstup subjektu do sítˇe Facebook, kde byly vytvoˇreny stránky spoleˇcnosti. Úˇcelem tohoto kroku bylo mimojiné monitorovat potencionální komunitu uživatelu. ˚ Po cˇ tyˇrech mˇesících se prumˇ ˚ erná týdenní návštˇevnost stránek pohybuje okolo hodnoty 400 návštˇev a stránku jako svou oblíbenou oznaˇcilo 191 uživatelu˚ této sociální sítˇe. Zdejší pˇríspˇevky se skládají pˇrevážnˇe ze zajímavých odkazu˚ spojených s tématikou bydlení a zpravidla odkazují na cˇ lánky internetového magazínu Bydlení.cz. Pro spoleˇcnost byl rovnˇež vytvoˇren profil v komunitní síti Twitter, nicménˇe doposud není využíván, do budoucna se však poˇcítá s propagací novinek využitím této služby.
8.1
Analýza
Úvodní myšlenkou projektu bylo vytvoˇrit systém, který umoží návštˇevníkum ˚ portálu Bydlení.cz vzájemnou komunikaci a interakci. Zainteresované subjekty a osoby tak budou moci nejen pouze získávat informace poskytované provozovatelem portálu, ale o své pˇrítomnosti budou dát najevo okolí a budou mít k dispozici informace o dalších uživatelích. Umožnˇením vzájemné komunikace získá užívání služeb portálu nový rozmˇer. Komunitní systém dá prostor souˇcasné redakci a autorum ˚ obsahu prezentovat svou cˇ innost, cˇ ímž se dostanou blíže ke cˇ tenáˇrum. ˚ 8.1.1 Uživatelé systému a pˇrípady užití Aˇckoliv v rovinˇe technické bude zpusob ˚ používání systému jednotlivými uživateli obdobný, je vhodné pˇriblížit, za jakým úˇcelem bude široké spektrum uživatelu˚ se systémem pracovat. Jedná se o bˇežnou webovou aplikaci, uživatelé budou se systémem pracovat pˇres webové rozhraní s použitím internetového prohlížeˇce. Níže popsané skupiny aktéru˚ odpovídají výsledné pˇredstavˇe zadavatele. 38
8.1. ANALÝZA
Obrázek 8.1: Pˇrípady užití každého uživatele systému
Redakce a další zamˇ estnanci internetového magazínu Redakce bude systém využívat pro svou interní komunikaci. Úˇcelem není poskytnout pouze interní komunikaˇcní prostˇredek, nýbrž i nástroj umožnující ˇ zprostˇredkovat cˇ innost redakce samotným cˇ tenáˇrum. ˚ Další zamˇestnanci, kterými jsou napˇríklad programátoˇri cˇ i technická podpora, mohou využívat systém zejména pro svou interní komunikaci, ale i pro komunikaci s dalšími uživateli komunitního systému, stejnˇe jako cˇ lenové redakce. ˇ Ctenᡠri Pro samotné cˇ tenáˇre internetového magazínu bude systém poskytovat prostˇredek pro sledování novinek prezentovaných redakcí, ale zajména nástroj pro získávání kontaktu˚ na konkrétní komerˇcní i nekomerˇcní subjekty a osoby se stejnou oblastí zájmu. Zárovenˇ budou bˇežným cˇ tenáˇrum ˚ zpˇrístupnˇeny informace prezentované jinými subjekty, napˇríklad formou specializovaných stránek. Odborníci Se souˇcasným portálem Bydlení.cz spolupracuje celá rˇ ada odborníku, ˚ kterým systém nabídne prostˇredí pro jejich prezentaci a sdˇelování informací. Uvažovat lze napˇríklad odborníky z oblasti výstav a veletrhu˚ cˇ i online konzultanty, kteˇrí budou moci dávat cenné rady z ruzných ˚ oblastí bˇežným návštˇevníkum ˚ (ˇctenáˇrum) ˚ internetového magazínu. Spolupracující firmy Systém poskytne prostˇredí pro zainteresované obchodní partnery, kteˇrí jej budou moci využít k snadnému získávání kontaktu. ˚ Dále budou moci v pˇrípadˇe zájmu pˇrímo kontaktovat patˇriˇcný subjekt. Pro firmy bude žádoucí vytvorˇ it takové prostˇredí, aby se v nˇem snadno orientovaly a aby pro nˇe cesta k hledanému 39
8.1. ANALÝZA
Obrázek 8.2: Pˇrípady užití administrátora systému
obchodnímu partnerovi bylo co nejsnažší. Z této skupiny aktéru˚ lze jmenovat napˇríklad objednatele reklamních služeb, mediální agentury cˇ i prodejce. V neposlední rˇ adˇe mohou oslovovat potenciální zákazníky.
Specifické subkomunity Komunitní systém mohou dále používat specifické subkomunity. Specifické mohou být v tom smyslu, že ve své podstatˇe nejsou pˇrímými uživateli služeb portálu Bydlení.cz, nicménˇe urˇcitý vztah k nˇemu mají. Jmenovat lze napˇríklad ruzná ˚ spoleˇcenství vlastníku˚ bytových jednotek, kterým muže ˚ být nabídnuto prostˇredí pro jejich komunikaci.
Výše byly popsány potencionální skupiny uživatelu˚ implementovaného systému. Na obrázcích 8.1 až 8.6 lze shlédnout diagramy pˇrípadu˚ užití aplikace. Uveden je i specifický diagram pro administrátora, který má na starosti správu systému. Bude mu také umožnˇeno exportovat vybraná oznámení o novinkách v systému˚ do sítí Facebook a Twitter. Dále je uveden pˇrípad užití pro obecného uživatele systému, který znázornuje ˇ možnosti všech aktéru. ˚ V této souvislosti je také vhodné zduraznit, ˚ že množiny uživatelu˚ nejsou disjunktní, tedy napˇríklad osoba zastupující urˇcitý subjekt muže ˚ vystupovat v roli odborníka na konkrétní oblast. 40
8.1. ANALÝZA
Obrázek 8.3: Pˇrípady užití zamˇestnance spoleˇcnosti Abstract s.r.o. 8.1.2 Formy komunikace Umožnit efektivní komunikaci je základním posláním komunitních systému. ˚ Cílem pro navrhovaný systém je vytvoˇrit takové komunikaˇcní prostˇredí, které bude umožnovat ˇ snadno vyhledat adresáta pro dané sdˇelení a poté s ním komunikovat formou, která je v rámci daného požadavku vhodná. Nˇekdy se muže ˚ jednat o komunikaci cˇ istˇe privátní, jindy je naopak žádoucí šiˇrit zprávu mezi širokou skupinu adresátu˚ cˇ i informaci veˇrejnˇe zpˇrístupnit. Komunikace v rámci skupin Uživatelum ˚ bude umožnˇeno sdružovat se do skupin, které ˇ muže ˚ vytváˇret a spravovat administrátor systému. Clenové tˇechto skupin mohou vkládat duležitá ˚ oznámení, která jsou viditelná cˇ lenum ˚ a dle nastavení skupiny pˇrípadnˇe dalším uživatelum. ˚ V základním nastavení nabízí systém BuddyPress veˇrejné skupiny, do kterých muže ˚ kdokoliv vstoupit, pˇridávat nová oznámení a cˇ íst aktuality. Dále jsou k dispozici skupiny soukromé, do kterých je tˇreba žádat o cˇ lenství a jejich obsah je pˇrístupný pouze cˇ lenum. ˚ Nejvíce chránˇeným typem skupin jsou skupiny skryté. Ty nejsou pro uživatele viditelné, mohou být však pˇrizváni. Jejich obsah je taktéž neveˇrejný. Systém bude v rámci implementace rozšíˇren o skupiny chovající se jako veˇrejné, avšak jejich obsah budou moci tvoˇrit pouze administrátoˇri a moderátoˇri. Taktéž bude zaveden mechanizus, který umožní zvýšit duležitost ˚ vybraných skupin, aby byly snadnˇeji pˇrístupné. Poˇcítá se rovnˇež s možností cˇ lenit skupiny do kategorií a možností spravovat dokumenty v rámci skupiny. Interní zprávy Jedná se o zpusob ˚ komunikace mezi dvˇema uživateli a lze jej oznaˇcit jako alternativu elektronické pošty. Uživatel muže ˚ své konverzace základním zpu˚ sobem spravovat. Správce celého systému má možnost rozesílat duležitá ˚ oznámení všem uživatelum. ˚
Obrázek 8.5: Pˇrípady užití oborníka na urˇcitou problematiku Diskuzní fóra V rámci každé skupiny bude umožnˇeno vytváˇret diskuzní vlákna, do kterých mohou pˇrispívat cˇ lenové skupiny. Ti mohou duležitá ˚ oznámení pˇridávat na zed’ skupiny, nicménˇe zde by se mˇely nacházet pouze duležité ˚ aktivity v rámci skupiny, nikoliv tématické diskuze. V pˇrípadˇe veˇrejných skupin budou tyto diskuzní fóra pˇrístupná všem uživatelum. ˚
Chat V systému nebude chybˇet ani možnost komunikace uživatelu˚ v reálném cˇ ase. Za vhodné lze považovat rˇ ešní, které umožní skupinovou i privátní komunikaci.
Pˇ ríspˇ evky na stránkách Systém WordPress MU umožnuje ˇ vytváˇret blogy uživatelu. ˚ V rámci implementovaného systému bude tento koncept rozvinut. Pravdˇepodobnˇe 42
8.1. ANALÝZA
Obrázek 8.6: Pˇrípady užití spolupracující firmy nebude bránˇeno uživatelum ˚ vést v rámci systému vlastní blogy, nicménˇe koncept blogu˚ bude pˇreveden na koncept stránek (proto budou dále v práci blogy oznaˇcovány jako stránky). Jejich úˇcelem bude umožnit prezentovat cˇ lánky cˇ i jiná souvislejší oznámení. Tyto stránky budou mít vlastní motivy vzhledu a dle nastavení budou pˇrístupné veˇrejnˇe cˇ i pouze vybraným uživatelum. ˚ V základní verzi systému BuddyPress jsou blogy a uživatelské skupiny oddˇelená prostˇredí, což bude zapotˇrebí zmˇenit a nalézt vhodné rˇ ešení pro toto propojení. 8.1.3 Integrace služeb Twitter a Facebook Systém umožní poloautomatizované zasílat oznámení o aktualitách formou takzvaných tweetu. ˚ Obdobnˇe bude systém umožnovat ˇ vkládat pˇríspˇevky na zed’ stránky portálu Bydlení.cz v aplikaci Facebook. Bˇežným uživatelum ˚ bude dále umožnˇeno pˇrihlášení a registrace do systému s použitím jejich úˇctu v síti Facebook. Jedná se o velmi elegantní myšlenku, jak uživatele nezatˇežovat zdlouhavými procesy registrace, respektive pˇrihlašování. Službu Faˇ cebook dnes využívá v Ceské republice velké množství uživatelu, ˚ zárovenˇ pro provozovatele nejsou takto registrovaní uživatelé zcela anonymní. 8.1.4 Komponenty systému V podkapitole zabývající se organizací zdrojového kódu systémové nadstavby BuddyPress bylo zmínˇeno její modulární rozdˇelení na urˇcité komponenty. Konkrétnˇe se jedná o moduly zapouzdˇrující funkcionalitu pro aktivity (activity), blogy (blogs), fóra (forums), zprávy (messages), skupiny (groups), pˇrátele (friends), uživatelské profily (xprofile) a komponentu pro základní funkcionalitu (core). Tyto komponenty jsou podobnˇe organizovány, mají svou vnitˇrní strukturu a systému poskytují urˇcitá rozhraní pro práci s nimi. Obrázek 8.7 znázornuje ˇ pro ilustraci komponentu aktivit, schéma ostatních jmenovaných je obdobné. Jako komponentu lze rovnˇež uvažovat prezentaˇcní vrstvu aplikace, tedy šablony a nad nimi takzvaná témata cˇ i motivy vzhledu. 43
8.1. ANALÝZA
Obrázek 8.7: Diagram základní komponenty systému BuddyPress
Obrázek 8.8: Diagram komponent pro vytvoˇrené komponenty uživ. rozhraní
Co se grafického znázornˇení diagramu˚ v této práci týká, inspirace byla nalezena v cˇ lánku [18]. U jednotlivých novˇe navržených komponent jsou uvedeny soubory, ve kterých se nalézají jejich zdrojové kódy. Dále je uvedeno, zda se jedná pouze o rozšiˇrující funkce cˇ i tˇrídy. Použité moduly tˇretích stran jsou v diagramech uvádˇeny pouze v souvislosti s vlastními rozšíˇreními. Zavedena je v rámci této práce konvence, dle které jsou komponenty nadstavby BuddyPress barvy oranžové, nová vlastní rozšíˇrení barvy zelené, moduly tˇretích stran barvy cˇ ervené a pˇrípadné komponenty jádra systému WordPress jsou znaˇceny modˇre. Názvy komponent nejsou v rámci diagramu˚ pˇrekládány do cˇ eského jazyka a z duvodu ˚ konzistence jsou i popisné informace v anglickém jazyce. Na obrázku 8.8 lze shlédnout diagram popisující implementované komponenty uživatelského rozhraní, které byly navrženy za úˇcelem zprostˇredkovat na patˇriˇcných stránkách informace o pˇridružené skupinˇe. Koncept propojení stránek a skupin byl již naznaˇcen výše 44
8.1. ANALÝZA
Obrázek 8.9: Komponenty uživ. rozhraní na hlavní stránkce a podrobnˇeji bude popsán v kapitole zabývající se implementací systému. Pomocníkem pˇri rˇ ešení tohoto úkolu je zásuvný modul Groupblog1 , jehož autorem je dvojice Rodney Blevins a Marius Ooms. S novˇe vytvoˇrenými moduly pˇrímo propojen není, nicménˇe ukládá do databáze záznamy o vazbách mezi skupinami a stránkami, které jsou v novˇe vytvoˇrených zásuvných modulech využívány. Na obrázku uvedené moduly získávají informaci o skupinˇe pˇridružené ke stránce, na které zobrazují žádané informace. Jaké informace jednotlivé komponenty na stránce vypisují lze intuitivnˇe odhadnout z jejich názvu, podrobnˇejší popis bude k dispozici níže. Tyto moduly nejsou urˇceny k aktivaci na hlavní stránce (koˇrenovém blogu). Diagram na obrázku 8.9 znázornuje ˇ diagram pro komponenty uživatelského rozhraní, které nebudou vkládány na jednotlivé stránky systému, nýbrž na stránku výchozí (koˇrenový blog). Zde lze nalézt veškerou komunitní funkcionalitu. Modul BCZ whos online widget je pouze urˇcitým rozšíˇrením základní komponenty pro zobrazování pˇrihlášených uživatelu. ˚ Dále byla vytvoˇrena komponenta uživatelského rozhraní BCZ blogs widget vypisující stránky (blogy) v celém systému a komponenta BCZ recent posts widget, vypisující nejnovˇejší pˇríspˇevky ze všech stránek, pˇriˇcemž na jednotlivých skupinách vybírá pouze pˇríspˇevky z pˇridružené stránky (pokud existuje). Modul MPO Activity filter zajišt’uje, aby se aktivity rˇ ádnˇe vypisovaly uživatelum ˚ v závislosti na viditelnosti v rámci celého systému. Na dalším obrázku 8.10 lze shlédnout schéma zobrazující komponenty pro export záznamu˚ ze systému do služeb Facebook a Twitter. Pro tento úˇcel jsou k dispozici dva zásuvné moduly. První je nazván BCZ tweets a rˇ eší export vybraných aktivit v systému. Modul využívá službu bit.ly2 pro zkracování odkazu˚ ve zprávách. Pro modul BCZ Facebook publisher, který komunikuje se službou Facebook, je použito knihovny Facebook Platform 1. <wordpress.org/extend/plugins/bp-groupblog/> 2.
45
8.2. IMPLEMENTACE
Obrázek 8.10: Komponenty pro export do služeb Facebook a Twitter
PHP5 client, stejnˇe tak tuto knihovnu využívá modul WP FB Autoconnect, zajišt’ující možnost registrace a pˇrihlašování uživatelu˚ s použitím jejich úˇctu v síti Facebook. Poslední zde uvedený diagram 8.11 vyobrazuje zbylé významnˇejší implementované komponenty. Komponenta BCZ mainpage activity upravuje výpis aktivit na hlavní stránce, moduly BCZ presenting group, BCZ expert group a BCZ group categories rozšiˇrují koncept skupin zpusobem, ˚ který byl popsán výše, a komponenty BCZ friends on adminbar, respektive BCZ groups on adminbar, jsou navrženy za úˇcelem snadnˇejšího pˇrístupu do patˇriˇcných sekcí. Modul BCZ member roles rozšiˇruje uživatelské rozhraní o výpis rolí uživatelu. ˚
8.2
Implementace
Závˇereˇcná cˇ ást této práce je vˇenována vybraným kapitolám implementace systému. Zámˇerem je srozumitelnˇe pˇriblížit postup pˇri implementaci a základní principy vybraných rozšírˇ ení systému. Vytvoˇreno bylo šestnáct nových zásuvných modulu, ˚ které rozšiˇrují, respektive upravují základní funkcionalitu, a použito bylo dvanácti modulu˚ tˇretích stran. Popis tˇechto rozšíˇrení lze nalézt v pˇríloze A. Primární snahou pˇri implementaci bylo dodržovat výše popsanou metodiku pro rozšiˇrování jádra systému. 46
8.2. IMPLEMENTACE
Obrázek 8.11: Zbylé významnˇejší komponenty 8.2.1 Konfigurace systému Základem pro implementovaný systém je platforma WordPress MU, pˇriˇcemž v rámci implementace bylo použito verze 2.9.2. Dalším duležitým ˚ stavebním kamenem je komunitní nadstavba BuddyPress ve verzi 1.2.3. Jádro systému WordPress je lokalizováno do cˇ eského jazyka, BuddyPress nikoliv, avšak pro lokalizaci je pˇripraven. Systém WordPress používá pro pˇreklad balíˇcek gettext3 , stejnˇe tak by mˇela být dle konvencí rˇ ešena lokalizace zásuvných modulu. ˚ Detailní popis mechanizmu pro pˇreklad textu lze nalézt v oficiální dokumentaci 4 , pˇrípadnˇe v cˇ lánku [25]. Duležitým ˚ aspektem je nastavení vzhledu webové aplikace. V pˇrípadˇe nadstavby BuddyPress je tˇreba použít šablony pro ní rozšíˇrené, šablony dostupné pro systém WordPress nejsou dostaˇcující. Pˇri vytváˇrení motivu vzhledu pro implementovaný systém bylo využito šablony dodávané s instalací komunitní nadstavby. Ta byla urˇcitým zpusobem ˚ upravena, aby byl vzhled sjednocen s podobou stránek internetového magazínu Bydlení.cz (autorem základních úprav byla Simona Moise, toho cˇ asu zamˇestnanec spoleˇcnosti Abstract s.r.o.). Kromˇe úpravy vizuální podoby bylo bˇehem implementace tˇreba provést rˇ adu dalších úprav. Zmínit lze napˇríklad vlastní rˇ ešení výchozí stránky, která je vytvoˇrena jako pˇrehledová sekce, a za tímto úˇcelem došlo k rozdˇelení na oblast o tˇrech sloupcích, do kterých je ˇ možné vkládat dle libosti vybrané komponenty uživatelského rozhraní. Rešení s použitím 3. 4.
<www.gnu.org/software/gettext/>
47
8.2. IMPLEMENTACE funkcí dynamic_sidebar5 a register_sidebars6 lze shlédnout v souborech bcz-bptheme/functions.php, respektive bcz-bp-theme/index.php. Výhodou tohoto pˇrístupu je otevˇrenost stránky pro vkládání libovolného obsahu, který je rˇ ešen formou komponent uživatelského rozhraní.
Obrázek 8.12: Úvodní stránka komunitního systému
8.2.2 Rozšíˇrení konceptu uživatelských skupin Nadstavba BuddyPress nabízí základní možnosti pro seskupování uživatelu, ˚ nicménˇe tuto funkcionalitu bylo zapotˇrebí urˇcitým zpusobem ˚ upravit. Skupiny muže ˚ v systému vytváˇret každý pˇrihlášený uživatel, cˇ ímž muže ˚ rychle vzniknout nepˇrehledné množství seskupení. Za jádro rˇ ešení uvedeného problému lze považovat nalezení funkce spravující vytváˇrení skupin a pˇripojení napˇríklad následujícího filtru: function bcz_validate_creation( $allowed, $group_details ) { if ( current_user_can( ’manage_options’ ) ) return true; bp_core_add_message(’Nemáte právo vytvᡠret skupinu.’, ’error’); return false; } add_filter( ’bp_allow_create_group’, ’bcz_validate_creation’, null, 2 ); 5. 6.
48
8.2. IMPLEMENTACE V pozdˇejších fázích implementace došlo k vydání komplexního zásuvného modulu, který rˇ eší problém obdobným zpusobem. ˚ Jeho kvalita spoˇcívá zejména v propracovaném administraˇcním rozhraní a modul umožnuje ˇ prostˇrednictvím pˇripraveného formuláˇre nastavit, kterým uživatelum ˚ bude tvorba skupin umožnˇena. Popis tohoto nastavení lze nalézt v administrátorské pˇríruˇcce (pˇríloha A). V rámci analýzy výše byly popsány základní dostupné druhy skupin a také potˇreba vytvoˇrení nového typu skupin, do kterých bude moci vkládat obsah pouze administrátor a moderátoˇri. V kapitole zabývající se metodikou pro rozšiˇrování systému s použitím háˇcku˚ filtru˚ a akcí byl naznaˇcen postup rˇ ešení tohoto problému. Kompletní rˇ ešení lze shlédnout v modulu BCZ presenting group, jehož pˇrehledný a komentovaný zdrojový kód lze nalézt na pˇriloženém CD. Pro kategorizaci skupin byl vytvoˇren modul BCZ group categories. Správa kategorií není rˇ ešena jednotným administraˇcním rozhraním, nýbrž v rámci administrace jednotlivých skupin. Toto rˇ ešení celý proces správy kategorií zjednodušuje. Pro kategorie nebyla vytvoˇrena speciální datová struktura, jsou ukládány do tabulky wp_bp_groupmeta jako textové rˇ etˇezce pod klíˇcem bcz_group_categories. Jelikož jedním z úˇcelu˚ systému je zpˇrístupnit uživatelum ˚ informace od odborníku˚ z urcˇ itých oblastí, byl zaveden mechanizmus pro speciální oznaˇcování skupin jako odborné. Za tímto úˇcelem bylo navrženo rozšíˇrení BCZ expert group, které umožnuje ˇ administrátorovi skupinu oznaˇcit pˇríznakem, který je ukádán v tabulce wp_bp_groupmeta pod klíˇcem bcz_expert_group. Tyto skupiny jsou dále zpˇrístupnˇeny z administraˇcní lišty, což je implementováno v rámci funkce bp_adminbar_expertgroups_menu. S uživatelskými skupinami je taktéž spojena úprava týkající se výpisu aktuálních cˇ lánku˚ v celém systému s použitím vytvoˇreného modulu BCZ recent posts widget. V rámci analýzy byl zmínˇen modul Groupblog vytváˇrející vazbu mezi stránkami a skupinami, pˇricˇ emž tato vazba je uložena v tabulce wp_bp_groupmeta pod klíˇcem groupblog_blog_id. Nachází-li se uživatel v urˇcité skupinˇe, která je asociována s konkrétní stránkou, dochází k výpisu cˇ lánku˚ pouze z pˇridružených stránek. Ke zjištˇení skuteˇcnosti, zda se uživatel nachází ve skupinˇe a zda je ke skupinˇe pˇridružena stránka, je použito následující podmínky: if ( bp_is_groups_component() ) { if ( $bp->groups->current_group->id ) { if ( groups_get_groupmeta( $bp->groups->current_group->id, ’groupblog_blog_id’ ) ) { $groupblog_blog_id = groups_get_groupmeta( $bp->groups->current_group->id, ’groupblog_blog_id’ ); $group_blog_filter = ’&primary_id=’ . $groupblog_blog_id; switch_to_blog($groupblog_blog_id); echo ’Pˇ ridružená stránka:’. get_bloginfo(); } else { $group_blog_filter = ’&primary_id=0’; } }
49
8.2. IMPLEMENTACE }
Ve výše uvedené ukázce lze rovnˇež shlédnout patˇriˇcné nastavení filtru pro výpis cˇ lánku˚ z konkrétních stránek. Podoba celého filtru pro smyˇcku aktivit je následující: }
Pro uvedený výpis je rovnˇež žádoucí ošetˇrit, aby nebyly všem uživatelum ˚ zobrazovány cˇ lánky z veˇrejnˇe nepˇrístupných stránek. V tomto pˇrípadˇe bylo využito již existujícího modulu BP MPO activity filter. Ten upravuje funkce pro výpis aktivit takovým zpuso˚ bem, aby bylo v pˇrípadˇe skrytých stránek kontrolováno, zda k nim má pˇrihlášený uživatel pˇrístup. Záznam pro blogy v systému WordPress obsahuje atribut public, který nabývá hodnot dle nastavené viditelnosti blogu, a právˇe s tímto záznamem uvedený modul pracuje spoleˇcnˇe se záznamy autoru˚ daného blogu a pˇrihlášeného uživatele. 8.2.3 Zavedení redakˇcní skupiny
Obrázek 8.13: Aktivity redakˇcní skupiny 50
8.2. IMPLEMENTACE Speciálním požadavkem zadavatele bylo navrhnout zpusob, ˚ který bude umožnovat ˇ prezentovat cˇ tenáˇrum ˚ aktivitu redakce internetového magazínu. Pro tento úˇcel je navržen modul BCZ mainpage activity. Po jeho zapojení lze z administrátorského rozhraní nastavit urˇcitou existující skupinu jako redakˇcní. Identifikátor vybrané skupiny je uložen do tabulky wp_options (wp_1_options). Na úrovni šablon je upravena stránka zaobrazující aktivity celého systému takovým zpusobem, ˚ aby zobrazovala pouze aktivity této skupiny. Slabinou uvedeného rˇ ešení je skuteˇcnost, že tato úprava byla provádˇena na úrovni šablony a zásuvný modul samotný tak není dostaˇcující pro dosažení požadované funkcionality. Úprava šablony spoˇcívá v požadavku získat s použitím funkce get_option identifikátor vybrané redakˇcní skupiny a ten nastavit jako filtr pro smyˇcku následujícím zpusobem: ˚
Zapotˇrebí je také kontrolovat, zda pˇrihlášený uživatel není moderátorem pˇrípadnˇe administrátorem redakˇcní skupiny, nebot’ v takovém pˇrípadˇe má uživatel dostupný formuláˇr pro vkládání aktivity do redakˇcní skupiny. Na úrovni zásuvného modulu je také rˇ ešeno vkládání fotek redaktoru˚ na stránku. Veškeré zmˇeny na úrovni šablon jsou dokumentovány v balíˇcku obsahující tento zásuvný modul. 8.2.4 Rozšíˇrení o koncept stránek a jejich propojení se skupinami Jako základ pro rˇ ešení asociace stránek a uživatelských skupin byl zvolen již zmínˇený zásuvný modul Groupblog umožnující ˇ toto propojení nepovinnou vazbou 1:1. Modul disponuje uživatelským rozhraním pro vytvoˇrení vazby a z prostˇredí pro administraci lze nastavit veškeré volby pro stránky, které jsou s použitím tohoto modulu vytvoˇreny. Pro vývoj dalších rozšíˇrení je podstatná skuteˇcnost, že informace o pˇridružené stránce je ukládána v tabulce wp_bp_groupmeta pod klíˇcem groupblog_blog_id. Za úˇcelem zpˇrístupnit na stránkách informace o asociované skupinˇe byly vytvoˇreny zásuvné moduly poskytující formou komponent uživatelského rozhraní patˇriˇcné informace. Jedná se o moduly BCZ GB whos online widget, BCZ GB members widget, BCZ GB groupinfo widget a BCZ GB activity widget. Principy uvedených modulu˚ jsou obdobné, každý však zpˇrístupnuje ˇ na stránce odlišné informace. Všechny tyto moduly jsou implementovány jako potomci tˇrídy WP_Widget a jsou dodržováná patˇriˇcná pravidla7 . V rámci každého z tˇechto modulu˚ je zapotˇrebí zjistit identifikátor pˇridružené skupiny, což je realizováno formou následujícího dotazu: if ( $row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name_groupmeta} 7.
51
8.2. IMPLEMENTACE
Obrázek 8.14: Komponenty pro zobrazení informací o skupinˇe a aktivit v ní
Obrázek 8.15: Komponenty pro zobrazení cˇ lenu˚ skupiny a aktuálnˇe pˇrihlášených cˇ lenu˚
WHERE meta_key = ’groupblog_blog_id’ AND meta_value = %d", $blog_id ) ) ) { $group_id = $row->group_id; }
S použitím získaného identifikátoru jsou nastaveny filtry pro patˇriˇcné smyˇcky. Komponenty byly navrženy takovým zpusobem, ˚ aby mˇel administrátor na každé stránce možnost zvolit, jaké konkrétní informace budou zobrazovány. Administraˇcní rozhraní pro toto nastavení lze shlédnout na obrázku 8.14, respektive 8.15. 8.2.5 Profily uživatelu˚ Komunitní nadstavba BuddyPress nabízí kvalitní nástroje pro nastavení polí profilu uživatele. Administrátor muže ˚ jednoduše nastavit, jaké informace bude moci uživatel ve svém profilu zadat a v jaké formˇe. Nastavení tˇecho polí je triviální záležitost, z hlediska implementace je však zajímavá skuteˇcnost, že BuddyPress nabízí funkce, s pomocí kterých lze 52
8.2. IMPLEMENTACE k tˇemto údajum ˚ pˇristupovat. Této skuteˇcnosti bylo napˇríklad využito pˇri zavedení konceptu uživatelských rolí. Uživatelské role jsou v implementovaném komunitním systému nastavny tak, že uživatel vybere prostˇrednictvím zaškrtávacích rámeˇcku˚ možnosti, které souhlasí s jeho rolí v rámci systému. Muže ˚ se jednat o více hodnot, proto jsou drženy ve formˇe pole, jsou serializovány a uloženy do tabulky wp_bp_xprofile_data. K tomuto záznamu lze poté snadno pˇristoupit s použitím pˇripravené funkce xprofile_get_field_data. Uvedené možnosti bylo využito pˇri implementaci modulu BCZ member roles, který výˇcet rolí uživatele pˇripojuje, napˇríklad do seznamu˚ uživatelu˚ systému. Zjednodušené rˇ ešení pak muže ˚ vypadat takto: ˇlena získaného ze šablony // Funkce pro získání role c // pˇ rípadnˇ e pˇ redaného v~parametru function bcz_get_member_role( $member = false ) { global $members_template; if ( !$member ) $member =& $members_template->member; $member_roles = maybe_unserialize( xprofile_get_field_data( ’Role’, $member->id ) ); return apply_filters( ’bcz_get_member_role’, $member_roles ); } ˇlen˚ // Funkce vypisujcí seznam rolí jako odkazy do sekce c u, // kde budou zobrazeni všichni uživatelé s~touto rolí function bcz_make_roles_for_member() { global $bp; $member_roles = bcz_get_member_role(); foreach( $member_roles as $item ) { $link = $bp->root_domain .’/’. BP_MEMBERS_SLUG .’?s=’. $item; echo ’ ’.$item.’ ’; } }
Nedostatkem výše uvedeného pˇrístupu je skuteˇcnost, že hodnoty profilových polí si uživatel upravuje sám. V pˇrípadˇe uživatelských rolí lze ale považovat za vhodné, aby byly nastaveny pouze administrátorem systému a bˇežný uživatel se tak napˇríklad nemohl vydávat za odborníka. Tento problém je rˇ ešen zavedením speciální skupiny profilových polí, která muže ˚ být nazvána napˇríklad Restricted. V rámci šablony je poté zapotˇrebí provést následující úpravu:
Dusledkem ˚ uvedené úpravy je skuteˇcnost, že tlaˇcítko pro uložení hodnot polí profilové skupiny Restricted bude k dispozici pouze administrátorovi. 8.2.6 Zasílání zpráv do sítˇe Twitter
Obrázek 8.16: Formuláˇr pro zaslání zprávy s použitím služby Twitter V rámci analýzy byla popsána funkcionalita, která umožní administrátorovi zasílat formou takzvaných tweetu˚ oznámení o novinkách v systému. Pro tento úˇcel byl vytvoˇren zásuvný modul BCZ tweets, po jehož aktivaci je v administrátorském rozhraní k dispozici sekce vypisující aktivity systému. Ty jsou naˇcítány s použitím smyˇcky pro aktivity a lze nastavit jejich rˇ azení, pˇrípadnˇe filtr. Pro každou aktivitu je vytvoˇren formuláˇr, který lze shlédnout na obrázku 8.16. Po jeho vyplnˇení jsou data zaslána s pomocí metody POST protokolu HTTP a v rámci zpracování dochází k pokusu o zaslání zprávy do sítˇe Twitter. Pro samotný proces odeslání bylo vytvoˇreno rozhraní uvedené níže, které využívá REST API metodu update8 dostupnou s použitím URL http://twitter.com/statuses/update. format a konzolového programu curl9 z cˇ ehož logicky vyplývá nutnost mít jej na serveru k dispozici. function postToTwitter($username,$password,$message){ $host = "http://twitter.com/statuses/update.xml?status=". urlencode(stripslashes(urldecode($message))); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $host); 8. <curl.haxx.se/> 9.
Z ukázky výše je zˇrejmé, že pro odeslání zprávy staˇcí znát název úˇctu a pˇrihlašovací heslo. Tyto údaje jsou v rámci souˇcasné implementace nastaveny ve zdrojovém kódu zásuvného modulu. Nenastanou-li žádné komplikace, zpráva je nahrána do vybraného profilu a k dispozici všem, kdo jej dle terminologie Twitteru následují. Pro doplnˇení je vhodné zmínit skuteˇcnost, že za zprávu je pˇridán zkrácený odkaz na patˇriˇcnou aktivitu v systému. Pro zkracování odkazu˚ je využita služba bit.ly10 . 8.2.7 Zasílání pˇríspˇevku˚ na stránku aplikace Facebook Výbˇer aktualit (aktivit) urˇcených pro zaslání cˇ lánku je realizován obdobnˇe jako v pˇrípadˇe výše uvedeného rˇ ešení pro službu Twitter. Rozdíl nastává v okamžiku zpracování a odeslání pˇríspˇevku. Pro komunikaci bylo využito nástroju˚ ze sady aplikaˇcních rozhraní Facebook Connect. Pro aplikace psané v jazyce PHP je dále k dispozici propracovaná knihovna Facebook platform11 , které bylo pˇri implementaci rovnˇež využito. Pro integraci služeb systému Facebook je nejdˇríve zapotˇrebí vytvoˇrit v nˇem aplikaci, která bude komunikaci umožnovat, ˇ což lze provést dle pokynu˚ uvedených na stránce <www. facebook.com/developers>. Na stranˇe systému je pro komunikaci tˇreba znát veˇrejný a tajný klíˇc, pˇriˇcemž tyto oba jsou pˇrístupné po vytvoˇrení uvedené aplikace. Dále je pro komunikaci potˇrebné mít klíˇc pro konkrétní relaci. Tyto klíˇce mohou být klientovi aplikace poskytnuty pˇri pˇrihlášení k aplikaci a v takovém pˇrípadˇe jsou pouze doˇcasné. Pro potˇreby vývíjeného komunitního systému bylo však vhodnˇejším rˇ ešením mít k dispozici takzvaný trvalý klíˇc relace. Ten umožnuje ˇ klientské aplikaci komunikovat se systémem Facebook i v okamžiku, kdy konkrétní uživatel není pˇrihlášen, což je pro potˇreby zasílání cˇ lánku z komunitního systému administrátorem vhodné rˇ ešení. Trvalý klíˇc relace pro konkrétního uživatele byl získán následujícím postupem: 1. Vygenerování doˇcasného klíˇce pro komunikaci, což lze provést na konkrétní adrese: 10. 11. <wiki.developers.facebook.com/index.php/PHP>
55
8.2. IMPLEMENTACE
Obrázek 8.17: Formuláˇr pro zaslání pˇríspˇevku do aplikace Facebook https://login.facebook.com/code_gen.php?api_key=API_KEY&v=1.0. 2. S pomocí doˇcasného klíˇce relace pak byl vygenerován trvalý klíˇc s použitím skriptu: call_method(’facebook.auth.getSession’, array(’auth_token’=>$testtoken, ’generate_session_secret’=>true)); print_r($result); echo $session_key = $result[’session_key’]; ?>
Hodnoty FB_APIKEY, FB_SECRET a ONETIMETOKEN je samozˇrejmˇe zapotˇrebí dosadit. S použitím získaných informací již muže ˚ systém navázat spojení se službou Facebook. Pro samotné zasílání byla vytvoˇrena jednoduchá funkce využívající prostˇredku˚ knihovny Facebook platform. Hodnota ukládaná v promˇenné $target_id reprezentuje identifikátor stránky, na kterou bude pˇríspˇevek vkládán. function postToFacebookFanPage($fb_key, $fb_secret, $fb_session, $message, $attachment, $action_links) { try { $facebook = new Facebook($fb_key, $fb_secret); $facebook->api_client->session_key = $fb_session;
Poslední cˇ ástí je vhodné sestavení pˇríloh v polích $attachment, respektive $action_links. S jejich pomocí lze zaslat patˇriˇcná metadata a naformátovat tak cˇ lánek, který bude zobrazen na stránce v aplikaci Facebook. Pro tento úˇcel byla použitá data zaslaná z formuláˇre, který lze shlédnout na obrázku 8.17. Pˇríznaky znaˇcící odeslání, respektive odstranˇení, zprávy z výˇctu jsou ukládány do tabulky wp_bp_activity_meta pod klíˇcem bcz_fbpublisher. Podobu pˇríspˇevku takto publikovaného v aplikaci Facebook lze vidˇet na obrázku 8.18.
Obrázek 8.18: Podoba odeslaného príspˇevku v aplikaci Facebook
8.2.8 Pˇrihlašování a registrace uživatelu˚ s použitím Facebook úˇctu Pro implementaci tohoto rˇ ešení bylo využito zásuvného modulu WP FB Autoconnect od Justina Kleina, upravit bylo potˇreba pouze urˇcité drobnosti spojené s využitím tohoto modulu v nadstavbˇe BuddyPress, jelikož pro ni modul není primárnˇe urˇcen. Pro detailní pochopení procesu pˇrihlášení, respektive registrace, lze doporuˇcit nahlédnutí do zdrojového kódu v souboru _process_login.php, který je napsán velmi kvalitnˇe a je patˇriˇcnˇe komentován.
57
Kapitola 9
Závˇer V úvodní kapitole této práce jsem pˇribližil doménu komunitního programového vybavení. Na základˇe získaných poznatku˚ lze konstatovat, že se jedná o velmi aktivnˇe rozvíjející se oblast informaˇcních technologií. Dukazem ˚ této skuteˇcnosti je napˇríklad vysoká popularita souˇcasných webových aplikací Facebook, Twitter a mnoha dalších. Vysoký potenciál tˇechto systému˚ si uvˇedomují velcí hráˇci na poli informaˇcních technologií, jakými jsou napˇríklad spoleˇcnosti IBM, Google cˇ i Microsoft, a vˇenují nemalé prostˇredky do výzkumu v této oblasti. Komunitní systémy se mohou v budoucnu stát nejsilnˇejším pruvodcem ˚ cˇ lovˇeka v síti Internet. Dále byl v práci vˇenován prostor souˇcasným možnostem redakˇcních systému˚ a jejich použitelnosti, zejména pro implementaci komunitních systému. ˚ Uvedena byla možná kritéria, na základˇe kterých lze zvolit vhodnou platformu pro konkrétní použití. Jako nejkomplexnˇejší souˇcasné systémy pro správu obsahu jsem shledal produkty Drupal, Joomla a WordPress, jejichž hlavní výhodou je vysoká rozšíˇrenost a široká komunita vývojaˇru, ˚ respektive uživatelu. ˚ Pokud není podstatným aspektem komplexnost, ale je kladen duraz ˚ na konkrétní faktory, je vhodné hledat i jiná rˇ ešení. Napˇríklad v pˇrípadˇe výkonu lze uvažovat platformu Movable Type, nicménˇe je nutné poˇcítat s vyší pracností pˇri doplnování ˇ potˇrebné funkcionality. Ze širokého spektra souˇcasných systému˚ pro správu obsahu jsem uvedl porovnání pˇeti produktu, ˚ které lze považovat za vhodné pro implementaci zadaného rˇ ešení. Výbˇer platformy WordPress jsem zduvodnil ˚ její komplexností, relativnˇe úzkým, avšak snadno rozšírˇ itelným jádrem, pˇrívˇetivým uživatelským rozhraním, prezencí základních bezpeˇcnostních prvku, ˚ poˇcetnou komunitou vývojáˇru, ˚ lokalizací jádra do cˇ eského jazyka, otevˇreností pro úpravu prezentaˇcní vrstvy a dostupností ucelené komunitní nadstavby BuddyPress. V práci jsem dále uvedl podstatné informace, které je vhodné znát pro implementaci s použitím platformy WordPress, a popsal metodiku pro rozšiˇrování funkcionality systému. Tuto kapitolu považuji za pˇrínosnou, nebot’ muže ˚ sloužit jako podklad pro studium každému, kdo bude mít zájem implementovat vlastní systém s použitím této platformy. V rámci praktické cˇ ásti jsem navrhl koncept komunitního systému pro internetový magazín Bydlení.cz a implementoval jej s využitím redakˇcního systému WordPress, komunitní nadstavby BuddyPress, vlastních zásuvných modulu˚ a s vyžitím modulu˚ tˇretích stran. Tento výstup bude integrován se souˇcasným systémem pro vedení blogu, ˚ který je v rámci magazínu provozován. Na základˇe získaných zkušeností mohu konstatovat, že WordPress je kvalitnˇe navržený redakˇcní systém disponující detailní dokumentací a kvalitním aplikaˇcním 58
ˇ 9. Z ÁV ER
rozhraním, které umožnuje ˇ jeho efektivní rozšiˇrování. U komunitní nadstavby BuddyPress je problémem její nevyzrálost. Bˇehem implementace jsem se setkal s rˇ adou chyb v její funkcionalitˇe, které bylo tˇreba rˇ ešit. Pˇresto projekt BuddyPress považuji za perspektivní. V rámci použití této nadstavby pro potˇreby zadavatele lze vidˇet také problém v její znaˇcné komplexnosti. V dusledku ˚ této skuteˇcnosti mohou mít bˇežní uživatelé problém orientovat se v prostˇredí systému. Z toho duvodu ˚ považuji za žádoucí zjednodušit uživatelské rozhraní a zpˇrehlednit vizuální podobu systému. Se spleˇcností Abstract s.r.o. bych v tomto smˇeru nadále rád spolupracoval, podílel se na integraci mnou navrženého systému a na jeho postupném vylepšování.
59
Literatura ˇ ˇ [1] Cermák, M.: Zamiloval jsem si Twitter, 2008, Clánek publikovaný v blogu . 7.2 ˇ [2] Cromarty, M.: History of WordPress Series: Part 1, 2009, Clánek publikovaný v magazínu . ˇ [3] Lukáš, J.: Co je to redakˇcní systém?, 2005, Clánek publikovaný v magazínu . 3 ˇ [4] Lukáš, J.: K cˇ emu lze využít redakˇcní systém?, 2004, Clánek publikovaný v magazínu . 3.2 ˇ [5] Poremba, S.: CMS Security Could Be Your Company’s Weak Spot, 2010, Clánek publikovaný na blogu . 3.3.3 [6] Speckyboy Design Magazine: 2200 CMS Load Time Comparisons, Which is the Fasˇ test?, 2009, Clánek publikovaný v magazínu . 3.3.4 ˇ [7] Viega, J.: Open Source Security: Still a Myth, 2004, Clánek dostupný online . 3.3.1 [8] Zandl, P. a Mitošinka, P.: Internetové redakˇcní a publikaˇcní systémy, Ariga s.r.o., 2003. 3 ˇ [9] Hart, J.: About Elgg, Clánek publikovaný na blogu . 5.3 ˇ [10] tým autoru: ˚ What is ImpressCMS?, Clánek publikovaný na stránkách . 5.2 ˇ [11] Antoš, D.: Radosti a strasti komunitních serveru, ˚ 2007, Clánek publikovaný v magazínu . 2.1 [12] pˇrispˇevatelé Wikipedie: List of content management systems, . [13] pˇrispˇevatelé Wikipedie: Comparison of social networking software, . 5 [14] tým autoru: ˚ O redakˇcním systému Wordpress, . 4 [15] Coyier, C. a Starr, J.: Digging into WordPress, Chris Coyier, Jeff Starr, 2009. 6.3 60
[16] pˇrispˇevatelé Wikipedie: Facebook> . 7.1
Facebook,
ˇ [17] Bernard, B.: Drupal - seznamte se, Clánek publikovaný v magazínu . 5.1 ˇ [18] Eugene: How to use the deployment diagram in PHP, Clánek publikovaný na blogu . 8.1.4 [19] Prelovac, V.: WordPress plugin development, Packt Publishing, 2009. 6.3 [20] pˇrispˇevatelé Wikipedie: Social software, . 2.3 [21] pˇrispˇevatelé Wiki systému: Twitter API Wiki, . 7.2 [22] pˇrispˇevatelé Wikipedie: Twitter, . 7.2 ˇ [23] Lilley, E.: Social Networking with Drupal, Clánek publikovaný na portálu . 5.1 [24] tým autoru: ˚ WordPress Codex, . 6, 6.3 [25] tým autoru: ˚ How to localize WordPress themes and plugins with GetText, . 8.2.1
61
Pˇríloha A
Administraˇcní pˇríruˇcka Tato pˇríruˇcka slouží jako podklad pro základní administraci dodaného komunitního systému a doplnuje ˇ text diplomové práce, zejména kapitolu zabývající se implementací. Pˇredpokládá u administrátora znalost platformy WordPress z pohledu uživatele, mˇel by se ale také orientovat v administrátorském rozhraní systému a je vhodné mít znalosti o organizaci zdrojového kódu systému WordPress a jeho datovém modelu. V rámci této pˇríruˇcky je kladen duraz ˚ na rozšíˇrení, která byla implementována pro internetový portál Bydlení.cz, popis základní funkcionality komunitní nadstavby zde uveden není. Dobˇre zpracovaný manuál BuddyPressu lze nalézt na webových stránkých .
A.1
Kroky instalace a základní nastavení systému
1. Instalace systému WordPress MU, napˇríklad dle návodu v oficiální dokumentaci1 . Doporuˇcena je verze 2.9.2, funkˇcnost nad jinými verzemi nelze s jistotou zaruˇcit. 2. Zavedení cˇ eské lokalizace, tedy vytvoˇrení adresáˇre wp-content/languages, do kterého je tˇreba umístit soubor cs_CZ.mo nalázající se na pˇriloženém CD v adresáˇri wpmu_2911_cs_CZ. K dispozici je zdrojový soubor cs_CZ.po pro pˇrípadné úpravy. V administrátorském rozhraní lze vybrat z dostupných jazyku˚ v sekci Nastavení, pod záložkou Všeobecné. 3. Instalace nadstavby BuddyPress jako zásuvného modulu, tedy jeho umístˇení do adresáˇre wp-content/plugins a aktivace z patˇriˇcné sekce Pluginy v administrátorském rozhraní systému. Systém byl stavˇen na verzi 1.2.3. 4. Lokalizace BuddyPressu, která obnáší umístˇení souboru buddypress-cs_CZ.mo (adresáˇr bp_123_cs_CZ) do adresáˇre bp-languages ve složce zásuvného modulu BuddyPress. Dále je ve složce wp-content/plugins vytvoˇrit soubor bp-custom. php a do nˇej umístit následující skript zavádející doménu:
5. Nasazení pˇripraveného motivu vzhledu, tedy je tˇreba umístit adresáˇr bcz-bp-theme do složky wp-content/themes, pˇrípadnˇe do složky bp-themes v adresáˇri zásuvného modulu BuddyPress. Poté staˇcí motiv standardnˇe aktivovat a zapojit v patˇriˇcné sekci administrátorského rozhraní. V šablonách tohoto motivu byla provedena i rˇ ada úprav mající význam na funkcionalitu systému. 6. Zapojení diskuzních fór v systému BuddyPress. V rámci administrátorského rozhraní v sekci BuddyPress je k dispozici volba Nastavení fóra pro aktivaci, která vygeneruje konfiguraˇcní soubor bb-config.php. Po jeho vygenerování je žádoucí jej zkontrolovat, zejména zda je správne nastavena konstanta BBDB_COLLATE. 7. Nahrát veškeré dostupné zásuvné moduly do adresáˇre wp-content/plugins, modul ds_private_blog.php do adresáˇre wp-content/mu-plugins. Tento bude automaticky aktivní ve všech instancích blogu v systému. V sekci Administrace pod záložkou Blogy lze pak u jednotlivých blogu˚ nastavit jejich viditelnost.
A.2
Zásuvné moduly
Níže budou popsány zásuvné moduly, které jsou souˇcástí instalaˇcního balíˇcku. Moduly lze aktivovat souˇcasnˇe. Vˇetšina modulu˚ tˇretích stran není lokalizována do cˇ eského jazyka, proto je v pˇrípadˇe jejich zapojení do produkˇcní verze zapotˇrebí provést pˇredklad.
BP Restrict group creation Modul umožnuje ˇ omezit vytváˇrení uživatelských skupin na uživatele mající urˇctá oprávnˇení. Toto nastavení lze provést v administrátorském rozhraní v sekci BuddyPress pod záložkou Restrict Group Creation. Pˇredpokládá se, že všechny zde uvedené akce bude moci vykonávat pouze administrátor. V takové pˇrípadˇe je tˇreba do všech polí nastavit oprávnˇení manage_options. Více o rolích se lze doˇcíst v oficiální dokumentaci 2 .
Groupblog Modul umožnuje ˇ asociovat blog (stránku) se skupinou. Tuto asociaci lze nastavit v administraci skupiny (záložka Groupblog). Obecné volby modulu se nachází v administrátorském rozhraní v sekci BuddyPress a váží se zejména k výchozímu nastavení blogu˚ (stránek), které jsou s pomocí tohoto modulu automaticky vytváˇreny. 2.
63
A.2. ZÁSUVNÉ MODULY
MPO activity filter Modul rˇ ídí viditelnost neveˇrejných aktivit. Nevyžaduje žádná nastavení.
BCZ presenting group Modul umožní oznaˇcovat skupiny jako prezentující, do kterých budou vkládat obsah pouze moderátoˇri a administrátoˇri. Skupinu lze tímto pˇríznakem oznaˇcit pˇri její editaci pod záložkou Nastavení skupiny. Toto rozšíˇrení bylo navrženo zejména pro redakˇcní skupinu, do které mohou vkládat aktualizace pouze redaktoˇri, nicménˇe její obsah je veˇrejnˇe pˇrístupný. Aktivace tohoto modulu vyžaduje úpravu zdrojového kódu BuddyPressu, která je popsána v souboru readme.txt v instalaˇcním balíˇcku tohoto modulu. Formuláˇr pro editaci skupiny lze shlédnout na obrázku A.1.
Obrázek A.1: Editaˇcní sekce skupiny
BCZ Expert group Modul umožní oznaˇcovat skupiny jako odborné, které jsou pˇrístupné 64
A.2. ZÁSUVNÉ MODULY na administraˇcní lištˇe. Skupinu lze tímto pˇríznakem oznaˇcit obdobným zpusobem, ˚ jako výše uvedené prezentující skupiny, tedy s použitím stejného formuláˇre. BCZ Group categories Modul umožní nastavovat kategorie skupin. Nastavení lze provést v rámci administrace skupiny (obrázek A.1), pod záložkou Upravit detaily. Ve formuláˇrí se nabízí již zavedené kategorie a textové pole pro vytvoˇrení nové. Existující kategorie jsou vypisovány v sekci skupin. K dispozici je také komponenta uživatelského rozhraní kategorie vypisující. BCZ Mainpage activity Tento modul po aktivaci pˇridá v administrátorském rozhraní do sekce Nastavení záložku Nastavení hlavní stránky, kde lze vybrat jednu z dostupných skupin. Modul je vytvoˇren za konkrétním úˇcelem, aby mohla být na hlavních stránkách zobrazována aktivita redakˇcní skupiny. Proto se pˇredpokládá, že bude vytvoˇrena skupina pro redakci, které bude nastavena jako prezentující a oznacˇ ena dle popisu výše. Aktivity této skupiny budou vypisovány na hlavní stránce v sekci Aktivity, která je na úrovni šablony pˇrejmenována na Aktivity redakce. Na tuto stránky jsou rovnˇež vloženy portréty moderátoru˚ a administrátoru˚ vybrané skupiny. bcz_editors_list.
Obrázek A.2: Nastavení skupiny pro aktivity na hlavní stránce
BuddyPress Chat Component K samotnému provozu nevyžaduje tento modul žádné další úpravy. Je pˇripravena i cˇ eská lokalizace. Vizuální styl a jazyk si muže ˚ každý uživatel nastavit dle libosti. Urˇcité volby k tomuto modulu lze nalézt v administrátorském rozhraní v sekci BuddyPress. Pˇrípadné další informace o modulu lze nalézt v readme.txt souboru. Hlavní okno chatu je pˇrístupné pˇres administraˇcní lištu. SI CAPTCHA Anti-Spam Modul pˇridává mechanizmus kontroly CAPTCHA do formuláˇru˚ v systému. V administrátorském rozhraní v sekci Pluginy se u tohoto modulu nachází volba Nastavení, pod kterou lze patˇriˇcná nastavení provést. 65
A.2. ZÁSUVNÉ MODULY
Enhanced BuddyPress Widgets Modul zajišt’uje rozšíˇrení pro komponenty uživ. rozhraní zobrazjící cˇ leny systému a uživatelské skupiny. BCZ recent posts widget Modul pˇridává komponentu uživ. rozhraní vypisující nejnovˇejší pˇríspˇevky v celém systému. Pokud uživatel vstoupí do skupiny, jsou zobrazeny pouze pˇríspˇevky z pˇridružené stránky. Je pˇredpokládáno, že tato komponenta bude v levém sloupci ve všech sekcích systému, kde má její zaˇrazení význam. V rámci nastavení komponenty lze specifikovat, které informace o pˇríspˇevku bude vypisovat.
Obrázek A.3: Widget BCZ Recent posts widget zobrazující nejnovˇejší cˇ lánky systému a jeho nastavení
BCZ Whos online Vypisuje seznam momentálnˇe aktivních cˇ lenu. ˚ Obdobná komponenta je k dispozici v rámci základní instalace, nicménˇe tato je rozšíˇrena o filtrování cˇ lenu˚ po vstupu do skupiny, kde zobrazuje pouze cˇ leny dané skupiny. 66
A.2. ZÁSUVNÉ MODULY
BCZ Blogs widget Modul doplnuje ˇ systém o komponentu uživatelského rozhraní vypisující stránky (blogy) v systému. U komponenty lze vybrat, která matadata stránky budou zobrazována, a v sekci Nastavení pod záložkou Blogy hlavní stránky zvolit, které stránky (blogy) budou zobrazeny. Welcome Pack Tento modul nabízí administrátorovi možnost nastavit urˇcité akce, které budou provedeny po registraci nového uživatele do systému. Lze tak nastavit automatické zaslání pozvánky do skupiny, soukromé zprávy cˇ i žádost o pˇrátelství s vybranými uživateli systému. Jaké akce budou provedeny je možno nastavit v administrátorském rozhraní v sekci Nastavení pod záložkou Welcome Pack. BCZ Remove random menu Triviální modul odstranující ˇ z administraˇcní lišty menu pro pˇrechod do náhodné sekce systému. ˇ Album+ Modul umožnuje ˇ uživatelum ˚ spravovat své vlastní fotografie. Radu voleb k tomuto modulu lze nalézt v administrátorském rozhraní v sekci BuddyPress pod záložkou Album+. Fotogalerie jsou pˇrístupné v profilu uživatele. Group documents Jedná se modul umožnující ˇ uživatelum ˚ nahrávat v rámci skupin dokumenty libovolného formátu. Omezení na formát muže ˚ správce nastavit v administrátorském rozhraní v sekci BuddyPress pod záložkou Group Documents. Modul nabízí i komponentu uživ. rozhraní, která zobrazuje poslední pˇridané a populární dokumenty. BCZ Friends/Groups on adminbar Moduly pˇridají na administraˇcní lištu seznam se skupinami systému, vˇcetnˇe jejich cˇ lenu, ˚ a seznam pˇrátel pˇrihlášeného uživatele. Mail from Jelikož se v testovacím provozu vyskytly problémy pˇri automatizovném zasílání elektronické pošty po registraci nových uživatelu, ˚ bylo použito tohoto zásuvného, který umožnuje ˇ nastavit adresu elektronické pošty, ze které budou tyto zprávy zasílány. BCZ tweets Funkcionalita modulu byla popsána v diplomové práci. Rozhraní pro odesílání zpráv do služby Twitter se nalézá v administrátorském rozhraní v sekci Tweets. V souboru twitterAPI.php je tˇreba nastavit konstanty TWITTER_LOGIN, respektive TWITTER_PASS. Modul vyžadauje na serveru program curl3 . Dále je zapo3.
67
A.2. ZÁSUVNÉ MODULY tˇrebí vlastnit úˇcet v rámci služby bit.ly4 a v souboru bitAPI.php nastavit konstanty BYTLI_LOGIN, BYTLI_PASS a BYTLI_APIKEY. BCZ Facebook publisher Funkcionalita modulu byla rovnˇež popsána v rámci diplomové práce, vˇcetnˇe postupu pro zajištˇení komunikace s aplikací Facebook. V souboru fb-publisher.php je tˇreba nastavit konstanty FB_APIKEY, FB_SECRET a FB_SESSION. Dále je zaptˇrebí nastavit identifikátor stránky, na kterou budou cˇ lánky zasílány, do promˇenné $target_id v souboru facebookAPI.php. WP FB Autoconnect Modul umožnuje ˇ registraci a pˇrihlašování uživatelu˚ do systému s použitím jejich úˇctu v aplikaci Facebook. Postup popisující uvedení tohoto modulu do provozu lze nalézt v administrátorském rozhraní v sekci Nastavení pod záložkou WP-FB AutoConn. BCZ groupblog activity widget Modul pˇridává komponentu uživ. rozhraní vypisující na stránce pˇridružené ke skupinˇe její aktivity. Je žádoucí tuto komponentu uživatelského rozhraní vkládat výhradnˇe na stránky, které jsou ke skupinˇe pˇridruženy. V rámci komponenty je možno z administrátorského nastavit, které informace o aktivitách bude zobrazovat. Informace o pˇridružené skupinˇe je naˇcítana z tabulky wp_ bp_groupmeta pod klíˇcem groupblog_blog_id a je pˇripravena šablona pro doplnˇení CSS stylu. ˚ BCZ groupblog members widget Tento zásuvný modul je navržen za obdobným úˇcelem jako výše popsaný modul pro výpis aktivit, nicménˇe na jednotlivých stránkách vypisuje seznam cˇ lenu˚ pˇridružené skupiny. Opˇet lze nastavit údaje, které s u jednotlivých uživatel vypisují, informace o pˇridružené skupinˇe je taktéž naˇcítana z tabulky wp_bp_groupmeta pod klíˇcem groupblog_blog_id a je pˇripravena šablona pro doplnˇení CSS stylu. ˚ BCZ groupblog online members widget Modul pˇridává komponentu uživatelského rozhraní zobrazující fotky uživatelu, ˚ kteˇrí jsou cˇ leny pˇridružené skupiny a jsou momentálnˇe aktivní. BCZ groupblog groupinfo widget Zásuvný modul umožnující ˇ pˇridat na stránku pˇridruženou skupinˇe panel s vybranými informacei a odkazy do urˇcitých sekcí (fórum skupiny, prostˇredí skupiny). 4.
68
A.2. ZÁSUVNÉ MODULY
BCZ member roles Modul zajišt’uje výpis rolí v seznamu uživatelu, ˚ dále zajišt’uje nastavní výchozí role pro novˇe registrovaného uživatele. V rámci instalového systému je tˇreba mít nastaveno profilové pole pro role uživatelu˚ a název tohoto pole je zapotˇrebí nastavit v souboru bcz-member-roles.php do konstanty ROLE_FIELD. Dále je žádoucí ve stejném souboru do konstanty DEFAULT_ROLE nastavit výchozí roli pro novˇe registrované uživatele.
69
Pˇríloha B
Obsah pˇriloženého CD Na pˇriloženém CD lze nelézt zdroje potˇrebné k instalaci komunitního systému a text diplomové práce. Obsah je organizován následujícím zpusobem: ˚ instalace V adresáˇri se nachází podadresáˇre wordpress-mu (instalaˇcní balíˇcek WordPress MU), buddypress (modul komunitní nadstavby BuddyPress), lokalizace (lokalizace do cˇ eského jazyka), bcz-bp-theme (motiv vzhledu implementovaného systému), bcz-moduly (vytvoˇrené moduly) a moduly-tretich-stran (použité moduly tˇretích stran). dp-text Diplomová práce ve formátu pdf, zdrojový kód této práce ve formátu XML (DocBook) a použité obrázky. Testovací verze systému se nachází na adrese , je však zapotˇrebí pˇridat do souboru hosts záznam 89.185.254.190 bs.bydleni.cz. V pˇrípadˇe zájmu testovat aplikaci v roli administrátora systému kontaktujte autora pomocí elektronické pošty (michal.meloun[zavinᡠc]gmail.com).