BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu...

61
Žilinská univerzita v Žiline Fakulta riadenia a informatiky BAKALÁRSKA PRÁCA Študijný odbor: Informatika Matej Kurpel Vývoj internátneho portálu Campus portal development Vedúci: Ing. Pavel Segeč, PhD. Reg.č. 219/2008 reg. dňa 28. 10. 2008 Žilina

Transcript of BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu...

Page 1: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

Žilinská univerzita v Žiline

Fakulta riadenia a informatiky

BAKALÁRSKA PRÁCA

Študijný odbor: Informatika

Matej Kurpel

Vývoj internátneho portálu Campus portal development

Vedúci: Ing. Pavel Segeč, PhD.

Reg.č. 219/2008 reg. dňa 28. 10. 2008

Žilina

Page 2: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť
Page 3: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

Anotačný list

RESUMÉ

Táto práca rozoberá problematiku návrhu a implementácie funkcií webovej aplikácie –

internátneho portálu pre potreby Internet Klubu, ubytovacích a stravovacích zariadení

Žilinskej univerzity a študentov ubytovaných na internátoch Žilinskej univerzity.

SUMMARY

This thesis deals with the problematics of designing and implementing functions of a web

application – campus portal for the needs of Internet Klub, catering and dormitory

establishments of University of Žilina and campus students from University of Žilina.

Page 4: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

ABSTRAKT

KURPEL, Matej: Vývoj internátneho portálu [bakalárska práca] – Žilinská univerzita v

Žiline. Fakulta riadenia a informatiky; Katedra informačných sietí. – Vedúci: Ing. Pavel

Segeč, PhD. – Stupeň odbornej kvalifikácie: Bakalár v študijnom programe Informatika.

Žilina: FRI ŽU v Žiline, 2009. – 41 s.

Cieľom bakalárskej práce bolo navrhnúť a zrealizovať webovú aplikáciu – internátny portál –

s využitím dynamického obsahu. V teoretickej časti práce sú vysvetlené základné použité

pojmy z oblasti tvorby webových aplikácií. V ďalšej časti je vysvetlené, ako bol internátny

portál navrhnutý s ohľadom na modularitu a rozšíriteľnosť v budúcnosti, a ako fungujú jeho

základné vnútorné súčasti. Nakoniec je vysvetlené fungovanie niektorých modulov, ako z

používateľského, tak aj z administrátorského a programátorského pohľadu.

Kľúčové slová: Internet. Webová aplikácia. Webová stránka. Jazyk PHP. Jazyk JavaScript.

Jazyk MySQL. Ajax-ové volanie. Databáza. Modularita. Webový server. Klient. Prehliadač.

Skriptovanie na strane klienta. Šablóna. Administrácia. Správa obsahu. Užívateľ. Integrácia

s NMS. Jazyková lokalizácia. Webová anketa. Webový e-mailový klient. DirectConnect

(DC). DC hub.

Page 5: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

ABSTRACT

KURPEL, Matej: Campus portal development [bachelor thesis] – The University of Žilina.

Faculty of Management Science and Informatics; Department of InfoComm Networks. –

Tutor: Ing. Pavel Segeč, PhD. – Qualification level: Bachelor in study program Informatics.

Žilina: FRI ŽU in Žilina, 2009. – 41 p.

The aim was to design and implement a web application – campus portal – using dynamic

content. In the theoretical part of the thesis it explains basic terms from the field of creating

web applications. In the following one it deals with how the campus portal was designed with

modularity and future extensibility in mind, and how its basic internal components work. At

last, operation of particular modules is explained, from the user’s, as well as from the

administrator’s and programmer’s standpoint.

Keywords: Internet. Web application. Web page. The PHP language. The JavaScript

language. The MySQL language. Ajax call. Database. Modularity. Web server. Client.

Browser. Client-side scripting. Template. Administration. Content management. User. NMS

integration. Language localization. Web poll. Web e-mail client. DirectConnect (DC). DC

hub.

Page 6: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

PREDHOVOR

S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie

do popredia dynamickosť a tiež interaktívnosť webových stránok. Je dôležité mať možnosť

spravovať obsah webovej stránky v reálnom čase bez nutnej znalosti programovania a nielen

to. Dynamický a interaktívny obsah ponúka netušené možnosti, ako „zatiahnuť“ užívateľa do

diania, poskytnutím možnosti hlasovania v anketách, prispievania do fóra a ďalších činností.

Starý internátny portál tieto možnosti neposkytoval. Väčšinu obsahu musel

administrátor ručne dopisovať do kódu. Z toho vznikla potreba vytvoriť nový, dokonalejší

internátny portál a okrem spomínaných výhod pritiahnuť pozornosť užívateľa príjemným

dizajnom. Portál je zameraný predovšetkým na študentov ubytovaných v ubytovacích

zariadeniach Žilinskej univerzity. Poskytuje informácie o dianí na ŽU, oznamy ubytovacích

a stravovacích zariadení, oznamy Internet Klubu. a ďalšie informácie.

Práca na internátnom portáli, oprava chýb a jeho udržiavanie sú mojou hlavnou

náplňou práce pre Internet Klub (IK). Týmto činnostiam sa venujem vo svojom voľnom čase

už od konca prvého ročníka. Mojou hlavnou ambíciou bolo naučiť sa pracovať s novými,

modernými technológiami v oblasti tvorby webových stránok a zlepšiť sa v tom, čo som už

predtým čiastočne ovládal. Preto som aj vyvíjal portál od základu, namiesto použitia už

hotového CMS. To by nemuselo spĺňať všetky požiadavky na funkcionality, ktoré by bolo

treba doprogramovať. Naviac získať dobrú orientáciu v cudzích zdrojových kódoch by mohlo

byť náročné. Z dôvodu, že vývojom portálu som strávil veľa času a pracoval som na ňom

priebežne počas väčšiny bakalárskeho štúdia, sa mi možnosť zvoliť si ho ako tému

bakalárskej práce javila ako veľmi vhodná. Dnes je portál v ostrej prevádzke na adrese

http://iklub.sk (resp. http://dorm.uniza.sk).

Čestne vyhlasujem, že som bakalársku prácu vypracoval samostatne s využitím

vlastných teoretických poznatkov i praktických skúseností, získaných nielen samoštúdiom,

ale i počas štúdia na Fakulte riadenia a infomatiky.

Page 7: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

OBSAH

1 ÚVOD ...................................................................................................................... 1

2 TEORETICKÁ ČASŤ ........................................................................................... 2

2.1 ZÁKLADNÉ POJMY ................................................................................... 2

2.1.1 Internet .................................................................................................. 2

2.1.2 Web ....................................................................................................... 2

2.1.3 Webová stránka .................................................................................... 2

2.1.3.1 Statické webové stránky .............................................................. 3

2.1.3.2 Dynamické webové stránky ......................................................... 3

2.2 POUŽITÉ TECHNOLÓGIE ......................................................................... 4

2.2.1 Skriptovací jazyk na strane servera: PHP ............................................. 4

2.2.2 Skriptovací jazyk na strane klienta: JavaScript .................................... 5

2.2.3 Databázový systém: MySQL ................................................................ 5

2.2.4 XHTML ................................................................................................ 5

2.2.5 XML ..................................................................................................... 5

2.2.6 CSS ....................................................................................................... 6

2.3 POUŽITÉ PRODUKTY TRETÍCH STRÁN ................................................ 6

2.3.1 TinyMCE .............................................................................................. 6

2.3.2 Smarty ................................................................................................... 9

2.3.3 Scriptaculous ...................................................................................... 10

2.3.4 Šablóna „Ja Rochea“ .......................................................................... 10

3 V9ÚTOR9Á ORGA9IZÁCIA PORTÁLU ...................................................... 11

3.1 ŠTRUKTÚRA DATABÁZY ...................................................................... 11

3.1.1 Všeobecný pohľad na databázu .......................................................... 11

3.1.2 Účel a použitie tabuliek ...................................................................... 11

3.2 USPORIADANIE SÚBOROV A ADRESÁROV ....................................... 12

3.2.1 Súbory ................................................................................................. 12

3.2.2 Adresáre .............................................................................................. 13

3.3 MODULARITA – JADRO A SPOLUPRÁCA S MODULMI ................... 14

3.3.1 Úvod do modularity, úlohy jadra ........................................................ 14

3.3.2 Organizácia modulov .......................................................................... 14

3.3.3 Konfiguračné premenné modulov ...................................................... 16

3.3.4 Činnosti jadra vykonávané pri každom načítavaní stránky ................ 17

3.3.5 Činnosť modulov ................................................................................ 19

3.4 POPIS FUNKCIÍ ......................................................................................... 19

3.4.1 PHP funkcie ........................................................................................ 19

Page 8: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

3.4.2 Funkcie JavaScriptu ............................................................................ 22

3.5 JAZYKOVÁ LOKALIZÁCIA .................................................................... 23

3.6 OŠETRENIE UŽÍVATEĽSKÝCH VSTUPOV A ZABEZPEČENIE ....... 25

3.7 INTEGRÁCIA S NMS ................................................................................ 26

3.8 RSS .............................................................................................................. 27

4 ADMI9ISTRAČ9É FU9KCIE .......................................................................... 30

4.1 VŠEOBECNÉ NASTAVENIA PORTÁLU ............................................... 30

4.2 SPRÁVA UŽÍVATEĽOV A ICH OPRÁVNENÍ ....................................... 30

4.3 HROMADNÉ INFORMOVANIE UŽÍVATEĽOV .................................... 32

4.3.1 Zaslanie hromadnej súkromnej správy ............................................... 32

4.3.2 Zaslanie hromadného e-mailu ............................................................ 32

5 POPIS FU9KCIÍ 9IEKTORÝCH MODULOV ............................................... 33

5.1 ANKETY ..................................................................................................... 33

5.2 INTEGROVANÝ E-MAILOVÝ KLIENT ................................................. 34

5.3 VYHĽADÁVANIE NA INTERNÁTNOM DC HUBE ............................. 34

6 OVERE9IE RIEŠE9IA ...................................................................................... 37

7 ZÁVER .................................................................................................................. 39

8 ZOZ9AMY ........................................................................................................... 40

8.1 ZOZNAM POUŽITÝCH SKRATIEK ........................................................ 40

8.2 ZOZNAM POUŽITÝCH ZDROJOV ......................................................... 41

8.3 ZOZNAM PRÍLOH ..................................................................................... 41

9 PRÍLOHY ............................................................................................................. 42

Príloha č. 1 ............................................................................................................... 42

Príloha č. 2................................................................................................................ 43

Príloha č. 3................................................................................................................ 44

Príloha č. 4................................................................................................................ 45

Príloha č. 5 ............................................................................................................... 46

Page 9: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

1

1 ÚVOD

Moderné webové stránky umožňujú užívateľom spolupodieľať sa na tvorbe ich obsahu

a administrátorom umožňujú spravovať ich obsah on-line bez nutnosti úprav v zdrojovom

kóde či ručných úprav v databáze. Cieľom tejto bakalárskej práce je vyvinúť takýto webový

portál pre potreby ubytovacích a stravovacích zariadení Žilinskej univerzity, ale aj pre potreby

Internet Klubu a študentov. Dôraz sa kladie na dynamickú správu obsahu. Užívatelia môžu

vyjadriť svoje názory prispievaním do fóra, či hlasovaním v ankete. Každý z užívateľov môže

mať aj špeciálne oprávnenia navyše, trebárs na editáciu určitého druhu obsahu. Administrátori

môžu okrem iného prideľovať a odoberať takéto oprávnenia sebe i ostatným užívateľom.

Potreba nového internátneho portálu vyplýva z toho, že pôvodný internátny portál takéto

možnosti nemal.

Jednou z hlavných požiadaviek na návrh internátneho portálu je modularita. To

znamená rozdelenie istých (relatívne) nezávislých celkov portálu na moduly, s ktorými

pracuje jadro majúce zjednodušene za úlohu vykonať kód tých modulov, od ktorých je

požadovaný obsah a zobraziť výslednú stránku. Modularita zjednodušuje prácu s kódom a do

značnej miery zaručuje rozšíriteľnosť portálu v budúcnosti.

Page 10: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

2

2 TEORETICKÁ ČASŤ

2.1 ZÁKLAD9É POJMY

2.1.1 Internet

Internet je celosvetová počítačová sieť poskytujúca užívateľom do nej pripojeným

rôzne služby. Jeho prvé uzly vznikli v roku 1969 pod názvom ARPANET pod správou

Ministerstva obrany Spojených štátov Amerických. Ranný výskum, ktorý prispel k vzniku

ARPANETu, bol z oblastí práce na decentralizovaných sieťach (z obranných dôvodov), teórie

hromadnej obsluhy a prepínania paketov. 1. januára 1983 zmenil ARPANET svoj základný

sieťový protokol z NCP na TCP/IP, čím vznikol internet ako ho poznáme dnes. [3]

2.1.2 Web

Internet získal širokú pozornosť verejnosti v 90. rokoch 20. storočia. V auguste 1991

Tim Berners-Lee publikoval svoj nový projekt World Wide Web, dva roky po tom, ako začal

s tvorbou značkovacieho jazyka HTML a protokolu HTTP. Zverejnil prvé stránky organizácie

CERN vo Švajčiarsku. Niekoľko akademických a vládnych inštitúcií tiež prispelo stránkami,

ale verejnosť ich zatiaľ nevidela. V roku 1993 bola vydaná prvá verzia webového prehliadača

(browsera) Mosaic, na vývoji ktorej sa výraznou mierou podieľal vtedy študent Marc

Andreessen. V roku 1994, ako 22 ročný spoluzakladateľ Netscape Communications

Corporation, ponúkol k stiahnutiu zadarmo prehliadač Netscape Navigator a tým sa začala

verejnosť zaujímať o dovtedy akademicko-technický internet. [3]

World Wide Web (skrátene Web alebo WWW) je najznámejšia služba internetu. Je to

veľmi veľká množina hypertextových dokumentov (web stránok), ku ktorým možno

pristupovať prostredníctvom internetu. Na to sa používa webový prehliadač, ktorého

základnou funkciou je stiahnutie dokumentu z webového servera a jeho zobrazenie

užívateľovi. Termíny web a internet bývajú laickou verejnosťou často mylne zamieňané.

2.1.3 Webová stránka

Webová stránka, ľudovo aj webstránka alebo ľudovo nepresne internetová stránka (po

anglicky „web page“), je dokument obsahujúci hypertext, obrázky a iné multimediálne prvky

uložený obyčajne na webovom serveri prístupný prostredníctvom služby World Wide Web v

sieti internet. Zobrazuje sa používateľovi pomocou webového prehliadača. Webové stránky sú

obyčajne písané v značkovom jazyku HTML alebo XHTML a prenos prebieha pomocou

protokolu HTTP [3]. Dokument webu si môže prehliadač stiahnuť po tom, čo si ho od servera

vyžiada. Prehliadač otvorí HTTP spojenie k serveru, pošle údaj o tom, ktorá stránka je

Page 11: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

3

požadovaná a server vráti stavový kód a dáta. Stavový kód má väčšinou hodnotu 200, čo

znamená, že všetko je v poriadku (ďalší bežný stavový kód je 404 – požadovaný dokument

neexistuje). Ak všetko prebehlo v poriadku, prehliadač zobrazí užívateľovi stránku, obrázok,

alebo ponúkne na stiahnutie súbor, závisí akého typu sú dáta posielané webserverom. Typ

