Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
PHP
Interní vzkazy - I
redakcni system
30. srpna 2002, 00.00 | Náš redakční systém doplníme o možnost posíláni vzkazů mezi autory, čím výrazně zlepšíme možnost komunikace mezi autory a korektory.
Nedávno jsem dostal e-mail, ve kterém byl docela dobrý nápad na rozšíření našeho RS. Jedná se o zprávy mezi autory na serveru. Posílat zprávy mohl pouze administrátor, protože on jediný znal e-maily (tento systém je používá pouze jako volitelný doplněk). Pokud chtěl korektor něco vzkázat pisateli, tak mohl použít poznámku ke článku. Autoři ale žádnou možnost komunikace - jak mezi sebou, tak s korektorem (mimo článku) - neměli.Z toho důvodu je tu možnost psát vzkazy. Chtěl bych upozornit, že se jedná o interní vzkazy! Vzkazy od čtenářů si můžeme udělat někdy příště. Přejděme ale rovnou k samotnému vytvoření této služby v admincentru.
První krok je založení nové tabulky. Ta má následující strukturu.
|
Popišme si nyní co všechno budeme do tabulky ukládat.
- id - jedinečný identifikátor, na jehož základě budeme se vzkazem pracovat.
- od_id - položka, kam se bude ukládat číslo autora vzkazu. Číslo bude shodné s autorovým id v tabulce "autori"
- pro_id - to samé jako předchozí, jen s tím rozdílem, že zde bude příjemce zprávy
- predmet - obsahuje předmět zprávy
- stav - bude nám říkat, zda byl vzkaz přečten ('a'), bylo na něj odpovídáno ('r'), či jej zatím příjemce neviděl ('n')
- zprava - obsahuje samotný vzkaz
- odpoved_id - pokud je vzkaz odpověď na nějaký jiný vzkaz, bude zde id zprávy, na kterou je to odpověď
- smazat - tato položka je zde kvůli tomu, že pokud by např. příjemce chtěl smazat zprávu, tak by ji smazal i pro odesílatele. Ten ji ale třeba smazat nechce. Více si o ní povíme později.
|
Z tabulky vzkazy zjistíme počet nových zpráv, načteme výsledek a podle počtu zpráv upravíme hlášení tak, aby vyhovovala českému jazyku. Hlášení je uloženo v proměnné $zprava. Pak již jen přidáme odkaz na vzkazy.
Nyní vám ukáži script vzkazy_cist.php, který si následovně popíšeme.
|
Co se ve scriptu děje? Provedeme známé věci na začátcích scriptu. To jest zajistíme, že se stránka bude vždy načítat ze serveru a ne z cache paměti počítače. Jen tak mimochodem. Hlavička "Cache-Control", kterou používáme mi, odpovídá standartu HTTP/1.0. Aby odpovídala HTTP/1.1 musela by vypadat následovně.
|
Dále provedeme autorizaci a načteme soubory potřebné pro běh scriptu.
Pokud existuje proměnná $did, smažeme vzkaz s tímto id. Mazáni vzkazů je jistě důležité, neboť za chvíli bychom jich měli tolik, že bychom ztrácely přehled, ale hlavně by zabíraly místo v databázi. Nemůžeme samozřejmě nikoho nutit, aby si mazal některé vzkazy, ale jistě i příjemce se bude chtít některých zpráv zbavit. Je ale také potřeba ošetřit ty případy, kdy si odesílat zprávu smaže, ale příjemce si jí chce nechat. Pokud by se použilo DELETE smazala by se i pro příjemce. Z toho důvodu je tu položka smazat. Po vložení vzkazu má hodnotu 0. Tu má do té doby, než se ji rozhodne někdo z nich smazat. V tuto chvíli se však stává pouze neviditelnou pro toho, kdo ji smazal jako první. Teprve až v okamžiku, kdy ji smaže i druhý z nich, se na trvalo odstraní z databáze. Vyjimkou je případ, kdy odesílatel poslal zprávu a příjemce si ji ještě nepřečetl. V takovém případě se smaže natrvalo.
Dále tam máme možnost vybrat si, které zprávy chceme zobrazit. Z těchto dat sestavíme dotaz do databáze. Asi se vám zdá divné, proč když chci zobrazit přečtené, tak používám 'r' a 'a'. Myslím, že je jasné, že pokud byl nějaký vzkaz zodpovězen, tak musel být také přečtený. V SQL dotazu samozřejmě nesmí chybět podmínka pro smazané zprávy (smazat!='$INFO[0]').
Následuje již výpis jednotlivých vzkazů. Pokud zobrazujeme zprávy odeslané, tak víme, že jsme je poslali my a tak vybereme jméno příjemce. Proto i ta změna v nadpisu sloupce ("od" a "pro"). U mazání vidíme podmínku, o které jsem již mluvil. Jedná se o mazání odeslané zprávy, která ještě nebyla přečtena. Zajistíme to tím, že proměnnou $mazat nastavíme na true.
Ještě něco málo k zobrazování vzkazů podle práv uživatelů. Můžeme se s tím setkat i v televizi, kde je z toho vždy strašný poprask. Zámněrně jsem to postavil tak, že každý může číst vzkazy určené jen jemu, nebo jím odeslané. Předejde se tak zásahu do soukromí. Upravit vše do podoby, kdy bude mít nebo vybraná osoba přístup k celkové korespondenci všech užvatelů, není příjiš složité. Jde vlastně jen o úpravu SQL dotazu. Myslím ale, že soukromí jiných není naše záležitost. Vše je však na vašem svědomí.
Tak to by bylo pro dnešek vše. Zkuste to nějak přelouskat a těšte se na příště, kdy si ukážeme jak psát vzkazy.
Obsah seriálu (více o seriálu):
- Redakční systém I.
- Redakční systém II.
- Redakční systém III.
- Redakční Systém IV.
- Redakční systém V.
- Redakční systém VI.
- Redakční systém VII.
- Redakční systém VIII
- Redakční systém - tisk
- Redakční systém - generování
- Redakční systém - generování II.
- Redakční systém - generování III.
- Redakční systém - generování IV
- Redakční systém - generování V.
- Redakční systém - krátké zprávy a CSS styly
- Upload obrázků
- Upload - II a logout
- Schvalování článků - II
- Dodatečné přidání obrázku
- Regulární výrazy I
- Regulární výrazy II
- Redakční systém: Fulltext - I.
- Fulltext - II
- Co s RS?
- Optimalizace databáze v RS
- Interní vzkazy - I
- Interní vzkazy - II
- Interní vzkazy - III
- Náměty od čtenářů - I
- Náměty od čtenářů - II
- Náměty od čtenářů - III
- Náměty od čtenářů - IV
- Náhrada FTP
- Ankety
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007