working on it for about 4 a 5 hours today and I considered it would be
smart (backup- or crash-wise) to commit what I have made so far. I'm
aware of a few bugs and I'll keep workin on it:
- removing bugs
- clean up the code to make it very streamlined
- improve error checking
Once we got a stable comment system, I'll add moderation. But right
now I want to sort out the major problems.
* I made my theme the default theme until the other themes are updated.
* Expanded the database abstraction layer with more goodies.
=========================
Wulp. I did a major upgrade by (a) breaking a lot of stuff and (b) by
re-doing those things in a much better way. I redesigned the stories
and submissions SQL tables, the way they work and the way they co-
operate together.
In addition, I changed the way parameters are passed to
$theme->abstract() and $theme->article(). Instead of passing a
sh!tload of parameters that only cluttered the code and required too
much pre-processing on the engine-side, we now pass a singly object
$story. $story has more variables then the paramaters we used to pass,
so it allows for better theming (if you feel like it).
I'm not finished yet but I decided to upload my changes so you can
start patching and updating your themes: PLEASE update your themes
ASAP! I don't plan making heavy changes like this again, so don't
get intimiated. ;) You mainly have to update article() and abstract()
as well as a minor update of footer():
article(), abstract():
----------------------
- use the $story object - see my theme!
- the morelink can now be themed. Currently you can use the function
morelink_bytes() in function.inc to `render' the old morelink. The
idea is to make a morelink_words() or morelink_lines() sooner or
later because "188 bytes in body" is not half as clear as "52 words
in body". Clearly, "52 words" is much more informative. ;-)
footer():
---------
- in the article-part, you need to update the displayRelatedLinks():
instead of passing it $sid, you need to pass it $story (after you
globaled $story).
Everything should display correct on the following pages:
- main page
- article page (follow a `read more | xxx bytes in bdoy | x comments' link)
- submission queue
Check if they work with your theme: they should as they work fine for
me (theme `Dries') ... If you got stuck, just look at my theme or ask
for a hand on the list!
Hopefully you can update your themes asap. Thanks in advance.
number of SQL on the mainpage with factor 10 and shortened the code with 4
lines. There is only *one* optimized SQL query left, being:
$result = db_query("SELECT stories.*, COUNT(comments.sid) AS comments FROM
stories LEFT JOIN comments ON stories.sid = comments.sid WHERE
stories.status = 1 AND stories.time <= $date GROUP BY stories.sid ORDER BY
stories.sid DESC LIMIT $number");
Note: we use a LEFT JOIN to retrieve the number of comments associated
with each story. By retrieving this data now, we elimate a *lot*
of individual queries that would otherwise be required inside the
while-loop. If there is no matching record for the right table in
the ON-part of the LEFT JOIN, a row with all columns set to NULL
is used for the right table. This is required, as not every story
has a counterpart in the comments table (at a given time).
fixed a lot of annoying bugs and boxed whatever there was left to be boxed.
* user.class.php: renamed $user->update() to $user->rehash().
* user.class.php: fixed a typical quote-bug in $user->rehash().
* functions.inc: fixed bug in displayOldHeadlines().
* functions.inc: improved several functions.
* account.php: fixed major bug in showUser().
* account.php: added some extra words to the human-readable
password-generator(tm).
* account.php: boxed ALL functions! Fieuw!
* submit.php: add some general information and guidlines on how to
post submissions.
* config.inc: re-thought the categories to be more generic.
* submission.php: minor changes
* search.pph: fixed minor bug with the author's names.
Woops. I have an exam within 4 hours: back to my books. ;-)
--------------------------------------------------------------------
* Anyone could check sumbit.php, sumbission.php and faq.php for
typoes?
* Anyone could adjust calendar.class.php to fit IE? *huh*huh*
* Don't be scared to hack along (see below)! I'll be working on
the submissions and comments.
--------------------------------------------------------------------
Status of drop v0.10:
(make the system erational' and release it.)
- submissions:
submission queue (75% complete)
submission moderation (75% complete)
- comments:
comment moderation ( 0% complete)
comment administration ( 0% complete)
fixup timestamp mess ( 0% complete)
- user system:
mail password ( 0% complete)
user administation (50% complete)
patch admin.php ( 0% complete)
account confirmation ( 0% complete)
e-mail confimation upon modification of e-mail address
( 0% complete)
- proper handling of forms: text2html, html2text
html2txt, txt2html (10% complete)
bad-word filter (80% complete)
automatic link detection ( 0% complete)
allowed HTML-tag checker ( 0% complete)
- FAQ:
cleanup, disclaimer (50% complete)
- theme:
box everything (100% complete)
(under development). I'll slowly keep adding stuff to admin-new.php
and one day we'll be able to replace admin.php with admin-new.php: I
am just making preparations and `pre-processing' some stuff so we'll
have something to work from. Remind that the rewrite of admin.php is
sheduled for v0.20.
to the outside world. It's a first step towards improving the submission
queue.
* More important (to the theme babies): instead of passing individual
parameters I'm considering to pass an object.
$theme->abstract($story->aid, $story->informant, $story->time,
stripslashes($story->subject), stripslashes($story->abstract),
stripslashes($story->comments), $story->category, $story->department,
$morelink);
would become:
$theme->abstract($story);
What do you guys think about pushing this trough? It would be much better
and would give extra `power' to the themes.
running. This means people can submit stories, and moderators can
moderate stories. When a submission reaches a certain positive
threshold (currently set to 2) the submission becomes a story and up
it goes. If a submission reaches a certain negative threshold
(currently set to -2) the submission is dumped.
The fact this is all done by our visitors (without our intervention)
makes it truly spiffy imho. The website can live a life on it's own,
fed by the visitors.
Beware, a lot of work need to be done though ... it's just a first
basic implementation with the core functionality. There are quite
a lot of things that I'll need to change, extend and improve. But
comments, suggestions and ideas are - as always - welcomed.
Please read this log message carefully! It features quite a lot of
important information.
To test the moderation, log in, select theme 'Dries' (the other themes
need a small update) and head by clicking the one and only 'submission
moderation' link. Don't be afraid to submit lame/funny/useless
stories for testing purpose ... as soon we go public, we'll wipe out
the story database. ;-)
WHAT'S NEW?
-----------
* Added 2 new operations to user.class.php to set and retrieve the
user's "history". Very evil but required to avoid people voting
twice.
* Moved dbsave() from account.php to functions.php. In addition, I
added a new function to user.class.php called `save()' that ...
well, saves the object back to the database. It's (IMHO) a better
approach compared to dbsave(): it keeps things organized. ;-)
BUGFIXES:
---------
* Fixed a (heavy) memory leak in the constructor of user.class.php:
mysql_fetch_array() returns an _associative_ array which made the
constructor `pollute' the object with a lot of useless variables.
* Fixed the slash-problem on the account pages. :-)
* Fixed UnConeD's theme glitch, alas the warning.
* Fixed the e-mail address not showing in the confirmation email
(upon registration).
* Fixed the typical quote and backslash problems in submit.php.
* submit.php now uses the database abstraction layer.
IMPORTANT:
----------
* You can check the new submission system at:
http://beta.drop.org/submission.php
or by following the `submission moderation' link from my theme.
* UnConeD, Jeroen: you'll need to update your themes to take
advantage of the new function: displayAccount(). This function
will display the `submission moderation' link when a user is
logged on.
* Natrak: you might want to apply the patches in user.class.php
on the other sites using the same user-system.
* Temporary bugfix to fix a problem with UnConeD's theme. Don't worry,
it's because some changes I made ... which should be fixed now.
Note:
* Btw, has someone bothered to scale the calendar.class.php to fit nicely
in IE (Windows)? Please do. ;-)
* Various small changes to account.php including a SQL table movement:
'testusers' -> 'users'. As a result, user.class.php and article.php
needed patching as well. Hopefully I didn't break anyting. ;o)
layer. My new files already take advantage of the abstraction layer
though no attempt is made to port the existing files: this is sheduled
for a future v0.40 release (see http://beta.drop.org/docs/roadmap.php).
Anyway, with the abstraction layer it should be theoretically possible
to run drop on top of every database, even on top of a home-brewed
file-based system. *wink-to-UnConeD* ;-)
system:
- you can add and remove wild-carded e-mails from the banlist.
- you can add and remove wild-carded hostnames from the banlist.
- you can add and remove wild-carded usernames from the banlist.
- you can add and remove wild-carded profanity from the banlist.
- you can browse all bans according to their category: see ban.php.
----------------
* Altered the theming system to follow the naming convention of class files.
theme.class has been renamed to theme.class.php!
* I fixed the default theme and my own theme, but none of the others themes
for your convenience... This means *you* have to rename your theme on CVS
by (a) removing it from CVS and (b) adding it back with a its new name:
'theme.class.php'.
For the clueless:
mv theme.class theme.class.php
cvs remove theme.class
cvs add theme.class.php
cvs commit theme.class.php
* Sorry for breaking things ... try to fix it asap and everything will be
OK. ;)
---------
* Fixed a few bugs in account.php - saves Natrak some time.
I only fixed the obvious, very small bugs reported today.
Enhancements:
-------------
* Made the default theme a setting in config.inc. You can now easily
change the default theme. It's a much nicer approach with more
flexibility. When working on your theme, you set your theme to be the
default theme. In addition, with a small scripting tric in config.inc
we could automatically set the default theme to the most popular theme
(according to the user table), or we could periodically cycle (round
robin) through all themes: say every week a new default theme. I truly
think that's better. :-)
* Adjusted config.inc, theme.inc and account.php in order to do so.
* I have some remarks with regards to config.inc, but I think I'll share
those later in a seperate mail.