Komunitní Služby Nad Systémem Wordpress
Total Page:16
File Type:pdf, Size:1020Kb
![Komunitní Služby Nad Systémem Wordpress](http://data.docslib.org/img/3f6c44e242fb111bd310da4c334d41b8-1.webp)
MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨ AKULTA INFORMATIKY !"#$%&'()+,-./012345 Komunitní služby nad systémem WordPress DIPLOMOVÁ PRÁCE Michal Meloun Brno, 2010 Prohlášení Prohlašuji, že tato diplomová práce je mým p ˚uvodnímautorským dílem, které jsem vypra- coval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování použí- val nebo z nich ˇcerpal,v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj. Vedoucí práce: doc. RNDr. Tomáš Pitner, Ph.D. ii Podˇekování Na tomto místˇebych rád podˇekovalvedoucímu mé diplomové práce doc. RNDr. Tomáši Pitnerovi, Ph.D. za jeho ochotu a pomoc pˇripsaní této práce. Dále bych rád podˇekovalpanu Josefu Morávkovi za jeho vstˇrícnost,trpˇelivosta za to, že mi umožnil spolupráci se spoleˇc- ností Abstract s.r.o. a nabídl mi možnost podílet se na zajímavém projektu. Zajména bych ale rád podˇekovalmé rodinˇeza podporu, které se mi dostávalo bˇehemmých studií, jejich výchovu, lásku a trpˇelivost. iii Shrnutí Náplní této práce je prozkoumat možnosti redakˇcníhosystému WordPress pro implemen- taci komunitních systém ˚uv komerˇcnímprostˇredía dle specifikace konkrétního komerˇcního subjektu takový systém s použitím uvedené platformy implementovat. Ctenáˇrjeˇ nejdˇríve seznámen s pojmem komunitní systém a systém redakˇcní,respektive pro správu obsahu. Následuje nahlédnutí na souˇcasnéalternativní platformy jevící se jako vhodné ˇrešenípro implementaci komunitní webové aplikace respektující principy bˇežnépro Web 2.0. Dále je v práci pˇriblíženredakˇcnísystém WordPress a jeho rozšíˇreníWordPress MU, respektive ko- munitní nadstavba Buddypress. Práce seznamuje ˇctenáˇres tˇemitoplatformami, základními datovými modely a metodikou pro jejich další rozšiˇrování.Prostor je vˇenovántaké komu- nitním službám Facebook a Twitter, jelikož navržená webová aplikace dle specifikace zada- vatele tyto služby urˇcitýmzp ˚usobemintegruje. Obsahem další kapitoly je popis postupu pˇrinávrhu výsledného systému a seznámení s ním. V rámci závˇeru jsou shrnuty získané poznatky týkající se možností platformy WordPress pro ˇrešenízadaného úkolu. iv Klíˇcováslova WordPress, BuddyPress, komunitní systém, sociální programové vybavení, redakˇcnísys- tém, CMS, API, Web 2.0, Facebook, Twitter v Obsah 1 Úvod ...... 1 2 Komunity ...... 3 2.1 Pojem komunita ...... 3 2.2 Komunitní programové vybavení ...... 4 2.3 Komunikaˇcnínástroje ...... 5 3 Redakˇcnísystémy ...... 7 3.1 Pˇredpokladypro kvalitní redakˇcnísystém ...... 7 3.2 Funkcionalita redakˇcníchsystém ˚u ...... 8 3.3 Klasifikace ...... 8 3.3.1 Cena ...... 9 3.3.2 Systémové požadavky ...... 9 3.3.3 Bezpeˇcnost...... 9 3.3.4 Výkon ...... 10 3.3.5 Podpora ...... 11 3.3.6 Jednoduchost použití ...... 11 4 WordPress ...... 13 4.1 Nadstavby systému ...... 14 4.1.1 Wordpres MU ...... 14 4.1.2 BuddyPress ...... 14 4.2 Technologie a technické požadavky ...... 15 5 Výbˇerplatformy pro implementaci ...... 16 5.1 Drupal ...... 17 5.2 ImpressCMS ...... 18 5.3 Elgg ...... 18 5.4 Shrnutí ...... 19 6 Vývoj a implementace systému WordPress ...... 21 6.1 Organizace zdrojového kódu ...... 21 6.1.1 WordPress MU a BuddyPress ...... 22 6.2 Datový model ...... 23 6.2.1 WordPress ...... 23 6.2.2 WordPress MU ...... 25 6.2.3 BuddyPress ...... 26 6.3 Aplikaˇcnírozhraní ...... 28 6.3.1 Vývoj zásuvných modul ˚u ...... 28 6.3.2 Háˇcky ...... 29 6.3.3 Štítky šablon ...... 32 6.3.4 Ukládání dat do databáze a mechanizmus voleb ...... 33 7 Vybrané komunitní systémy ...... 35 7.1 Facebook ...... 35 7.2 Twitter ...... 36 vi 8 Komunitní systém portálu Bydlení.cz ...... 38 8.1 Analýza ...... 38 8.1.1 Uživatelé systému a pˇrípadyužití ...... 38 8.1.2 Formy komunikace ...... 41 8.1.3 Integrace služeb Twitter a Facebook ...... 43 8.1.4 Komponenty systému ...... 43 8.2 Implementace ...... 46 8.2.1 Konfigurace systému ...... 47 8.2.2 Rozšíˇreníkonceptu uživatelských skupin ...... 48 8.2.3 Zavedení redakˇcnískupiny ...... 50 8.2.4 Rozšíˇrenío koncept stránek a jejich propojení se skupinami ...... 51 8.2.5 Profily uživatel ˚u ...... 52 8.2.6 Zasílání zpráv do sítˇeTwitter ...... 54 8.2.7 Zasílání pˇríspˇevk˚una stránku aplikace Facebook ...... 55 8.2.8 Pˇrihlašovánía registrace uživatel ˚us použitím Facebook úˇctu . . . . . 57 9 Závˇer ...... 58 Literatura ...... 61 A Administraˇcnípˇríruˇcka ...... 62 A.1 Kroky instalace a základní nastavení systému ...... 62 A.2 Zásuvné moduly ...... 63 B Obsah pˇriloženéhoCD ...... 70 vii Kapitola 1 Úvod Dnešní webové technologie jsou stále složitˇejší,uživatelé o poznání nároˇcnˇejšía tv ˚urci web ˚u mají ménˇeˇcasunež dˇríve.Pomíjí doba, kdy i relativnˇerozsáhlé webové stránky byly psány v jednoduchém textovém editoru. Nastoupil svˇetsložitých a komplexních ˇrešení.Možnosti, které poskytuje služba World Wide Web1, se od dob jejího vzniku rozšiˇrujía rozšiˇrovatbu- dou i nadále. Zmínˇenáslužba byla ve svých poˇcátcíchzaložena na obsahu statického cha- rakteru, návštˇevnícinemˇelipˇrílišmnoho d ˚uvod˚use na takové stránky vracet a jejich inter- aktivita byla témˇeˇrnulová, stejnˇejako vliv tˇechtoˇctenáˇr˚una obsah. Všechny uvedené vlast- nosti se již stávají minulostí. V rámci souˇcasnéslužby WWW obsah není utváˇrenvýhradnˇe jeho vlastníkem, na jeho tvorbˇese mohou podílet i ˇradovínávštˇevníci,vlastník m ˚užebýt pˇresunutdo role moderátora. Typickým jevem pro souˇcasnýstav služby je vysoká interakce návštˇevník˚unapˇríkladve formˇediskuzí, s pomocí takzvaných chat ˚u,ale tˇrebai s použitím aplikací, které umožˇnujísdílet sociální profil. D ˚uležitýmaspektem je návštˇevník,který již není pouze pasivním pˇríjemceminformací, ale je mu umožnˇenostát se souˇcástíkomunity a m ˚užeutváˇretvlastní profil. Aby mohla souˇcasnáslužba WWW takovéto možnosti nabízet, je zapotˇrebítechnolo- gií, s jejichž pomocí m ˚užebýt vytvoˇrenopatˇriˇcnéprostˇredí.Naštˇestíjsou již k dispozici nástroje umožˇnujícírelativnˇejednoduše zvládnout i složité úlohy. Nejen tvorba, ale i ná- sledná správa webových aplikací je tak pˇrístupnábˇežnýmzruˇcnˇejšímuživatel ˚umosobních poˇcítaˇc˚u.V souˇcasnédobˇejiž existuje nepˇrebernémnožství pˇripravenýchsystém ˚u,které umožˇnujísnadno a efektivnˇewebový obsah spravovat. Takovéto systémy jsou obecnˇeozna- ˇcoványjako systémy pro správu obsahu, v jazyce ˇceskémˇcastojako systémy redakˇcní,aˇc- koliv vzhledem k jejich souˇcasnýmmožnostem je již toto oznaˇcenímírnˇezavádˇející.Do- ménˇeredakˇcníchsystém ˚ubude vˇenovánacelá jedna kapitola. Je však na tomto místˇenutné poznamenat, že tato práce byla ˇrešenave spolupráci se spoleˇcnostíAbstract s.r.o., komerˇc- ním subjektem a pr ˚umyslovýmpartnerem Fakulty informatiky Masarykovy univerzity. Tato skuteˇcnostje d ˚uležitázejména z toho d ˚uvodu,že zadavatel kladl urˇcité nároky na technolo- gie použité pˇriimplementaci systému a upˇrednostˇnovalpoužití redakˇcníhosystému Wor- dPress pro implementaci komunitního systému. Aˇcklivexistují robustní a široce škálova- telné redakˇcnísystémy stavˇenéna nejmodernˇejšíchtechnologiích, ne vždy je jejich využití vhodné a žádoucí. V rámci této práce tedy bude kladen d ˚urazzejména na systémy, které jsou vystavˇenyna relativnˇejednoduchých, nicménˇev praxi široce využívaných technologi- 1. 1 1. ÚVOD ích. Pˇrínosempráce tak bude mimojiné ukázat jejich praktické využití. V rámci úvodu bude dále pˇriblíženaoblast komunitních systém ˚u,nebot’ implemento- vaný systém spadá právˇedo této kategorie. Po následujícím nahlédnutí do oblasti systém ˚u pro správu obsahu bude pˇriblíženavybraná platforma, tedy systém WordPress a jeho další rozšíˇrení.V této ˇcástipráce bude kladen d ˚urazna vhodnou metodiku pro implementaci a rozšiˇrováníuvedeného systému, uvedeny budou datové modely a nahlédnuto bude i do organizace zdrojového kódu. Poté následuje kratší kapitola vˇenovanákomunitním službám Twitter a Facebook, nebot’ dle zadavatele by mˇelybýt do implementovaného systému tyto služby urˇcitým zp ˚usobemintegrovány. V posledních kapitolách je vˇenovánprostor navrho- vanému systému a v rámci závˇeru jsou shrnuty získané poznatky. 2 Kapitola 2 Komunity 2.1 Pojem komunita Jelikož v rámci této práce je operováno s termíny komunitní služba a komunita, je vhodné je alespoˇnstruˇcnˇedefinovat. Pro hlubší seznámení s tˇemitopojmy lze doporuˇcitˇclánek[11] od Davida Antoše, který vyˇcerpávajícímzp ˚usobempopisuje problematiku komunit a také tak- zvaných komunitních server ˚u.Komunitu zde definuje jako jakoukoliv skupinu lidí, která mezi sebou urˇcitýmzp ˚usobemkomunikuje ˇciprovádí jiné interakce. Každá komunita ob- vykle potˇrebujenˇejakýd ˚uvod,proˇcse v konkrétním složení zformovala. M ˚užeto být fy- zická blízkost, stejné zájmy, škola, práce atp. Vˇetšinalidí je ˇclenemr ˚uznýchkomunit. Lze také specifikovat pojem internetová komunita jako komunitu osob, které se spolu nˇejakým zp ˚usobemdoruzumívají prostˇrednictvímsítˇeInternet. Taková komunita v žádném pˇrípadˇe nemusí být ˇcistˇevirtuální, tedy bez existence ve fyzickém svˇetˇe,nebot’ m ˚užejít o komunitu pouze využívající výhod Internetu. Jako pˇríkladykomunitních služeb lze jmenovat napˇríkladLidé1, MySpace2, Nyx3, Web- trh4, ale tˇrebai ICQ5 a do jisté míry i elektronickou poštu. Toto vcelku nesourodé spektrum služeb je vhodné dále ˇclenit.Lze použít dvˇeoznaˇcení,a to sice takzvané makrokomunity a mikrokomunity. Stejnˇetak by se s trochu posunutým významem daly rozlišovat gene- rické a specifické komunitní služby. Makro a mikro terminologie však umožˇnujeadekvátnˇe akcentovat hlavní odlišnost tˇechtotyp ˚u– jejich velikost. David Antoš popisuje uvedené ˇclenˇenítak, že podle pˇredpokladumají komunity ob- vykle nˇejakýidentifikaˇcnízáklad, zp ˚usob,jak se urˇcujílidé uvnitˇra vnˇe.Nejjednodušeji lze rozdíl mezi mikro a makro komunitou vysvˇetlittak, že mikrokomunity s touto identi- fikací pracují, zatímco makrokomunity ne. Hypotetickou ambicí makrokomunity je obsáh- nout celý svˇet,všechny druhy interakcí a všechny uživatele. To je ovšem nemožné, pokud by se dovnitˇrtéto služby neuzavˇrelcelý Internet. Reálné ambice jsou proto o nˇecoskrom- nˇejší.Služba ICQ tak tˇrebam ˚užeusilovat o roli univerzálního textového komunikátoru mezi dvˇemaosobami v reálném ˇcase,Lidé o univerzální chat, seznamku ˇcidiskusi a tak podobnˇe. D ˚uležitéje, že makrokomunity vždy obsahují vˇetší ˇradukomunit a samy jako celek žádnou 1. 3 2.2. KOMUNITNÍ PROGRAMOVÉ VYBAVENÍ netvoˇrí,pokud za komunitu nebude považováno celé lidstvo. V kontextu této práce je vhodné se zamyslet, zda uživatelé navrhovaného systému bu- dou tvoˇritmikro ˇcimakrokomunitu. Odpovˇed’ nemusí být zcela jednoznaˇcná.Hypotetickou ambicí systému není obsáhnout celý svˇet, nicménˇeani vytvoˇreníkomunikaˇcníhoprostˇredí pro jednu specifickou komunitu. Úkolem je vytvoˇritkomunikaˇcnísystém pro více skupin subjekt ˚u,které urˇcitýmzp ˚usobemvyužívají služby souˇcasnéhoportálu Bydlení.cz a por- tál ˚upˇridružených. Lze hovoˇritspíše o prostˇredí,které propojuje urˇcitémnožství komunit, jakými jsou napˇríkladspoleˇcenstvívlastník ˚u,ˇctenáˇriinternetového magazínu, zamˇestnanci firmy provozující portál nebo napˇríkladskupiny odborník ˚uˇciobchodník ˚u.Navzdory této skuteˇcnostivšak nelze ˇríci,že tyto komunity jsou izolované a netvoˇríurˇcitýcelek. I pˇres výše uvedené skuteˇcnostise lze pˇriklonitspíše k názoru, že uživatelé systému budou tvoˇrit více mikrokomunitu než makrokomunitu. 2.2 Komunitní programové vybavení Komunitní ˇcisociální programové vybavení, nˇekdyzkracováno jako socioware na základˇe anglického ekvivalentu, je obecnˇea struˇcnˇeˇreˇcenokaždé programové vybavení, které umož- ˇnujelidem potkávat se, spolupracovat a tvoˇritkomunity s pomocí poˇcítaˇcovýchpropojení. Zahrnuje široké spektrum systém ˚u,které umožˇnujíuživatel ˚uminteragovat a sdílet data. Za pr ˚ukopníkyv této oblasti lze považovat služby jako MySpace6 nebo Facebook7, dále pak služby pro sdílení médií jako Flickr8 nebo YouTube 9 a další. Vˇetšinapodobných sys- tém ˚usdílí spoleˇcnéchatakteristiky, jako je otevˇrenéaplikaˇcnírozhraní, návrh orientovaný na služby a schopnost sdílet data a média. Tento druh programového vybavení je ˇcastospo- jován s termíny Web 2.0 a Enterprise 2.0 pro velké podnikové aplikace. Existuje i specifický termín systém pro spolupráci pocházející z anglického spojení collaborative software, který oznaˇcujepˇrímoaplikace založené na spolupráci uživatel ˚u. Aplikace z oblasti sociálního programového vybavení zahrnují zejména nástroje pro ko- munikaci a interakci. Komunikaˇcnínástroje mají typicky za úkol zachytit, uložit a prezen- tovat komunikaci uživatel ˚u,a to nejen v podobˇepísemné, ale i napˇríkladve formˇezvuku nebo videa. Nástroje pro interakci mají pak za úkol zajistit propojení mezi párem nebo sku- pinou uživatel ˚u.Jsou zamˇeˇrenyzejména na ustanovení a udržování spojení. Navíc v dnešní dobˇejiž není pravdou, že by tento druh systém ˚ubyl orientován pouze na mladou generaci, která by jej používala pro komunikaci s pˇráteli.Skuteˇcnost,že i spoleˇcnostIBM, velký hráˇc ve svˇetˇeinformaˇcníchtechnologií, se velmi aktivnˇev oblasti komunitních systém ˚uanga- žuje, to potvrzuje. Koncem roku 2009 spoleˇcnostohlásila novinku v podobˇerozšíˇrenésady nástroj ˚ua funkcí sociálního programového vybavení pro podnikovou spolupráci. Jedná se o systém Lotus Connections 2.5, který obsahuje nové funkce a možnosti pro ˇcinnostiko- munit. Inovovaná verze produktu je výsledkem plánu spoleˇcnostiuvést na trh sociální pro- 6. 4 2.3. KOMUNIKACNÍNÁSTROJEˇ gramovou platformu pro firmy. Díky extranetovým, internetovým a intranetovým službám spolupráce, které poskytuje IBM a její zákazníci, má novinka umožnit desítkám milión ˚u uživatel ˚upo celém svˇetˇejednoduché spojení a spolupráci. Spoleˇcnostpˇredstavilasadu ná- stroj ˚ua funkcí pro podnikovou spolupráci, která pˇrinášíoblíbené funkce jako mikroblogy z domácího do podnikového prostˇredí.Podle oznámení spoleˇcnostiIBM zákazníci spoleˇc- nosti rychle pˇrijaliza své nové nástroje pro chytˇrejšíspolupráci jako jsou mikroblogy, wiki a sdílení soubor ˚u.Mezi první zákazníky platformy IBM pro spolupráci Lotus Connections 2.5 patˇrípˇredníspoleˇcnostijako NEC Electronics GmbH a Sogeti. Více o této novince se lze doˇcístna domovské stránce projektu10. 2.3 Komunikaˇcnínástroje Existuje celá ˇradanástroj ˚upro komunikaci a interakci uživatel ˚uv rámci komunitních sys- tém ˚u.Jejich podrobný výˇcetlze nalézt napˇríkladv [20], v rámci této práce jsou uvedeny základní komunikaˇcnínástroje bˇežnˇepoužívané v rámci služeb dnešní sítˇeInternet. Instant messaging Pro tento termín lze obtížnˇehledat ˇceskýekvivalent, proto je vhod- nˇejšíz ˚ustatu anglického oznaˇcení.Jedná se o internetovou službu umožˇnujícísvým uživatel ˚umsledovat, kteˇríjejich pˇráteléjsou právˇepˇripojeni,a dle potˇrebyjim posílat zprávy, pˇreposílatsoubory a i jinak komunikovat. Hlavní výhoda oproti používání napˇríkladelektronické pošty spoˇcíváv principu odesílání a pˇrijímánízpráv v reál- ném ˇcase.Zpráva je doruˇcenave velmi krátké dobˇeod odeslání (vˇetšinouv rámci stovek milisekund). Chat Jedná se o krátkou komunikaci nebo rozhovor dvou ˇcivíce lidí prostˇrednictvímko- munikaˇcnísítˇe.Uskuteˇcˇnujese vždy v reálném ˇcase.V užším smyslu se pˇrichatu komunikuje formou psaného textu. Opˇettermín, pro který se neustálil žádný ˇceský ekvivalent. V angliˇctinˇese toto slovo používá pro bˇežnépovídání si, spíše ve smyslu pˇrátelskéhorozhovoru. V technologickém smyslu se p ˚uvodnˇejednalo o ˇcistˇetexto- vou formu komunikace, pˇrikteré mohly být vymˇeˇnoványpouze znaky. Pro chat byl zaveden komunikaˇcníprotokol IRC. Pozdˇejise k tomuto zp ˚usobupˇridalamožnost pˇrenášetzvuk, pˇrípadnˇei obraz. Mluvíme pak o audiochatu, pˇrípadnˇevideochatu. Internetová diskuse Internetová diskuse je stránka (místo) na internetu, kam lidé vklá- dají své názory a reakce a ty se následnˇena této stránce zobrazují. Oproti IRC kaná- l ˚umnebo chatu se internetová diskuse obvykle liší tím, že pˇrispˇevatelénemusí být ke stránce pˇripojenisouˇcasnˇea reagovat bezprostˇrednˇe, ale i s odstupem mnoha dní ˇci mˇesíc˚u.Mnohé diskusní stránky však mají zároveˇni znaky výše popsaného chatu. 10. 5 2.3. KOMUNIKACNÍNÁSTROJEˇ Blogy Blog je webová aplikace obsahující pˇríspˇevkyvˇetšinoujednoho autora na jedné webové stránce. Nejˇcastˇeji,nikoli však nezbytnˇe,jsou zobrazovány v obráceném chro- nologickém poˇradí.Autor se nazývá blogger, v ˇceskémjazyce ˇcastopsáno bloger, veš- keré blogy a jejich vzájemné vztahy jsou oznaˇcoványtermínem blogosféra. Slovo blog vzniklo stažením anglického web log, což lze pˇreložitjako webový zápisník, a zkráce- ním slova weblog. Weblogy tvoˇrínesmírnˇeširoké a diferencované pole, takže pokusy o struˇcnouvyˇcerpávajícídefinici formálními kritérii bývají neúspˇešné.Spektrum sahá od osobních deník ˚upo oficiální zpravodajství firem, sdˇelovacíchprostˇredk˚ua poli- tických kampaní. Do weblogu m ˚užepˇrispívatstejnˇetak jediný autor, malá skupina pˇrátelnebo široká komunita. Mnoho weblog ˚uumožˇnujepˇridávatkomentáˇrek jed- notlivým pˇríspˇevk˚um,ˇcímžkolem nich vzniká ˇctenáˇrskákomunita, jiné jsou neinter- aktivní. Wiki Jedná se o oznaˇceníobecnˇeˇreˇcenohypertextových dokument ˚u,které umožˇnujíuži- vatel ˚umpˇridávatobsah, podobnˇejako v internetových diskusích, ale navíc také umož- ˇnujímˇenitobsah stávající. V pˇrenesenémsmyslu se jako wiki oznaˇcujeprogramové vybavení, které takovéto weby vytváˇrí.P ˚uvodnˇese termín používal zcela opaˇcnˇe. Oznaˇcovaltyp programového vybavení a weby postavené na wiki byly nazývány jako wiki-weby. Postupnˇedošlo k pˇrenesenívýznamu na výsledný web a pro použí- vanou platformu byl zaveden termín wiki-software. Wiki umožˇnujevytváˇretdoku- menty kolektivnˇepomocí jednoduchého znaˇckovacíhojazyka za použití webového prohlížeˇce.Jedna strana je oznaˇcovánajako wiki stránka, zatímco celá skupina strá- nek, které bývají obvykle propojeny, je nazývána wiki. Jedna z definiˇcníchcharak- teristik této technologie je snadné vytváˇrenía aktualizace stránek. Obecnˇenení pˇred pˇrijetímstránky provádˇenažádná kontrola a vˇetšinatˇechtosystém ˚uje otevˇrenaveˇrej- nosti nebo komukoli, kdo má pˇrístupna server. Zpravidla není vyžadována registrace uživatele. Výše byly pˇriblíženynástroje, které jsou dnes známy každému uživateli. Existuje však ˇradadalších, které se stále více prosazují, nicménˇejejich používání není tak ˇcasté.Lze jmeno- vat napˇríkladnástroje pro simultánní úpravu textu nˇekolikauživateli, služby pro spoleˇcné sdílení záložek a nebo také napˇríkladspeciální vyhledávací služby, které využívají sociální sítˇek organizaci, upˇrednostˇnovánía filtraci vyhledaných výsledk ˚u.V této souvislosti je za- jímavé zmínit mikroformát XFN (XHTML Friends Network)11 umožˇnujícísémantický zápis vztah ˚umezi lidmi pomocí jazyk ˚uHTML nebo XHTML. 11. 6 Kapitola 3 Redakˇcnísystémy Nyní již k samotnému pojmu redakˇcnísystém. Pozdˇejipoužitá platforma WordPress pro implementaci komunitního systému je ˇcastooznaˇcovánajako systém pro správu blog ˚ua primárnˇebyla pro tento úˇcelnavržena, nicménˇevzhledem k její pˇripravenostipro rozší- ˇreníji lze považovat za plnohodnotný redakˇcnísystém. Zárovˇeˇnje vhodné si uvˇedomit,že pˇriimplementaci komunitního systému je spravován specifický obsah, d ˚urazje kladen na uživatele, jejich vztahy a na komunikaˇcnínástroje. Pojem redakˇcnísystém je v dnešní dobˇevelmi rozšíˇren,nicménˇenení snadné nalézt de- finici plnˇejej vystihující. Za zdaˇriloulze považovat napˇríkladtu od JiˇríhoLukáše uvedenou v [3]. Redakˇcnísystém definuje jako aplikaci která spravuje data a informace r ˚uznéhocha- rakteru i obsahu, zároveˇnse stará o jejich efektivní využití a zobrazení na nˇekterémz pˇred- pˇripravenýchvýstup ˚u.Jak je uvedeno v [8], základní úlohou redakˇcníhosystému je zjed- nodušení práce, odstranˇenírutinních úkon ˚ua obecnˇezvýšení produktivity práce a jejího komfortu, v ˇradˇeneposlední i zlepšení návštˇevníkovaprožitku. Spolu s prudkým rozvojem sítˇeInternet a potˇreboupublikovat na nˇeminformace vznikla potˇrebavyužívat pro tento úˇcelnástroje usnadˇnujícípráci s velkým množstvím informací. P ˚uvodnˇevyvinuté protokoly Internetu urˇcenépro pˇredáváníinformací se ukázaly být pro efektivní práci samostatnˇenepoužitelné, a proto jednotlivé firmy zaˇcalypostupnˇepˇri- cházet se servisními programy a aplikacemi využívajícími standardní, nebo navrhující pro- prietární protokoly k publikování informací na Internetu. Jelikož podobné systémy již v mé- diích existovaly a i na Internetu bylo jejich p ˚uvodnífunkcí podporovat práci redakce, ustálil se pro tyto systémy název redakˇcní.Dnes již vˇetšinatˇechtoaplikací ze svého p ˚uvodního urˇcenívyboˇcuje,je proto vhodnˇejšínazývat je spíše dle anglického ekvivalentu systémy pro správu obsahu, nebot’ v anglickém jazyce se pro tento druh systém ˚uustálil pojem content management systems zkracovaný na CMS. 3.1 Pˇredpokladypro kvalitní redakˇcnísystém Od redakˇcníchsystém ˚use v souˇcasnédobˇeoˇcekávápráce se strukturovanými informa- cemi, tedy možnost jejich vkládání, vyhledávání, tˇrídˇenía následného publikování na Inter- netu. Jedná se o aplikace, která pracují s daty v obou smˇerech, tedy na vstupu i na výstupu. V praxi to znamená, že mají vstupní a výstupní rozhraní, pˇriˇcemžvstupní rozhraní slouží pro vkládání dat a výstupní pro jejich prezentaci. Vzhledem ke skuteˇcnosti,že prezentace dat je zajišt’ována automaticky dle nastavení systému, správce má v podstatˇepouze jediný 7 3.2. FUNKCIONALITA REDAKCNÍCHSYSTÉMˇ U˚ úkol, kterým je plnit systém aktuálními daty. Je vhodné dodat, že vyspˇelémoderní redakˇcní systémy jsou již schopny tuto funkci delegovat na uživatele s nižšími právy a umožˇnujítak vytvoˇritstandardní hierarchii redaktor ˚ua autor ˚u.Protože vˇetšinaredakˇcníchsystém ˚udis- ponuje více funkcemi, které je nutné obsluhovat, vyvstal požadavek na tzv. administraˇcní rozhraní. Administraˇcnírozhraní slouží ke globální konfiguraci systému a umožˇnujeplnit jeho jednotlivé ˇcástiodpovídajícími daty. Toto rozhraní je vˇetšinoudostupné prostˇrednic- tvím webových stránek, které jsou chránˇenyautorizaˇcnímsystémem. 3.2 Funkcionalita redakˇcníchsystém ˚u V této fázi je vhodné zmínit základní funkcionalitu, která se od redakˇcníchsystém ˚uoˇcekává. Je žádoucí zd ˚uraznitslovo základní, nebot’ soudobé systémy nabízejí nepˇrebernémnožství funkcí, které jsou ale ˇcastoimplementovány jako pˇrídavnémoduly k jádru systému. Na otázku, jaká funkcionalita by mˇelabýt v jádˇreobsažena, neexistuje jedna správná odpovˇed’, nicménˇelze oˇcekávatnapˇríklad možnost inteligentní správy uživatel ˚us alespoˇnzákladní schopností delegace pˇrístupovýchpráv a možnost komplexní správy ˇclánk˚u.Žádoucí je schopnost konfigurovat obsahové oblasti výsledné stránky, vítána m ˚užebýt schopnost sys- tému definovat rubriky, pˇrítomnostvyhledávacího subsystému, novinkového subsystému, komentáˇrovéhosubsystému, existence sekce pro stahování soubor ˚ua v neposlední ˇradˇe schopnosti pˇrijímatdalší rozšíˇrení,nebot’ kvalitní redakˇcnísystém by mˇelbýt modulární a mˇelby disponovat kvalitním aplikaˇcnímrozhraním. Redakˇcnísytémy lze nasazovat v r ˚uznýchoblastech. Jejich uplatnˇenílze nalézt napˇrí- klad pro rozsáhlé firemní webové stránky, standardní komerˇcnífiremní webové stránky, in- ternetové obchody, intranetové a extranetové portály, stránky institucí, škol a obcí, stránky neziskových organizací, internetové ˇcasopisy, osobní stránky a komunitní systémy, jak bude demonstrováno dále v této práci. Možnost nasazení redakˇcníhosystému v dané oblasti nemusí vždy znamenat, že se jedná o vhodné použití. Jak napˇríkladuvádí JiˇríLukáš v [4], u elektronických obchod ˚uzpravidla bývá lepší využít aplikaci, která je pro tento typ ˇcinnostinavrhovaná již od samého poˇcátku. Podobnˇevelké firemní prezentace mají ˇcastosložitou strukturu a kombinují statický a dy- namický pˇrístupk tvorbˇestránek, nemluvˇeo r ˚uznýchúrovních pˇrístupua požadavcích na napojení na interní informaˇcnísystém. V takových pˇrípadechse vyplatí nechat si vytvoˇrit webové stránky na míru. Vždy je žádoucí provést d ˚ukladnouanalýzu, na základˇekteré je vyhodnoceno, zda je nasazení vybraného redakˇcníhosystému pro dané potˇrebyvhodné. 3.3 Klasifikace Existuje celá ˇradakritérií, na základˇekterých je možné existující redakˇcnísystémy hodnotit ˇcije dˇelitdo skupin. Mohou být cíleny pro specifické použití a v pˇrípadˇe,že je uvažováno jejich nasazení, zvážit celou ˇraduaspekt ˚u.Budoucí provozovatel si nejdˇrívevytvoˇríjas- nou pˇredstavu,k ˇcemubude nový systém používat, jaké má dostupné technologie pro jeho 8 3.3. KLASIFIKACE provoz, jak citlivá data bude v systému uchovávat, jakou podporu od pˇrípadnéhododa- vatele oˇcekává,jaké má nároky na uživatelské rozhraní, výkon systému a mnoho dalších. V rámci sítˇeInternet lze nalézt zajímavé nástroje pro porovnávání rozšíˇrenˇejšíchredakˇcních systém ˚u.Za velmi povedený lze považovat napˇríkladnástroj CMS Matrix1. 3.3.1 Cena Kromˇeprodukt ˚u,jejichž zdrojový kód si jednotlivé spoleˇcnostihlídají, existuje celá ˇradare- dakˇcníchsystém ˚u,které jsou vyvíjeny pod GNU GPL (GNU General Public licence) licencí. Castoˇ se lze také setkat s modelem, kdy spoleˇcnostivyvíjejí sv ˚ujprodukt pod GNU GPL, re- spektive LGPL(GNU Lesser General Public licence) licencí a zdrojem jejich pˇríjm˚ujsou pak implementace pro jednotlivé zákazníky. V této souvislosti se lze zamyslet nad otázkou, zda jsou proprietární aplikace bezpeˇcnˇejšíˇcinikoliv, což však není jednoznaˇcnˇerozhodnutelné. Zajímavé informace lze získat z ˇclánku[7]. V kontextu této práce je podstatné, že existuje celá ˇradakvalitních produkt ˚ušíˇritelnýchpod licencí GNU GPL, které jsou pro vývoj sys- tému splˇnujícíhozadání dostaˇcující. 3.3.2 Systémové požadavky Pro samotné zprovoznˇeníredakˇcníhosystému je d ˚uležitázejména skuteˇcnost,jaké prostˇredí je tˇrebapro jeho chod. Jako základní požadavky lze uvažovat nároky na webový a aplikaˇcní server, databázový server, operaˇcnísystém a pˇrípadnˇesamotný programovací jazyk, ve kte- rém je systém napsán. Castᡠje kombinace požadavk ˚uzkracovaná jako LAMP, která v sobˇe ukrývá slova Linux, Apache (webový server), MySQL (databázový server) a PHP (skripto- vací jazyk). Omezení na operaˇcnísystém však v praxi tak ˇcastánejsou. Výše uvedené ná- roky jsou pouze ty základní, nˇekteréredakˇcnísystémy vyžadují pomˇernˇecitlivá nastavení, a proto je obtížné je zprovoznit v rámci základních služeb, které nabízejí nˇekteˇríposkytova- telé prostoru pro webové stránky. 3.3.3 Bezpeˇcnost D ˚uležitoukapitolou je bezpeˇcnost.Jak je mimojiné uvedeno v [5], skuteˇcnost,že CMS sys- témy pˇrijímajíuživatelem generovaný obsah, je znaˇcnýmbezpeˇcnostnímrizikem. V rámci klasifikace existuje ˇradabezpeˇcnostníchprvk ˚u,které jsou v nˇekterýchredakˇcníchsystémech obsaženy, v jiných ne a nˇekteréje možné rozšíˇrit.Konkrétnˇelze zmínit napˇríkladmož- nost Kerberos ˇciLDAP autentizace uživatel ˚u,možnost nastavení zrnkových práv (nasta- vení práv pro jednotlivé kategorie nebo obsah), zaznamenávání historie pˇrihlášení,možnost spravovat uživatelské relace, SSL pˇrihlášení,takzvaný CAPTCHA test pˇriregistraci nových uživatel ˚unebo pˇrítomnostmechanizmu pro verifikaci elektronické pošty. 1. cmsmatrix.org/ 9 3.3. KLASIFIKACE 3.3.4 Výkon Rychlost práce se systémem je pro uživatele nesmírnˇed ˚uležitýaspekt. Existují projekty, jako napˇríkladMovable Type 2, které se na rychlost zamˇeˇrují.V rámci výkonu lze sledovat, zda jednotlivé redakˇcnísystémy disponují možnostmi, jako je rozšíˇrenépoužívání vyrovnávací pamˇeti,replikace databáze nebo ukládání jednotlivých stránek do vyrovnávací pamˇeti. O zajímavém testu se lze doˇcístv [6]. Jedná se již bohužel pouze o reprodukci výsledk ˚u, stránky projektu nejsou dostupné. Jelikož navíc doposud nebyla v práci vˇenovánápozor- nost konkrétním redakˇcnímsystém ˚um,lze v tuto chvíli následující grafy brát pouze jako demonstraci odlišnosti v rychlosti naˇcítánístránek publikovaných s použitím r ˚uznýchre- dakˇcníchsystém ˚u.Samotný test probíhal tak, že jeho autor vybral právˇedevˇetredakˇcních systém ˚uz kategorie tˇechrozšíˇrenˇejšícha s pomocí vyhledávaˇceGoogle vybral 2200 stránek vytvoˇrenýchv nˇekterémz vybraných systém ˚u.Obrázek 3.1 popisuje dobu jejich naˇcítání, pˇriˇcemžhodnoty na horizontální ose lze popsat jako indexy stránek konkrétního redakˇc- ního systému, stránky jsou uspoˇrádánydle jejich rychlosti naˇctení.Údaje na svislé ose jsou z obrázku zˇrejmé. Obrázek 3.1: Casyˇ potˇrebnépro naˇctenístránky Dalším výstupem testu je graf zobrazující ˇcaspotˇrebnýk naˇcteníprvního bajtu vybra- ných stránek. Tato míra je ˇcastopoužívána k indikaci odezvy webového serveru nebo jiných sít’ových zdroj ˚u.Jedná se o ˇcasod chvíle, kdy virtuální uživatel provede požadavek pˇres HTTP protokol, do okamžiku, kdy prohlížeˇcobdrží první bajt. Obrázek 3.2 demostruje, jaká byla odezva u stránek vytvoˇrenýchs pomocí vybraného redakˇcníhosystému. Uspoˇrádání stránek na horizontální ose odpovídá jejich uspoˇrádánív grafu výše. 2. 10 3.3. KLASIFIKACE Obrázek 3.2: Casyˇ potˇrebnék obdržení prvního bajtu 3.3.5 Podpora Aspektem, na který by rozhodnˇenemˇelobýt zapomínáno, je jakákoliv podpora pro práci s daným systémem. Lze uvažovat i podporu komerˇcnínapˇríkladve formˇeplacených manu- ál ˚u,placené zákaznické podpory ˇciv podobˇeodborných školení. Za dostaˇcujícílze považo- vat skuteˇcnost,že existuje silná komunita uživatel ˚ua vývojaˇr˚udaného redakˇcníhosystému a dostupnost komunitních prostˇredk˚u.Konkrétnˇelze zmínit veˇrejnátématická fóra, komu- nitou spravovanou dokumentaci ˇcinapˇr.veˇrejnýseznam adres elektronické pošty. Velmi d ˚uležitým,v práci již zmínˇeným,aspektem je kvalitní a dobˇredokumentované aplikaˇcní rozhraní pro pˇrípadnározšíˇrení. Opomenutí uživatelské a vývojáˇrsképodpory by se mohlo do budoucna ukázat jako nezanedbatelný problém pro bezproblémový chod nasazeného redakˇcníhosystému a jeho další vývoj. 3.3.6 Jednoduchost použití Nemˇeloby se zapomínat na fakt, že se systémem budou pracovat uživatelé. Uvažovat lze ce- lou ˇradufunkcí, které umožní uživatel ˚umpracovat se systémem efektivnˇea pohodlnˇenebo které ˇcinípráci se systémem intuitivnˇejší.Konkrétnˇelze zmínit napˇríkladmožnost praco- vat spravovat obsahem s pomocí takzvaného Drag’n Drop mechanizmu pro intuitivní práci v uživatelském rozhraní, existenci pˇrátelskýchURL, které umožˇnujípˇrehlednˇejiidentifi- kovat konkrétní obsah, pˇrítomnostWYSIWYG editoru pro formátování textového obsahu, více úrovní uživatelského rozhraní, použitelnost funkce „Zpˇet“internetového prohlížeˇce, pˇrítomnostsystému pro tvorbu šablon, vlastní jazyk pro šablony nebo napˇríkladpˇrítom- 11 3.3. KLASIFIKACE nost mechanizmu pro kontrolu chyb v textu. V rámci této podkapitoly byla zmínˇenanˇekterákritéria, na základˇekterých lze vybrané redakˇcnísystémy hodnotit. Kromˇezde zmínˇenýchje možné uvažovat mnoho dalších, jako napˇríkladdostupnost nástroj ˚upro správu obsahu, možnost administrace v prohlížeˇcipˇrímo na úrovni zobrazení výstupu, možnost volby vzhledu, vytváˇrenístatistik nebo vlastní koš pro odstranˇenýobsah. Dále je možné zamˇeˇritse na nástroje pro interoperabilitu. Pˇríkladem m ˚užebýt podpora protokolu FTP (File Transfer Protocol), syndikace obsahu nebo podpora nástroj ˚uWebDAV3 (Web-based Distributed Authoring and Versioning). 3. 12 Kapitola 4 WordPress Jak je uvedeno v [14], WordPress1 je redakˇcnísystém vyvíjený jako projekt s otevˇreným zdrojovým kódem (šíˇritelnýpod licencí GPL), což umožˇnujekaždému programátorovi za- pojit se do vývoje, upravovat jeho ˇcástia pˇrizp˚usobitsi jej dle vlastních pˇredstav. WordPress byl navržen jako systém urˇcenýpro vedení blog ˚u,nicménˇesnadná rozšíˇritelnostz nˇejˇciní témˇeˇrkompletní systém pro správu obsahu. PoˇcátkyWordPressu sahají do roku 2003. V té dobˇedisponoval pouze krátkým zdrojo- vým kódem, nicménˇeod té doby prošel nespoˇctemzmˇena stal se jedním z nejpoužívanˇej- ších publikaˇcníchnástroj ˚u.V dnešní dobˇejiž lze hovoˇrito vyspˇeléma stabilním produktu, který je zamˇeˇrenna uživatele a webové standardy. Mezi jeho hlavní klady lze ˇraditzp ˚usob ˇclenˇeníuživatel ˚udo úrovní, dle kterých lze vykonávat konkrétní operace. Samozˇrejmostí je možnost spravovat vlastní uživatelský profil, pˇriˇcemžtento koncept je znaˇcnˇerozšíˇren v rámci komunitní nadstavby BuddyPress. Vývojáˇrikladou d ˚urazna snadnou instalaci a pˇrechodyna vyšší verze. Jednotlivé stránky jsou generovány dynamicky z dat uložených v databázi s použitím takzvaných šablon, což umožˇnujevelmi rychlé aktualizace a minima- lizuje nároˇcnostna velikost datového úložištˇe.Dobˇreje ˇrešenainternacionalize a lokalizace s použitím balíˇckugettext2. Co se publikování obsahu týká, plnˇejsou podporovány specifikace RSS 1.03, RSS 2.04 a ATOM5. Systém vytváˇrípro každý pˇríspˇevekstrukturovaný a pro ˇclovˇekai stroj jednoduše ˇcitelnýodkaz, což je d ˚uležitýaspekt z hlediska optimalizace pro vyhledávaˇce. Za velmi zdaˇrilýlze považovat mechanizmus platformy WordPress pro úpravy prezen- taˇcnívrstvy webové aplikace s použitím šablon a jejich štítk ˚u(pojmy budou popsány níže). Vizuální podobu stránek je možné dále upravovat vytváˇrenímtakzvaných motiv ˚uvzhledu, pˇriˇcemžv souˇcasnédobˇejich je volnˇek dispozici nemalé množství. D ˚uležitýmaspektem kvalitního redakˇcníhosystému jsou dostupné nástroje a mechani- zmy pro tvorbu obsahu, pˇriˇcemžv této oblasti nabízí WordPress ˇraduzajímavých možností. Umožˇnujenapˇríkladchránit publikované ˇclánkyheslem, tvorbu pˇríspˇevk˚ua jejich auto- matizovanou pozdˇejšípublikaci, ocenit lze také možnost dˇelitpˇríspˇevkyna více stránek. Samozˇrejmostíje vkládání soubor ˚u, obrázk ˚ua jiných multimediálních dat do zveˇrejˇnova- 1. 13 4.1. NADSTAVBY SYSTÉMU ných ˇclánk˚u.Pˇríspˇevkymohou být ˇclˇenˇenydo kategorií a podkategorií, mohou být také oznaˇcoványs pomocí štítk ˚u.Ocenitelná je možnost ukládat pr ˚ubˇežnˇepracovní verze psa- ných pˇríspˇevk˚unebo bˇehem editace nahlížet na jejich výslednou podobu. Vítána m ˚užebýt také schopnost systému vytváˇretobsah s použitím desktopových aplikací implementujících rozhraní MetaWeblog6 nebo Blogger7. Pˇríspˇevkyv systému lze vkládat i s použitím elektro- nické pošty. Závˇerem je vhodné uvést, že systém disponuje kvalitním vlastním vyhledávaˇcem,pro- pracovaným systémem pro archivaci obsahu, pˇrijehož vytváˇreníje umožnˇenovyužít jazyka HTML. Uživatel m ˚užebýt informován o aktualitách systému elektronickou poštou a k dis- pozici je propracovaný systém pro správu komentáˇr˚u. 4.1 Nadstavby systému 4.1.1 Wordpres MU První zde zmínˇenérozšíˇrenízákladní verze systému nese oznaˇcníWordPress MU (Multi User). Uvažejeme-li samotný WordPress jako nástroj urˇcenýˇcistˇepro vedení blog ˚u,lze vi- dˇetjako jeho nedostatek skuteˇcnost,že v rámci jedné instalace umožˇnujevytvoˇritpouze jedinou instanci. U vˇetších komunit m ˚užebýt vhodné mít k dispozici nástroj umožˇnující uživatel ˚umvést své vlastní blogy, aniž by museli ˇrešitjakékoliv technické záležitosti týka- jící se instalace systému a jeho správy. Pro tento úˇcelbyl navržen systém WordPress MU, který vytváˇrípro každý jednotlivý web vlastní komunitu a umožˇnujeovládat ˇcimoderovat všechny blogy z jednoho místa. Na rozdíl od základní verze nemohou majitelé jednotlivých blog ˚udoplˇnovatsystém o zásuvné moduly a motivy vzhledu, avšak mohou vybírat z na- bídky, která je poskytnuta administrátorem systému. Mezi výhody z pohledu provozovatele lze ˇraditzejména možnost vytvoˇrithostitelské prostˇredípro komunitu uživatel ˚u,poskyto- vat prostor zdarma jako alternativu k placeným službám, zajistit bezpeˇcnostz jednoho místa nebo možnost libovolnˇenastavit prostˇredípro administraci. 4.1.2 BuddyPress BuddyPress je projekt založený na systému WordPress MU. Smyslem této nadstavby je po- sunout systém do oblasti, dnes tolik populárních, sociálních sítí. Jedná se o projekt relativnˇe mladý, nebot’ první verze byla oficiálnˇevydána v dubnu roku 2009. BuddyPress lze popsat jako sadu motiv ˚uvzhledu a zásuvných modul ˚udoplˇnujícíchWordPress MU pˇredevším o funkce pro komunikaci uvnitˇrkomunity publikujících. Konkrétnˇese jedná zejména o ná- sledná rozšíˇrení: Rozšírenéˇ profily Administrátor má možnost pˇridávatdo profilu uživatel ˚udoplˇnující pole, které jsou plnˇedefinovatelné vˇcetnˇetypu formuláˇrovéhoprvku. 6. 14 4.2. TECHNOLOGIE A TECHNICKÉ POŽADAVKY Osobní vzkazy Poskytuje základní funkcionalitu k zasílání textových zpráv mezi uživa- teli systému. Práteléˇ Jedná se o koncept u systém ˚utohoto typu bˇežný.Uživatel má možnost požádat jiného uživatele o vytvoˇrení vztahu pˇrátelství.D ˚usledkemm ˚užebýt napˇríkladzpˇrí- stupnˇeníneveˇrejnýchprofilových informací. Skupiny Systém v základním nastavení poskytuje veˇrejné,soukromé a skryté skupiny, v rámci kterých mohou ˇclenovékomunikovat. Sledování aktivit uživatel˚u Tato funkcionalita je navržená ke sledování aktivit jed- notlivých uživatel ˚uv rámci celého systému. Zejména v rámci verze 1.2 bylo zapra- cováno na netriválním konceptu, na základˇekterého lze sledovat široké spektrum aktivit a na patˇriˇcnýchmístech je žádoucím zp ˚usobemfiltrovat. Diskuzní fóra Nechybí ani jedna ze základních funkcionalit komunitních systém ˚u.Fóra jsou v systému vˇclenˇenado uživatelských skupin. BuddyPress je urˇcenzejména k vytváˇreníkomunitního prostˇredípro zájmové skupiny menšího až stˇredníhorozsahu, pro sociální sít’e velkého rozsahu vhodný není. Podrobnˇejší informace je možné nalézt na domovských stránkách8. Poslední verze systému byla uvol- nˇenav únoru roku 2010 a nese oznaˇceníBuddyPress 1.2. Na systému aktivnˇepracuje ˇrada dobrovolník ˚u,nˇekterározšíˇreníjsou nabízena zdarma, jiná za urˇcitýpoplatek respektive placené ˇclenstvív komunitˇe.Velice zajímavé informace o projektu lze získat z rozhovoru9, který se uskuteˇcnilv rámci veletrhu CeBIT v roce 2010. 4.2 Technologie a technické požadavky Základní systémové požadavky redakˇcníhosystému Wordpress jsou velmi nenároˇcné.Nej- novˇejšíverze pro sv ˚ujchod vyžaduje pouze interpretaci jazyka PHP verze 4.3 nebo vyšší a databázi MySQL alespoˇnve verzi 4.0. Pro bezproblémovou funkˇcnostsystému je doporu- ˇcenonastavit na webovém serveru hodnotu php_memory_limit alespoˇnna 32 MB. Zmí- nˇenáhodnota urˇcuje,kolik MB maximálnˇelze poskytnout skriptu jazyka PHP. Jako webový server je obecnˇedoporuˇcovánApache10, v rámci kterého je nutné mít aktivován modul mod_rewrite. 8. 15 Kapitola 5 Výbˇerplatformy pro implementaci Aˇckolivjiž v rámci zadání bylo vyžadováno využít pro implementaci redakˇcnísystém Wor- dPress, je vhodné zd ˚uvodnittuto volbu. D ˚uležitáje skuteˇcnost,že zadavatel preferoval vy- užít platformu založenou na tzv. LAMP technologiích, nebot’ má s tímto ˇrešenímznaˇcné zkušenosti. Pˇrestoje vhodné alespoˇnzmínit, že existuje celá ˇradavolnˇedostupných sys- tém ˚upro správu obsahu vytvoˇrenýchs použitím pokoroˇcilejšíchtechnologií. Jmenovat lze napˇríkladsystémy OpenCms1, jAPS2, Liferay3 ˇciDSpace4, které jsou napsány v jazyce Java a dokáží spolupracovat s celou ˇradoudatabázových systém ˚u,stejnˇejako napˇríkladDotNet- Nuke5, Umbraco6 nebo mojoPortal7, které jsou vytvoˇrenys použitím technologie ASP.NET. Tyto platformy se již ze své podstaty jeví jako vhodnˇejšípro návrh robustních a škálovatel- ných webových aplikací, nicménˇevýhodou systém ˚uzaložených na jednodušších technolo- giích jsou nižší nároky na prostˇredípro jejich provoz a široká základna programátor ˚u,kteˇrí tyto technologie plnˇeovládají a mohou systémy dále spravovat a vyvíjet. Kromˇepožadavk ˚una technologie je tˇrebabrát v úvahu skuteˇcnost,že zadáním je im- plementovat komunitní systém. Tento fakt je d ˚uležitýz toho d ˚uvodu,že urˇcitésystémy pro správu obsahu již ve svém jádru obsahují funkcionalitu pro tento druh webových apli- kací, pˇrípadnˇejsou pro nˇek dispozici moduly komunitní služby doplˇnující.Výˇcettakových platforem lze nalézt napˇríkladv [13]. Po urˇcitémzkoumání byly vybrány ˇctyˇriredakˇcní systémy, které se jeví jako vhodné pro ˇrešenízadaného úkolu. Kromˇevýše popsané plat- formy WordPress lze uvažovat Drupal8, který je obecnˇepovažován jako vhodné ˇrešenípro implementaci komplexních webových aplikací, a bude mu proto v této práci vˇenovánpro- stor. Totéž je možné ˇrício dalším uvažovaném systému, který je nazván Joomla9. Jedná se o velmi rozšíˇrenýprodukt, ke kterému lze snadno dohledat dostateˇcnémnožství informací. Z toho d ˚uvoduje zde jeho popis vynechán na úkor menších, nicménˇepro implementaci 1. 16 5.1. DRUPAL komunitních systému vhodných, platforem Elgg10 a ImpressCMS11. 5.1 Drupal Drupal je systém pro správu obsahu umožˇnujícítvorbu internetových ˇcasopis ˚u,blog ˚u,in- ternetových obchod ˚u,ale i komunitních a jiných komplexních systém ˚u.Oficiálnˇepodporo- vanými databázemi jsou MySQL a PostgreSQL, do nové verze se pˇripravujepodpora pro databázi Oracle. Drupal je postaven modulárním zp ˚usobema udává jako svou filozofii pˇre- hlednost kódu a otevˇrenostaplikaˇcníhorozhraní. Velkým kladem je dobˇrepromyšlená ar- chitektura databáze. V centru dˇenístojí jednotka zvaná node neboli jednotka obsahu, kterou m ˚užebýt pˇríspˇevekdo blogu, anketní otázka, bˇežnástránka nebo i vlastní definovaný typ. Ke každé této jednotce je umožnˇenopˇripojitkomentáˇre,m ˚užebýt syndikována v RSS12, zobrazovat ji lze r ˚uznýmizp ˚usobya m ˚užebýt i verzována. Výhodou tohoto návrhu je sku- teˇcnost,že moduly pracují s obsahem jednotnˇe.Vyzdvihnout lze také propracovaný systém autorizace uživatel ˚u.Jádro i moduly tˇretíchstran mohou definovat oprávnˇení,která daný uživatel musí mít, aby mohl vykonat urˇcitouˇcinnost.Lokalizace je základním zp ˚usobem vestavˇena.V rámci systému je monitorována a zaznamenávána veškerá aktivita, ˇcehožlze využít napˇríkladpro jednoduché statistiky návštˇevnosti.Pro generování vzhledu používá Drupal šablonovací systémy. Za zmínku stojí také integrované vyhledávání s možnostmi pro nastavení indexace. V neposlední ˇradˇeje nespornou výhodou tohoto redakˇcníhosys- tému poˇcetnáa aktivní komunita vývojáˇr˚u. V odstavci výše byly zmínˇenyaspekty, které ˇciníDrupal jedním z nejpopulárnˇejšícha velmi používaným. Mezi jeho slabiny lze naopak ˇraditskuteˇcnost,že není napsán na prin- cipu objektovˇeorientovaného pˇrístupu,nicménˇei v souˇcasnostiprocedurální model vý- vojáˇrihájí. Další výtkou m ˚užebýt málo graficky zajímavých motiv ˚uvzhledu v základní instalaci. Lze sice relativnˇesnadno vytvoˇritvzhled vlastní, ale ˇradaalternativních platforem disponuje širší nabídkou. V poˇcáteˇcníchfázích implementace je zpravidla nutné vˇenovat urˇcitéúsilí nalezení vhodných modul ˚u. Drupal není vhodný napˇríkladpro implementaci jednoduchého weblogu nebo systému pro diskusní fóra, nebot’ pro dosažení takovéto konkrétní funkcionality existují vhodnˇejší ˇrešení.Vhodný se naopak jeví pro implementaci komplexních webových aplikací. Potenciál Drupalu pro implementaci komunitních systém ˚unení malý. V ˇclánku[23] popisuje zkušený vývojaˇrErnest Lilley své pozitivní zkušenosti pˇrivývojí takového systému a lze zde nalézt i odkazy na literaturu, která je specializována právˇena vývoj komunitních systém ˚us po- mocí Drupalu. V ˇclánkuje rovnˇežuvedeno, že existuje celá ˇradapoužitelných modul ˚u.Jak autor v ˇclánkudále uvádí, implementace s použitím Drupalu vyžaduje urˇcitéúsilí zejména v poˇcáteˇcníchfázích, nicménˇeodmˇenoujsou jeho široké možnosti. Více o projektu Drupal obecnˇese lze doˇcístna jeho domovských stránkách13, nebo napˇríkladv ˇclánku[17]. 10. 17 5.2. IMPRESSCMS 5.2 ImpressCMS Jak se lze doˇcístv [10], ImpressCMS je možné použít jak pro implementaci rozsáhlé podni- kové komunitní sítˇe,tak napˇríkladi pro jednoduché systémy pro správu blog ˚u.Dle infor- mací z uvedeného zdroje je systém vysoce škálovatelný a lze jej nasadit napˇríkladv rámci interní sítˇepodniku pro 20 000 zamˇestnanc˚u,stejnˇetak jej lze ale použít pro sestavení jed- noduchých propagaˇcníchwebových stránek spoleˇcnosti.ImpressCMS se jeví jako velmi po- užitelný pro správu online komunit, nebot’ disponuje funkcionalitou pro vytváˇrenískupin a pˇriˇrazováníoprávnˇenípro správu jejich obsahu. Pro autentizaci uživatel ˚um ˚užebýt po- užito vlastního mechanizmu, kterým ImpressCMS disponuje, nebo lze využít systém pro správu uživatelských úˇct˚uLDAP. K dispozici jsou funkce pro bezpeˇcnoumanipulaci s da- tabázovým obsahem, nástroje pro validaci dat zadávaných s pomocí formuláˇr˚ua mnoho dalších bezpeˇcnostníchprvk ˚u.Registrovaní uživatelé mohou spravovat své profily, vybí- rat své vlastní motivy vzhledu a celkovˇemají k dispozici mnoho nástroj ˚upro pˇrizp˚usobení chování systému dle jejich potˇreb. ImpressCMS v souˇcasnédobˇepodporuje pouze databázový systém MySQL. Úvadˇenou silnou stránkou je znaˇcnámodularita, umožˇnujícíspravovat obsah právˇev rámci jednot- livých modul ˚u.Jako pˇríkladylze uvést moduly pro správu novinek nebo fotogalerií. Na domovských stránkách lze nalézt informace o široké komunitˇevývojaˇr˚u,nicménˇes komu- nitami redakˇcníchsystém ˚uDrupal, WordPress a Joomla tuto srovnávat zatím nelze. Pro- blematická m ˚užebýt lokalizace systému a jeho modul ˚u.Aˇckolivse lze doˇcísto podpoˇre širokého spektra jazyk ˚u,napˇríkladˇceskálokalizace pravdˇepodobnˇezatím neexistuje. Popisovaná platforma se jeví jako velmi zajímavá alternativa pro implementaci nejen ko- munitních systém ˚u.Za urˇcitounevýhodu lze považovat jeho menší rozšíˇrenost.Na druhou stranu je systém aktivnˇevyvíjen a je možné, že se stane velmi silným hráˇcem.V pˇrípadˇe,že by zadavatel nebyl orientován na systém WordPress, urˇcitˇeby bylo možné vážnˇejiuvažovat o použití tohoto systému pro implementaci zadaného ˇrešení. 5.3 Elgg Platforma Elgg je urˇcenapˇredevšímpro implementaci komunitních systém ˚u.V rámci zá- kladních modul ˚udisponuje Elgg funkcemi, které jsou pro nˇetypické. Jmenovat lze napˇrí- klad správu aktivit uživatel ˚ua jejich volnˇeupravovatelné profily. Systém obsahuje propra- cované funkce pro informování uživatel ˚uo dˇenív rámci sítˇe.Je v nˇemtaké zabudována podpora napˇríkladpro elektronickou poštu, ale i pro další alternativy a lze tak napˇríklad na- stavit informování s pomocí technologie SMS. Samozˇrejmostíje rozsáhlý systém pro správu skupin a jejich oprávnˇení,evidenci blog ˚u,možnost vkládat bˇežnédokumenty a multime- diální data. Za zajímavé lze považovat moduly pro vytváˇrenía ukládání stránek v hierar- chické struktuˇrea možnost urˇcit,kdo je m ˚užeˇcístˇcido nich m ˚užezapisovat. Díky propraco- vanému systému práv lze jednoduše ˇríditpˇrístupyjednotlivých úˇcastník˚uk obsahu. Každý systém postavený na Elggu disponuje výhodami pramenícími z technologií RSS, Open So- 18 5.4. SHRNUTÍ cial14, OpenID15, FOAF16, JSON17, serializované PHP nebo XML. V pˇredchozímodstavci byly popsány základní vlastnosti systému, nicménˇeje vhodné pokusit se odpovˇedˇetna otázku, ˇcímsystém vyniká. O shrnutí se pokusila Jane Hart ve svém blogu [9]. Dle tohoto ˇclánkuElgg nabízí kompletní sadu komunitních nástroj ˚upohromadˇea není tˇrebaspoléhat se na propojování externích nástroj ˚u.Dále vyzdvihuje vysokou úroveˇn zabezpeˇceníuchovávaných dat v rámci organizace a zejména obecnˇehomogenní komunitní prostˇredí.Dle uvedeného shrnutí je možné efektivnˇenasazovat systém v rámci interních sítí v organizacích a jedná se o kvalitní nástroj pro podporu vzdˇelávání,který m ˚užebýt nasazen v akademickém ˇciškolním prostˇredí.Stejnˇetak lze Elgg využít v oblasti otevˇrenýchsítí, napˇríkladpro komunikaci týmu programátor ˚u. Z dostupných informací se systém Elgg jeví jako vhodná platforma poskytující široké spektrum nástroj ˚upro komunitní systémy, nicménˇeotázkou z ˚ustává,jak problematické je další rozšiˇrovánísystému v pˇrípadˇepotˇreb.Komunita uživatel ˚ua vývojáˇr˚unedosahuje ta- kové velikosti, jako tomu je u výše popsaných systém ˚u.Lze tedy požadovat za žádoucí provést d ˚ukladnouanalýzu požadavk ˚una systém a použít jej pro implementaci v pˇrípadˇe, že poskytované nástroje jsou dostaˇcující. 5.4 Shrnutí V textu výše byly pˇriblíženyalternativní vybrané platformy, které se jeví jako vhodné pro implementaci komunitních systém ˚u.Souˇcástípopisu bylo i krátké shrnutí jejich potenciálu pro ˇrešenízadaného úkolu. Porovnání vybraných platforem dle aspekt ˚uzmínˇenýchve tˇretí kapitole lze shlédnout na obrázku 5.1. I z tohoto zjednodušeného srovnání lze vypozorovat silná a slabá místa jednotlivých systém ˚u.Pro implementaci použitý WordPress se jeví jako relativnˇekomplexní systém, jehož jádro poskytuje omezenou funkcionalitu, kterou lze roz- šiˇrovats použitím dostupných zásuvných modul ˚u.D ˚urazje kladen na pˇrívˇetivéuživatelské rozhraní a dostupná je nekomerˇcnípodpora. Systém disponuje základními bezpeˇcnostními prvky, pˇrípadnˇeje o požadovou funkcionalitu rozšíˇritelný.Za znaˇcnápozitiva lze považo- vat poˇcetnoukomunitu vývojáˇr˚u,lokalizaci jádra do ˇceskéhojazyka, otevˇrenostpro úpravu prezentaˇcnívrstvy a dostupnost ucelené komunitní nadstavby BuddyPress. Silnou stránkou alternativní platformy Drupal je její komplexnost, nicménˇeta m ˚užebýt v nˇekterýchpˇrípadechpˇrekážkou.Specifikovaný komunitní systém by bylo možné s použi- tím Drupalu implementovat, nicménˇepracnost by v takovém pˇrípadˇebyla pravdˇepodobnˇe vyšší než v pˇrípadˇeWordPressu. Obdobný závˇerlze úˇcinitpro platformu Joomla, kterou lze obecnˇepovažovat za velmi kvalitní systém pro správu obsahu. 14. 19 5.4. SHRNUTÍ Obrázek 5.1: Základní porovnání vybraných platforem 20 Kapitola 6 Vývoj a implementace systému WordPress Smyslem této kapitoly je pˇriblížitzáklady, které je žádoucí znát pro rozšiˇrováníjádra sys- tému WordPress. Doplˇnovánífunkcionality lze ˇrešitpatˇriˇcnýmiúpravami na úrovni zdro- jového kódu jádra, nicménˇetento pˇrístuppˇrinášíˇradukomplikací. Obecnˇeje proto žádoucí dodržovat principy uvedené v [24]. Pˇredpokladempro porozumˇenítextu je znalost relaˇc- ních databází a jazyk ˚uPHP a (X)HTML. Pro vývoj rozšiˇrujícíchmodul ˚uje dále vhodné ovládat techonologii CSS, skriptovací jazyk JavaScript a databázový systém MySQL. 6.1 Organizace zdrojového kódu Pˇristoupitke zdrojovým kód ˚umsystému WordPress lze snadno, nebot’ jsou veˇrejnˇedo- stupné v instalaˇcnímbalíˇcku.Samotná instalace je ˇrešenaumístˇenímtohoto balíˇckuna ser- ver a vykonáním instalaˇcníhoskriptu pˇriprvním naˇctení.Zmínˇenýskript zajišt’uje nasta- vení systému, zejména vytváˇrídatabázi pro uchovávání dat. Jedná se o webovou aplikaci využívající jazyk PHP a ˇcitelnostzdrojového kódu je na velmi vysoké úrovni. Pro pochopení fungování systému je vhodné otevˇrít ve webovém prohlížeˇciúvodní stránku a nahlédnout v koˇrenovémadresáˇrido obsahu souboru index.php. Zde je na- stavena konstanta sdˇelujícísystému, že má pracovat s motivy pro vzhled, a je zde zahrnut soubor, po jehož vložení dochází k naˇctenísystémového prostˇredía patˇriˇcnýchšablon. Takto lze systém dále procházet a v souborech se zdrojovými kódy sledovat, k ˇcemudochází. Co se dalšího obsahu koˇrenovéhoadresáˇretýká, je možné nalézt zde pomocné a konfigu- raˇcnískripty, jako napˇríkladˇrešenípro pˇrihlašováníuživatele, pˇridávánípˇríspˇevk˚uz elek- tronické poštovní schránky, registraˇcníformuláˇr,podporu pro technologie ATOM1, RSS2, OPML3 a další. Nˇekterézdejší skripty jsou oznaˇcenyjako nevhodné pro používání a k dis- pozici jsou pouze z d ˚uvoduzpˇetnˇekompatibility. V základní instalaci systému se dále na- chází tyto tˇripodadresáˇre: wp-admin Obsahem jsou soubory s komponentami a skripty pro adminstrátorské rozhraní. Dále zde lze nalézt adresáˇr css s definicí kaskádových styl ˚u,adresáˇr images pro 1. 21 6.1. ORGANIZACE ZDROJOVÉHO KÓDU použité obrázky, import pro skripty zajišt’ující import externích dat s použitím pat- ˇriˇcnýchtechnologií, includes obsahující aplikaˇcnírozhraní, pˇrípadnédalší kompo- nenty zahrnované do administrátorského rozhraní a adresáˇr js, ve kterém se nalézají externˇedefinované funkce jazyka JavaScript pro tuto sekci. wp-content Zdejším obsahem jsou adresáˇre plugins, ve kterém se nachází zásuvné mo- duly, themes s motivy vzhledu prezentaˇcnívrstvy systému a languages, do kte- rého jsou ukládány soubory s lokalizací. wp-includes Zde lze nalézt definice tˇríd,šablon a jiných skript ˚u,které jsou používány pˇripohybu na stránkách. Adresáˇrje takto nazván z toho d ˚uvodu,že k tˇemtosou- bor ˚umse nikdy nepˇristupujepˇrímo,ale jsou vkládány s pomocí funkcí include, require, respektive require_once jazyka PHP. Totéž platí pro adminstrátorské rozhraní. Kromˇezmínˇenýchsoubor ˚use zde nachází adresáˇre css, images, import, includes a js, jejichž obsah je obdobný jako ve výše popsaném adresáˇri wp-admin, avšak neváží se k administrátorskému rozhraní, nýbrž k bˇežnémuuživatelskému roz- hraní. 6.1.1 WordPress MU a BuddyPress Nadstavba WordPress MU zavádí do výše popsané struktury nové soubory, nicménˇeje- jich jednotlivý popis zde uveden nebude. Za upozornˇenístojí nový adresáˇr mu-plugins nacházející se ve složce wp-content. Je urˇcenpro zásuvné moduly podobnˇejako adresáˇr plugins, nicménˇepodstatnou odlišností je skuteˇcnost,že všechny zde nahrané moduly se systém pokusí aktivovat automaticky v rámci všech existujících instancí blogu, nelze je proto ovládat z administrátorského rozhraní. V kontextu této práce je d ˚uležitépˇriblížit,jak jsou organizovány zdrojové kódy komu- nitní nadstavby BuddyPress. Ta je koncipována jako zásuvný modul, který je k dispozici na domovských stránkách projektu4. Pro zprovoznˇenínadstavby je tˇrebanahrát uvedený mo- dul do adresáˇre wp-content/plugins a standardnˇejej aktivovat z administrátorského rozhraní koˇrenovéhoblogu. Samotná struktura soubor ˚use zdrojovými kódy je pˇrehledná. V koˇrenovémadresáˇrimodulu se nachází soubory obsahující aplikaˇcnírozhraní jednotli- vých komponent a adresáˇre,ve kterých se nalézají potˇrebnézdrojové soubory pro konkrétní komponenty. Obsahem tˇechtosoubor ˚ujsou zejména tˇrídydané komponenty, štítky šablon a pomocné tˇrídyˇcifunkce. V této fázi je také vhodné zmínit, jaké komponenty utváˇrísysté- movou nadstavbu BuddyPress. • activity zapouzdˇrujícífunkcionalitu aktivit v rámci systému • blogs zapouzdˇrujícífunkcionalitu blog ˚u 4. 22 6.2. DATOVÝ MODEL • core poskytující základní funkcionalitu nadstavby • forums zapouzdˇrujícífunkcionalitu diskuzních fór • friends zapouzdˇrujícífunkcionalitu propojování uživatel ˚ustavem pˇrátelství • groups zapouzdˇrujícífunkcionalitu uživatelských skupin • messages zapouzdˇrujícífunkcionalitu zpráv v rámci systému • xprofile zapouzdˇrujícífunkcionalitu uživatelských profil ˚u Již zmínˇenésoubory v koˇrenovémadresáˇrimodulu BuddyPress obsahují široké spek- trum funkcí pro pˇrístupk dat ˚umdaných komponent. V pˇrípadˇe,že je BuddyPress ˇrádnˇe zapojen, lze tyto funkce velmi efektivnˇevyužívat, aniž by bylo nutné znát datový model nadstavby, ˇcehožbylo velmi využíváno pˇriimplementaci rozšiˇrujícífunkcionality. Jako jed- noduchý a názorný pˇríkladz praktické ˇcástipráce lze uvést postup pro získání abecednˇe usporádaného seznamu pˇrátelpˇrihlášenéhouživatele, ˇcehožlze docílit napˇríkladnásledu- jícím zp ˚usobem: $friends = friends_get_alphabetically( $bp->loggedin_user->id ); foreach ( $friends[’users’] as $user ) { echo ’’ . $user->display_name . ’’; } Jedná se o podstatnˇezkrácenou ˇcástkódu, nicménˇelze vidˇet,jak jednoduše lze k ob- jekt ˚umpˇristupovat.Je ale nutné podotknout, že v rámci systému WordPress, respektive BuddyPress, lze jít ještˇeo úroveˇnvýše a používat štítky šablon, avšak tento mechanizmus bude popsán níže v kapitole zabývající se hloubˇejiaplikaˇcnímrozhraním. 6.2 Datový model V rámci této podkapitoly bude vˇenovánprostor nejdˇrívedatovému modelu jádra systému WordPress. V kontextu práce je d ˚uležitéznát datový model systému Wordpress MU, respek- tive nadstavby BuddyPress, avšak ty ze základního schématu vycházejí. V rámci nových verzí WordPressu dochází k urˇcitýmúpravám, avšak ty nebývají pˇrílišrozsáhlé. Modely popisované v této práci odpovídají verzi 2.9.1, resp. verzi 1.2 BuddyPressu. 6.2.1 WordPress Základní datový model je složen z deseti tabulek, pˇriˇcemžnˇekteréz nich obsahují atributy nevyužité v samotném jádru, ale jsou pˇripraveny pro pˇrípadnározšíˇrení.Význam tabulek 23 6.2. DATOVÝ MODEL Obrázek 6.1: Datový model systému Wordpress wp_comments, uchovávající veškeré komentáˇrev rámci instalace, a wp_links, spravující uložené odkazy, je zˇrejmý.Pro evidenci uživatelských úˇct˚uje k dispozici tabulka wp_users obsahující pole pro základní informace vážící se k danému uživateli. Pokud je zapotˇrebíevi- dovat informace další, není vhodné doplˇnovatje do této tabulky. Pro uvedený úˇcelje pˇri- pravena tabulka wp_usermeta, do které lze ukládat jakékoliv další údaje v podobˇetrojice identifikaˇcníˇcíslouživatele, klíˇcinformace a její hodnota. Tento jednoduchý model nabízí dostateˇcnéprostˇredípro ukládání potˇrebnýchdat. Již v rámci základní instalace jsou zde vkládány d ˚uležitézáznamy, jako jsou napˇríkladuživatelská oprávnˇení. Výše uvedený pˇrístupje využit rovnˇežpro ukládání pˇríspˇevk˚uv systému. Tabulka wp_ posts drží základní data, pro jakákoliv další je dostupná tabulka wp_postmeta. Zajímavý je rovnˇežzp ˚usob,jakým jsou drženy informace spojené s oznaˇcenímpˇríspˇevkuštítkem a jejich ˇclenˇenímdo kategorií. Základní informace o objektu jsou drženy v tabulce wp_terms. Z tohoto záznamu samotného není zˇrejmé,zda se jedná o štítek ˇcikategorii. Pro tento úˇcelje navržena tabulka wp_termtaxonomy, která teprve urˇcujetaxonomii daného záznamu. Na 24 6.2. DATOVÝ MODEL samotný pˇríspˇevekje pak navázán štítek ˇcikategorie pˇresrelaci wp_term_relationship. Poslední tabulkou je wp_options, ve které jsou ukládány veškeré volby nastavitelné v administrátorském rozhraní v podobˇetrojice identifikátor volby, její název a hodnota. Již v základní verzi systému WordPress je zde k dispozici atribut blog_id, nicménˇeten je vy- užíván až v rámci rozšíˇreníWordPress MU. Mechanizmus ukládání voleb bude podrobnˇeji popsán v kapitole zabývající se rozšiˇrovánímsystému. 6.2.2 WordPress MU Obrázek 6.2: Datový model systému Wordpress MU Úvodem je vhodné pˇripomenout,co systém Wordpress MU pˇrináší.Jedná se o rozšíˇrení redakˇcníhosystému WordPress, které umožˇnujespravovat více instancí blogu na jedné in- stalaci systému. V databázi je žádoucí ukládat údaje o každém vedeném blogu a dále je tˇreba držet informace týkající se organizace celého systému. Pro jednotlivé instance jsou v data- bázi vytvoˇrenytabulky odpovídající základnímu datovému modelu. Výjimky tvoˇrídvojice wp_users a wp_usermeta. Seznam uživatel ˚unení žádoucí spravovat pro každou instanci blogu zvlášt’, proto je uchováván jednotnˇe.Jelikož je tˇrebatabulky jednotlivých blog ˚uod- 25 6.2. DATOVÝ MODEL lišit, je každá uložena ve formátu wp_[id_blogu]_[název_tabulky]. Datový model je dále rozšíˇreno sedm dalších relací, které drží informace spoleˇcnépro celý systém. Za d ˚uležitoulze považovat tabulku wp_blogs, ve které jsou uchovávány záznamy o jed- notlivých instancích blogu v rámci celého systému. Tabulka wp_blog_versions slouží k ukládání jejich verzí na základˇestavu databáze, nicménˇepodrobnˇejšíinformace o tomto mechanizmu lze dohledávat velmi obtížnˇe.Co se tabulky wp_registration_log týká, jejím úˇcelemje ukládat záznamy o registracích uživatel ˚udo jednotlivých blog ˚uv rámci in- stalace. K dispozici je dále tabulka wp_signups evidující kompletní záznamy žádostí o re- gistraci do systému. Poslední tˇritabulky jsou navrženy pro pˇrípad,že je v rámci instalace systému WordPress MU provozováno více oddˇelenýchprostˇrední,nebo-li stránek s vlast- ními blogy a uživateli. V tabulce wp_site jsou uchovávány základní informace (doména, kontextová cesta), další potˇrebnéúdaje (napˇríkladnázev prostˇredí)jsou drženy v tabulce wp_sitemeta a s pomocí záznam ˚uz tabulky wp_categries lze evidovat kategorie pro jednotilvé stránky. 6.2.3 BuddyPress Komunitní nadstavba BuddyPress pˇridávádo základního datového schématu systému Wor- dPress MU celou ˇradunových záznam ˚u. Ctyˇritabulkyˇ byly navrženy za úˇcelemukládání dat o rozšíˇrenýchuživatelských profilech. Základní jednotkou jsou pole ukládané v wp_bp_ xprofile_fields sdružující konkrétní data o profilu uživatele, která lze nalézt uložené v tabulce wp_bp_xprofile_data. Pole mohou být dále sdružena do skupin, které jsou uloženy v wp_bp_xprofile_groups. Tabulka wp_bp_xprofile_wire již není v nových verzích využívána. V rámci verze BuddyPress 1.2 naopak získaly na významu tabulky pro ukládání aktivit, tedy konkrétnˇe wp_bp_activity a wp_bp_activity_meta pro rozši- ˇrujícíinformace. V kapitole výše již bylo zmínˇeno,že nadstavba BuddyPress umožˇnujepropojovat uživa- tele vztahem pˇrátelství.Pro tento vztah je vyˇclenˇenatabulka wp_bp_friends, ve které jsou drženy související informace. D ˚uležitouroli v systému mají uživatelské skupiny. Základní popisné údaje lze hledat v wp_bp_groups, pˇrípadnádalší metadata v wp_bp_groupmeta. Pro držení informace o ˇclenstvíuživatele ve skupinˇeje urˇcenatabulka wp_bp_groups_ members, ve které mohou být drženy napˇríkladinformace o zákazu vstupu konkrétního uživatele do skupiny nebo jeho role v ní. Tabulka wp_bp_groups_wire v nové verzi vyu- žívána není, nebot’ záznamy ve starších verzích zde ukládané jsou novˇevkládány do wp_ bp_activity. Systém BuddyPress drží informace o jednotlivých instancích blogu, respektive o jejich provázanosti s uživateli a pˇríspˇevky. V tabulce wp_bp_user_blogs je ukládán vztah nále- žitosti uživatele k urˇcitémublogu, v tabulce wp_bp_user_blogs_blogmeta další metain- formace k tomuto vztahu. Do tabulky wp_bp_user_blogs_posts jsou podobnˇeukládány vztahy mezi blogem, pˇríspˇevkema jeho autorem a v wp_bp_user_blogs_comments lze nalézt obdobnou informaci pro jednotlivé komentáˇre. Pro interní zprávy v systému jsou navrženy tabulky tˇri.Bˇežnézprávy jsou ukládány do 26 6.2. DATOVÝ MODEL Obrázek 6.3: Datový model systému BuddyPress wp_bp_messages_messages a lze je sdružovat do vláken s použitím atributu thread_id. Pro adresáty zpráv je poté k dispozici tabulka wp_bp_messages_recipients. Kromˇe bˇežnýchzpráv má administrátor systému možnost rozesílat takzvané pˇripomínky. Ty jsou šíˇrenymezi všechny uživatele a jsou ukládány v wp_bp_messages_notices. Poslední, doposud nezmínˇenou,tabulkou je wp_bp_notification. V té jsou ukládána oznámení upozorˇnujícíuživatele na d ˚uležitésystémové události. Takovým oznámením m ˚užebýt na- pˇríkladnová zpráva, žádost o pˇrátelství,pˇrizvánído skupiny a další. Tyto záznamy jsou drženy pouze do chvíle, než si uživatel oznámení pˇreˇcte. 27 6.3. APLIKACNÍROZHRAN͡ 6.3 Aplikaˇcnírozhraní V rámci této podkapitoly bude vˇenovánprostor rozšiˇrovánífunkcionality jádra systému WordPress. Jak bylo naznaˇcnov úvodu, zdrojový kód je otevˇrenpro úpravy, je proto teore- ticky možné libovolnˇejej doplˇnovat.Pokud by však byly tyto úpravy provádˇenypˇrímodo zdrojových kód ˚ujádra, naskýtá se celá ˇradakomplikací. Vývojáˇrm ˚užebrzy ztratit pˇrehled o provedených úpravách, což je také pˇredpokladempro další komplikaci, kterou je pˇrí- padný pˇrechodna novou verzi systému. V rámci pˇrechodudochází k pˇrepsánívelké ˇcásti zdrojových soubor ˚u,ˇcímžm ˚užedojít pˇrinejmenším ke ztrátˇeprovedených úprav. Naštˇestí je systém Wordpress navržen tak, že umožˇnujevývojaˇr˚umjej efektivnˇerozšiˇrovatvytváˇre- ním zásuvných modul ˚u.Ten je v [24] definován jako program nebo sada funkcí napsaných ve skriptovacím jazyce PHP, které pˇridávající specifickou funkcionalitu do jádra systému. Integrovat jej lze s pomocí pˇrípojnýchbod ˚u,které jsou systémem poskytovány v rámci apli- kaˇcníhoprogramového rozhraní. Pˇripojitnavržený modul k jádru systému je záležitost tri- viální. To také implikuje další nespornou výhodu zásuvných modul ˚u,kterou je jejich jed- noduchá distribuovatelnost. Více o této problematice se lze doˇcístv oficiální dokumentaci [24] a v publikaci [15], kde lze nalézt široké spektrum zajímavých informací. Pˇristudiu této problematiky bylo dále ˇcerpánoz publikace [19]. 6.3.1 Vývoj zásuvných modul ˚u Úvodem této ˇcástije vhodné uvést alespoˇnstruˇcnˇezákladní konvence pro tvorbu zásuv- ného modulu, které by mˇelybýt dodržovány zejména v pˇrípadˇe,že bude modul veˇrejnˇe distribuován. Novˇevytvoˇrenýmodul by mˇelbýt rozumnˇea nejlépe unikátnˇepojmenován, aby už z jeho názvu mohla být odhadnuta funkcionalita. Zdrojový kód modulu m ˚užebýt obsažen v jediném souboru, který by mˇelnést jeho název, nebo m ˚užebýt rozložen do více soubor ˚u.Hlavní soubor se zdrojovým kódem obsahující hlaviˇckuby mˇelbýt pojmenován stejnˇejako celý adresáˇr,který bude v rámci instalace vložen na patˇriˇcnémísto ve struktuˇre zdrojových kód ˚usystému WordPress. V pˇrípadˇeveˇrejnédistribuce je také vhodné dopl- nit soubor readme.txt s patˇriˇcnýmpopisem a uvedena by mˇelabýt i licence, pod kterou m ˚užebýt produkt šíˇren. Již bylo naznaˇceno,že každý zásuvný modul obsahuje hlaviˇcku.S její pomocí je systém WordPress schopen identifikovat samotnou existenci modulu a bez ní by nebylo možné jej aktivovat. Hlaviˇckaby mˇelaodpovídat následujícímu formátu: /* Plugin Name: Název zásuvného modulu Plugin URI: Domovská stránka zásuvného modulu Description: Krátký popis funkcionality Version: Verze modulu, napríkladˇ znacenaˇ jako 1.0 Author: Jméno autora Author URI: Autorova domovská stránka License: Krátké oznaceníˇ licence */ 28 6.3. APLIKACNÍROZHRAN͡ Podstatná je zejména pˇrítomnostpoložky popisující název. Pouze její pˇrítomnostje pˇredpo- kladem pro idnetifikaci modulu systémem. Žádoucí je uvést pˇrinejmenšímještˇepopis, který je zobrazován administrátorovi v sekci pro aktivaci zásuvných modul ˚u.Na obrázku 6.4 lze vidˇet,jak náhled modul popsaný výše vypadá. Obrázek 6.4: Zobrazení zásuvného modulu v administrátorském rozhraní 6.3.2 Háˇcky Mnoho zásuvných modul ˚usystému WordPress dosahuje své funkcionality s využitím tak- zvaných háˇck˚u(v jazyce anglickém hooks). Jedná se o mechanizmus umožˇnujícívolat funkce definované ve vytvoˇrenýchmodulech v pˇresnˇespecifikovaném okamžiku. Je-li naˇcítána stránka v prohlížeˇci,systém prochází všechny funkce, které jsou potˇrebnépro její vyge- nerování. Volané funkce je možné použít právˇejako háˇcky, s pomocí kterých lze pˇripojit požadovanou funkcionalu. Háˇckyjsou dˇelenydo dvou kategorií. Háckyˇ akcí (action hooks) Funkce pˇripojenák tomuto háˇckuje spuštˇenav okamžiku vyvolání urˇcitéudálosti systému WordPress. Ve zdrojovém kódu systému jsou pro vyvolání takových událostí pˇresnˇedefinovaná místa. Jako pˇríkladlze uvést vložení pˇríspˇevkunebo komentáˇre,odeslání elektronické pošty ˇcinapˇríkladobecná zmˇena v databázi. Háckyˇ pro filtry (filter hooks) Jsou používány k modifikaci obsahu napˇríklad v okamžiku vkládání textu na stránku nebo do databáze. Filtr tak m ˚užeupravit daný obsah v pˇresnˇepožadovaném okamžiku. Castoˇ se lze setkat se situací, kdy k dosažení stejného výsledku lze použít obˇez uve- dených možností. Pro lepší pˇredstavu,jak mechanizmus funguje, je vhodné demonstrovat použití tˇechtoháˇck˚u.Pro ukázku je vybrán fragment kódu, který je souˇcástízásuvného mo- dulu BCZ presenting group vytvoˇrenéhov rámci této práce, a jehož funkcí je rozšíˇrit systém skupin o nový druh. Komunitní nadstavba BuddyPress ve svém základním nasta- vení nabízí tˇridruhy skupin, které mají odlišnou viditelnost a politiku pro vstup uživatele. Do základního ˇclenˇenína veˇrejné,soukromé a skryté byl pˇridánnový typ, jehož nastavení je podobné skupinám veˇrejným.Rozdíl spoˇcíváve skuteˇcnosti,že do skupin nového typu mohou pˇrispívatpouze administrátoˇria moderátoˇri,role ˇradovýchˇclen˚uje pasivní, mohou pouze vidˇetobsah. Typ skupiny je ukládán v rámci její administrace s použitím patˇriˇcného 29 6.3. APLIKACNÍROZHRAN͡ formuláˇre,který je popisovaným zásuvným modulem rozšíˇrentak, aby byla nabízena mož- nost nastavit novˇepˇridanýtyp. Po naˇcteníformuláˇredo stránky vyvolá systém BuddyPress událost bp_after_group_settings_admin a právˇev tomto okamžiku je vhodné dopl- nit formuláˇr,ve kterém bude umožnˇenonový typ skupiny vybrat. Implementace funkce formuláˇrrozšiˇrujícím ˚uževypadat napˇríkladtakto: function bcz_add_presenting_group_form() {?> 5. 30 6.3. APLIKACNÍROZHRAN͡
Práce s filtry a jejich háˇckyse 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 upra- vená. Pˇríkladlze 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 úpra- vám je však tˇrebafunkci upravit. Pokud bude pˇrihlášenýmuživatelem administrátor nebo moderátor skupiny, chování funkce se nezmˇení,nicménˇepokud bude pˇrihlášenpouze její ˇclen,vrátí funkce speciální typ presenting, což dále zp ˚usobíomezení pro pˇridávánípˇrí- spˇevk˚udo skupiny. Popisovaná funkce m ˚uževypadat napˇríkladtakto: 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ˇrichytittuto funkci na patˇriˇcnýháˇcek.Filtr jako sv ˚ujparametr pˇrevezme text, který vrací funkce bp_get_group_status, a patˇriˇcnˇejej upraví. add_filter(’bp_get_group_status’, ’bcz_filter_group_status’);
Použití je relativnˇesnadné 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ýchs po- užitím háˇck˚upro akce ˇcifiltry dochází v okamžiku aktivace zásuvného modulu, ve kterém
31 6.3. APLIKACNÍ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ˇrebaspecifikovat konkrétní chování pˇriaktivaci, respektive deaktivaci zásuvného modulu. Typickým pˇríklademm ˚užebý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áˇckupˇrichycené.
6.3.3 Štítky šablon Úvodem této ˇcástije žádoucí pˇriblížitprincip šablon (templates) v systému WordPress. Jedná se technicky vzato o soubory ovládající zobrazení jednotlivých stránek. Získavají pat- ˇriˇcnéinformace z databáze a generují HTML kód, který zasílají webovému prohlížeˇci.S po- mocí tˇechtošablon lze vytváˇretnepˇrebenémnožství motiv ˚uvzhledu, které urˇcujípodobu prezentaˇcnívrstvy. Problematika šablon je relativnˇeobsáhlá a jelikož pˇredmˇetemtéto práce nebylo vytváˇreníšablon, pouze jejich úpravy, nebude této problematice vˇenovánovíce pro- storu. Štítky šablon (templatetags) jsou používany v rámci šablon systému WordPress k dyna- mickému zobrazní informací, pˇrípadnˇek úpravám stránek. Štítek je kód ˇríkajícísystému, aby nˇecoprovedl, respektive získal. Jejich jednoduché použití m ˚uževypadat napˇríklad takto:
Pˇriumístˇeníuvedeného fragmentu do šablony se systém na patˇriˇcnémmístˇepokusí zís- kat 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šinufunkcí pro dosupné štítky nalézt v souboru wp-includes/general-template.php. V pˇrípadˇepo- tˇrebydefinovat vlastní štítky staˇcívytvoˇritpožadované funkce v rámci zásuvného modulu. Za speciální pˇrípadvyužití tˇechtoštítk ˚ulze považovat mechanizmus smyˇcek,zavedený již v základní verzi systému WordPress, ve kterém je urˇcenvýhradnˇepro výpis pˇríspˇevk˚u, avšak smyˇckyjsou 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ˇcekbyl pˇriimplementaci výsledného systému velmi ˇcastopoužíván. Jako pˇríkladpoužití štítk ˚ušablon a smyˇceklze uvést zjednodušený fragment kódu, který zajišt’uje výpis aktuálnˇepˇrihlášenýchuživatel ˚u.
7.
32 6.3. APLIKACNÍROZHRAN͡
Výhodou tohoto ˇrešeníje znaˇcnéulehˇcenía znovupoužitelnost definovaných štítk ˚u.Jak lze vidˇetv ukázce výše, seznam vypsaných záznam ˚ulze ovlivnit s pomocí takzvaného filtru pˇredanéhojako parametr funkci bp_has_members. Použitý filtr type=online&max=20 omezí vypsané ˇclenyna momentálnˇepˇrihlášenéa jejich poˇcetna hodnotou dvacet. Jaké parametry lze do filtru pˇredávatje tˇrebapro 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ˇeukládat data do databáze. Existují v principu tˇripˇrístupy, jak tento problém ˇrešit.
• Použití mechanizmu voleb, který bude níže podrobnˇejipopsán. Jedná se o vhodné ˇrešenípro ukládání relativnˇemalého množství dat zejména v pˇrípadˇe,že se neoˇce- kávají ˇcastézmˇenyuložené informace. Využito bylo tohoto mechanismu napˇríklad pˇriimplementaci 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 ˇrešeníje vhodné pro ukládání dat spoje- ných s jednotlivými uživateli, pˇríspˇevkyˇcistránkami. Pˇresnˇejibyl tento princip uklá- dání dat pˇriblíženv kapitole zabývající se datovým modelem. V základní verzi sys- tému WordPress i v komunitní nadstavbˇejsou 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é ˇcinímanipulaci s metainformacemi velmi snadnou. Tˇechtotabulek bylo pˇriimplementaci využíváno relativnˇeˇcasto,konkrétnˇelze toto ˇrešení shlédnout na- pˇríkladve 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ˇce- káváno velké množství ukládaných dat, ˇcitato data nelze rozumnˇeasociovat s da- tovými záznamy v základním databázovém modelu. V rámci implementace nebylo tˇrebanové tabulky vytváˇret,nicménˇenapˇríkladve zdrojovém kódu zásuvného mo- dulu BCZ blogs widget lze shlédnout následující ˇrešenívkládající sloupec do ta- bulky 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 )
33 6.3. APLIKACNÍROZHRAN͡
$wpdb->query(’ALTER TABLE wp_blogs ADD mainpage ’. ’TINYINT NOT NULL DEFAULT "0"’); } register_activation_hook( __FILE__, ’BCZ_MP_blogs_plugin_activate’ );
Jak bylo výše naznaˇceno,systém WordPress disponuje mechanizmem pro ukládání, ak- tualizaci a získávání dat, které jsou oznaˇcoványjako volby. Takovéto volby mohou být dr- ženy ve formˇetextových ˇretˇezc˚u,datových polí nebo objekt ˚ujazyka PHP, které budou se- rializovány nebo pˇreloženydo textových ˇretˇezc˚upˇredsamotným uložením. Názvy voleb musí být unikátní, na což je tˇrebabrát zˇretelpˇritvorbˇezásuvného modulu. Nejˇcastˇejipou- ží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ˇepopsány v dokumentaci10. Volby spravované s použitím tohoto mechanizmu jsou ukládany do ta- bulky 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ˇesociálních sítí, ke komunikaci mezi uživateli, sdílení multimediálních dat a udržování vztah ˚u.P ˚uvodnˇe byl navržen pro studenty Harvardské univerzity, nicménˇetato služba se velmi rychle rozší- ˇrilamezi širokou veˇrejností.V prosinci roku 2007 se stal Facebook s padesáti sedmi milióny aktivními ˇclenystránkou s nejvˇetšímpoˇctemuživatel ˚umezi 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 nez ˚ustáváv tomto trendu pozadu, vývoj zdejší ná- vštˇevnostistránky
Obrázek 7.1: Návštˇevnostwebových stránek www.facebook.com z CRˇ (Google Trends)
Vzhledem k rozšíˇrenostia neustále rostoucí popularitˇeaplikace Facebook je logické, že upoutává pozornost komerˇcníchsubjekt ˚u,které se snaží využít potenciálu vysokého poˇctu uživatel ˚u.Facebook disponuje velmi kvalitním aplikaˇcnímrozhraním a lze tak jeho služby integrovat s firemními weby nebo elektronickými obchody, což umožˇnujenapˇríkladzobra- zovat obsah této aplikace na stránkách spoleˇcnostinebo publikovat na Facebooku vlastní obsah a pˇrilákattím potenciální zákazníky. V rámci základního rozdˇelenílze uvažovat dva zp ˚usoby, kterými je možné služby apli- kace Facebook integrovat. První možnost je zprovoznit vlastní aplikaci pˇrímov prostˇredí systému Facebook. Druhou možností je implementace aplikaˇcníhorozhraní Facebook Con-
35 7.2. TWITTER nect, které umožˇnujeintegraci služeb platformy Facebook do vlastní aplikace. S pomocí tohoto aplikaˇcníhorozhraní lze návštˇevník˚umstránek nabídnout napˇríkladmožnost zasí- lání dat do sítˇeFacebook, komunikaci s jejich pˇráteli,pˇrenosúdaj ˚uz uživatelského profilu na vlastní stránky nebo možnost registrace a pˇrihlášenís využitím úˇctuv síti Facebook.
7.2 Twitter
Pˇeknoudefinici této služby lze nalézt v [22], kde je Twitter popsán jako poskytovatel soci- ální sítˇea mikroblogu, který umožˇnujeposílat a ˇcístpˇríspˇevkyzaslané jinými uživateli. Tyto textové zprávy jsou nazývány tweety a jejich délka je omezena na 140 znak ˚u.Pˇrispˇevatelé mohou omezit doruˇcovánípˇríspˇevk˚upouze na okruh svých pˇrátel,nebo povolit pˇrístupko- mukoliv. Uživatelé zasílají nebo odebírají tweety na webové stránce služby Twitter prostˇred- nictví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ˇcitnapˇríkladˇclá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ˇez d ˚uvodurostoucí popularity došlo k rozhodnutí využívat tuto službu v rámci ak- tivit 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ˇevnostwebové stránky
Obrázek 7.2: Návštˇevnostwebových stránek www.twitter.com z CRˇ (Google Trends)
Co se aplikaˇcníhorozhraní služby Twitter týká, k dispozici jsou v hrubém rozdˇelení tˇrivarianty. Dvˇez tˇechtovariant jsou založené na pˇrístupuREST (Representational State Transfer) a tˇretíje založena na proudovém zpracování. Existence dvou aplikaˇcníchrozhraní, které jsou založeny na stejném principu, je dána historickými d ˚uvody, nicménˇev budoucnu by mˇelybýt sjednoceny. S použitím jejich metod mohou vývojáˇripˇristupovatk základním
1.
36 7.2. TWITTER dat ˚umslužby Twitter, jako jsou napˇríkladinformace o uživatelích nebo stavová data. Prou- dové aplikaˇcnírozhraní nabízí oproti uvedenému pˇrístupupodporu pro déle trvající pro- pojení v témˇeˇrreálném ˇcase.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ˇcnostAbstract s.r.o., která v rámci svých aktivit pro- vozuje 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íkyv široké problematice bydlení. Firmám p ˚usobícímv této oblasti nabízí prostor pro reklamu a možnost informovat o svých produktech ˇciaktivitách. Pomyslnou první fází projektu implementace komunitního systému pro portál Bydlení.cz byl vstup subjektu do sítˇeFacebook, kde byly vytvoˇrenystránky spoleˇcnosti.Úˇcelemtohoto kroku bylo mimojiné monitorovat potencionální komunitu uživatel ˚u.Po ˇctyˇrechmˇesícíchse pr ˚umˇernátýdenní návštˇevnoststránek pohybuje okolo hodnoty 400 návštˇeva stránku jako svou oblíbenou oznaˇcilo191 uživatel ˚utéto sociální sítˇe.Zdejší pˇríspˇevkyse skládají pˇre- vážnˇeze zajímavých odkaz ˚uspojených s tématikou bydlení a zpravidla odkazují na ˇclánky internetového magazínu Bydlení.cz. Pro spoleˇcnostbyl rovnˇežvytvoˇrenprofil v komunitní síti Twitter, nicménˇedoposud není využíván, do budoucna se však poˇcítás propagací novi- nek využitím této služby.
8.1 Analýza
Úvodní myšlenkou projektu bylo vytvoˇritsystém, který umoží návštˇevník˚umportálu Byd- lení.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ˇe- ní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 autor ˚umobsahu prezentovat svou ˇcinnost,ˇcímžse dostanou blíže ke ˇctenáˇr˚um.
8.1.1 Uživatelé systému a pˇrípadyužití
Aˇckolivv rovinˇetechnické bude zp ˚usobpoužívání systému jednotlivými uživateli obdobný, je vhodné pˇriblížit, za jakým úˇcelembude široké spektrum uživatel ˚use systémem pracovat. Jedná se o bˇežnouwebovou aplikaci, uživatelé budou se systémem pracovat pˇreswebové rozhraní s použitím internetového prohlížeˇce.Níže popsané skupiny aktér ˚uodpovídají vý- sledné pˇredstavˇezadavatele.
38 8.1. ANALÝZA
Obrázek 8.1: Pˇrípadyužití každého uživatele systému
Redakce a další zamestnanciˇ internetového magazínu Redakce bude systém využívat pro svou interní komunikaci. Úˇcelemnení poskytnout pouze interní komu- nikaˇcníprostˇredek,nýbrž i nástroj umožˇnujícízprostˇredkovatˇcinnostredakce samot- ným ˇctenáˇr˚um.Další zamˇestnanci,kterými jsou napˇríkladprogramátoˇriˇcitechnická podpora, mohou využívat systém zejména pro svou interní komunikaci, ale i pro ko- munikaci s dalšími uživateli komunitního systému, stejnˇejako ˇclenovéredakce.
Ctenᡠriˇ Pro samotné ˇctenáˇreinternetového magazínu bude systém poskytovat prostˇre- dek pro sledování novinek prezentovaných redakcí, ale zajména nástroj pro získá- vání kontakt ˚una konkrétní komerˇcníi nekomerˇcnísubjekty a osoby se stejnou ob- lastí zájmu. Zároveˇnbudou bˇežnýmˇctenáˇr˚umzpˇrístupnˇenyinformace prezentované jinými subjekty, napˇríkladformou specializovaných stránek.
Odborníci Se souˇcasnýmportálem Bydlení.cz spolupracuje celá ˇradaodborník ˚u,kterým systém nabídne prostˇredípro jejich prezentaci a sdˇelováníinformací. Uvažovat lze napˇríkladodborníky z oblasti výstav a veletrh ˚uˇcionline konzultanty, kteˇríbudou moci dávat cenné rady z r ˚uznýchoblastí bˇežnýmnávštˇevník˚um(ˇctenáˇr˚um)interne- tového magazínu.
Spolupracující firmy Systém poskytne prostˇredípro zainteresované obchodní part- nery, kteˇríjej budou moci využít k snadnému získávání kontakt ˚u.Dále budou moci v pˇrípadˇezájmu pˇrímokontaktovat patˇriˇcnýsubjekt. Pro firmy bude žádoucí vytvo- ˇrittakové prostˇredí,aby se v nˇemsnadno orientovaly a aby pro nˇecesta k hledanému
39 8.1. ANALÝZA
Obrázek 8.2: Pˇrípadyužití administrátora systému
obchodnímu partnerovi bylo co nejsnažší. Z této skupiny aktér ˚ulze jmenovat napˇrí- klad objednatele reklamních služeb, mediální agentury ˇciprodejce. V neposlední ˇradˇe mohou oslovovat potenciální zákazníky.
Specifické subkomunity Komunitní systém mohou dále používat specifické subko- munity. Specifické mohou být v tom smyslu, že ve své podstatˇenejsou pˇrímýmiuži- vateli služeb portálu Bydlení.cz, nicménˇeurˇcitývztah k nˇemumají. Jmenovat lze na- pˇríkladr ˚uznáspoleˇcenstvívlastník ˚ubytových jednotek, kterým m ˚užebýt nabídnuto prostˇredípro jejich komunikaci.
Výše byly popsány potencionální skupiny uživatel ˚uimplementovaného systému. Na obrázcích 8.1 až 8.6 lze shlédnout diagramy pˇrípad˚uuž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ém ˚udo sítí Facebook a Twitter. Dále je uve- den pˇrípadužití pro obecného uživatele systému, který znázorˇnujemožnosti všech aktér ˚u. V této souvislosti je také vhodné zd ˚uraznit,že množiny uživatel ˚unejsou disjunktní, tedy napˇríkladosoba zastupující urˇcitýsubjekt m ˚uževystupovat v roli odborníka na konkrétní oblast.
40 8.1. ANALÝZA
Obrázek 8.3: Pˇrípadyužití zamˇestnancespoleˇcnostiAbstract s.r.o.
8.1.2 Formy komunikace
Umožnit efektivní komunikaci je základním posláním komunitních systém ˚u.Cílem pro na- vrhovaný systém je vytvoˇrittakové komunikaˇcníprostˇredí,které bude umožˇnovatsnadno vyhledat adresáta pro dané sdˇelenía poté s ním komunikovat formou, která je v rámci da- ného požadavku vhodná. Nˇekdyse m ˚užejednat o komunikaci ˇcistˇeprivátní, jindy je naopak žádoucí šiˇritzprávu mezi širokou skupinu adresát ˚uˇciinformaci veˇrejnˇezpˇrístupnit.
Komunikace v rámci skupin Uživatel ˚umbude umožnˇenosdružovat se do skupin, které m ˚uževytváˇreta spravovat administrátor systému. Clenovéˇ tˇechtoskupin mohou vkládat d ˚uležitáoznámení, která jsou viditelná ˇclen˚uma dle nastavení skupiny pˇrí- padnˇedalším uživatel ˚um.V základním nastavení nabízí systém BuddyPress veˇrejné skupiny, do kterých m ˚užekdokoliv vstoupit, pˇridávatnová oznámení a ˇcístaktua- lity. Dále jsou k dispozici skupiny soukromé, do kterých je tˇrebažádat o ˇclenstvía jejich obsah je pˇrístupnýpouze ˇclen˚um.Nejvíce chránˇenýmtypem skupin jsou sku- piny 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šíˇreno skupiny chovající se jako veˇrejné,avšak jejich obsah budou moci tvoˇritpouze administrátoˇria mode- rátoˇri.Taktéž bude zaveden mechanizus, který umožní zvýšit d ˚uležitostvybraných skupin, aby byly snadnˇejipˇrístupné.Poˇcításe rovnˇežs možností ˇclenitskupiny do kategorií a možností spravovat dokumenty v rámci skupiny.
Interní zprávy Jedná se o zp ˚usobkomunikace mezi dvˇemauživateli a lze jej oznaˇcit jako alternativu elektronické pošty. Uživatel m ˚užesvé konverzace základním zp ˚u- sobem spravovat. Správce celého systému má možnost rozesílat d ˚uležitáoznámení všem uživatel ˚um.
41 8.1. ANALÝZA
Obrázek 8.4: Pˇrípadyužití ˇctenáˇremagazínu Bydlení.cz
Obrázek 8.5: Pˇrípadyužití oborníka na urˇcitouproblematiku
Diskuzní fóra V rámci každé skupiny bude umožnˇenovytváˇretdiskuzní vlákna, do kterých mohou pˇrispívatˇclenovéskupiny. Ti mohou d ˚uležitáoznámení pˇridávatna zed’ skupiny, nicménˇezde by se mˇelynacházet pouze d ˚uležitéaktivity v rámci sku- piny, nikoliv tématické diskuze. V pˇrípadˇeveˇrejnýchskupin budou tyto diskuzní fóra pˇrístupnávšem uživatel ˚um.
Chat V systému nebude chybˇetani možnost komunikace uživatel ˚uv reálném ˇcase.Za vhodné lze považovat ˇrešní,které umožní skupinovou i privátní komunikaci.
Príspˇ evkyˇ na stránkách Systém WordPress MU umožˇnujevytváˇretblogy uživatel ˚u. 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ípadyužití spolupracující firmy
nebude bránˇenouživatel ˚umvést v rámci systému vlastní blogy, nicménˇekoncept blog ˚ubude pˇrevedenna koncept stránek (proto budou dále v práci blogy oznaˇco- vány jako stránky). Jejich úˇcelembude umožnit prezentovat ˇclánkyˇcijiná souvislejší oznámení. Tyto stránky budou mít vlastní motivy vzhledu a dle nastavení budou pˇrístupnéveˇrejnˇeˇcipouze vybraným uživatel ˚um.V základní verzi systému Buddy- Press jsou blogy a uživatelské skupiny oddˇelenáprostˇredí,což bude zapotˇrebízmˇenit a nalézt vhodné ˇreš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 tweet ˚u.Obdobnˇebude systém umožˇnovatvkládat pˇríspˇevkyna zed’ stránky portálu Byd- lení.cz v aplikaci Facebook. Bˇežnýmuživatel ˚umbude dále umožnˇenopˇrihlášenía registrace do systému s použitím jejich úˇctuv síti Facebook. Jedná se o velmi elegantní myšlenku, jak uživatele nezatˇežovatzdlouhavými procesy registrace, respektive pˇrihlašování.Službu Fa- cebook dnes využívá v Ceskéˇ republice velké množství uživatel ˚u,zároveˇnpro provozova- tele 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ˇenojejí modulární rozdˇelenína urˇcitékomponenty. Konkrétnˇese jedná o mo- duly 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ˇeorganizovány, mají svou vnitˇrnístrukturu a systému poskytují urˇcitározhraní pro práci s nimi. Obrázek 8.7 zná- zorˇnujepro 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 tak- zvaná témata ˇcimotivy 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ídiagram ˚uv této práci týká, inspirace byla nalezena v ˇclánku [18]. U jednotlivých novˇenavržených komponent jsou uvedeny soubory, ve kterých se na- lézají jejich zdrojové kódy. Dále je uvedeno, zda se jedná pouze o rozšiˇrujícífunkce ˇcitˇrídy. Použité moduly tˇretíchstran jsou v diagramech uvádˇenypouze v souvislosti s vlastními rozšíˇreními.Zavedena je v rámci této práce konvence, dle které jsou komponenty nad- stavby BuddyPress barvy oranžové, nová vlastní rozšíˇreníbarvy zelené, moduly tˇretích stran barvy ˇcervenéa pˇrípadnékomponenty jádra systému WordPress jsou znaˇcenymodˇre. Názvy komponent nejsou v rámci diagram ˚upˇrekládánydo ˇceskéhojazyka a z d ˚uvodukon- zistence jsou i popisné informace v anglickém jazyce. Na obrázku 8.8 lze shlédnout diagram popisující implementované komponenty uživa- telského rozhraní, které byly navrženy za úˇcelemzprostˇredkovatna patˇriˇcnýchstránkách informace o pˇridružené skupinˇe.Koncept propojení stránek a skupin byl již naznaˇcenvýše
44 8.1. ANALÝZA
Obrázek 8.9: Komponenty uživ. rozhraní na hlavní stránkce a podrobnˇejibude popsán v kapitole zabývající se implementací systému. Pomocníkem pˇri ˇrešenítohoto úkolu je zásuvný modul Groupblog1, jehož autorem je dvojice Rodney Ble- vins a Marius Ooms. S novˇevytvoˇrenýmimoduly pˇrímopropojen není, nicménˇeukládá do databáze záznamy o vazbách mezi skupinami a stránkami, které jsou v novˇevytvoˇrených zásuvných modulech využívány. Na obrázku uvedené moduly získávají informaci o sku- pinˇepˇridružené ke stránce, na které zobrazují žádané informace. Jaké informace jednotlivé komponenty na stránce vypisují lze intuitivnˇeodhadnout z jejich názvu, podrobnˇejšípopis bude k dispozici níže. Tyto moduly nejsou urˇcenyk aktivaci na hlavní stránce (koˇrenovém blogu). Diagram na obrázku 8.9 znázorˇnujediagram 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ˇre- nový blog). Zde lze nalézt veškerou komunitní funkcionalitu. Modul BCZ whos online widget je pouze urˇcitýmrozšíˇrenímzákladní komponenty pro zobrazování pˇrihlášených uživatel ˚u.Dále byla vytvoˇrenakomponenta 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ˇevkyze všech stránek, pˇriˇcemžna jednotlivých skupinách vybírá pouze pˇríspˇevkyz pˇridružené stránky (pokud existuje). Modul MPO Activity filter zajišt’uje, aby se aktivity ˇrádnˇevypisovaly uživatel ˚umv 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á- znam ˚uze systému do služeb Facebook a Twitter. Pro tento úˇceljsou k dispozici dva zá- suvné moduly. První je nazván BCZ tweets a ˇrešíexport vybraných aktivit v systému. Mo- dul využívá službu bit.ly2 pro zkracování odkaz ˚uve zprávách. Pro modul BCZ Facebook publisher, který komunikuje se službou Facebook, je použito knihovny Facebook Platform
1.
45 8.2. IMPLEMENTACE
Obrázek 8.10: Komponenty pro export do služeb Facebook a Twitter
PHP5 client, stejnˇetak tuto knihovnu využívá modul WP FB Autoconnect, zajišt’ující možnost registrace a pˇrihlašováníuživatel ˚us použitím jejich úˇctuv síti Facebook. Poslední zde uvedený diagram 8.11 vyobrazuje zbylé významnˇejšíimplementované kom- ponenty. 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 zp ˚usobem,který byl popsán výše, a komponenty BCZ friends on adminbar, respektive BCZ groups on adminbar, jsou navrženy za úˇcelemsnadnˇejšího pˇrístupudo patˇriˇcnýchsekcí. Modul BCZ member roles rozšiˇrujeuživatelské rozhraní o výpis rolí uživatel ˚u.
8.2 Implementace
Závˇereˇcnáˇcásttéto práce je vˇenovánavybraným kapitolám implementace systému. Zámˇe- rem je srozumitelnˇepˇriblížitpostup pˇriimplementaci a základní principy vybraných rozší- ˇrenísystému. Vytvoˇrenobylo šestnáct nových zásuvných modul ˚u,které rozšiˇrují,respektive upravují základní funkcionalitu, a použito bylo dvanácti modul ˚utˇretíchstran. Popis tˇechto rozšíˇrenílze nalézt v pˇríloze A. Primární snahou pˇriimplementaci bylo dodržovat výše po- psanou 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 im- plementace bylo použito verze 2.9.2. Dalším d ˚uležitýmstavebním kamenem je komunitní nadstavba BuddyPress ve verzi 1.2.3. Jádro systému WordPress je lokalizováno do ˇceského jazyka, BuddyPress nikoliv, avšak pro lokalizaci je pˇripraven.Systém WordPress používá pro pˇrekladbalíˇcek gettext3, stejnˇetak by mˇelabýt dle konvencí ˇrešenalokalizace zásuv- ných modul ˚u.Detailní popis mechanizmu pro pˇrekladtextu lze nalézt v oficiální dokumen- taci 4, pˇrípadnˇev ˇclánku[25]. D ˚uležitýmaspektem je nastavení vzhledu webové aplikace. V pˇrípadˇenadstavby Bud- dyPress je tˇrebapoužít šablony pro ní rozšíˇrené,šablony dostupné pro systém WordPress nejsou dostaˇcující.Pˇrivytváˇrenímotivu vzhledu pro implementovaný systém bylo vyu- žito šablony dodávané s instalací komunitní nadstavby. Ta byla urˇcitýmzp ˚usobemupra- vena, aby byl vzhled sjednocen s podobou stránek internetového magazínu Bydlení.cz (au- torem základních úprav byla Simona Moise, toho ˇcasuzamˇestnanecspoleˇcnostiAbstract s.r.o.). Kromˇeúpravy vizuální podoby bylo bˇehemimplementace tˇrebaprovést ˇradudalších úprav. Zmínit lze napˇríklad vlastní ˇrešenívýchozí stránky, která je vytvoˇrenajako pˇrehle- dová sekce, a za tímto úˇcelemdošlo k rozdˇelení na oblast o tˇrechsloupcích, do kterých je možné vkládat dle libosti vybrané komponenty uživatelského rozhraní. Rešeníˇ s použitím
3.
47 8.2. IMPLEMENTACE funkcí dynamic_sidebar5 a register_sidebars6 lze shlédnout v souborech bcz-bp- theme/functions.php, respektive bcz-bp-theme/index.php. Výhodou tohoto pˇrí- stupu je otevˇrenoststránky pro vkládání libovolného obsahu, který je ˇrešenformou kompo- nent 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živatel ˚u,nicménˇetuto funkcionalitu bylo zapotˇrebíurˇcitýmzp ˚usobemupravit. Skupiny m ˚užev systému vytváˇret každý pˇrihlášenýuživatel, ˇcímžm ˚užerychle vzniknout nepˇrehlednémnožství seskupení. Za jádro ˇrešeníuvedeného problému lze považovat nalezení funkce spravující vytváˇrení skupin a pˇripojenínapˇríkladná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.
48 8.2. IMPLEMENTACE
V pozdˇejšíchfázích implementace došlo k vydání komplexního zásuvného modulu, který ˇrešíproblém obdobným zp ˚usobem.Jeho kvalita spoˇcívázejména v propracovaném administraˇcnímrozhraní a modul umožˇnujeprostˇrednictvímpˇripravenéhoformuláˇrena- stavit, kterým uživatel ˚umbude tvorba skupin umožnˇena.Popis tohoto nastavení lze nalézt v administrátorské pˇríruˇcce(pˇrílohaA). 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áˇck˚u filtr ˚ua akcí byl naznaˇcenpostup ˇrešenítohoto problému. Kompletní ˇrešenílze shlédnout v modulu BCZ presenting group, jehož pˇrehlednýa komentovaný zdrojový kód lze nalézt na pˇriloženémCD. Pro kategorizaci skupin byl vytvoˇrenmodul BCZ group categories. Správa katego- rií není ˇrešenajednotným administraˇcnímrozhraním, nýbrž v rámci administrace jednot- livých skupin. Toto ˇrešenícelý proces správy kategorií zjednodušuje. Pro kategorie nebyla vytvoˇrenaspeciální datová struktura, jsou ukládány do tabulky wp_bp_groupmeta jako textové ˇretˇezcepod klíˇcem bcz_group_categories. Jelikož jedním z úˇcel˚usystému je zpˇrístupnituživatel ˚uminformace od odborník ˚uz ur- ˇcitýchoblastí, byl zaveden mechanizmus pro speciální oznaˇcovánískupin jako odborné. Za tímto úˇcelembylo navrženo rozšíˇrení BCZ expert group, které umožˇnujeadministráto- rovi skupinu oznaˇcitpˇ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ˇenyz administraˇcnílišty, což je im- plementová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 ˇclánk˚u v celém systému s použitím vytvoˇrenéhomodulu BCZ recent posts widget. V rámci analýzy byl zmínˇenmodul Groupblog vytváˇrejícívazbu mezi stránkami a skupinami, pˇri- ˇcemž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 ˇclánk˚upouze z pˇridružených stránek. Ke zjištˇenískuteˇcnosti,zda se uživatel na- chází ve skupinˇea zda je ke skupinˇepˇ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 ’Pridruž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 ˇclánk˚u z konkrétních stránek. Podoba celého filtru pro smyˇckuaktivit je následující:
}
Pro uvedený výpis je rovnˇežžádoucí ošetˇrit,aby nebyly všem uživatel ˚umzobrazovány ˇclánkyz veˇrejnˇenepˇrístupných stránek. V tomto pˇrípadˇebylo využito již existujícího mo- dulu BP MPO activity filter. Ten upravuje funkce pro výpis aktivit takovým zp ˚uso- bem, aby bylo v pˇrípadˇeskrytý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ˇes tímto záznamem uvedený modul pracuje spoleˇcnˇese záznamy autor ˚udaného blogu a pˇrihlášenéhouž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 zp ˚usob,který bude umožˇnovatpre- zentovat ˇctenáˇr˚umaktivitu redakce internetového magazínu. Pro tento úˇcelje navržen mo- dul BCZ mainpage activity. Po jeho zapojení lze z administrátorského rozhraní na- stavit urˇcitouexistují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 zp ˚usobem,aby zobrazovala pouze aktivity této skupiny. Slabinou uvedeného ˇrešeníje skuteˇcnost,že tato úprava byla provádˇenana úrovni šab- lony 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ˇckunásledujícím zp ˚usobem: Zapotˇrebíje také kontrolovat, zda pˇrihlášenýuživatel není moderátorem pˇrípadnˇeadmi- nistrátorem redakˇcnískupiny, nebot’ v takovém pˇrípadˇemá uživatel dostupný formuláˇr pro vkládání aktivity do redakˇcnískupiny. Na úrovni zásuvného modulu je také ˇrešeno vkládání fotek redaktor ˚una stránku. Veškeré zmˇenyna úrovni šablon jsou dokumentovány v balíˇckuobsahující tento zásuvný modul.
8.2.4 Rozšíˇrenío koncept stránek a jejich propojení se skupinami Jako základ pro ˇreš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 dispo- nuje 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 úˇcelemzpˇrístupnitna stránkách informace o asociované skupinˇebyly vytvoˇrenyzá- 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 modul ˚ujsou ob- dobné, každý však zpˇrístupˇnujena 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ˇechtomodul ˚uje 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ˇea aktivit v ní
Obrázek 8.15: Komponenty pro zobrazení ˇclen˚uskupiny a aktuálnˇepˇrihlášenýchˇclen˚u
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 zp ˚usobem,aby mˇeladministrá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živatel ˚u
Komunitní nadstavba BuddyPress nabízí kvalitní nástroje pro nastavení polí profilu uživa- tele. Administrátor m ˚užejednoduše nastavit, jaké informace bude moci uživatel ve svém profilu zadat a v jaké formˇe.Nastavení tˇechopolí je triviální záležitost, z hlediska imple- mentace je však zajímavá skuteˇcnost,že BuddyPress nabízí funkce, s pomocí kterých lze
52 8.2. IMPLEMENTACE k tˇemtoúdaj ˚umpˇristupovat.Této skuteˇcnostibylo napˇríkladvyužito pˇrizavedení konceptu uživatelských rolí. Uživatelské role jsou v implementovaném komunitním systému nastavny tak, že uži- vatel vybere prostˇrednictvímzaškrtávacích rámeˇck˚umožnosti, které souhlasí s jeho rolí v rámci systému. M ˚užese jednat o více hodnot, proto jsou drženy ve formˇepole, jsou se- rializovány a uloženy do tabulky wp_bp_xprofile_data. K tomuto záznamu lze poté snadno pˇristoupits použitím pˇripravenéfunkce xprofile_get_field_data. Uvedené možnosti bylo využito pˇriimplementaci modulu BCZ member roles, který výˇcetrolí uži- vatele pˇripojuje,napˇríkladdo seznam ˚uuživatel ˚usystému. Zjednodušené ˇrešenípak m ˚uže vypadat takto:
// Funkce pro získání role clenaˇ získaného ze šablony // prípadnˇ eˇ predané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 ); }
// Funkce vypisujcí seznam rolí jako odkazy do sekce clen˚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ístupuje skuteˇcnost,že hodnoty profilových polí si uži- vatel upravuje sám. V pˇrípadˇeuž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íkladnemohl vy- dávat za odborníka. Tento problém je ˇrešenzavedením speciální skupiny profilových polí, která m ˚užebýt nazvána napˇríklad Restricted. V rámci šablony je poté zapotˇrebíprovést následující úpravu:
53 8.2. IMPLEMENTACE
id="profile-group-edit-submit" value=""/>
D ˚usledkemuvedené úpravy je skuteˇcnost,že tlaˇcítkopro uložení hodnot polí profilové sku- piny Restricted bude k dispozici pouze administrátorovi.
8.2.6 Zasílání zpráv do sítˇeTwitter
Obrázek 8.16: Formuláˇrpro 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 for- mou takzvaných tweet ˚uoznámení o novinkách v systému. Pro tento úˇcelbyl vytvoˇren zásuvný modul BCZ tweets, po jehož aktivaci je v administrátorském rozhraní k dispo- zici sekce vypisující aktivity systému. Ty jsou naˇcítánys použitím smyˇckypro aktivity a lze nastavit jejich ˇrazení,pˇrípadnˇefiltr. Pro každou aktivitu je vytvoˇrenformuláˇr,který lze shlédnout na obrázku 8.16. Po jeho vyplnˇeníjsou data zaslána s pomocí metody POST pro- tokolu HTTP a v rámci zpracování dochází k pokusu o zaslání zprávy do sítˇeTwitter. Pro sa- motný proces odeslání bylo vytvoˇrenorozhraní uvedené níže, které využívá REST API me- todu update8 dostupnou s použitím URL http://twitter.com/statuses/update. format a konzolového programu curl9 z ˇcehož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.
54 8.2. IMPLEMENTACE
curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_POST, 1); $result = curl_exec($ch); $resultArray = curl_getinfo($ch); curl_close($ch); if($resultArray[’http_code’] == "200") { $twitter_status="Zpráva ’".$message."’ úspešnˇ eˇ odeslána!"; } else { $twitter_status="Zprávu se nepodariloˇ odesat!"; } return $twitter_status; } Z ukázky výše je zˇrejmé,že pro odeslání zprávy staˇcíznát název úˇctua pˇrihlašovací heslo. Tyto údaje jsou v rámci souˇcasnéimplementace nastaveny ve zdrojovém kódu zásuv- né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ánzkrácený odkaz na patˇriˇcnouaktivitu v systému. Pro zkracování odkaz ˚uje využita služba bit.ly10.
8.2.7 Zasílání pˇríspˇevk˚una stránku aplikace Facebook Výbˇeraktualit (aktivit) urˇcenýchpro zaslání ˇclánkuje realizován obdobnˇejako v pˇrípadˇe výše uvedeného ˇrešení pro službu Twitter. Rozdíl nastává v okamžiku zpracování a ode- slání pˇríspˇevku.Pro komunikaci bylo využito nástroj ˚uze sady aplikaˇcníchrozhraní Face- book Connect. Pro aplikace psané v jazyce PHP je dále k dispozici propracovaná knihovna Facebook platform11, které bylo pˇriimplementaci rovnˇežvyužito. Pro integraci služeb systému Facebook je nejdˇrívezapotˇrebívytvoˇritv nˇemaplikaci, která bude komunikaci umožˇnovat,což lze provést dle pokyn ˚uuvedených na stránce
10.
55 8.2. IMPLEMENTACE
Obrázek 8.17: Formuláˇrpro zaslání pˇríspˇevkudo aplikace Facebook
https://login.facebook.com/code_gen.php?api_key=API_KEY&v=1.0.
2. S pomocí doˇcasnéhoklíˇcerelace pak byl vygenerován trvalý klíˇcs 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ˇezapotˇrebídosa- dit.
S použitím získaných informací již m ˚užesystém navázat spojení se službou Facebook. Pro samotné zasílání byla vytvoˇrenajednoduchá funkce využívající prostˇredk˚uknihovny Facebook platform. Hodnota ukládaná v promˇenné $target_id reprezentuje identifikátor stránky, na kterou bude pˇríspˇevekvklá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;
56 8.2. IMPLEMENTACE
$target_id ="219978714318"; if( $facebook->api_client->stream_publish($message, $attachment, $action_links, $target_id)) echo "Príspˇ evekˇ úspešnˇ eˇ pridánˇ na stránku."; } catch(Exception $e) { echo "Vkládání príspˇ evkuˇ na stránku selhalo.". "Nastala chyba: ".$e . "
"; } }
Poslední ˇcástíje vhodné sestavení pˇrílohv polích $attachment, respektive $action_links. S jejich pomocí lze zaslat patˇriˇcnámetadata a naformátovat tak ˇclánek,který bude zobrazen na stránce v aplikaci Facebook. Pro tento úˇcelbyla použitá data zaslaná z formuláˇre,který lze shlédnout na obrázku 8.17. Pˇríznakyznaˇcícíodeslání, respektive odstranˇení,zprávy z výˇctujsou ukládány do tabulky wp_bp_activity_meta pod klíˇcem bcz_fbpublisher. Podobu pˇríspˇevkutakto publikovaného v aplikaci Facebook lze vidˇetna obrázku 8.18.
Obrázek 8.18: Podoba odeslaného príspˇevkuv aplikaci Facebook
8.2.8 Pˇrihlašovánía registrace uživatel ˚us použitím Facebook úˇctu Pro implementaci tohoto ˇrešeníbylo využito zásuvného modulu WP FB Autoconnect od Justina Kleina, upravit bylo potˇrebapouze urˇcitédrobnosti spojené s využitím tohoto mo- dulu v nadstavbˇeBuddyPress, jelikož pro ni modul není primárnˇeurˇcen.Pro detailní po- chopení procesu pˇrihlášení,respektive registrace, lze doporuˇcitnahlédnutí do zdrojového kódu v souboru _process_login.php, který je napsán velmi kvalitnˇea je patˇriˇcnˇeko- mentován.
57 Kapitola 9 Závˇer
V úvodní kapitole této práce jsem pˇribližildoménu komunitního programového vybavení. Na základˇezískaných poznatk ˚ulze konstatovat, že se jedná o velmi aktivnˇerozvíjející se oblast informaˇcníchtechnologií. D ˚ukazemtéto skuteˇcnostije napˇríkladvysoká popularita souˇcasnýchwebových aplikací Facebook, Twitter a mnoha dalších. Vysoký potenciál tˇechto systém ˚usi uvˇedomujívelcí hráˇcina poli informaˇcníchtechnologií, jakými jsou napˇríklad spoleˇcnostiIBM, Google ˇciMicrosoft, a vˇenujínemalé prostˇredkydo výzkumu v této ob- lasti. Komunitní systémy se mohou v budoucnu stát nejsilnˇejšímpr ˚uvodcemˇclovˇekav síti Internet. Dále byl v práci vˇenovánprostor souˇcasnýmmožnostem redakˇcníchsystém ˚ua jejich po- užitelnosti, zejména pro implementaci komunitních systém ˚u.Uvedena byla možná kritéria, na základˇekterých lze zvolit vhodnou platformu pro konkrétní použití. Jako nejkomplex- nˇejšísouˇcasnésystémy pro správu obsahu jsem shledal produkty Drupal, Joomla a Word- Press, jejichž hlavní výhodou je vysoká rozšíˇrenosta široká komunita vývojaˇr˚u,respektive uživatel ˚u.Pokud není podstatným aspektem komplexnost, ale je kladen d ˚urazna konkrétní faktory, je vhodné hledat i jiná ˇrešení.Napˇríkladv pˇrípadˇevýkonu lze uvažovat platformu Movable Type, nicménˇeje nutné poˇcítats vyší pracností pˇridoplˇnovánípotˇrebnéfunkcio- nality. Ze širokého spektra souˇcasnýchsystém ˚upro správu obsahu jsem uvedl porovnání pˇeti produkt ˚u,které lze považovat za vhodné pro implementaci zadaného ˇrešení.Výbˇerplat- formy WordPress jsem zd ˚uvodniljejí komplexností, relativnˇeúzkým, avšak snadno rozší- ˇritelnýmjádrem, pˇrívˇetivýmuživatelským rozhraním, prezencí základních bezpeˇcnostních prvk ˚u,poˇcetnoukomunitou vývojáˇr˚u,lokalizací jádra do ˇceskéhojazyka, 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’ m ˚užeslouž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ástijsem navrhl koncept komunitního systému pro internetový ma- gazín Bydlení.cz a implementoval jej s využitím redakˇcníhosystému WordPress, komunitní nadstavby BuddyPress, vlastních zásuvných modul ˚ua s vyžitím modul ˚utˇretíchstran. Tento výstup bude integrován se souˇcasnýmsystémem pro vedení blog ˚u,který je v rámci ma- gazínu provozován. Na základˇezískaných zkušeností mohu konstatovat, že WordPress je kvalitnˇenavržený redakˇcnísystém disponující detailní dokumentací a kvalitním aplikaˇcním
58 9. ZÁVERˇ rozhraním, které umožˇnujejeho efektivní rozšiˇrování.U komunitní nadstavby BuddyPress je problémem její nevyzrálost. Bˇehemimplementace jsem se setkal s ˇradouchyb v její funkci- onalitˇe,které bylo tˇrebaˇrešit.Pˇrestoprojekt BuddyPress považuji za perspektivní. V rámci použití této nadstavby pro potˇrebyzadavatele lze vidˇettaké problém v její znaˇcnékom- plexnosti. V d ˚usledkutéto skuteˇcnostimohou mít bˇežníuživatelé problém orientovat se v prostˇredísystému. Z toho d ˚uvodupovažuji za žádoucí zjednodušit uživatelské rozhraní a zpˇrehlednitvizuá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 po- stupném vylepšování.
59 Literatura
[1] Cermák,ˇ M.: Zamiloval jsem si Twitter, 2008, Clánekˇ publikovaný v blogu
[2] Cromarty, M.: History of WordPress Series: Part 1, 2009, Clánekˇ publikovaný v maga- zínu
[3] Lukáš, J.: Co je to redakˇcnísystém?, 2005, Clánekˇ publikovaný v magazínu
[4] Lukáš, J.: K ˇcemulze využít redakˇcnísystém?, 2004, Clánekˇ publikovaný v magazínu
[5] Poremba, S.: CMS Security Could Be Your Company’s Weak Spot, 2010, Clánekˇ pub- likovaný na blogu
[6] Speckyboy Design Magazine: 2200 CMS Load Time Comparisons, Which is the Fas- test?, 2009, Clánekˇ publikovaný v magazínu
[7] Viega, J.: Open Source Security: Still a Myth, 2004, Clánekˇ dostupný online
[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
[10] tým autor ˚u: What is ImpressCMS?, Clánekˇ publikovaný na stránkách
[11] Antoš, D.: Radosti a strasti komunitních server ˚u, 2007, Clánekˇ publikovaný v maga- zínu
[12] pˇrispˇevatelé Wikipedie: List of content management systems,
[13] pˇrispˇevateléWikipedie: Comparison of social networking software,
[14] tým autor ˚u: O redakˇcnímsystému Wordpress,
[15] Coyier, C. a Starr, J.: Digging into WordPress, Chris Coyier, Jeff Starr, 2009. 6.3
60 [16] pˇrispˇevatelé Wikipedie: Facebook,
[17] Bernard, B.: Drupal - seznamte se, Clánekˇ publikovaný v magazínu
[18] Eugene: How to use the deployment diagram in PHP, Clánekˇ publikovaný na blogu
[19] Prelovac, V.: WordPress plugin development, Packt Publishing, 2009. 6.3
[20] pˇrispˇevatelé Wikipedie: Social software,
[21] pˇrispˇevateléWiki systému: Twitter API Wiki,
[22] pˇrispˇevateléWikipedie: Twitter,
[23] Lilley, E.: Social Networking with Drupal, Clánekˇ publikovaný na portálu
[24] tým autor ˚u: WordPress Codex,
[25] tým autor ˚u: How to localize WordPress themes and plugins with GetText,
61 PˇrílohaA Administraˇcnípˇríruˇcka
Tato pˇríruˇckaslouží jako podklad pro základní administraci dodaného komunitního sys- tému a doplˇnujetext diplomové práce, zejména kapitolu zabývající se implementací. Pˇred- pokládá u administrátora znalost platformy WordPress z pohledu uživatele, mˇelby se ale také orientovat v administrátorském rozhraní systému a je vhodné mít znalosti o organi- zaci zdrojového kódu systému WordPress a jeho datovém modelu. V rámci této pˇríruˇcky je kladen d ˚urazna rozšíˇrení,která byla implementována pro internetový portál Bydlení.cz, popis základní funkcionality komunitní nadstavby zde uveden není. Dobˇrezpracovaný ma- nuá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íkladdle návodu v oficiální dokumentaci1. Doporuˇcenaje verze 2.9.2, funkˇcnostnad jinými verzemi nelze s jistotou zaruˇcit.
2. Zavedení ˇceskélokalizace, tedy vytvoˇreníadresáˇre wp-content/languages, do kterého je tˇrebaumístit soubor cs_CZ.mo nalázající se na pˇriloženémCD 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 jazyk ˚uv sekci Nastavení, pod záložkou Všeobecné.
3. Instalace nadstavby BuddyPress jako zásuvného modulu, tedy jeho umístˇenído ad- resáˇre wp-content/plugins a aktivace z patˇriˇcnésekce Pluginy v administrátor- ském rozhraní systému. Systém byl stavˇenna verzi 1.2.3.
4. Lokalizace BuddyPressu, která obnáší umístˇenísouboru buddypress-cs_CZ.mo (adresáˇrbp_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ˇritsoubor bp-custom. php a do nˇejumístit následující skript zavádející doménu:
1.
62 A.2. ZÁSUVNÉ MODULY
. get_locale() .’.mo’ ) ) { load_textdomain( ’buddypress’, BP_PLUGIN_DIR . ’/bp-languages/buddypress-’. get_locale() .’.mo’ ); }
5. Nasazení pˇripravenéhomotivu vzhledu, tedy je tˇrebaumístit adresáˇr bcz-bp-theme do složky wp-content/themes, pˇrípadnˇedo složky bp-themes v adresáˇrizásuv- ného modulu BuddyPress. Poté staˇcímotiv standardnˇeaktivovat a zapojit v patˇriˇcné sekci administrátorského rozhraní. V šablonách tohoto motivu byla provedena i ˇrada ú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á vy- generuje 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, mo- dul 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 blog ˚unastavit jejich viditelnost.
A.2 Zásuvné moduly
Níže budou popsány zásuvné moduly, které jsou souˇcástíinstalaˇcníhobalíˇcku.Moduly lze aktivovat souˇcasnˇe.Vˇetšinamodul ˚utˇretíchstran není lokalizována do ˇceskéhojazyka, proto je v pˇrípadˇejejich zapojení do produkˇcníverze zapotˇrebíprovést pˇredklad.
BP Restrict group creation Modul umožˇnujeomezit vytváˇreníuživatelských sku- pin na uživatele mající urˇctáoprávnˇení.Toto nastavení lze provést v administrátor- ské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 adminis- trátor. V takové pˇrípadˇeje tˇrebado všech polí nastavit oprávnˇení manage_options. Více o rolích se lze doˇcístv oficiální dokumentaci 2.
Groupblog Modul umožˇnujeasociovat blog (stránku) se skupinou. Tuto asociaci lze na- stavit 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í blog ˚u(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ýchaktivit. Nevyžaduje žádná nastavení.
BCZ presenting group Modul umožní oznaˇcovatskupiny jako prezentující, do kterých budou vkládat obsah pouze moderátoˇria administrátoˇri.Skupinu lze tímto pˇrízna- kem oznaˇcitpˇrijejí 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ˇejejí obsah je veˇrejnˇepˇrístupný.Aktivace tohoto modulu vyžaduje úpravu zdrojového kódu BuddyPressu, která je popsána v souboru readme.txt v instalaˇcnímbalíˇckutohoto modulu. Formuláˇrpro 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ˇcovatskupiny 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íznakemoznaˇcitobdobným zp ˚usobem, 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 pro- vé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é. Exis- tující kategorie jsou vypisovány v sekci skupin. K dispozici je také komponenta uži- vatelské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ˇrenza 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ˇrenaskupina pro redakci, které bude nastavena jako prezentující a ozna- ˇcenadle popisu výše. Aktivity této skupiny budou vypisovány na hlavní stránce v sekci Aktivity, která je na úrovni šablony pˇrejmenovánana Aktivity redakce. Na tuto stránky jsou rovnˇežvloženy portréty moderátor ˚ua administrátor ˚uvybrané 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ˇripravenai ˇceskálokalizace. Vizuální styl a jazyk si m ˚užekaž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ˇresadministraˇcnílištu.
SI CAPTCHA Anti-Spam Modul pˇridávámechanizmus kontroly CAPTCHA do formu- láˇr˚uv 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. roz- hraní zobrazjící ˇclenysystému a uživatelské skupiny.
BCZ recent posts widget Modul pˇridávákomponentu uživ. rozhraní vypisující nej- novˇejšípˇríspˇevkyv celém systému. Pokud uživatel vstoupí do skupiny, jsou zobra- zeny pouze pˇríspˇevkyz 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ˇevkubude vypisovat.
Obrázek A.3: Widget BCZ Recent posts widget zobrazující nejnovˇejšíˇclánkysystému a jeho nastavení
BCZ Whos online Vypisuje seznam momentálnˇeaktivních ˇclen˚u.Obdobná komponenta je k dispozici v rámci základní instalace, nicménˇetato je rozšíˇrenao filtrování ˇclen˚u po vstupu do skupiny, kde zobrazuje pouze ˇclenydané skupiny.
66 A.2. ZÁSUVNÉ MODULY
BCZ Blogs widget Modul doplˇnujesystém o komponentu uživatelského rozhraní vypi- sují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 auto- matické zaslání pozvánky do skupiny, soukromé zprávy ˇcižádost o pˇrátelstvís vy- branými uživateli systému. Jaké akce budou provedeny je možno nastavit v adminis- trátorském rozhraní v sekci Nastavení pod záložkou Welcome Pack.
BCZ Remove random menu Triviální modul odstraˇnujícíz administraˇcnílišty menu pro pˇrechoddo náhodné sekce systému.
Album+ Modul umožˇnujeuživatel ˚umspravovat své vlastní fotografie. Raduˇ voleb k to- muto 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živatel ˚umnahrávat v rámci skupin do- kumenty libovolného formátu. Omezení na formát m ˚užesprávce nastavit v adminis- trá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ˇejejich ˇclen˚u,a seznam pˇrátelpˇrihlášenéhouživatele.
Mail from Jelikož se v testovacím provozu vyskytly problémy pˇriautomatizovném za- sílání elektronické pošty po registraci nových uživatel ˚u,bylo použito tohoto zásuv- ného, který umožˇnujenastavit 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ˇrebanastavit konstanty TWITTER_LOGIN, respek- tive TWITTER_PASS. Modul vyžadauje na serveru program curl3. Dále je zapo-
3.
tˇrebívlastnit úˇcetv 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 diplo- mové práce, vˇcetnˇepostupu pro zajištˇeníkomunikace s aplikací Facebook. V sou- boru fb-publisher.php je tˇrebanastavit konstanty FB_APIKEY, FB_SECRET a FB_SESSION. Dále je zaptˇrebínastavit identifikátor stránky, na kterou budou ˇclánky zasílány, do promˇenné $target_id v souboru facebookAPI.php.
WP FB Autoconnect Modul umožˇnujeregistraci a pˇrihlašováníuživatel ˚udo systému s použitím jejich úˇctuv 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í vypi- sující na stránce pˇridružené ke skupinˇejejí aktivity. Je žádoucí tuto komponentu uži- vatelského rozhraní vkládat výhradnˇena stránky, které jsou ke skupinˇepˇridruženy. V rámci komponenty je možno z administrátorského nastavit, které informace o ak- tivitách bude zobrazovat. Informace o pˇridružené skupinˇeje naˇcítanaz tabulky wp_ bp_groupmeta pod klíˇcem groupblog_blog_id a je pˇripravenašablona pro do- plnˇeníCSS styl ˚u.
BCZ groupblog members widget Tento zásuvný modul je navržen za obdobným úˇce- lem jako výše popsaný modul pro výpis aktivit, nicménˇena jednotlivých stránkách vypisuje seznam ˇclen˚upˇridružené skupiny. Opˇetlze nastavit údaje, které s u jednot- livých uživatel vypisují, informace o pˇridružené skupinˇeje taktéž naˇcítanaz tabulky wp_bp_groupmeta pod klíˇcem groupblog_blog_id a je pˇripravenašablona pro doplnˇeníCSS styl ˚u.
BCZ groupblog online members widget Modul pˇridávákomponentu uživatelského rozhraní zobrazující fotky uživatel ˚u,kteˇríjsou ˇclenypˇridružené skupiny a jsou mo- mentálnˇeaktivní.
BCZ groupblog groupinfo widget Zásuvný modul umožˇnujícípˇridatna stránku pˇri- druženou skupinˇepanel s vybranými informacei a odkazy do urˇcitýchsekcí (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živatel ˚u,dále zajišt’uje na- stavní výchozí role pro novˇeregistrovaného uživatele. V rámci instalového systému je tˇrebamít nastaveno profilové pole pro role uživatel ˚ua název tohoto pole je zapo- tˇ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ˇeregistrované uživatele.
69 PˇrílohaB Obsah pˇriloženéhoCD
Na pˇriloženémCD lze nelézt zdroje potˇrebnék instalaci komunitního systému a text diplo- mové práce. Obsah je organizován následujícím zp ˚usobem: instalace V adresáˇrise nachází podadresáˇre wordpress-mu (instalaˇcníbalíˇcekWord- Press MU), buddypress (modul komunitní nadstavby BuddyPress), lokalizace (lokalizace do ˇceskéhojazyka), bcz-bp-theme (motiv vzhledu implementovaného systému), bcz-moduly (vytvoˇrenémoduly) a moduly-tretich-stran (použité moduly tˇretíchstran). dp-text Diplomová práce ve formátu pdf, zdrojový kód této práce ve formátu XML (Do- cBook) a použité obrázky.
Testovací verze systému se nachází na adrese
70