obsahu určuje HTTP hlavička Content-Type. HTTP hlavičky sú dodatočné metainformácie,

ktoré si vymieňajú web server a klient (prehliadač).

2.1.3.1 Statické webové stránky

V počiatkoch webu boli webové stránky aj umiestnené na web serveri ako dokumenty

HTML - statické stránky, čiže tak, ako boli posielané užívateľom. Ich obsah bolo treba meniť

ručne, zmenou priamo v HTML kóde.

2.1.3.2 Dynamické webové stránky

Postupom času sa správa statických webových stránok značne komplikovala s ich

pribúdajúcim počtom. Bolo časovo náročné aj udržiavať odkazy medzi nimi tak, aby boli stále

platné. Dynamické webové stránky sú výsledkom práce webového servera, ktorý vygeneruje

webovú stránku, či iný obsah, na základe inštrukcií v skriptoch. Dokument, ktorý prehliadač

požaduje, sa identifikuje názvom skriptu a cestou k nemu. Adresa dokumentu môže ešte

obsahovať tzv. query string – je to časť adresy za otáznikom, ktorá udáva parametre skriptu.

Skript môže na základe odlišných parametrov vygenerovať rôzny obsah.

Obr. 2-1: Query string

Existuje mnoho skriptovacích jazykov. Aby všetko fungovalo, musí webový server

skriptovací jazyk podporovať. Medzi populárne skriptovacie jazyky pre tvorbu dynamických

webových stránok patria PHP, ASP a Python. Zdrojom dát pre vygenerovaný obsah môže byť

aj databáza. Podporu rôznych databázových systémov mávajú skriptovacie jazyky

zabudovanú v sebe.

Popísaný spôsob generovania obsahu na serveri sa označuje termínom server-side

scripting. Jeho opakom je client-side scripting, tiež často označovaný ako dynamické HTML.

Skriptovanie na strane klienta nevyžaduje spoluúčasť webového servera a umožňuje zvýšiť

interaktivitu a pohodlie užívateľa. Akcie vyvolané skriptovaním na strane klienta sa prejavia

hneď napríklad po stlačení tlačidla na stránke, kliknutím na obrázok, či stlačením klávesy.

Vykonávaný kód môže meniť vzhľad stránky, manipulovať s oknom prehliadača, a robiť

mnoho ďalších operácií.

Page 12: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

4

Obr. 2-2: Porovnanie fungovania Ajax-ovej webovej aplikácie oproti klasickej web. aplikácii

Kombináciou skriptovania na strane servera a na strane klienta je tzv. Ajax. Je to

moderná technológia určená na vytváranie vysoko interaktívnych webových aplikácií.

Umožňuje načítavanie a manipuláciu s dátami z webového servera bez nutnosti znovu

načítavať práve zobrazenú stránku. Užívateľ vykoná na stránke určitú akciu, na ktorú

zareaguje skript na strane klienta. Ten sformuje HTTP požiadavku na skript, ktorý sa

nachádza na serveri, ktorú mu odošle. Server spracuje požadovaný skript a pošle odpoveď

klientovi (prehliadaču). Skript na strane klienta túto odpoveď prevezme a spracuje trebárs tak,

že ju vypíše na určené miesto na stránke.

2.2 POUŽITÉ TECH9OLÓGIE

2.2.1 Skriptovací jazyk na strane servera: PHP

Z mnohých serverových skriptovacích jazykov bol vybratý práve jazyk PHP. Dôvod je

najmä ten. že je to najrozšírenejší skriptovací jazyk na strane servera používaný na tvorbu

Page 13: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

5

dynamických stránok, preto má aj najlepšiu podporu u webových serverov. Najviac vlastností

prebral z jazykov C a Perl. Dokáže spolupracovať s relačnými databázami, obsahuje podporu

objektového programovania, pričom si zachováva jednoduchú a priamočiaru syntax. Beží na

webovom serveri, kde za vstup berie PHP skripty a ako výstup dáva webové stránky (ale

nemusí to byť pravidlom). PHP skripty majú zvyčajne príponu .php, ale je možné určiť inú

príponu špecifickým nastavením webového servera. Oficiálna stránka spolu s manuálom k

PHP sa nachádza na adrese www.php.net. Je šírený pod licenciou „PHP License v3.01”, ktorá

umožňuje použitie tohto jazyka zdarma.

2.2.2 Skriptovací jazyk na strane klienta: JavaScript

Pre účely skriptovania na strane klienta bol vybratý JavaScript práve preto, že má

najlepšiu podporu v prehliadačoch, preto je aj na webe najrozšírenejší. Syntaxou je podobný

jazyku C. Podporuje štruktúrované programovanie, aj keď je skoro celý objektovo

orientovaný. Časté použitie JavaScriptu spočíva v overovaní formulárov, a tiež v Ajax-ových

volaniach (viď kapitolu 2.1.3.2). To významne zvyšuje pohodlie užívateľa a interaktivitu

stránky.

2.2.3 Databázový systém: MySQL

MySQL je databázový systém veľmi často používaný na ukladanie údajov pre potreby

webových aplikácií. Najčastejšie sa používa spolu s PHP, ktoré obsahuje dobrú podporu pre

MySQL. Komunita okolo MySQL je veľká a aktívna, dokumentácia je kvalitná. MySQL je

dostupný pre takmer všetky unix-ové systémy i systémy Windows. Jeho licencia je

GNU/GPL, čo umožňuje jeho použitie zdarma.

2.2.4 XHTML

XHTML je tzv. značkovací jazyk používaný na tvorbu web stránok. Vychádza z

jazyka HTML, ale navyše spĺňa štandardy jazyka XML, čo umožňuje použitie syntaktického

analyzátora XML na analýzu XHTML dokumentov. Na internátnom portáli je použitý

XHTML 1.0 Transitional, čo je najmenej prísny štandard XHTML.

2.2.5 XML

XML je viacúčelový značkovací jazyk určený na výmenu štruktúrovaných dát. Jeho

sila je najmä v hierarchickej štruktúre a jednoduchom spôsobe zápisu. Na prvý pohľad sa

jazyk XML podobá jazyku XHTML, ale ich použitie je odlišné. XML elementy a ich atribúty

si, na rozdiel od XHTML, môže určiť sám autor dokumentu. Na portáli sa jazyk XML

používa presne na to, na čo je určený – na načítavanie štruktúrovaných dát zo servera, napr.

Page 14: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

6

pri editácii oznamov. Server vygeneruje XML dokument obsahujúci požadované údaje a

prehliadač si z neho tieto údaje vytiahne a použije zamýšľaným spôsobom.

2.2.6 CSS

CSS – kaskádové štýly – je štýlovací jazyk používaný na určenie vzhľadu dokumentu

vytvorenom v značkovacom jazyku. To znamená, že dokument obsahuje len dáta, pričom

všetky informácie o tom, ako sa tieto dáta majú zobraziť (formátovanie, pozície) určujú

kaskádové štýly. Takéto oddelenie dát od ich vzhľadu znižuje komplexnosť web stránok.

2.3 POUŽITÉ PRODUKTY TRETÍCH STRÁ9

Pre niektoré pomocné funkcie portálu sa oplatí použiť už hotový kód. Je to

efektívnejšie, než vymýšľať, čo už bolo vymyslené od začiatku a robiť všetko vlastným

spôsobom. Na internete sa nachádzajú hotové, často používané časti webových stránok, ako aj

rôzne balíky funkcií, či frameworky pre PHP, JavaScript a mnoho ďalších. Táto kapitola

rozoberá elementy internátneho portálu prevzaté od tretích strán.

2.3.1 TinyMCE

TinyMCE je pokročilý WYSIWYG editor napísaný v JavaScripte. To znamená, že

užívateľ píše text a aplikuje naň formátovanie, a priamo vidí, ako to bude vyzerať. Editor

môže mať na nástrojovej lište viac tlačidiel – nielen na formátovanie textu, ale aj na správu

obrázkov na serveri, ich vkladanie do textu, či odosielanie súborov na server. Výstupom

editora je HTML kód. Na portáli sa používajú inštancie TinyMCE s dvomi rôznymi

konfiguráciami – užívateľskou a administrátorskou. Líšia sa funkciami, ktoré sú v nich

povolené.

Obr. 2-3: Užívateľské TinyMCE

Page 15: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

7

Užívateľské TinyMCE povoľuje len jednoduché formátovanie textu a vkladanie

odkazov. Zľava sú tlačidlá na tučné písmo, kurzívu, podčiarknuté a preškrtnuté písmo.

Nasledujú tlačidlá pre tvorbu číslovaných a nečíslovaných zoznamov a tlačidlá na dolný a

horný index. Vpravo sa nachádzajú tlačidlá slúžiace na vkladanie odkazov do textu a ich

odstraňovanie. Toto nastavenie editora je používané vo fóre, kde sa môže vyjadrovať každý

prihlásený užívateľ.

Obr. 2-4: Administrátorské TinyMCE

Administrátorské TinyMCE obsahuje všetky funkcie bežne potrebné na správu

obsahu. V prvom riadku lišty nástrojov pribudli štyri tlačidlá pre zarovnanie textu. Na konci

prvého riadku sú dve tlačidlá určené na vkladanie obrázkov. Prvé z nich vloží do textu

obrázok, ktorý je dostupný na internete pod svojou webovou adresou a druhé otvorí správcu

obrázkov, ktorý umožňuje aj odosielať obrázky na server a vkladať ich do textu.

Na ukladanie informácií o takto odoslaných obrázkoch sa používajú dve tabuľky

databázy: images a image_folders. Adresáre v tomto správcovi obrázkov sú len virtuálne, v

skutočnosti sú na serveri obrázky v adresári upimages, ktorého obsah si spravuje sám správca

obrázkov.

Page 16: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

8

Obr. 2-5: Správca obrázkov TinyMCE

Posledné tlačidlo v hornom rade lišty nástrojov slúži na otvorenie správcu súborov

uložených na serveri. Užívateľom, ktorí nemajú oprávnenie tohto správcu súborov používať,

sa jeho tlačidlo nezobrazí. Koreňový adresár pre správcu súborov je možné určiť pre každého

užívateľa zvlášť, pričom do nadradeného adresára nebude vpustený. Predvolený adresár je

download. Správca súborov umožňuje aj vloženie odkazu na súbor do textu, pričom je možné

určiť, či si v tomto odkaze užívateľ želá aj veľkosť súboru, jeho typ a ikonku.

V druhom riadku nástrojovej lišty administrátorského TinyMCE je ako prvá položka

zoznam so štýlmi. Sú tam umiestnené niektoré predvolené štýly textu, ktoré sa bežne na

portáli nachádzajú. Na pravom konci lišty sa nachádza tlačidlo na zobrazenie a ručné úpravy

vygenerovaného HTML kódu. V strede druhého riadka nástrojovej lišty sa nachádzajú tlačidlá

na tvorbu a úpravy tabuliek

Zásuvné moduly TinyMCE sú umiestnené v adresári plugins hlavného adresára

TinyMCE. Napríklad zásuvný modul pre správu obrázkov má názov iwimg a správca súborov

je tu pod názvom filemanager.

Page 17: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

9

Obr. 2-6: Správca súborov TinyMCE

Niektoré zásuvné moduly pre TinyMCE bolo treba upraviť, inde bolo treba doplniť

jazykové reťazce pre slovenčinu, ktorá nebola v TinyMCE úplne podporovaná. Domovská

stránka projektu TinyMCE je na adrese http://tinymce.moxiecode.com/.

2.3.2 Smarty

Smarty je na webe hojne používaný šablónovací systém. Jeho poslaním je oddeliť

PHP kód od prezentačnej vrstvy (HTML, CSS). Na internátnom portáli sú jeho súbory

umiestnené v adresári smarty. PHP skripty, ktoré potrebujú Smarty-ho používať, odkážu sa na

súbor init.smarty.php, ktorý pripraví premennú $smarty (inštanciu Smarty-ho) pre použitie.

Bežné použitie Smarty-ho spočíva v nasledujúcich krokoch:

• zahrnutie súboru init.smarty.php

• priradenie obsahu PHP premenných Smarty-ho premenným metódou assign, napr.:

$smarty->assign('version',$version);

• zobrazenie šablóny so Smarty-ho premennými nahradenými ich obsahom, napr.:

$smarty->display('main.tpl');

Smarty vlastne zoberie súbor šablóny, podopĺňa v ňom premenné kde treba,

vygeneruje z neho PHP súbor a ten dá webovému serveru na spracovanie. Webový server po

Page 18: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

10

jeho spracovaní pošle výslednú stránku prehliadaču, ako zvyčajne. Domovská stránka je na

http://smarty.net/.

2.3.3 Scriptaculous

Scriptaculous je súbor JavaScriptových knižníc s efektmi. Súbory s tým súvisiace sú

uložené v adresári scripts/scriptaculous. Na portáli sa používa len jeden efekt z týchto

knižníc, a to je tzv. rolovací efekt pri odkrývaní a skrývaní oznamov a administračných

formulárov. Domovská stránka projektu je http://script.aculo.us/.

2.3.4 Šablóna „Ja Rochea“

Vzhľad stránky bol vybratý po konzultáciách s kolegami z Internet Klubu. Ako

najvhodnejšia alternatíva sa javila šablóna do CMS Joomla! s názvom Ja Rochea, ktorý bol

do značnej miery upravený pre potreby internátneho portálu. Ako vyzerala hlavná stránka

v čase písania tejto práce, je vidno v prílohe č. 3.

Page 19: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

11

3 V9ÚTOR9Á ORGA9IZÁCIA PORTÁLU

3.1 ŠTRUKTÚRA DATABÁZY

3.1.1 Všeobecný pohľad na databázu

Logický i fyzický model databázy sú v prílohách č. 1 a 2. Na priloženom CD sa

nachádzajú v súboroch Logical.ER1 a Physical.ER1 – súbory programu Computer Associates

ERwin 4.1.4. Modely nezahŕňajú tabuľky prislúchajúce k e-mailovému klientovi. Export

databázy v tvare SQL dotazov je na priloženom CD v súbore db.sql. Tento súbor obsahuje

štruktúru tabuliek a ukážkové dáta.

Databáza portálu pozostáva z osemnástich tabuliek. Okrem tabuľky stlpce má každá

tabuľka jednoduchý primárny kľúč id typu int. Vzťahy medzi tabuľkami zabezpečujú cudzie

kľúče.

Referenčná integrita je síce udržiavaná už na úrovni aplikácie (v PHP skriptoch), ale

pre istotu bolo vhodné zriadiť ju aj na úrovni databázového systému, aby bolo zaistené, že

s databázou sa bude narábať správnym spôsobom. Predvolený úložný systém databázy

MySQL zvaný MyISAM, neobsahuje podporu cudzích kľúčov – neukladá a nepoužíva ich

[1]. Z toho dôvodu bolo nutné tabuľky previesť na tabuľky úložného systému InnoDB –

okrem tabuľky ftp_files, kde sa použitie úložného systému InnoDB prejavilo výrazným

spomalením operácií s ňou.

Všetky dátumy a časy sú ukladané ako unix timestamp (je to číslo udávajúce počet

sekúnd uplynutých od 1. januára 1970 00:00:00 GMT [2]) kvôli uľahčeniu porovnávania

a zoraďovania podľa dátumov. Dátový typ v MySQL je unsigned int. Všetky stĺpce, kde majú

význam len dve rôzne hodnoty (0 a 1), alebo jedna z malej množiny hodnôt, majú typ enum.

