čtvrtek 27. listopadu 2008

Pavlina19

Tak mě k tomu konečně dokopali.
Spojené síly ostatních uživatel, Pavliny samotné, a toho že jsem konečně měl zase trochu času způsobily, že jsem pavlině nastavil limit...

Zkrátka to její floodování Equilibria už bylo moc... A nedala si říct a nedala. A furt jí všichni do komentů nadávali...

No, prostě odteď může přidat Equi jen když od toho minulého přidání uběhlo sedm dní a více...

Ale abych ti udělal alespoň trochu radost Beju, jsi navěky (nebo alespoň než se mi bude chtít naprogramovat to lépe a korektněji) zapsaná v samotném zdrojovém kódu SW:


//ak je user Pavlina19, tak skontroluj poslednú spoveď
//(temporary code, malo by byť robené všeobecnejšie, aby sa to dalo
//aplikovať na akéhokoľvek usera cez db)
if($Login->Get() == "Pavlina19")
{
$qr = mysql_query("SELECT * FROM swEquilibrium WHERE (Owner = 'Pavlina19') AND (OwnerRegistered = 1) ORDER BY DateAdded DESC LIMIT 1;");
$fqr = mysql_fetch_assoc($qr);

//ak je dátum pridania starší ako 7 dní, nesprav nič, ak novší, tak vypíš hlášku a returnni
if($fqr["DateAdded"] > date("Y-m-d H:i:s", strtotime("-1 week")))
{
$le = date("d.m. Y, H:i", strtotime($fqr["DateAdded"]));
$ne = date("d.m. Y, H:i", strtotime($fqr["DateAdded"]) + 60*60*24*7);

$res =
...[snip: html kód zprávy která se jí zobrazí]...

return $res;
}//koniec ifu ak je limit v platnosti
}//koniec ifu ak je user Pavlina19

pondělí 8. září 2008

Konečně!

Lidi, budeme mít články!
Konečně jsem našel co jsem hledal.
Webový WYSIWYG RTF... tedy spíš HTML (ale to není až tak podstatné) editor...

Ehm, laicky řečeno, něco jako takové malé okénko wordu na stránce - a díky němu budete moct formátovat text který píšete - nastavit mu písmo, velikost, barvu, zarovnání, jednoduše vkládat odkazy, obrázky, a dokonce i videa nebo flashové animace!

Říká si to tinyMCE, a je to udělaný kompletně v JavaScriptu, a já sice netuším jak, ale jeho tvůrce obdivuju...

Jo, a proč o tom mluvím v souvislosti s články?
Protože v mém konceptu se takovýto editor s články vždy spojoval...
Už dávno jsem vám mohl dát další textarea, kam by jste ty "články" psali, ale nebylo by to ono... Byl by to zase jen obyčejnej text, bez všech těch možností, které měla editace článků na původním MM, a to mi přišlo nepřípustné.
Tak jsem hledal.
A teď, asi po třech měsících jsem našel!

Takže články budou, tak do dvou týdnů.
(Přeci jen to není jenom o tom editorku, chce to taky novou tabulku, pár nových PHP tříd, udělat schvalování a výpis, a tak.)

Avšak editor už je vlastně plně funkční, a můžete si jej klidně vyzkoušet, tady.
Po tom, co si vyhrajete se vším možným, stiskněte uložit (hned první tlačítko, klasická disketka), a text se zatím sice nikam neuloží, ale zobrazí se vám téměř tak, jak by se zobrazil v článcích...
(Akorát že bude na celou stránku, a v článcích bude jenom ve středovém panelu. A taky si budu muset promyslet defaultní barvu pozadí, písma, atakdál... Ale i přes to si je budete moci změnit...)

Zabavte se, doufejte že se mi to povede, a držte palce =)

středa 3. září 2008

SAKRA! Aktivační maily!

...až teď mi to došlo, když jsem se rozhodl podívat do registrační classy... až teď jsem si uvědomil, proč nějak stoupal počet lidí stěžujících si na nemožnost přihlášení/nefunkční registraci...

Nechodili jim aktivační maily! A když přišly, tak tam byla špatná adresa, jěště na starej server!

...ale už je to opravený. A taky už konečně funguje diakritika, a je to hezkej HTML mail, a taky subject a mail-from, a tak...

Jo, a taky jedna minoritní chybička - když jste jako host přidali zpověď, a do Nicku jste zadali jméno existujícího uživatele, v hlavičce spovědi to k vám přiřadilo status toho registrovaného, i když to nebyl link na jeho profil...

Problém byl, že podmínka kontrolovala jestli je nastavenej status, a když ne, tak ho nastavila na "Host". Ale status nastavenej byl - protože z DB jsem tahal záznamy o Equi a pároval je se záznamy o uživatelech na základě uživatelského jména, takže pokud se jména shodovaly, status prostě nastavený byl. O kus dál však podmínka, která rozhodovala jestli z jména udělat link na profil nebo ne, kontrolovala jestli OwnerRegistered při zpovědi je true nebo false, a fungovala správně.

Nevím co to bylo za nápad s tou první podmínkou, ale přepsal jsem ji taky na if(!OwnerRegistered){Status = "Host";}, a běhá to správně.

To by bylo nadnes vše, zítra snad něco o obyvatelstvu, a událostech na SW samotném, ne v jeho kódu.

