BBNEWS

Systém novinek v PHP a MySQL

Autor: Bohumír Bednařík (BoboCop), bobocop@bobocop.cz
Verze: 1.4
Poslední úpravy: 14.6.2007

Popis systému

Jedná se o jednoduchou aplikaci, která umožňuje ukládání novinek a akcí do databáze typu MySQL na webovém serveru s podporou PHP.

Novinky
informace typu "stalo se, proběhlo"
Akce
informace typu "připravujeme, nastane"
Články
informace typu "referát o něčem, článek, apod."

Aplikace při zobrazování novinek zobrazuje všechny novinky (resp. nastavený počet novinek), bez ohledu na datum (pouze je podle data řadí). Při zobrazování akcí zobrazuje vždy všechny akce (bez ohledu na nastavený počet), ale pouze takové, které mají datum od aktuálního data do budoucnosti (včetně akcí s datem rovným aktuálnímu datu). To znamená, že budou zobrazeny pouze akce, které teprve mohou nastat, nikoliv akce, které již proběhly. Při zobrazování článků jsou pak zobrazovány všechny články (resp. odkazy na ně), bez ohledu na datum.

Podle druhu položky (novinka, akce, článek) umí aplikace v administračním rozhraní i filtrovat, takže je možné zobrazovat jen seznam novinek, jen seznam akcí nebo jen seznam článků.

Seznam souborů:

Systém novinek se skládá z několika souborů a dvou podadresářů. Podadresář inc obsahuje soubory s různými funkcemi a formuláři, podadresář css obsahuje definici stylopisu pro zobrazování administrační části systému.

Soubory v hlavním adresáři:

index.php
slouží jako úvodní stránka systému (tzv. administrační část)
licence.txt
soubor s informacemi o licenci
logout.php
slouží k odhlášení přihlášeného uživatele ze systému
news-add.php
slouží k přidávání novinek
news-delete.php
slouží k mazání novinek
news-edit.php
slouží k editaci novinek
news-get.php
obsahuje funkci pro zobrazení novinek na stránkách
news-chfo.php
slouží ke změně přepínače Formátovat obsah v administračním rozhraní
news-chzd.php
slouží ke změně přepínače Zobrazovat datum v administračním rozhraní
news-chzp.php
slouží ke změně přepínače Zobrazovat položku v administračním rozhraní
news-install.php
stránka pro instalaci novinek
news-register.php
stránka pro dokončení instalace novinek – registraci tzv. administrátora
Readme.htm
soubor, který právě čtete

Soubory v podadresáři inc:

dbconnect.php
soubor pro připojení k databázi
end.php
soubor s definicí ukončení stránky (používá se při zobrazování stránek administrační části systému)
frmadd.inc.php
soubor s formulářem pro přidání nové novinky
frmedit.inc.php
soubor s formulářem pro editaci novinky
frmlogin.inc.php
soubor s formulářem pro přihlášení uživatele
functions.php
soubor s různými funkcemi, potřebnými k chodu systému
hdr.php
soubor s definicí začátku stránky (používá se při zobrazování stránek administrační části systému)
ismobile.php
soubor funkcí IsMobile, která umí rozpoznat, zda se na stránky dívá mobil
login.php
stránka sloužící k rozpoznání toho, zda je uživatel k systému přihlášen
texy-compact.php
skvělý převaděč textu do formátovaného HTML kódu. Texy je sexy – více viz stránky http://www.te­xy.info/

Soubory v podadresáři css:

default.css
soubor s definicí stylopisu pro zobrazování administrační části systému
print.css
soubor s definicí tiskového stylopisu administrační části systému

Instalace systému

Instalace spočívá ve třech krocích. Prvním krokem je úprava souboru dbconnect.php, druhým krokem je instalace systému na server a třetím krokem je spuštění souboru news-install.php.

Úprava souboru dbconnect.php

V tomto souboru je nutné nastavit správné hodnoty pro připojení k databázi. Pokud by hodnoty nebyly nastaveny správně, nebude systém fungovat.

Instalace systému na server

Na Váš webový server nakopírujte celý adresář news se všemi soubory, které obsahuje.

Systém nainstalujete otevřením souboru http://www.example.com/news/news-install.php ve Vašem prohlížeči internetu (www.example.com nahraďte adresou Vašeho serveru). Dále v textu budu uvádět pouze cesty za touto adresou.

Vlastní instalace pak probíhá ve dvou krocích. Prvním krokem je vytvoření tabulek, druhým krokem je registrace administrátora novinek (zvolení přihlašovacího jména a hesla a odeslání těchto hodnot na zadanou e-mailovou adresu).

Upozornění

Po provedení instalace odstraňte ze serveru soubory news-install.php a news-register.php, aby nemohlo dojít k tomu, že Vám systém někdo přeinstaluje.

Informace pro uživatele starších verzí

Pokud jste již používali některou ze starších verzí aplikace a pokud nechcete veškerá data přepisovat/přenášet do nové databáze, pak je nezbytně nutné, abyste před spuštěním nové verze systému do provozu provedli na tabulce bb_news následující SQL příkaz:

ALTER TABLE bb_news
ADD COLUMN ntype INTEGER UNSIGNED NOT NULL DEFAULT 1 AFTER cont,
ADD COLUMN nlang INTEGER UNSIGNED NOT NULL DEFAULT 1 AFTER ntype,
ADD COLUMN dontshow ENUM('0', '1') NOT NULL DEFAULT '1' AFTER formatcont,
ADD INDEX (date),
ADD INDEX (ntype),
ADD INDEX (nlang)

Přesněji řečeno, do tabulky bb_news je nutné doplnit (pokud tam ještě nejsou) následující sloupce:

