stream-lined and more compact. There are a few parts I like to optimize
prior to heading towards comment moderation.
Please test, report bugs and update the footer()-part of your themes a
bit (see my theme)!!!
-- Dries
* <chit-chat>
UnConeD: - what about integrating it in your theme now?
- how was your last exam, btw?
Natrak : - did you arrived well?
Jeroen : - how was your *cough*blind date*cough*?
</chit-chat>
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.