úterý 26. srpna 2008

Diaries

...tak už se mi konečně povedlo je sfunkčnit?
Myslím zobrazování posledního přidaného vůbec, nebo posledního v deníku konkrétního uživatele...
Ta query byla zabiják...
Schválně, query která vybere nejnovější záznam a bere v úvahu i to, jestli máte dostatečné privilegia na čtení záznamu (jste registrovaní, nebo vás má jeho majitel v přátelích, podle toho jak je ten záznam nastaven) vypadá takto pro vybrání záznamu na titulku:

$hugeQuery =
"SELECT *
FROM (
SELECT swDiaries.Owner, swDiaries.DateAdded, swDiaries.VisibleTo, swDiaries.Title, swDiaries.Text1, Ft.FriendOwner, Ft.Friend
FROM swDiaries
LEFT JOIN (SELECT swFriends.Owner AS FriendOwner, swFriends.Friend
FROM swFriends
WHERE (swFriends.Friend = '" . $Login->Get() . "')) AS Ft
ON swDiaries.Owner = Ft.FriendOwner ORDER BY swDiaries.DateAdded DESC) as ResT
WHERE (ResT.VisibleTo <= " . $Login->GetPrivileges() . ") OR ((ResT.VisibleTo = 3) AND (ResT.Owner = '" . $Login->Get() . "')) OR ((ResT.VisibleTo = 2) AND (ResT.Friend = '" . $Login->Get() . "'))
LIMIT 1;";

A query pro výběr nejnovějšího záznamu z deníku konkrétního uživatele (pro zobrazení v jeho profilu), která taky bere v úvahu všechna privilegia a tak, vypadá zase takhle:

$hugeQuery =
"SELECT *
FROM (
SELECT swDiaries.Owner, swDiaries.DateAdded, swDiaries.VisibleTo, swDiaries.Title, swDiaries.Text1, Ft.FriendOwner, Ft.Friend
FROM swDiaries
LEFT JOIN (SELECT swFriends.Owner AS FriendOwner, swFriends.Friend
FROM swFriends
WHERE swFriends.Friend = '" . $Login->Get() . "') AS Ft
ON swDiaries.Owner = Ft.FriendOwner ORDER BY swDiaries.DateAdded DESC) as ResT
WHERE (ResT.Owner = '" . $Owner . "') AND ((ResT.VisibleTo <= " . ($Login->GetPrivileges()) . ") OR ((ResT.VisibleTo = 3) AND (ResT.Owner = '" . $Login->Get() . "')) OR ((ResT.VisibleTo = 2) AND (ResT.Friend = '" . $Login->Get() . "')))
LIMIT 1;";

pondělí 25. srpna 2008

č. jednotné č. množné
1. p. téma témata
2. p. tématu témat
3. p. tématu tématům
4. p. téma témata
5. p. téma mata
6. p. tématu matech
7. p. tématem maty

Sakra, už bych to konečně v tom fóru mohl poopravovat, co?

čtvrtek 14. srpna 2008

Krátkodobé cíle...

Takže... Co dál?

1. Úpravy fóra. Při výpisu témat nezobrazovat poslední vytvořený thread v tématu, ale poslední ve kterém byl přidán nový post. A taky udělat, aby to byl rovnou link.
1.1. Taky poopravovat výskyty slova téma.

2. Při zakládání nového threadu udělat možnost "Zvýraznit tento thread (stojí 5 vln) - zobrazí informaci o založení threadu v novinkách v pravém panelu.", kde po jejím zaškrtnutí budete moct napsat text, který se má v pravém panelu zobrazovat, a speciální bbcode značka [threadlink]nějaký text[/threadlink] se překonvertuje na link přímo do threadu.

3. Opravit popup menu online panelu - pošta se totiž neodešle, když někomu píšete přes stránku která se otevřela kliknutím na "Napsat zprávu" z tohoto menu.

4. Dodělat zobrazování pohlaví/statusu při jménech uživatel.

5. Popup okno se základními údaji o uživateli, když na něj najedete myší. A taky s možností zobrazit profil, a napsat zprávu.

To jsou asi všechny krátkodobé cíle.

středa 13. srpna 2008

To je rychlost!

Takže jedna věc, pro mě hodně překvapující.

Shadoworld je asi desetkrát rychlejší než Město Mrtvých 2.0.

Přičemž na MM2.0 se pořád nachází jenom guestbook, který je pravděpodobně v jedné tabulce.
A titulní strana není v tabulce žádné.

Tohle hlásí MM2.0 když otevřete guestbook: Stránka byla vygenerována za 0.155 s
Přepodkládám, jak už jsem řekl, jednu tabulku, a jednu query.

Tohle hlásí SW, když otevřete Equilibrium: Vygenerováno za 0.023 sekund
Přičemž minimum (za ideálních podmínek, že všechny zpovědi v seznamu jsou od neregistrovaných uživatel) je to jedna query na jedné tabulce.
Za normálních podmínek je to jedna query s joinem dvou tabulek (swEquilibrium a swUsers).
Což není moc velký rozdíl v počtu operací, ale velký rozdíl ve výkonu.
A to jěště dělám asi nejhorší věc, kterou můžu - celý zdrojový html stránky z php echuju.

Holt, forpsi má asi supr servery :-P