Databáza a všetky jej tabuľky i stĺpce majú porovnávanie utf8_unicode_ci.

3.1.2 Účel a použitie tabuliek

Táto kapitola popisuje, na čo ktorá tabuľka slúži. Podrobný popis jednotlivých

atribútov každej tabuľky sa nachádza v prílohe č. 5.

• uziv – obsahuje informácie o registrovaných užívateľoch.

• msg – obsahuje všetky súkromné správy.

• oznamy – ukladajú sa do nej „rozklikávacie“ oznamy z modulov IK, Ubytovanie, ŽU

a titulnej stránky portálu.

• odkazy – uchováva údaje pre modul odkazy.

Page 20: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

12

• image_folders – je súčasťou doplnku pre TinyMCE na uploadovanie obrázkov na

server a ich vkladanie do textu. Obsahuje informácie o virtuálnych adresároch pre

obrázky.

• images – je taktiež súčasťou zásuvného modulu TinyMCE na odosielanie obrázkov na

server a ich vkladanie do textu.

• dcsearch – používa sa na ukladanie výsledkov vyhľadávania na internátnom DC hube.

Jej obsah sa nemení až do ďalšieho vyhľadávania, kedy je celá vyprázdnená

a naplnená novými výsledkami.

• config – slúži na ukladanie všeobecných konfiguračných premenných pre portál ako

celok.

• stlpce – uchováva údaje o stĺpcoch s podstránkami, odkazmi a súbormi (sekciami) pre

moduly IK, Ubytovanie, ŽU.

• stlpce_data – uchováva podstránky, odkazy a údaje o súboroch (sekciách) pre moduly

IK, Ubytovanie, ŽU.

• ftp_servers – ukladajú sa v nej informácie o internátnych FTP serveroch, ktorých

obsah je možné indexovať a na ktorých je potom možné vyhľadávať.

• ftp_files – obsahuje informácie o súboroch a adresároch, ktoré sa nachádzali v čase

indexovania na jednotlivých FTP serveroch.

• forum_prispevky – obsahuje príspevky vo fóre.

• forum_temy – obsahuje témy fóra

• forum_kategorie – obsahuje kategórie fóra.

• newsflash – ukladajú sa v nej novinky, ktoré sa zobrazujú v záhlaví stránky.

• ankety – uchováva informácie o anketách.

• ankety_odpovede – uchováva odpovede k anketám.

3.2 USPORIADA9IE SÚBOROV A ADRESÁROV

Z dôvodu prehľadnosti a logického rozčlenenia súborov, z ktorých sa portál skladá,

bolo dôležité navrhnúť štruktúru adresárov a do nej zaradiť súbory podľa toho, na čo slúžia.

Zaiste by nebolo vhodné miešať trebárs obrázky s CSS súbormi. Čo ktorý súbor či adresár

obsahuje, popisuje táto kapitola.

3.2.1 Súbory

Popis súborov nachádzajúcich sa v hlavnom adresári portálu:

• class.AAClient.php, class.CryptedXMLRPCClient.php – triedy umožňujúce

spojenie s NMS

Page 21: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

13

• defines.php – definície konštánt

• errors.tpl – doplnková šablóna obsahujúca potvrdzovacie a chybové hlášky, ktoré sa

používajú ako náhrada JavaScriptových funkcií confirm a alert. Táto šablóna je

zahŕňaná do hlavnej šablóny main.tpl na jej konci

• favicon.ico – ikonka stránky pre uloženie do záložiek v prehliadači

• functions.php – skript s PHP funkciami, ktoré sú využívané najmä jadrom. Podrobný

popis funkcií je uvedený v kapitole 3.4

• index.php – hlavný súbor portálu

• init.db.php – pomocný skript na inicializáciu spojenia s databázou

• init.smarty.php – pomocný skript na inicializáciu šablónovacieho systému Smarty

• main.en.lng, main.sk.lng – jazykové súbory jadra

• main.tpl – hlavná šablóna, do ktorej sa zahŕňajú obsahy modulov atď.

• mainconfig.php – konfiguračný súbor jadra, obsahujúci zoznam všeobecných

oprávnení

• newsflash.php – skript vracajúci flash-novinky zobrazované v záhlaví stránky

• robots.txt – informácie pre botov indexujúcich webový obsah

• rss.php – skript vracajúci RSS XML súbor zvoleného modulu. Fungovanie RSS je

popísané v kapitole 3.8

• rss.tpl – šablóna s kostrou RSS XML súborov

• temperature.txt – cache súbor, kam sa ukladá nameraná teplota na Veľkom Dieli

• tinymce_settings.tpl – nastavenia TinyMCE pre moduly, ktoré o to prejavili záujem

vo svojom konfiguračnom súbore (viď kapitola 3.3.3)

• version.txt – dátum poslednej úpravy zdrojového kódu (informatívny).

3.2.2 Adresáre

• /css – obsahuje CSS súbory

• /download – adresár, kam sa ukladajú odoslané súbory sekcií typu „odkaz na uložený

súbor“ modulov ik, ubytko a zu. Tiež je to koreňový adresár pre zásuvný modul

TinyMCE s názvom filemanager, ktorý slúži na správu súborov na serveri a vkladanie

odkazov na ne do textu

• /images – uchováva rôzne obrázky využívané portálom samotným

• /images/headers – obrázky zobrazované v záhlaví stránky

• /images/icons – ikony typov súborov používané pri výpise výsledkov vyhľadávania na

internátnom DC hube alebo FTP serveroch

• /modules – adresár určený pre moduly. Má svoje ďalšie členenie určené organizáciou

modulov, ktorá je popísaná v kapitole 3.3.2

• /rcmail – umiestnenie webmailu RoundCube

Page 22: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

14

• /scripts – adresár pre kódy JavaScriptu

• /scripts/scriptaculous – adresár knižnice s efektami „Scriptaculous“

• /scripts/tiny_mce – umiestnenie TinyMCE

• /smarty – umiestnenie šablónovacieho systému Smarty

• /upimages – adresár používaný doplnkom TinyMCE na upload obrázkov,

manipuláciu s nimi a ich vkladanie do textu, s názvom iwimg.

3.3 MODULARITA – JADRO A SPOLUPRÁCA S MODULMI

3.3.1 Úvod do modularity, úlohy jadra

Pri väčších softvérových projektoch, ako je tento, sa ukazuje monolitický návrh ako

nevýhodný; pridávaním nových funkcií by bolo treba meniť pôvodný kód, čo by bolo aj

časovo neefektívne. Preto, z dôvodu ľahšej rozšíriteľnosti do budúcna, bolo nutné navrhnúť

internátny portál modulárne. Jadro je obsiahnuté v súbore index.php, čo je hlavný súbor

celého portálu, no používa aj funkcie zo súboru functions.php. Práca s modulmi je úlohou

jadra, ktoré plní aj ďalšie úlohy, nutné k behu portálu ako celku:

• inicializácia spojenia s databázou

• zavedenie a príprava šablónovacieho systému Smarty, priradenie jeho premenných

tak, aby boli pripravené na zobrazenie v šablóne

• spracovanie súboru s funkciami (functions.php)

• spracovanie súboru s hlavnou konfiguráciou jadra (mainconfig.php), obsahujúceho

zoznam oprávnení patriacich k jadru, resp. všeobecných oprávnení

• správa jazykov – načítanie jazykových súborov jadra i modulov

• správa relácií

• načítanie verzie (dátumu poslednej úpravy) zo súboru version.txt

3.3.2 Organizácia modulov

Moduly sú relatívne nezávislé časti portálu a sú umiestnené v podadresároch adresára

modules. Vzhľadom na rôzne úlohy rôznych modulov bolo nutné klasifikovať moduly podľa

toho, kde majú zobrazovať svoj obsah, teda i kedy sa majú vykonávať. Preto rozlišujeme tri

typy modulov:

• content – sú určené na zobrazovanie v hlavnej časti stránky, čiže pod hlavičkou

a medzi ľavým a pravým stĺpcom

• left_column – zobrazujú sa v ľavom stĺpci

• right_column – zobrazujú sa v pravom stĺpci

Page 23: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

15

Každý modul sa musí nachádzať vo svojom vlastnom adresári, ktorý je umiestnený

v niektorom z hore uvedených adresárov modulov, podľa typu. Štruktúra modulu, teda to,

z akých súborov sa skladá, je určená očakávaniami jadra a tým, čo všetko modul ponúka.

Názvy súborov, ktoré sú v moduloch rezervované pre špeciálne použitie a popis tohto

použitia:

• modindex.php – hlavný (spúšťací) súbor modulu. Spustí sa vždy, okrem prípadu, že

je v konfiguračnom súbore modulu tento modul zakázaný. Každý modul musí tento

súbor obsahovať.

• modconfig.php – konfiguračný súbor modulu, je pre každý modul povinný. Obsahuje

rôzne priradenia konfiguračných premenných, ktoré upresňujú, ako sa jadro má

k modulu správať. Popis konfiguračných premenných sa nachádza v kapitole 3.3.3. Na

konci súboru sa môže ešte nachádzať kód, ktorý sa má spustiť pri každom načítaní

stránky (keďže konfiguračné súbory modulov sa pri každom načítaní stránky

spracúvajú jadrom).

• modscript.js – (alebo modscript.js.php pre moduly typu content) – nepovinný súbor

obsahujúci kód JavaScriptu patriaci k modulu. Odkaz naň je zaradený do hlavnej

šablóny v sekcii head, aby ho prehliadač našiel. Príponu .php má pre moduly typu

content preto, aby sa jeho obsah mohol dynamicky generovať podľa toho, aké má

užívateľ oprávnenia. Pomáha to zvýšeniu bezpečnosti, keď neoprávnený užívateľ ani

neuvidí funkcie pre editáciu obsahu a pod.

• modlang.sk.lng, modlang.en.lng – súbory s jazykovými reťazcami. Modul ich

obsahovať nemusí, ak žiadne lokalizované reťazce vypisovať nepotrebuje.

• modsearch.php – podpora vyhľadávania. Tento skript je volaný pri požiadavke na

vyhľadávanie v obsahu, ktorý modul sprístupňuje. Ak tento súbor v module existuje,

objaví sa preň zaškrtávacie políčko vo formulári pre vyhľadávanie. Podporu

vyhľadávania môžu obsahovať len moduly typu content, aj keď je to nepovinná

súčasť. Avšak ak modul obsahuje tento súbor, logicky musí obsahovať aj šablónu pre

výpis získaných výsledkov (modsearch.tpl).

• modsearch.tpl – šablóna, do ktorej sa vypisujú výsledky vyhľadávania. Býva to

jednoduchá tabuľka, ktorá je neskôr zahrnutá do hlavnej šablóny pre výpis výsledkov

hľadania, čo umožňuje vypísanie výsledkov pre každý modul nezávisle a iným

spôsobom.

• modrss.php – podpora RSS, ktorú môžu opäť obsahovať len moduly typu content.

Naplní sa tu údajmi pole, ktoré sa použije na výpis RSS XML súboru pomocou

šablóny rss.tpl. O túto činnosť sa nestará jadro, ale separátny skript rss.php. Viac

o RSS je uvedené v kapitole 3.8.

Page 24: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

16

3.3.3 Konfiguračné premenné modulov

Konfiguračné premenné modulov sú nastavované v súbore modconfig.php. Upresňujú

spôsob, akým sa bude jadro k modulu správať a umiestňujú sa do asociatívneho poľa

$modconfig. Niektoré konfiguračné premenné musia byť nastavené v každom module, ďalšie

sú nepovinné, a niektoré majú význam len pri moduloch určitého typu. Popis všetkých

konfiguračných premenných:

• $modconfig['enabled'] – premenná typu boolean určujúca, či je modul povolený. To

znamená, či ho jadro má vôbec spracovávať. Prepínaním tejto premennej je možné

vypínať a zapínať moduly. Každý modul musí túto premennú v konfiguračnom súbore

mať nastavenú.

• $modconfig['uriitem'] – má význam len pre moduly typu content, kde určuje

parameter q adresy, ktorý tento modul jednoznačne identifikuje. Ak obsahuje reťazec

začínajúci sa http, potom tento modul slúži len ako položka menu odkazujúca na

nejakú externú stránku, ktorej adresa je touto premennou určená. Príkladom takéhoto

modulu je modul rcmail.

• $modconfig['obr1'], $modconfig['obr2'] – obrázky v záhlaví stránky, ktoré sa dajú

určiť pre každý modul iné, aby portál nepôsobil priveľmi fádne. Obrázky sa

nachádzajú v adresári images/headers. Prvý z nich je ten hlavný, rozprestierajúci sa

cez celú šírku stránky a jeho optimálne rozmery sú 950x205 pixelov. Druhý, menší,

plynule nadväzuje na veľký obrázok a nachádza sa nad ľavým menu. Jeho rozmery sú

220x89 pixelov. Tieto premenné majú opäť zmysel len pri moduloch typu content.

• $modconfig['menuitem'], $modconfig['menuitem_en'] – názov určený pre moduly

typu content, pod ktorým sa bude modul zobrazovať v menu, a jeho anglický

ekvivalent. Tieto dva názvy môžu byť aj prázdne reťazce. V tom prípade sa do menu

vôbec nezaradia, ale bude možné na ne odkazovať napríklad z iných modulov, a to

pomocou parametra q adresy.

• $modconfig['order'] – poradie modulu vo výpise. Čím nižšie číslo, tým je modul

zaradený skôr. V moduloch typu content to ovplyvňuje poradie modulov v menu

a v ostatných dvoch typoch modulov poradie výpisu v stĺpcoch (ľavom či pravom),

kde moduly s nižším poradovým číslom sú vyššie

• $modconfig['tinymce'] – určuje, či sa má pri výpise šablóny pripojiť odkaz na skript

TinyMCE a jeho predvolenú inicializáciu. Tú možno prekryť vlastnou inicializáciou

(ak napr. modul potrebuje iné tlačidlá na nástrojovej lište) – takto to robí modul forum

zahrnutím súboru forum.tinymce_settings.tpl do šablóny. Nastavenie tejto hodnoty na

false pri moduloch, ktoré TinyMCE nepotrebujú, má výhodu v zrýchlení načítavania

stránky. Avšak v prípade, že modul potrebuje mať TinyMCE k dispozícii len za

určitých podmienok – napr. len keď je prihlásená osoba oprávnená editovať obsah –

Page 25: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

17

tak môže túto premennú nastaviť na false a načítať i inicializovať si TinyMCE vo

vlastnej réžii až vtedy, keď je to opodstatnené.

• $modconfig['guests'] – boolean premenná určujúca, či modul má byť dostupný aj pre

neprihlásených užívateľov. Ak užívateľ nemá právo na jeho zobrazenie, nielenže sa

mu nezobrazí, ale aj pri pokuse o vstup do neho priamym zápisom adresy do

prehliadača, bude užívateľ presmerovaný na hlavnú stránku portálu.

• $modconfig['rights'] – Zoznam oprávnení, ktoré modul využíva. Jednotlivé

oprávnenia sú oddelené znakom | („pipe“) a každé oprávnenie má tri časti, oddelené

dvojbodkou. Prvá časť je názov oprávnenia v tvare modul_názov, druhá je jeho popis

v slovenskom jazyku a posledná časť je jeho popis v anglickom jazyku.

3.3.4 Činnosti jadra vykonávané pri každom načítavaní stránky

• Odštartuje sa relácia, t.j. odošle sa cookie súbor relácie, a pošle sa hlavička