Dále je nutné doplnit tabulku bb_langs následujícím SQL příkazem:

CREATE TABLE bb_langs (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
lang VARCHAR(45) NOT NULL DEFAULT '',
PRIMARY KEY(id)

Tuto tabulku pak naplnit následujícími hodnotami:

INSERT INTO bb_langs (lang) VALUES('čeština')
INSERT INTO bb_langs (lang) VALUES('angličtina')
INSERT INTO bb_langs (lang) VALUES('němčina')

Ovládání systému

Pokud jste systém instalovali podle výše uvedených pokynů, pak se do administrační části novinek dostanete zadáním adresy http://adresa_vasich_stranek/news/.

Systém zobrazí formulář pro přihlášení uživatele. Po zadání správných hodnot se zobrazí hlavní administrační stránka systému. Na této stránce se zobrazuje jméno přihlášeného uživatele, odkaz pro odhlášení ze systému, odkaz pro přidání nové položky, filtr zobrazení položek (všechny/jen novinky/jen akce/jen články) a tabulka s položkami. Tabulka je stránkována po deseti záznamech, přičemž pro přepnutí na jednotlivé stráky slouží odkazy nad a pod tabulkou (nezobrazují se, pokud je počet položek menší než 10).

Pro přidání nové položky klepněte na odkaz pro přidání nové položky. Zobrazí se stránka s formulářem, do kterého stačí vyplnit příslušné hodnoty a formulář odeslat. Pokud nedošlo k nějaké chybě, zobrazí se rekapitulace zadání s možností návratu zpět nebo uložení do databáze.

V tabulce se seznamem položek na hlavní administrační stránce systému se zobrazují jednotlivé položky, přičemž struktura tabulky je následující:

sloupec Datum
zobrazuje informaci o datu, které bylo nastaveno při přidání položky do tabulky
sloupec Nadpis
zobrazuje informace o nadpisu, který byl položce přiřazen (může být prázdný)
sloupec Obsah
zobrazuje vlastní obsah položky (obsah se v tabulce neformátuje, je zobrazen ve zdrojové podobě)
sloupec TP
zobrazuje informaci o typu položky (novinka, akce, článek)
sloupec JP
zobrazuje informaci o jazyku položky (čeština, angličtina, němčina)
sloupec ZP
zobrazuje informaci o tom, zda se má položka při generování do stránek zobrazovat
sloupec ZD
zobrazuje informaci o tom, zda se má u položky při generování do stránek zobrazovat datum
sloupec FO
zobrazuje informaci o tom, zda se má obsah položky při generování do stránek formátovat prostřednictvím Texy
sloupec Akce
zobrazuje odkazy na editaci nebo smazání položky

Hodnoty ve sloupcích ZP, ZD a FO slouží jako přepínače a klepnutím na ně je možné jejich hodnotu okamžitě změnit (na jedno klepnutí). Jejich hodnotu je možné změnit i editací položky

Přidávání/editace položek

Při přidávání/editaci položky je nutné dodržovat následující pravidla:

Použití systému na stránkách

Pro zobrazování položek na strákách slouží soubor news-get.php, který obsahuje několik funkcí. Nejdůležitější z nich je však funkce GetNews, která zajiš%tuje zobrazování položek.

Funkce vypadá následovně:

GetNews($cnt = 0, $newsformat = 1, $lang = 1, $whatshow = 1, $clurl = 'clanek.php', $showheader = True, $headerlevel = 2)

Přičemž význam jednotlivých parametrů je následující:

$cnt
definice počtu novinek (0 – vrátí všechny položky, jinak se vratí zadaný počet položek
výchozí hodnotou je hodnota 0
$newsformat
definice vzhledu položek (1 – seznam DL, 2 – seznam UL, 3 – ostavce P)
výchozí hodnotou je hodnota 1
$lang
definice jazyka zobrazované položky. Možné hodnoty jsou 1 pro češtinu, 2 pro angličtinu, 3 pro němčinu, přičemž použitý jazyk ještě neznamená, že se položka skutečně vypíše požadovaným jazykem, protože to už bude záležet na tom, zda uživatel při vkládání položky do databáze uvedený jazyk použije. Může tedy nastat situace, že bude definována položka s jazykem angličtina, ale její obsah bude přesto napsán česky, protože ho tak autor položky napíše. Aplikace nijak nekontroluje jazyk psaného obsahu (jedná se pouze o přiřazení čísla jazyka).
$whatshow
definice typu informace, kterou chci zobrazovat (1 – bude zobrazovat novinky, 2 – bude zobrazovat akce, 3 – bude zobrazovat články).
výchozí hodnotou je hodnota 1
$clurl
definice adresy stránky, která bude zobrazovat obsah článků (v případě, že typ zobrazované informace je článek)
$showheader
přepínač zobrazení nadpisu (True – bude se zobrazovat nadpis Novinky (Akce, Články), False – žádný nadpis se zobrazovat nebude)
výchozí hodnotou je hodnota True
$headerlevel
definice úrovně nadpisu (pokud byl parametr $showheader = True, pak definuje úroveň nadpisu (h1, h2, atd.). Možné hodnoty jsou 1 – 6.
výchozí hodnotou je hodnota 2

Příklad:

Pro zobrazení posledních tří novinek ve formátu odstavců se do kódu stránky vloží následující kód:

<?php
require "./news/news-get.php";
echo GetNews(3, 3);
?>

Více o funkčnosti systému se dozvíte prostudováním kódu jednotlivých stránek. Kód je přiměřeně komentován, takže by nemělo být příliš složité jej pochopit.

Licence

Systém je dodáván pod licencí GNU GPL. Viz soubor licence.htm.