s informáciou o type obsahu a jeho kódovaní (text/html, UTF-8).

• Spojenie s databázou - je nadviazané iba raz, a to na začiatku. Toto zabezpečuje súbor

init.db.php, ktorý obsahuje adresu hostiteľa a prihlasovacie údaje k databáze. Ak sa

nepodarí pripojenie k databáze, alebo vybratie databázy portálu, skript zlyhá s

príslušnou chybovou hláškou. Hneď po úspešnom spojení s databázou sa odošle prvý

dotaz: „SET NAMES ‚utf8‘“. To zaistí, že výsledky z databázového servera budú

v kódovaní UTF-8, a tiež to hovorí serveru, že dotazy budú v kódovaní UTF-8.

• Zavedenie šablónovacieho systému Smarty, čo sa urobí zahrnutím jeho hlavnej triedy

(Smarty.class.php). Avšak potom ho treba ešte pripraviť, to znamená vytvoriť jeho

inštanciu a priradiť jej atribúty, podľa ktorých bude pracovať (vykonáva sa to v súbore

init.smarty.php). Tieto atribúty Smarty-mu hovoria, kde má hľadať šablóny, kam má

ukladať vyrovnávaciu pamäť šablón atď. Boli ponechané na pôvodných hodnotách,

pretože šablóny sa aj tak nenachádzajú v adresári Smarty-ho, ale tam, kam patria (k

jadru, do modulov). Kompiláty šablón a vyrovnávacia pamäť sa ukladajú do

predvolených Smarty-ho adresárov (cache a templates_c), ktoré na serveri musia mať

nastavené oprávnenia (chmod) na čítanie i zápis do nich.

• Načítanie súboru s funkciami functions.php. Ich popis a účel využitia je uvedený

v kapitole 3.4.1.

• Zo súboru mainconfig.php sa načíta zoznam všeobecných oprávnení do premennej

$mainconfig['rights']. Zoznam oprávnení v konfiguračných súboroch má vždy

rovnaký formát popísaný v kapitole 3.3.3.

• Nastavenie predvolených hodnôt týkajúcich sa jazykov. Je predurčené, že prednosť

má jazyk nastavený užívateľom v jeho profile ($_SESSIO8['lang_override']), a až

potom sa berie do úvahy jazyk uvedený v adrese stránky v parametri lang

Page 26: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

18

($_GET['lang']). Výsledný jazyk sa uloží do premennej $_SESSIO8['lang']. Na konci

sa zabezpečí, že pokiaľ bude jazyk nastavený na niečo iné, než reťazce sk alebo en,

predvolený jazyk je sk.

• Načítanie jazykových reťazcov jadra, resp. všeobecných jazykových reťazcov.

Podrobnejšie informácie o jazykových lokalizáciách sú v kapitole 3.5.

• Spracuje sa reťazec s právami jadra, predtým načítaný z jeho konfiguračného súboru.

Túto činnosť zabezpečí funkcia load_rights(). Výsledkom je spracovaný zoznam

oprávnení v superglobálnom poli $_SESSIO8.

• Načíta sa z databázy konfiguračná premenná určujúca, či je portál dočasne mimo

prevádzky – premenná má názov locked_full a je uložená v tabuľke config. Ak je

nastavená na 1, vypíše sa len veta o dočasnom odstavení portálu, a že užívateľ má

opakovať pokus neskôr. Samozrejme, pre užívateľov s oprávnením s názvom

main_lockdownoverride odstavenie portálu neplatí a pokračuje sa ďalej, ako bežne.

• Poskladá sa časť adresy s parametrom lang určujúcim jazykovú verziu stránky.

Výsledok sa uloží do premennej $linklang, ktorá sa používa v šablónach. Túto činnosť

treba urobiť preto, aby sa v prípade anglickej verzie stránky generovali aj odkazy na

správnu jazykovú verziu podstránok.

• Načítajú sa konfiguračné súbory modulov typu content. Pre každý modul z nich sa

vykonávajú ďalšie činnosti, ak je modul aktívny a ak má užívateľ právo na jeho

zobrazenie. Spomínané činnosti sú zahrnutie do menu, určenie poradia modulu v menu

na základe premennej z jeho konfiguračného súboru (order) a priradenie názvu

modulu do menu (menuitem), spolu s jeho identifikátorom v adrese podstránky

(uriitem). Ak modul potrebuje priradiť nejaké premenné do Smarty-ho na zobrazenie v

šablóny, teraz sa uskutoční ich priradenie Smarty-ho metódou assign. Nakoniec sa

pole menu zoradí PHP funkciou sort, ktorá zoraďuje elementy v dvojrozmernom poli

na základe hodnôt prvého kľúča, v našom prípade order (poradie modulu v menu).

• Kontrola, či modul typu content (podstránka) uvedený v parametri q adresy, vôbec

existuje, teda či existuje jeho hlavný súbor modindex.php. Ak modul existuje, načítajú

sa jeho jazykové reťazce z jeho jazykových súborov, načíta sa jeho konfiguračný

súbor a potom sa samotný modul spustí. Ak modul neexistuje, uvedené činnosti sa

vykonajú pre základný, predvolený modul home (hlavná stránka portálu).

• Načítanie a spracovanie modulov typu left_column a right_column, ktoré sú v

konfiguračných súboroch povolené a užívateľ má právo na ich zobrazenie. Pritom sa

ešte načítajú jazykové reťazce z jazykových súborov týchto modulov.

• Načítanie verzie – poslednej úpravy kódu – zo súboru version.txt.

• Popriraďovanie Smarty-ho premenných jeho metódou assign. Tieto premenné sa

využívajú v šablónach, kde majú určené svoje miesto na výpis.

Page 27: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

19

• Volanie Smarty-ho metódy display – zobrazenie šablóny main.tpl s priradenými

premennými Smarty-ho.

3.3.5 Činnosť modulov

Pri spúšťaní modulov nastáva potreba modulu vypísať nejaký obsah. Modul si to

zabezpečí tak, že použije Smarty-ho metódu assign na priradenie premenných na výpis do

šablóny a na konci spúšťacieho súboru, ak sa jedná o modul typu content, určí meno šablóny

na zahrnutie do hlavnej šablóny priradením do premennej $includuj. Tá sa v jadre priradí

šablóne pomocou Smarty-ho metódy assign a v šablóne sa zahrnie ten súbor, ktorý modul

touto premennou určil. V prípade, že ide o modul typu column_left alebo column_right,

prebieha výpis z viacerých modulov zároveň, nie iba z jedného, ako to je pri moduloch typu

content. Preto bolo treba zaviesť na spracovanie súborov šablón týchto modulov polia, a to

$includuj_left a $includuj_right. Názvy súborov šablón sú do nich priraďované na konci

spúšťacích súborov modulov, čiže v poradí spracovania. V tomto poradí sú aj zahŕňané do

hlavnej šablóny.

V spúšťacích súboroch modulov väčšinou netreba spracovávať súbor pre prácu

s databázou init.db.php, ani Smarty-ho, ani functions.php či ďalšie, pretože spúšťacie súbory

modulov sú spracovávané jadrom, ktoré už potrebné súbory načítalo. Tieto súbory je nutné

spracovávať len pokiaľ sa očakáva priame volanie skriptu. Tak je to napríklad v module login,

kde spúšťací súbor nemusí byť len zahŕňaný jadrom, ale môže byť aj volaný priamo, metódou

POST pomocou asynchrónneho volania JavaScriptu (Ajax). Rovnako bývajú volané aj rôzne

skripty modulov na manipuláciu s obsahom, takže v nich tiež treba potrebné pomocné skripty

zahrnúť.

3.4 POPIS FU9KCIÍ

Univerzálne časti kódu, ktoré sa dajú využiť viackrát, je žiaduce vložiť do funkcií

a odkazovať už len na tieto funkcie. To šetrí úsilie pri editácii takéhoto kódu, pretože ho stačí

upravovať len na jednom mieste. Funkcie môžu, ale nemusia mať vstupné hodnoty, a taktiež

môžu, ale nemusia mať návratovú hodnotu. Závisí to od toho, na akú činnosť je funkcia

určená, a teda, či vstupné dáta a výstupnú hodnotu vôbec potrebuje.

3.4.1 PHP funkcie

PHP funkcie, ktoré sú využívané viackrát, či len majú potenciál byť takto v budúcnosti

využité, sú umiestnené v súbore functions.php. Kompletný výpis funkcií nachádzajúcich sa

v tomto súbore, spolu s popisom, na čo ktorá slúži, ponúka táto kapitola.

Page 28: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

20

• load_rights($odkial) – zoberie reťazec oprávnení, ktorý dostala v parametri, a vloží

tieto oprávnenia do superglobálneho poľa $_SESSIO8 tak, že ponastavuje ich

slovenský i anglický popis, ale hodnotu každého oprávnenia nastaví na false – t.j. že

aktuálne prihlásený užívateľ dané oprávnenie nemá. Táto funkcia sa používa na

načítanie všetkých oprávnení z konfiguračných súborov modulov i jadra.

• load_rights2($odkial) – používa sa na nastavenie tých oprávnení na true, ktoré

užívateľovi patria. V parametri dostáva zoznam týchto oprávnení oddelený znakom |

(„pipe“). Používa sa pri prihlasovaní.

• load_modules($dir) – funkcia určená na načítanie modulov typu, ktorý dostáva

v parametri, napr. „modules/content“. Pozrie sa do tohto adresára a pre každý

z modulov, ktorý obsahuje konfiguračný i spúšťací súbor, priradí premenné

z konfiguračného súboru do riadka dvojrozmerného poľa, obsahujúceho údaje

o všetkých moduloch. Toto pole modulov sa používa v jadre, ktoré údaje z neho ďalej

spracúva.

• is_number($number) – vráti true, ak reťazec v parametri je číselný – obsahuje len

znaky 0 až 9. Jej použitie je v kontrole integrity dát, kde sa nemožno spoľahnúť na

údaje získané metódou GET či POST.

• datum($vstup, $cas, $friendly) – ako prvý parameter (povinný) dostane dátum a čas

vo formáte unix timestamp-u, vráti reťazec vo forme čitateľnej pre človeka. Ak je

uvedený aj druhý parameter a je nastavený na false, k výslednému reťazcu sa nepridá

čas, bude to iba dátum. Tretí parameter je taktiež nepovinný a ak je nastavený na true,

výsledný reťazec bude užívateľsky prívetivejší tým, že bude obsahovať slová „Dnes“,

„Včera“, „Predvčerom“ pre príslušné dátumy.

• jazyk($jazyk, $modpath, $l) – načíta jazykové reťazce do premennej $l (pole

jazykových reťazcov) patriace k tomu modulu, ku ktorému je uvedená cesta v druhom

parametri, ktorý ak je prázdny, načítajú sa jazykové reťazce jadra. Prvý parameter

udáva dvojpísmenový kód jazyka – buď „sk“ alebo „en“. Premenná $l je predávaná pri

volaní tejto funkcie odkazom, aby sa pôvodné pole jazykových reťazcov neprepísalo,

ale len sa nové reťazce pridali ku starším.

• mytruncate($string, $limit, $break, $pad) – odsekne dlhý reťazec tak, aby

obsahoval najviac $limit znakov, na znaku $break, ktorý je zdola najbližšie k tomuto

limitu. K takto upravenému reťazcu na koniec pridá reťazec $pad. Z textu sa odstránia

(X)HTML tagy, okrem tagu <br />, ktorý ostane zachovaný. Táto funkcia sa používa

v module newest_notices, kde nastáva skrátený výpis troch najnovších oznamov.

• filename($menosuboru) – vstupný reťazec tvorí meno súboru s príponou aj cestou

k nemu. Funkcia vráti meno súboru aj s príponou.

• ext($cesta) – vstupný reťazec tvorí meno súboru s príponou a eventuálne aj cestou

k nemu. Funkcia vráti príponu súboru s bodkou na začiatku.

Page 29: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

21

• fname($cesta) – vstupný reťazec tvorí meno súboru s príponou aj cestou k nemu.

Funkcia vráti meno súboru bez prípony.

• notintags_replace($co, $cim, $text) – zamení v reťazci $text všetky výskyty znaku

$co reťazcom $cim, ktoré sa nachádzajú mimo (X)HTML značiek.

• diakritika_replace($str) – zamení vo vstupnom reťazci všetky výskyty (X)HTML

entít niektorých znakov s diakritikou za tieto znaky samotné. Je to kvôli úspore miesta

v databáze a prehľadnejšiemu ukladaniu takýchto reťazcov v nej. Tieto entity tam

vytvoril TinyMCE pri odosielaní obsahu spracujúcemu skriptu.

• one_wordwrap($string, $width) – v reťazci $string všetky slová dlhšie ako $width

znakov rozdelí na slová kratšie ako táto dĺžka vložením medzery tam, kde treba.

Používa sa pri výpise obsahu, ako protiopatrenie voči záškodníkom, ktorí by chceli

pomocou extrémne dlhých slov deformovať rozloženie stránky.

• vstup_do_db($str) – zabezpečí reťazec vstupujúci do databázy (tam je použitie tejto

funkcie) proti útoku SQL Injection tým, že zamieňa znaky apostrof a spätné lomítko

za ich ekvivalenty. Tiež zamieňa úvodzovky za ich entitu. Reťazce nepochádzajúce

z TinyMCE pred vstupom do databázy prejdú touto funkciou.

• vstup_do_db_tinymce($text) – zabezpečí text pochádzajúci z TinyMCE pred

vstupom do databázy a ešte zaistí, že tento text bude XHTML platný. Použitá verzia

TinyMCE je pomerne staršieho dáta a má s XHTML platnosťou problém.

• getidbyuser($username) – vráti ID užívateľa so zadaným nickom z databázy.

• getuserbyid($id) – vráti nick užívateľa zo zadaným ID z databázy.

• access($id, $tabulka) – vráti boolean hodnotu určujúcu, či práve prihlásený užívateľ

má právo na záznam so zadaným ID zo zadanej tabuľky databázy. Určuje sa to na

základe toho, či užívateľ je prihlásený a ak áno, či má účet aj v NMS. Tieto fakty sa

porovnávajú s hodnotami tohto záznamu v stĺpcoch acc_unreg, acc_regnorm

a acc_regnms v zvolenej tabuľke databázy.

• access2($id, $modul) – to isté, ako funkcia access, ale tu sa berú dáta vždy z tabuľky

stlpce_data. Záznam je tam jednoznačne identifikovaný kombináciou uvedených

dvoch vstupných premenných.

• redir($kam) – presmerovanie na modul s parametrom q adresy rovným $kam, pričom

k cieľovej adrese presmerovania je pridaný prípadný jazykový parameter lang.

• searchstring($what) – používa sa pri vyhľadávaní záznamov v databáze. Aby

užívateľ mohol používať wildcardové znaky * a ? namiesto % a _, dochádza k zámene

týchto znakov tak, že je to umožnené. Okrem toho ešte nastáva zabezpečenie reťazca

proti útoku SQL Injection.

• byteconvert($b) – prevedie číslo $b – počet bajtov – do užívateľsky prívetivej formy,

premenené na kB, MB, GB alebo TB podľa veľkosti. Používa sa na výpis veľkostí

súborov pri výpise výsledkov vyhľadávania súborov na internátnej sieti.

Page 30: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

22

• bytes($b, $units) – vynásobí veľkosť $b 1024 toľko krát, koľko je nutné pre jednotku

uvedenú v parametri $units.

• round9umber($num) – zaokrúhli číslo na dve desatinné miesta

• p_encrypt($text, $salt) – zašifruje text osolený hodnotou $salt. Funkcia je mierne

upravená, ale je prevzatá z diskusie k PHP modulu mcrypt na php.net.

• p_decrypt($text,$salt) – rozšifruje text zašifrovaný funkciou p_encrypt.

3.4.2 Funkcie JavaScriptu

Funkcie JavaScriptu, ktoré sú v client-side skriptovaní využívané na viacerých

miestach, alebo je predpoklad, že môžu byť v budúcnosti takto využité, sa nachádzajú

v súbore scripts/script.js.php. Tieto funkcie môžu byť použité v každom z modulov. Ich

prehľad a vysvetlenie, na čo ktorá slúži, obsahuje táto kapitola.

• getHTTPObject() – vráti objekt XMLHTTP Request, ktorý je základom fungovania

ajax-ových funkcií portálu. Funkcia sa postará o to, aby vrátila tento objekt čo možno

najnezávislejšie na prehliadači užívateľa.

• str_replace(inputString, fromString, toString) – obdoba PHP funkcie str_replace().

V reťazci inputString zamení všetky výskyty reťazca fromString za reťazce toString.

• getvar(name) – vráti hodnotu parametra nachádzajúceho sa v adrese – z „query

stringu“ aktuálne načítanej stránky.

• urlencode(str) – zmení vstupný reťazec tak, aby bolo bezpečné prenášať ho cez

Ajax-ové POST požiadavky. Musia sa teda zameniť všetky znaky majúce špeciálny

význam, za ich ekvivalenty, ktoré tento význam nemajú.

• htmlspecialchars_decode(str) – obdoba PHP funkcie htmlspecialchars_decode(),

zamení entity (X)HTML znakov za tieto znaky samotné. Používa sa v module msg pri

odpovedaní na prijatú správu, kde treba vyplniť textové pole s nickom adresáta, ktorý

je v (X)HTML atribúte id a teda nemôže obsahovať žiadne (X)HTML znaky.

• getwidth(), getheight() – funkcie na zisťovanie výšky a šírky zobrazovacej časti

prehliadača v pixeloch. Bolo nutné to zisťovať cez tieto funkcie, lebo prehliadače sú

v uvádzaní týchto hodnôt veľmi nejednotné. Tieto funkcie sú používané pri vypisovaní

upozornení či chybových hlášok tak, aby boli presne na strede stránky.

• myalert(nadpis,message) – zobrazenie chybovej alebo informačnej hlášky s textom

message. Typ hlášky určuje parameter nadpis, ktorý môže mať hodnoty error či info.

Podľa toho sa zobrazí príslušné „okienko“ s hláškou zo šablóny errors.tpl.

• closealert() – slúži na zatvorenie chybovej či informačnej hlášky, zobrazenej funkciou

uvedenou vyššie. Táto činnosť zahŕňa vlastne len návrat zobrazenia stránky do

pôvodného stavu – ponastavovanie príslušných elementov tak, aby sa nezobrazili.

Page 31: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

23

• myconfirm(nadpis,message,onklik) – zobrazenie potvrdzovacej hlášky s textom

message. Parameter nadpis môže obsahovať len hodnotu confirm, ale počíta sa

s možným rozšírením do budúcnosti pre ďalšie prípady použitia tejto funkcie.

Parameter login obsahuje reťazec funkcie, ktorá sa má spustiť po kliknutí na tlačidlo

Áno či tlačidlo 8ie, vrátane jej parametrov. Táto funkcia by mala mať ešte jeden

parameter, v tomto reťazci zastúpený textom *potvrdil*, ktorý bude po kliknutí na

tlačidlo nahradený číselnou hodnotou 2 alebo 1, indikujúcou, či bolo kliknuté na

tlačidlo Áno (2) alebo 8ie (1). Na základe toho vie potom volaná funkcia rozlíšiť, akú

akciu treba vykonať.

• closeconfirm() – zatvorenie potvrdzovacej hlášky. Funkcia i jej využitie sú veľmi

podobné funkcii closealert().

• readCookie(name) – prečíta a vráti hodnotu cookie s názvom name. Použitie je vo

fóre, kde sa načítava užívateľom určené zoradenie príspevkov – od najnovšieho po

najstarší, alebo naopak. Podľa toho sa pri pridávaní príspevku určuje, kam sa nový

príspevok umiestni; či to bude na začiatok, alebo na koniec výpisu príspevkov.

• setCookie(name,value,days) – nastaví cookie pomocou JavaScriptu. Táto funkcia sa

nevyužíva nikde, ale je medzi funkciami uvedená, lebo je predpoklad, že by bolo

vhodné ju mať v budúcnosti poruke.

• eraseCookie(name) – zmaže cookie pomocou JavaScriptu. Momentálne sa nepoužíva

a je tu z toho istého dôvodu, ako funkcia setCookie().

• isnumber(sText) – funkcia kontrolujúca, či je vstupný text číslo, podľa toho vráti true

alebo false. Používa sa pri kontrole hodnôt vo formulári, kde sa očakáva zadanie čisla.

• GetLongXml9odeValue(co,zcoho) – Vráti z textu vo formáte XML (parameter

zcoho) hodnotu medzi tagmi s názvom co. Bolo nutné tieto hodnoty medzi tagmi

vyťahovať z XML dokumentu pomocou tejto funkcie, pretože natívne funkcie na

XML analýzu, ktoré obsahujú prehliadače, sú mnohokrát chybné (napríklad v čase

testovania prehliadač Mozilla Firefox nevedel spracovať text dlhší ako 4096 znakov).

Táto funkcia podobné obmedzenia prehliadačov eliminuje.

• removeHTMLTags(strInputCode) – odstráni zo vstupného reťazca (X)HTML tagy.

3.5 JAZYKOVÁ LOKALIZÁCIA

V dnešnej dobe, pri rastúcej globalizácii internetových služieb, sa rôzne jazykové

varianty týchto služieb stávajú takpovediac nutnosťou. Aby bol obsah stránok dostupný

a zrozumiteľný aj pre neslovenských užívateľov, vývoj portálu prebiehal s dôrazom na

dvojjazyčnosť – v kombinácii slovenčina a angličtina – najmä ak je treba informovať

Page 32: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

24

zahraničných študentov o dianí na internátoch atď. Užívateľ má dve možnosti, ako si vybrať

svoj jazyk, ktorý uprednostňuje:

• Ak je užívateľ neprihlásený, môže si prepnúť jazyk kliknutím na príslušnú vlajku

v pravom hornom rohu stránky. Pri prepínaní na zobrazenie anglickej verzie stránky sa

k adrese pridá parameter lang s hodnotou en, pri prepínaní na slovenčinu sa tento

parameter celý odstráni, pretože slovenčina je predvolený jazyk, teda parameter by bol

zbytočný. I keď aj parameter lang s hodnotou sk by fungoval správne. Prepínanie

jazykov parametrom lang je vhodným univerzálnym spôsobom preto, aby bolo možné

posielať odkazy trebárs cez instant messenger programy alebo e-mail priamo na

príslušnú jazykovú verziu stránky.

• Ak je užívateľ prihlásený, tak okrem hore uvedeného spôsobu môže využiť aj

nastavenie uprednostňovaného jazyka vo svojom profile. Tento jazyk bude potom

načítaný automaticky po prihlásení, čo zvyšuje pohodlie užívateľa a ušetrí mu jedno

kliknutie.

O načítavanie potrebných jazykových reťazcov sa stará jadro, ktoré na tento účel

používa funkciu jazyk() (jej podrobnejší popis je v kapitole 3.4.1). Vždy sú načítavané

z jazykových súborov jazykové reťazce len tých modulov (plus jadra), ktoré sú potrebné na

výpis stránky, ktorú užívateľ požaduje. Jazykové reťazce sa umiestňujú do globálneho

asociatívneho poľa $l, ktorého kľúče sú názvy (identifikátory) jazykových reťazcov v tvare

modul_názovreťazca, napr. forum_addtopic. Hodnotami sú samotné jazykové reťazce

požadovaného jazyka, čo umožňuje odkazovanie na príslušnú jazykovú verziu reťazca len

jedným, univerzálnym spôsobom, a to identifikátorom reťazca. Pole jazykových reťazcov $l

sa priradí šablóne pomocou Smarty-ho metódy assign, čo zaručí nahradenie všetkých

výskytov identifikátorov týchto reťazcov v šablóne za ich požadované jazykové varianty.

Jazykové reťazce sa nachádzajú v už spomínaných jazykových súboroch. V moduloch

majú názvy modlang.sk.lng a modlang.en.lng, jazykové súbory jadra majú názvy main.sk.lng

a main.en.lng. Súbory so sk v názve obsahujú slovenské jazykové reťazce, s en anglické.

Majú vždy rovnakú štruktúru: na každom riadku je jeden jazykový reťazec majúci tvar

identifikátor|reťazec. Prázdne riadky sa môžu vyskytovať kdekoľvek a sú pri spracovávaní

jazykových súborov ignorované.

Ak je treba vypísať nejaký jazykový reťazec v Javascriptovej funkcii, tento sa jej zadá

v niektorom z jej parametrov. Niekedy sa jedná o jazykové reťazce, ktoré majú byť vypísané

v chybovej alebo informačnej hláške (zo súboru errors.tpl). Tieto reťazce môžu byť zalomené

na ďalší riadok pomocou rezervovaného výrazu [8L] znamenajúceho „nový riadok“. Tento

zástupný výraz je nahradený v Javascriptovej funkcii, ktorá sa stará o výpis hlášok, za

konkrétny výraz nového riadku, a to je buď \n (pre IE vo výpise Javascriptovej funkcie

Page 33: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

25

alert()), alebo <br /> (pre prehliadače, ktoré rozumejú CSS vlastnosti position: fixed, kde je

teda možné chybové či informačné hlášky rozumne zobraziť a vypisujú sa v XHTML).

3.6 OŠETRE9IE UŽÍVATEĽSKÝCH VSTUPOV A ZABEZPEČE9IE

Skoro nikdy nie je možné spracovávať užívateľský vstup tak, ako bol zadaný. Buď

treba vstup upraviť tak, aby mohol byť prenášaný, trebárs cez XML, resp. treba niektoré

znaky nahradiť za iné, ktoré nemajú špeciálny význam, či treba zabezpečiť, aby užívateľ

zadal to, čo sa od neho očakáva (trebárs číslo a nie reťazec tam, kde sa očakáva číslo). Takéto

ošetrenie užívateľských vstupov má veľký význam nielen v zabezpečení aplikácie, ale aj

v tom, že v prípade „exotickejšieho“, resp. neočakávaného vstupu, nenastane chyba a v rámci

možností bude požadovaná operácia pokračovať ďalej.

Textové vstupy, ktoré sa ukladajú do databázy, prejdú predtým najprv funkciami

vstup_do_db() alebo vstup_do_db_tinymce(), ktoré zaistia, že vstupný reťazec bude bezpečne

do databázy vložený. Zaistí sa to napr. nahrádzaním apostrofov a ďalších špeciálnych znakov

za ich ekvivalenty. V PHP existuje jedna konfiguračná direktíva s názvom „magic quotes“,

ktorá ak je zapnutá, spôsobuje automatické nahrádzanie úvodzoviek, apostrofov, lomítok

a NUL znakov. Pôvodne to malo ušetriť programátorom starosti s ošetrovaním užívateľských

vstupov, avšak v praxi skôr opak je pravdou. Nastavenie serverov je v tomto nejednotné, preto

pred úpravou reťazcov na vkladanie do databázy je treba vrátiť tieto reťazce do pôvodného

stavu, ak je direktíva „magic quotes“ zapnutá. Funkcia úprav pre textové vstupy pochádzajúce

z TinyMCE zabezpečuje ešte aj úpravu tohto vstupu tak, aby spĺňal štandard XHTML.

V oboch prípadoch sú úvodzovky zamenené za ich entity. V databáze sú textové vstupy

z TinyMCE ukladané vo forme XHTML kódu, pokiaľ možno platného, teda vrátane

špeciálnych znakov nahradených entitami. Obyčajné textové vstupy sú uložené v databáze

tak, že majú nahradené znaky „ampersand“ a „úvodzovky“ ich entitami. Ostré zátvorky sú

nahradené entitami pri výpise, čím sa zachová platnosť stránky vzhľadom na štandard

XHTML a predíde sa útokom typu XSS a ďalším. Veľmi dlhé slová sú rozdelené na kratšie,

aby ich výpisom nedochádzalo k zdeformovaniu stránky.

Kvôli zvýšeniu užívateľského pohodlia sú vstupy kontrolované už na strane klienta

JavaScriptom. Kontroluje sa, či polia, ktoré majú byť vyplnené, nie sú prázdne, či polia, kde

sa ako vstup očakáva číslo, neobsahujú nejaký nečíselný znak, či pole pre e-mailovú adresu

ozaj obsahuje reťazec e-mailovú adresu reprezentujúci, prípadne ďalšie záležitosti. Niekedy je

nutné odoslať údaje z formulára pomocou Ajax-ového volania a v prípade, že skript na serveri

vyhlásil chybu, urobiť patričné kroky (varovať užívateľa, aby chyby v zadaní vstupu odstránil

a pod.). Príkladom pre takéto správanie môže byť formulár pre registráciu. Keď sú všetky

údaje na prvý pohľad v poriadku, skontrolované JavaScriptom, pošlú sa na spracovanie na

Page 34: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

26

server. Tam sa zistí, že napríklad užívateľ s takým istým nickom, aký sa pokúša ďalší užívateľ

zaregistrovať, už existuje, PHP skript vyhlási chybu a JavaScript sa postará o zobrazenie

chybovej hlášky o už zaregistrovanom nicku.

Samozrejme, že kontrola údajov iba na strane klienta nestačí. Funkcie JavaScriptu na

kontrolu sa dajú vypnúť rôznymi doplnkami pre Firefox, prípadne prehliadač nemusí

podporovať JavaScript. Aby túto ochranu nebolo možné obísť, kontroluje sa integrita dát aj

priamo na serveri, po ich obdržaní PHP skriptom. Ak nastane chyba, operácia sa ukončí ako

pokus o prienik. Na strane servera sa kontroluje aj, či vôbec má daný užívateľ na danú

operáciu oprávnenie. Napriek tomu, že ak oprávnenie nemá, nemohol uvidieť ani formulár na

odoslanie dát, ani JavaScriptovú funkciu, ktorá sa o ajax-ové volanie má postarať, je možné

ručne odoslať POST požiadavku skriptu, ktorý má dáta spracovať (aj keď sa prípadný útočník

musí najprv nejako názov tohto skriptu a cestu k nemu dozvedieť). Opäť, ak oprávnenie

nemá, nepokračuje sa ďalej. Pokračuje sa, až keď je jasné, že všetky dáta i oprávnenia sú

v poriadku. Toto všetko zaisťujú spracovateľské PHP skripty samostatne, využívajúc funkcie,

ktoré sú dostupné buď v PHP priamo, alebo zo súboru s funkciami functions.php.

JavaScriptové súbory modulov majú koncovku .js.php, aby bolo možné v nich

používať jazyk PHP, aj keď len v tej najnutnejšej miere. Dôvod je ten, že tieto JavaScriptové

súbory mnohokrát obsahujú funkcie na editáciu, vkladanie, odstraňovanie obsahu a ďalšie

manipulácie, na ktoré nemá oprávnenie každý užívateľ. Posielať všetkým užívateľom rovnakú

množinu JavaScriptových funkcií, aj keď nemajú potenciál byť použité, by bolo neefektívne,

ale hlavne by to bolo bezpečnostné riziko. Záškodnícky užívateľ by mohol študovať

JavaScriptové funkcie na manipuláciu s obsahom a zistil by, kde sa nachádzajú

spracovateľské skripty a aké dáta očakávajú. Aj keď kontrola dát nastáva, ako už bolo

spomenuté, i na serveri, omyl nie je vylúčený. Týmto postupom sa zvyšuje bezpečnosť

stránky.

3.7 I9TEGRÁCIA S 9MS

NMS (Network Management System) je systém na správu internátnej siete vytvorený

podľa potrieb Internet Klubu. Obsahuje okrem iného informácie o užívateľoch internátnej

siete, ich zariadeniach, kvótach na prenesené dáta, limitoch atď. Jednou z požiadaviek na

funkcie portálu, vyplývajúcou z potrieb Internet Klubu, bola integrácia s NMS, to znamená:

• umožniť užívateľom z internátnej siete (tí majú účet v NMS) prihlásenie sa na portál

bez registrácie a s rovnakými prihlasovacími údajmi ako do NMS,

• sprístupniť užívateľom internátnej siete dodatočný obsah, ktorý je pre ostatných

užívateľov nedostupný, či nezaujímavý (ďalšie návody, vyhľadávanie na DC...),

• ak užívateľ má účet v NMS, zmena hesla v NMS sa prejaví aj na portáli a naopak.

Page 35: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

27

Prepojenie s NMS zabezpečujú triedy zo súborov class.AAClient.php a

class.CryptedXMLRPCClient.php. Poskytol ich vedúci informačnej sekcie Internet Klubu

Richard Tóth, ktorý je zároveň autorom NMS. Po vytvorení inštancie triedy AAClient sú

dostupné jej metódy umožňujúce získavanie informácií z databázy NMS:

• CheckCredentials($login, $password) – vráti ID užívateľa, alebo prázdny reťazec,

podľa toho, či sa užívateľ so zadanými prihlasovacími údajmi v NMS nachádza.

• GetMetaOne($id, 'F9AME') – vráti reálne meno užívateľa so zadaným ID. Ďalšie

informácie o užívateľovi sa dajú získať zámenou druhého parametra:

'IKMAIL' – e-mailová adresa

'ICQ' – ICQ číslo

'MS9' – MSN kontakt

'JABBER' – Jabber kontakt

'PHO9E' – telefónne číslo

'MMSHP' – vráti pole reťazcov určujúcich, do ktorých užívateľských skupín v NMS

užívateľ patrí.

• CheckLoginExistence($login) – vráti boolean hodnotu závisiacu od toho, či užívateľ

s daným prihlasovacím menom už v NMS existuje. Používa sa na kontrolu pri

registrácii, kde je registrácia rovnakým nickom, ako už existujú v NMS odmietnutá.

• ChangePassword($login, $oldpassword, $newpassword) – metóda na zmenu hesla

v NMS. Používa sa pri zmene hesla na portáli, aby heslá v NMS a na portáli ostali

vždy rovnaké, Pre zmenu hesla je potrebné poznať aj staré heslo. Ak nesedí, metóda

vráti false.

Údaj o tom, či užívateľ má, alebo nemá účet v NMS, sa ukladá do relačnej premennej

$_SESSIO8[‘nms’]. Podľa nej moduly vedia, aký obsah majú aktuálne prihlásenému

užívateľovi sprístupniť. Táto premenná a sa nastavuje pri prihlasovaní a pri odhlásení sa

vymaže PHP funkciou unset().

3.8 RSS

RSS je XML formát používaný na publikáciu často aktualizovaných stránok, ktorého

účelom je to, že aby užívateľ nemusel navštevovať webstránku, namiesto toho si zadá do RSS

čítačky adresu RSS súboru tejto stránky. Čítačka periodicky kontroluje, či sa niečo v tomto

RSS súbore zmenilo. Ak áno, nové údaje stiahne a upozorní užívateľa. Ako RSS čítačka sa

dajú použiť niektoré prehliadače, či e-mailoví klienti (napr. Mozilla Thunderbird).

S rastúcim množstvom obsahu na portáli nastala potreba riešiť generovanie RSS

kanálov. Tie, logicky, nie sú dostupné pre každú časť stránky, keďže nie každý modul (typu

content) musí RSS podporovať. Ako je spomenuté v kapitole 3.3.2, to, či modul RSS

Page 36: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

28

podporuje, je dané existenciou súboru modrss.php v adresári tohto modulu. Ak modul RSS

podporuje, do hlavnej šablóny sa pridá odkaz naň, v tvare napríklad:

<link rel="alternate" type="application/rss+xml" href="http://iklub.sk/

rss.php?q=forum&amp;lang=en" title="RSS" />

Tento riadok spôsobí v prehliadači zobrazenie ikonky RSS, cez ktorú je možné pristupovať

k RSS kanálu pre daný modul. Horeuvedený príklad je odkaz na RSS kanál pre anglickú

verziu modulu forum.

Generovanie RSS kanálov zabezpečuje vždy súbor rss.php v koreňovom adresári

portálu. Podľa parametra q v jeho adrese zistí, o RSS kanál ktorého modulu má užívateľ

záujem a tento kanál vygeneruje. Kód toto zabezpečujúci je v mnohom podobný kódu jadra,

starajúci sa o spracovanie modulov. Prezrú sa všetky moduly typu content, pospracúvajú sa

ich konfiguračné súbory, a do výsledného dvojrozmerného poľa s údajmi o moduloch sa

zaradia len tie moduly, ktoré sú povolené a užívateľ má dostatočné oprávnenia na ich obsah.

Ak modul zadaný v parametri q neexistuje v tomto poli, spracúva sa modul home (hlavná

stránka). Ak je všetko v poriadku, spracuje sa súbor modrss.php príslušného modulu, ktorý

načíta potrebné údaje na vygenerovanie RSS kanála do poľa $rss. Toto pole sa priradí do

šablóny pomocou Smarty-ho metódy assign a vypíše sa šablóna rss.tpl. Ten obsahuje už

predpripravenú XML štruktúru RSS kanála. Potrebné premenné sú vypísané na svoje miesta

tam, kam treba. Každá položka RSS kanála má nasledujúcu štruktúru (položky sú vypisované

z pripraveného poľa $rss v cykle):

<item>

<title>{$item.title}</title>

<link>{$item.link}</link>

<guid>{$item.guid}</guid>

<description>{$item.description}</description>

<pubDate>{$item.pubdate}</pubDate>

<dc:subject>{$item.subject}</dc:subject>

</item>

Vysvetlenie k hlavnej štruktúre RSS súboru:

• title – nadpis položky

• link – odkaz na webstránku, kde je položka zobrazená

• guid – jednoznačný identifikátor položky v rámci RSS kanála. Na základe guid

čítačky určujú, či sa jedná o novú položku, alebo či už predtým bola stiahnutá,

prečítaná atď.

• description – popis položky, ale môže to byť aj priamo jej obsah, ako napríklad

príspevok fóra.

Page 37: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

29

• pubDate – dátum a čas vytvorenia položky.vo formáte GMT. Nie každá položka RSS

kanála ho musí obsahovať. Napríklad v module odkazy sa dátum ani neukladá.

• dc:subject – to isté, ako nadpis položky

Každý takto vygenerovaný RSS kanál je v kódovaní UTF-8, o čom je čítačka

informovaná nielen hlavičkou samotného RSS kanála, ale aj HTTP hlavičkou, ktorá okrem

kódovania uvádza aj typ obsahu tohto kanála:

Content-Type: application/rss+xml; charset: utf-8

Page 38: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

30

4 ADMI9ISTRAČ9É FU9KCIE

Administrácia portálu je dostupná len prihláseným užívateľom, ktorí majú naviac

oprávnenie na vstup do administrácie, zvané main_admin. Administrácia obsahuje viac

možností, ktoré rozoberá táto kapitola.

4.1 VŠEOBEC9É 9ASTAVE9IA PORTÁLU

• Dočasné vyradenie portálu z prevádzky – nastaví konfiguračnú premennú locked_full

v tabuľke config databázy na hodnotu 1. Ak je toto nastavené, vypíše sa namiesto

načítania stránky len krátke oznámenie o dočasnom odstavení portálu. Prihlásení

užívatelia, ktorí majú špeciálne oprávnenie zvané main_lockdownoverride, stále môžu

portál používať aj napriek tomu, že je odstavený.

• Dočasné pozastavenie registrácie – nastaví konfiguračnú premennú locked_reg

v tabuľke config databázy na hodnotu 1. To spôsobí, že nebude možné umožnená

registrácia novým užívateľom. Namiesto registračného formulára sa zobrazí len krátke

oznámenie informujúce o tomto fakte.

• Východzie práva nových užívateľov – obsahuje skupinu zaškrtávacích políčok, každé

reprezentuje jedno oprávnenie. Sú tu všetky oprávnenia pre celý portál, ktoré možno

užívateľom prideľovať. Oprávnenia, pri ktorých sú políčka zaškrtnuté, sú nastavené

v tabuľke config databázy v riadku default_rights ako klasický zoznam oprávnení

s položkami oddelenými znakom | („pipe“). Táto množina oprávnení je prideľovaná

novým užívateľom, ktorí sa buď registrujú cez registračný formulár, alebo sa len

prihlásia s tým, že na portáli ešte prihlásení neboli, ale majú účet v NMS.

4.2 SPRÁVA UŽÍVATEĽOV A ICH OPRÁV9E9Í

V tejto časti administrácie je možné spravovať údaje o užívateľoch. Tiež poskytuje

informácie, ktoré sú o užívateľovi uložené v jeho zázname v databáze.

Výber užívateľa, ktorého údaje si želáme zobraziť, je možné realizovať cez roletové

menu, ktoré obsahuje abecedne zoradený zoznam všetkých užívateľov, alebo je možné zadať

nick užívateľa ručne a dať ho vyhľadať. Pri vyhľadávaní je povolené použitie zástupných

znakov „hviezdička“ a „otáznik“. Do výsledkov vyhľadávania sú zaradené aj čiastočné zhody.

Dá sa tu vykonať zmena užívateľského mena, e-mailovej adresy, reálneho mena

a hesla. Zmena hesla nastane len na portáli, v NMS sa neprejaví, pretože na to by bolo treba

poznať pôvodné heslo užívateľa. Je možné tu aj nastaviť pre konkrétneho užívateľa špeciálnu

Page 39: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

31

farbu nicku, akou sa bude zobrazovať na portáli. Vyberá sa z farebnej palety, predvolená

farba je zelená. Ak je užívateľ nastavený ako neaktívny, nebude mu umožnené prihlásiť sa

(má ban). Voľba „adresár pre upload“ je určená pre potreby zásuvného modulu TinyMCE na

spravovanie súborov na serveri. Má zmysel ju meniť len, ak užívateľ má právo na túto

činnosť (názov tohto oprávnenia je main_upfiles. Pod hlavným formulárom sa nachádza

veľký počet zaškrtávacích políčok, slúžiacich na správu oprávnení vybraného užívateľa.

Obr. 4-7: Formulár pre administráciu užívateľov

Údaje zvoleného užívateľa sa načítajú hneď po jeho výbere zo zoznamu, čo je zaistené

Ajax-ovým volaním. Ukladanie údajov je tiež riešené Ajax-ovo, čiže bez nutnosti

znovunačítania stránky, ako aj vyhľadávanie podľa nicku užívateľa. Požadované výsledky sú

zo servera vracané ako XML súbor, ktorý sa na strane klienta analyzuje a s údajmi z neho sa

vykonajú príslušné operácie.

Page 40: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

32

4.3 HROMAD9É I9FORMOVA9IE UŽÍVATEĽOV

Pre potreby hromadného informovania užívateľov tak, aby si čo najviac užívateľov

danú informáciu prečítalo, je možné v administrácii odoslať hromadnú súkromnú správu

alebo hromadný e-mail.

4.3.1 Zaslanie hromadnej súkromnej správy

Formulár pre zaslanie hromadnej súkromnej správy obsahuje okno TinyMCE pre

plnohodnotnú editáciu obsahu a extra textové pole pre vpísanie subjektu hromadnej

súkromnej správy. Po odoslaní tohto formulára bude do tabuľky msg v databáze vložených

toľko záznamov, koľko je registrovaných užívateľov. Naviac budú odoslané notifikačné e-

maily aj s obsahom súkromnej správy tým užívateľom, ktorí majú v profile nastavené, že si

tieto e-maily želajú odoberať (táto voľba je v profiloch užívateľov nastavená aj predvolene).

Okrem samotnej správy budú odoslané e-maily obsahovať hlavičku a pätu, ktoré sú

definované v štyroch súboroch admin.mail.*.tpl, rozlíšené podľa jazyka, ktorý má príjemca

súkromnej správy nastavený ako uprednostňovaný vo svojom profile.

4.3.2 Zaslanie hromadného e-mailu

Okrem polí, ktoré obsahuje formulár pre zaslanie hromadnej súkromnej správy,

formulár pre zaslanie hromadného e-mailu obsahuje navyše textové pole pre vpísanie e-

mailovej adresy odosielateľa hromadného e-mailu. Predvolená hodnota tohto poľa je

[email protected]. Odosielanie formulára je opäť riešené Ajax-ovo a to tak, že po stlačení tlačidla

Odoslať sa bude počet odoslaných e-mailov zobrazovať v popise tohto tlačidla. Je to tak

preto, že odosielanie môže trvať dlhšie, pričom administrátor si to nemusí uvedomiť.

E-maily sú odosielané klasickou PHP funkciou mail(). Subjekt e-mailu je odosielaný

v kódovaní UTF-8 kombinovaným s base64_encode(), aby fungovala diakritika aj v subjekte

e-mailu. K samotnému e-mailu sú pridané extra hlavičky:

From: <odosielateľ>

Content-Type: text/html; charset="utf-8"

X-Portal-Username: <prihlasovacie meno odosielateľa hromadného e-mailu>

Hlavička Content-Type informuje e-mailového klienta o tom, že e-mail je v kódovaní

UTF-8 a že jeho obsahom je HTML kód. To zaistí, že obsah e-mailu sa zobrazí v e-mailovom

klientovi presne tak, ako to určil odosielateľ v editore TinyMCE pri odosielaní hromadného e-

mailu. Užívateľské meno odosielateľa na portáli je uvedené v hlavičkách z bezpečnostných

dôvodov, keby sa niekto rozhodol odosielať takto spam.

Page 41: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

33

5 POPIS FU9KCIÍ 9IEKTORÝCH MODULOV

5.1 A9KETY

Ankety na webovej stránke sú základnou a najjednoduchšou formou vyjadrenia

názorov užívateľov. Ľudia radi hlasujú v anketách, pretože im na to stačia dve kliknutia.

Obr. 5-8: Ukážka z administrácie ankiet

Systém ankiet pozostáva z dvoch modulov. Anketa samotná je modul s názvom green

a je typu right_column. Administrácia ankiet je modul typu content s názvom poll_admin. Na

obrázku 5-9 je ukážka jednej časti administrácie ankiet. Vľavo sa nachádza náhľad ankety – je

to ukážka, ako bude anketa vyzerať. Takto vyzerá anketa po tom, čo v nej už užívateľ

hlasoval, či nemá oprávnenie hlasovať (alebo je len neprihlásený). Anketa, v ktorej je možné

ešte hlasovať, obsahuje namiesto odrážok pri odpovediach preklikávacie tlačítka a naspodku

sa nachádza tlačidlo Hlasovať.

V pravom stĺpci stránky v module green sa zobrazí vždy len jedna anketa – tá, ktorá je

nastavená ako aktívna. Ak nie je nastavená žiadna aktívna anketa, zobrazí sa namiesto nej len

krátka informácia o tomto fakte. Hlasovanie v ankete prebieha Ajax-ovo, čiže bez

znovunačítania stránky. V administrácii sú načítané údaje o ankete ihneď po jej výbere zo

zoznamu ankiet. Každá anketa musí obsahovať aspoň dve odpovede, maximálny počet

odpovedí nie je obmedzený. Odoberať a pridávať odpovede je možné tlačidlami „plus“

a mínus“. V databáze sú údaje ankiet uložené do dvoch tabuliek: ankety a ankety_odpovede.

Page 42: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

34

5.2 I9TEGROVA9Ý E-MAILOVÝ KLIE9T

Integrácia e-mailového klienta do portálu sa javila ako vhodné riešenie, aby sa

užívatelia nemuseli prihlasovať do portálu a potom sa prihlasovať do e-mailového klienta

znova. Bolo zvolené už hotové riešenie webového e-mailového klienta – s názvom

RoundCube, čo je moderný, rýchly a flexibilný klient. Ukážka, ako vyzerá, sa nachádza

v prílohe č. 4.

Odkaz na webmail vedie z hlavnej stránky, ako posledná položka v menu. Je to modul

typu content, ktorý odkazuje na inú stránku, názov modulu je rcmail. Odkaz vedie na skript

rcmail/autologin.php. Tento skript má za úlohu prihlásiť užívateľa do webmailu pomocou

prihlasovacích údajov, ktoré si užívateľ uložil v profile. Ak je užívateľ neprihlásený, či si

neuložil do profilu prihlasovacie údaje do webmailu, alebo sú tieto údaje neplatné, je

zobrazený klasický prihlasovací formulár webmailu. Autentifikácia prebieha priamo voči

IMAP serveru. Prihlasovacie údaje do webmailu sú ukladané v databáze šifrovane. O prácu

s týmito šifrovanými reťazcami sa starajú PHP funkcie p_encrypt() a p_decrypt().

Po inštalácii klienta RoundCube na server bolo nutné upraviť jeho vzhľad tak, aby sa

podobal na internátny portál. To bolo docielené skopírovaním predvoleného vzhľadu (s

názvom default) a vytvorením nového s názvom iklub, ktorý bol potom nastavený ako

predvolený. Vďaka skinovateľnosti klienta toto bolo otázkou úpravy CSS a HTML súborov.

K tomu bolo treba ešte prispôsobiť súbory s grafikou – napr. pozadia a logo webmailu.

Vzhľady e-mailového klienta sú uložené v adresári rcmail/skins.

Tiež bolo treba dopísať niektoré jazykové reťazce do súborov s lokalizáciou, keďže

tam pre slovenčinu niektoré tieto reťazce chýbali. Jazykové súbory RoundCube sú umiestnené

v adresári rcmail/program/localization.

5.3 VYHĽADÁVA9IE 9A I9TER9ÁT9OM DC HUBE

DirectConnect (DC) je do značnej miery decentralizovaná výmenná sieť určená na

zdieľanie a sťahovanie dát. Jej centrálnymi jednotkami sú tzv. huby. Sú to servery, na ktoré sa

pripájajú užívatelia. V rámci jedného hubu môžu užívatelia diskutovať (na verejnom chate, či

na súkromnom), sťahovať jeden od druhého súbory a vyhľadávať súbory u užívateľov

pripojených na ten istý hub. Najväčšie svetové huby navštevuje okolo desať tisíc užívateľov.

Na pripojenie k hubu je nutné mať DC klienta – program, ktorý spomenuté činnosti zvláda.

Funkcia vyhľadávania na internátnom DC hube je takým príjemným doplnkom pre

užívateľov internátnej siete. Internátny DC hub beží na adrese dc.twingy.sk:411 a nie je

dostupný zvonka internátnej siete. Ak sa užívateľ z internátnej siete (teda s účtom v NMS,

resp. so špeciálnym oprávnením search_dcftp) nachádza mimo internátu a chce si vyhľadať

Page 43: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

35

na internátnom DC hube študijné materiály, táto funkcia mu to umožní. Tiež príde vhod, ak

užívateľ nemá práve DC klienta a nechce sa mu ho kvôli nejakej maličkosti (o ktorej ani

nevie, či sa na sieti nachádza) inštalovať a nastavovať.

Obr. 5-9: Formulár vyhľadávania na internátnom DC hube

Formulár vyhľadávania na internátnom DC hube (obr. 5-10) pripomína rovnaký

formulár priamo z DC klienta. Do poľa pre hľadaný výraz sa zadáva, čo sa má vyhľadať. Typ

súboru dáva na výber z možností: všetky, audio, video, obrázky, spustiteľné, dokumenty,

komprimované a adresáre. O vracanie výsledkov podľa typu sa stará už samotný DC protokol,

pričom sa filtruje podľa prípony súborov. Pole Veľkosť súboru dáva možnosť obmedziť

veľkosť súborov, ktoré budú vrátené vo výsledkoch a to zhora, zdola, na presný počet bytov,

alebo vôbec. Zaškrtávacie políčko v dolnej časti formulára zaistí, že budú vrátené výsledky

len od užívateľov, ktorí majú voľné sloty na upload – teda dá sa od nich sťahovať.

Po odoslaní formulára sa na strane klienta odpočítava dvadsať sekúnd. Počas tohto

času beží na serveri PHP skript, ktorý sa pripojí na hub pod vlastným nickom, odošle

požiadavku na vyhľadávanie a čaká na výsledky. Prijaté výsledky ukladá do databázy,

konkrétne do tabuľky dcsearch. Keď uplynie dvadsať sekúnd, skript na strane servera sa

ukončí, a v prehliadači sa vyvolá znovunačítanie stránky, teda aj zobrazenie výsledkov.

Výsledky určené danému užívateľovi, sa v databáze odlíšia podľa stĺpca session, ktorý

obsahuje identifikátor PHP relácie.

Vnútorne funguje vyhľadávanie (podľa DC protokolu) – veľmi stručne – takto:

• klient sa pripojí na server – hub – TCP spojením. Predvolený port hubu je 411.

• prebehne handshake – výmena prihlasovacích informácií medzi hubom a klientom.

Hub vyšle požiadavku $Lock, na ktorú klient musí odoslať príslušný $Key a nick, pod

ktorým si želá na hube vystupovať, požiadavkou $Validate8ick. Každá požiadavka

DC protokolu je oddelená znakom | („pipe“).

• Ak na hube už nie je voľné miesto, alebo presmerováva užívateľov na iný hub, alebo

je požadovaný nick obsadený, hub informuje klienta o tomto fakte požiadavkami

$ForceMove či $ValidateDenide. Ak je nick chránený heslom, hub pošle $GetPass, na

čo klient musí odpovedať požiadavkou $MyPass nasledovanou heslom

v jednoduchom texte.

Page 44: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

36

• Keď všetko prebehlo v poriadku, hub privíta užívateľa požiadavkou $Hello

nasledovanou jeho nickom, ktorú pošle aj ostatným užívateľom na hub pripojeným,

aby vedeli, že na hub prišiel nový užívateľ.

• Novo pripojený užívateľ môže začať vyhľadávať. Odošle požiadavku na vyhľadávanie

hubu $Search, ktorý ju rozošle všetkým ostatným, na hub pripojeným užívateľom.

• Klient čaká na výsledky vyhľadávania tak, že načúva na zvolenom UDP porte, číslo

ktorého odoslal spolu s požiadavkou na hľadanie. Ak sa u niektorého z pripojených

užívateľov nájde súbor či adresár vyhovujúci zadaným podmienkam, na spomínanom

UDP porte hľadajúci klient obdrží výsledky ($SR) priamo od klienta, ktorý hľadanými

súbormi či adresármi disponuje.

• Ukončenie spojenia s hubom, odoslaním požiadavky $Quit hubu. Ten prepošle túto

požiadavku aj s nickom odchádzajúceho užívateľa ostatným užívateľom pripojeným

na hub.

Konkrétne a podrobné vysvetlenie fungovania vyhľadávania na internátnom DC hube

(zvlášť popis požiadaviek DC protokolu) presahuje rozsah tejto dokumentácie k bakalárskej

práci. Na portáli sa o operácie súvisiace s vyhľadávaním na DC hube stará súbor

dcsearch.php z modulu search (typu content), ktorý je, ako už bolo spomenuté, spúšťaný

Ajax-ovým volaním.

Page 45: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

37

6 OVERE9IE RIEŠE9IA

Z užívateľského pohľadu je možné overiť riešenie priamo na internetovej adrese

internátneho portálu: http://iklub.sk. Aby bolo možné overiť riešenie z administrátorského

i programátorského hľadiska, zdrojové kódy sú uložené na priloženom CD v adresári www.

Pre odskúšanie portálu na vlastnom stroji je treba vykonať nasledujúce operácie (postup bol

testovaný na Kubuntu 8.10 Intrepid Ibex s predvolenou inštaláciou apache2, mysql a php5):

• skopírovať obsah adresára www z CD do adresára určeného pre webové stránky web

servera (typicky /var/www)

• pripraviť obsah MySQL databázy importovaním zo súboru db.sql z priloženého CD

• v súbore init.db.php nastaviť prístupové údaje k databáze MySQL

• ak sa súbory portálu nenachádzajú v koreňovom adresári webového servera, treba

nastaviť obsah premennej $site_root na začiatku súboru index.php

• nastaviť oprávnenia – chmod – všetkých súborov a adresárov (vrátane koreňového

adresára portálu) tak, aby webový server ich mohol čítať, zapisovať do nich i spúšťať

ich. Na testovacie účely je vhodné nastaviť chmod 0777.

• nainštalovať balíky php-pear a php5-curl (kvôli umožneniu inštalácie XML_RPC2)

• do PEARu doinštalovať XML_RPC2 príkazom pear install XML_RPC2 (je

vyžadovaný kvôli integrácii s NMS)

• v súbore scripts/tiny_mce/plugins/iwimg/conf.inc.php treba nastaviť premenné

$config['image_url'] a $config['image_path']

• v súbore scripts/tiny_mce/plugins/filemanager/InsertFile/config.inc.php nastaviť

premenné $MY_DOCUME8T_ROOT, $MY_BASE_URL a

$MY_URL_TO_OPE8_FILE

• v súbore rcmail/config/db.inc.php treba nastaviť prístupové údaje k databáze, ktoré

budú využívané e-mailovým klientom

• v súbore modules/content/rcmail/modconfig.php zmeniť konfiguračnú premennú tohto

modulu $modconfig['uriitem'] tak, aby smerovala na umiestnenie e-mailového klienta

v tejto konkrétnej inštalácii portálu.

Ak je všetko v poriadku, portál by mal fungovať. Je možné, že ešte bude treba nastaviť

konfiguráciu PHP v súbore php.ini, avšak to závisí od použitej inštalácie PHP. Keďže portál

je v značnom rozsahu šitý na použitie na internátnej sieti, tak ak je server mimo internátnej

siete, nebudú fungovať tieto funkcie:

• vyhľadávanie na internátnom DC hube (je zvonka siete nedostupný)

• indexovanie obsahu internátnych FTP serverov (sú zvonka chránené firewallom)

• zobrazovanie aktuálnej teploty na Veľkom Dieli (tiež zvonka nedostupné)

Page 46: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

38

• integrácia s NMS (NMS vracia HTTP kód 401 Unauthorized) – pretože volanie

funkcií NMS je povolené len z IP adresy 158.193.86.1 – nebude fungovať ani na

internátnej sieti. V priložených zdrojových kódoch sú na nutných miestach volania

funkcií NMS vypoznámkované (priradenia premennej $UID).

V databáze sú vopred založené dva užívateľské účty, autentifikácia pomocou ktorých

bude fungovať vždy, teda aj bez účasti NMS. Administrátorský účet má prihlasovacie meno

admin a heslo admin. Užívateľský účet má prihlasovacie meno user a heslo user.

Page 47: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

39

7 ZÁVER

Cieľom tejto bakalárskej práce bolo vyvinúť a implementovať internátny portál

slúžiaci študentom Žilinskej univerzity, Internet Klubu, či ubytovacím a stravovacím

zariadeniam Žilinskej univerzity.

Internátny portál umožňuje správu veľkej časti obsahu dynamicky, bez nutnosti

znalosti programovacích jazykov – je to taký menší CMS na mieru ušitý pre Internet Klub.

Užívatelia môžu vyjadriť svoj názor prostredníctvom fóra či ankiet. Administrácia užívateľov

a podrobná správa ich oprávnení umožňuje určovať jednotlivým užívateľom špeciálne

oprávnenia vyplývajúce z ich poslania na portáli, napr. moderovanie fóra. Malým bonusom

pre užívateľov internátnej siete (teda majúcich účet v NMS) je vyhľadávanie na internátnom

DC hube a dostupnosť dodatočného obsahu, ktorý sa bežným užívateľom nesprístupní.

Do budúcnosti je v pláne umožnenie administrácie užívateľov pomocou užívateľských

skupín, ktoré budú preberané z NMS. Malo by to zjednodušiť administráciu užívateľov.

Ďalším nápadom do budúcnosti je prerábka jazykovej lokalizácie tak, aby bolo možné

jednoduchšie pridávať ďalšie jazyky. Nateraz postačujú dve jazykové verzie: slovenská

a anglická.

Dnes internátny portál funguje v ostrej prevádzke na adrese http://iklub.sk (resp.

http://dorm.uniza.sk) a teší sa veľkému počtu užívateľov, ktorí ho denne používajú. Obsahuje

mnoho ďalších modulov a funkcií, ktorých vysvetlenie fungovania by prekročilo rozsah tejto

dokumentácie k bakalárskej práci.

Page 48: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

40

8 ZOZ9AMY

8.1 ZOZ9AM POUŽITÝCH SKRATIEK

CD - Compact Disk

DC - DirectConnect

ID - identifikátor

IE - Internet Explorer

IK - Internet Klub

IP - Internet Protocol

JS - JavaScript

ŽU - Žilinská univerzita

CMS - Content Management System

CSS - Cascaded Style Sheets

DNS - Domain Name Service

FRI - Fakulta riadenia a informatiky

FTP - File Transfer Protocol

NMS - Network Management System

PHP - Personal Home Page (alebo PHP Hypertext Preprocessor)

RSS - Rich Site Summary

SQL - Structured Query Language

TCP - Transmission Control Protocol

TTH - Tiger Tree Hash

UDP - User Datagram Protocol

XML - eXtensible Markup Language

XSS - Cross-site scripting

AJAX - Asynchrónny JavaScript a XML

HTTP - Hypertext Transfer Protocol

IMAP - Internet Message Access Protocol

UTF-8 - UCS/Unicode Transformation Format

(X)HTML - (eXtensible) Hypertext Markup Language

WYSIWYG - What You See Is What You Get

Page 49: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

41

8.2 ZOZ9AM POUŽITÝCH ZDROJOV

[1] MySQL Reference Manual: http://dev.mysql.com/doc/refman/5.1/en

[2] PHP Manual: http://sk.php.net/manual/en

[3] Wikipedia: http://sk.wikipedia.org

[4] HITTMÁR, Š. 2007. Metodická pomôcka pre spracovateľov záverečných prác

bakalárskeho štúdia - bakalárskych prác. Žilina: 2007.

8.3 ZOZ9AM PRÍLOH

Príloha č. 1: Logický model databázy

Príloha č. 2: Fyzický model databázy

Príloha č. 3: Ukážka hlavnej stránky portálu

Príloha č. 4: Ukážka e-mailového klienta

Príloha č. 5: Popis štruktúry tabuliek v databáze

Príloha č. 6: CD so zdrojovými kódmi, modelmi databázy a jej exportom

Page 50: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

42

9 PRÍLOHY

Príloha č. 1

Obr

. 9-1

: Log

ický

mod

el d

atab

ázy

Page 51: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

43

Obr

. 9-2

: Fyz

ický

mod

el d

atab

ázy

Prí

loh

a č.

2

Page 52: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

44

Príloha č. 3

Obr. 9-3: Ukážka hlavnej stránky portálu

Page 53: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

45

Obr

. 9-4

: Uká

žka

e-m

ailo

vého

kli

enta

Prí

loh

a č.

4

Page 54: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

46

Príloha č. 5

Tabuľka Stĺpec Použitie

id

primárny kľúč; je cudzím kľúčom v mnohých

ďalších tabuľkách tam, kde treba ukladať informáciu

o autorovi údajov či úprav.

login prihlasovacie meno užívateľa

pass heslo užívateľa uložené ako jeho dvojnásobný md5

hash, teda má vždy presne 32 znakov

mail

e-mailová adresa užívateľa. Ukladá sa kvôli možnej

potrebe kontaktovať užívateľa, príp. rozoslať

hromadný e-mail, na notifikáciu o prichádzajúcej

novej súkromnej správe na portáli, a tiež na kontrolu

pri registrácii, či už nie je zaregistrovaný užívateľ

s takou istou e-mailovou adresou. Ak užívateľ má

účet v NMS, prevezme sa jeho e-mailová adresa

automaticky odtiaľ

regip

IP adresa, ktorú užívateľ mal pri vkladaní jeho

údajov do tejto tabuľky; a to buď pri registrácii,

alebo pri prvom prihlásení, ak už užívateľ mal účet

v NMS

lastip IP adresa užívateľa pri jeho poslednom prihlásení

regdate dátum a čas registrácie, resp. prvého prihlásenia (ak

užívateľ už mal účet v NMS)

lastseen dátum a čas posledného prihlásenia

lastrefresh

dátum a čas posledného načítania stránky. Používa sa

vo fóre na zvýraznenie nových príspevkov od

poslednej návštevy

uziv

oscislo

osobné číslo užívateľa. Táto hodnota je vždy null,

pretože osobné číslo sa nezaznamenáva.

V pôvodnom návrhu sa mali užívatelia registrovať

podľa osobného čísla a čísla čipovej karty, čím by sa

osobné číslo užívateľa. Táto hodnota je vždy null,

pretože osobné číslo sa nezaznamenáva. V pôvodnom

návrhu sa mali užívatelia registrovať podľa osobného

čísla a čísla čipovej karty, čím by sa predišlo viacná-

Page 55: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

47

sobným registráciám, no neskôr bolo rozhodnuté, že

klasická registrácia postačí. Tento stĺpec je tu

ponechaný pre prípadné použitie v budúcnosti a kód

využívajúci ho je vypoznámkovaný

prava

oprávnenia užívateľa pre rôzne operácie na portáli.

Ak nemá žiadne práva, tento záznam obsahuje

prázdny reťazec. Jednotlivé oprávnenia sa udávajú

ako reťazce v tvare „modul_oprávnenie“ a sú

oddelené znakom | („pipe“)

active

udáva, či je užívateľ aktívny. Táto hodnota sa

kontroluje aj medzi načítaniami stránok, preto je

možné odňať zlomyseľnému užívateľovi prístup „za

behu“. Predvolená hodnota je 1

notify

ak si užívateľ praje dostávať notifikačný e-mail pri

príchode súkromnej správy, táto hodnota obsahuje 1,

inak 0. Predvolená je 1

lang

dvojznakový kód jazyka užívateľa, na ktorý sa

stránka prepne po prihlásení. Predvolená je hodnota

„sk“

fileup_path

cesta pre zásuvný modul TinyMCE na nahrávanie

súborov, kam bude užívateľ môcť nahrávať súbory,

vytvárať podadresáre a pod. Táto cesta je relatívna

k adresáru /download. Ak je táto hodnota null,

užívateľ môže manipulovať so súbormi v adresári

/download a všetkých jeho podadresároch. Táto

hodnota má zmysel len, ak má užívateľ pridelené

oprávnenie na odosielanie súborov cez TinyMCE

s názvom main_upfiles

rname reálne meno a priezvisko užívateľa

rname_show

udáva preferenciu užívateľa, či sa jeho reálne meno

má zobraziť aj ostatným užívateľom. Predvolená

hodnota je 0, dá sa nastaviť v užívateľskom profile.

Ak je to možné, reálne meno sa prevezme z NMS.

udáva preferenciu užívateľa, či sa jeho reálne meno

má zobraziť aj ostatným užívateľom. Predvolená

hodnota je 0, dá sa nastaviť v užívateľskom profile.

Ak je to možné, reálne meno sa prevezme z NMS.

Page 56: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

48

Užívatelia, ktorí majú oprávnenie zobrazovať reálne

mená všetkých užívateľov, aj napriek tomu, že

užívateľ si zvolil svoje reálne meno nezverejniť, toto

jeho meno vidia

color

farba nicku. Takto je možné odlíšiť napr.

administrátorov od obyčajných užívateľov, príp.

prideliť špeciálnu farbu ľuďom zo študentských

organizácií

rcmail_login užívateľské meno pre automatické prihlásenie do

webmailu

rcmail_pass šifrované heslo pre automatické prihlásenie do

webmailu

id primárny kľúč

xfrom ID užívateľa, ktorý správu odoslal (cudzí kľúč

z tabuľky uziv)

xto ID užívateľa, ktorému je správa určená (cudzí kľúč

z tabuľky uziv)

subject subjekt správy

text text správy

datum dátum odoslania správy

msg

readmark udáva, či adresát správu už prečítal. Predvolená

hodnota je 0

id primárny kľúč

nadpis nadpis oznamu (veľký)

podnadpis podnadpis oznamu (malý)

text text oznamu

datum dátum odoslania oznamu

autor ID autora oznamu (cudzí kľúč z tabuľky uziv)

oznamy

modul

modul, do ktorého oznam patrí. Podľa modulu sa

určuje, akou farbou sa vypíše nadpis oznamu. Ak je

null, patrí na len titulnú stránku (a predvolená farba

nadpisu oznamu je čierna)

Page 57: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

49

viewtitle

ak oznam nepatrí len na titulnú stránku, táto hodnota

udáva, či oznam ostane len vo svojom module, alebo

sa zobrazí aj na titulnej stránke. Predvolená hodnota

je 1

id primárny kľúč

nadpis nadpis odkazu

popis popis odkazu

nadpis_en nadpis odkazu po anglicky

popis_en popis odkazu po anglicky

linka odkaz samotný

poradie poradie odkazu vo výpise. Čím nižšie číslo, tým je

odkaz vyššie

autor ID autora odkazu (cudzí kľúč z tabuľky uziv)

odkazy

acc_unreg,

acc_regnorm,

acc_regnms

určenie, či sa má odkaz zobraziť neregistrovaným

užívateľom, registrovaným bez účtu v NMS

a registrovaným s účtom v NMS. Predvolené

hodnoty sú 1

id primárny kľúč image_folders

caption názov virtuálneho adresára s obrázkami

id primárny kľúč

caption pôvodný názov obrázku, ktorý bol odoslaný na

server

filename názov obrázku na serveri, pod ktorým ho TinyMCE

uložil

alttext alternatívny text, ktorý sa po vložení obrázku do

textu vloží do jeho XHTML atribútu alt

images

folder ID virtuálneho adresára, do ktorého obrázok patrí

(cudzí kľúč z tabuľky image_folders)

id primárny kľúč

session PHP identifikátor relácie, určujúce toho, kto

vyhľadával; má vždy dĺžku presne 32 znakov

dcsearch

cas dátum a čas zápisu výsledku, pre informatívne účely

Page 58: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

50

file názov súboru či adresára

nick nick užívateľa na DC hube, u ktorého sa daný súbor

či adresár našiel

result celý výsledok, čiže názov súboru/adresára aj s cestou

k nemu

size

veľkosť nájdeného súboru uložená v užívateľsky

prívetivej forme (premenená na B, kB, MB, GB).

V prípade adresára je táto hodnota null

slots počet voľných slotov/počet všetkých slotov užívateľa

na DC

tth TTH (kontrolný súčet) súboru. Ak sa jedná o adresár,

hodnota je null

ip IP adresa užívateľa na DC spolu s portom, odkiaľ

prišli výsledky vyhľadávania

id primárny kľúč

var názov konfiguračnej premennej

value hodnota konfiguračnej premennej

typ

určuje, ako sa má premenná interpretovať

v administrácii – napr. ako zaškrtávacie políčko

(checkbox), či skupina checkboxov

popis popis konfiguračnej premennej

config

popis_en popis konfiguračnej premennej v angličtine

id, modul kompozitný primárny kľúč. Atribút modul určuje, do

ktorého modulu patrí podstránka, odkaz, či súbor

nazov nadpis stĺpca

stlpce

nazov_en nadpis stĺpca v anglickom jazyku

id primárny kľúč stlpce_data

kampatri, modul

kompozitný cudzí kľúč z tabuľky stlpce. Udáva, do

ktorého modulu a do ktorého stĺpca v rámci tohto

modulu záznam patrí. Ak je kampatri rovné null,

jedná sa o nezávislú podstránku (to znamená, že

odkaz na ňu sa nevypíše v stĺpcovom menu).

Page 59: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

51

poradie poradie pri výpise, záznamy s nižším číslom poradia

sú vo výpise vyššie.

nadpis nadpis sekcie

nadpis_en nadpis sekcie v anglickom jazyku

text

obsahuje text sekcie, ak sa jedná o textovú sekciu

(typ 1), názov súboru v adresári download ak sa

jedná o súbor (typ 2), alebo odkaz na externú stránku

(typ 3)

text_en variant hodnoty text pre anglickú verziu stránky

typ typ sekcie: text (hodnota 1), súbor (hodnota 2), alebo

odkaz na externú stránku (hodnota 3)

autor ID autora sekcie, cudzí kľúč z tabuľky uziv

acc_unreg,

acc_regnorm,

acc_regnms

určenie, či sa má sekcia zobraziť neregistrovaným

užívateľom, registrovaným bez účtu v NMS

a registrovaným s účtom v NMS. Toto platí aj na

vstup do sekcie, ak je to textová sekcia. Predvolené

hodnoty pre všetky polia sú 1

id primárny kľúč

adresa adresa FTP servera buď ako IP adresa, alebo DNS

názov; bez portu

port port, na ktorom beží FTP server

login prihlasovacie meno, predvolené je „anonymous“ pre

anonymný prístup na server

pass heslo; ak je anonymný prístup, heslo je null

datum dátum a čas poslednej indexácie FTP servera

popis stručný popis (trebárs nick majiteľa servera)

ftp_servers

autor ID užívateľa, ktorý server pridal do zoznamu, cudzí

kľúč z tabuľky uziv

id primárny kľúč

server cudzí kľúč z tabuľky ftp_servers, určuje, na ktorom

serveri sa súbor v čase indexovania nachádzal

ftp_files

nazov názov súboru, či adresára, s kompletnou cestou.

Adresáre sa končia lomítkom

názov súboru, či adresára, s kompletnou cestou.

Adresáre sa končia lomítkom

Page 60: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

52

velkost veľkosť súboru v bajtoch. Adresáre majú veľkosť 0

id primárny kľúč

autor ID autora príspevku, cudzí kľúč z tabuľky uziv

text text príspevku

ip IP adresa, z ktorej bol príspevok odoslaný

datum dátum a čas, kedy bol príspevok odoslaný

kampatri ID témy, do ktorej príspevok patrí (cudzí kľúč

z tabuľky forum_temy)

lastedit_datum

dátum a čas poslednej editácie príspevku. Ak

príspevok nebol nikdy editovaný, obsahuje hodnotu

null

forum_prispevky

lastedit_meno

ID užívateľa, ktorý naposledy editoval príspevok

(cudzí kľúč z tabuľky uziv). Ak príspevok nebol

nikdy editovaný, táto hodnota je null

id primárny kľúč

nadpis nadpis témy

kategoria ID kategórie, do ktorej téma patrí (cudzí kľúč

z tabuľky forum_kategorie)

sticky údaj o tom, či je téma tzv. statická. Statické témy sú

vo výpise tém vždy navrchu. Predvolená hodnota je 0

forum_temy

locked

údaj o tom, či je téma zamknutá. Do zamknutých tém

sa nedá prispievať ani upravovať príspevky, ak na to

užívateľ nemá špeciálne oprávnenie. Predvolená

hodnota je 0

id primárny kľúč

nazov názov kategórie

popis popis kategórie

poradie poradie kategórie vo výpise. Kategórie s nižším

poradovým číslom sú vypísané prv

forum_kategorie

acc_unreg,

acc_regnorm,

acc_regnms

určenie, či sa má kategória zobraziť neregistrovaným

užívateľom, registrovaným bez účtu v NMS

a registrovaným s účtom v NMS. Toto sa kontroluje

Page 61: BAKALÁRSKA PRÁCA - diplomovka.sme.sk · PREDHOVOR S rapídnym rastom dostupnosti internetu koncovým užívateľom sa čoraz viac kladie do popredia dynamickosť a tiež interaktívnosť

53

aj pri zobrazení výpisu tém v kategórii, aj pri výpise

príspevkov nejakej témy z kategórie. Predvolené

hodnoty pre všetky polia sú 1

id primárny kľúč

nadpis text nadpisu (veľký)

text text novinky (malý)

nadpis_en text nadpisu (veľký) pre anglickú verziu stránky

text_en text novinky (malý) pre anglickú verziu stránky

typ

číslo určujúce, komu sa má daná novinka zobraziť (0

= len neprihláseným, 1 = len prihláseným, 2 =

všetkým, 3 = nikomu)

newsflash

autor ID užívateľa, ktorý novinku pridal (cudzí kľúč: uziv)

id primárny kľúč

otazka otázka ankety

otazka_en otázka ankety v anglickom jazyku

autor ID užívateľa, ktorý anketu vytvoril (cudzí kľúč

z tabuľky uziv)

datum dátum a čas vytvorenia ankety

ankety

active

určuje, či je anketa aktívna, to znamená, že práve ona

bude zobrazená na stránke a bude sa v nej dať

hlasovať. Aktívna môže byť vždy maximálne jedna

anketa (to je zaistené na aplikačnej úrovni)

id primárny kľúč

anketa ID ankety, ku ktorej odpoveď patrí (cudzí kľúč

z tabuľky ankety)

odpoved text odpovede

odpoved_en text odpovede v anglickom jazyku

pocet počet hlasujúcich za danú odpoveď v ankete

ankety_odpovede

hlasovali

reťazec obsahujúci ID čísla užívateľov, ktorí za danú

odpoveď hlasovali, oddelené znakom | („pipe“). Ak

ešte za odpoveď nikto nehlasoval, táto hodnota

obsahuje prázdny reťazec