id || $user->id > 4) exit(); /* * Account administration: */ function account_display($order = "username") { $sort = array("ID" => "id", "fake e-mail address" => "fake_email", "homepage" => "url", "hostname" => "last_host", "last access date" => "last_access", "real e-mail address" => "real_email", "real name" => "name", "status" => "status", "theme" => "theme", "timezone" => "timezone", "username" => "userid"); $show = array("ID" => "id", "username" => "userid", "$order" => "$sort[$order]", "status" => "status"); $stat = array(0 => "blocked", 1 => "not confirmed", 2 => "open"); ### Perform query: $result = db_query("SELECT u.id, u.userid, u.$sort[$order], u.status FROM users u ORDER BY $sort[$order]"); ### Generate output: $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; foreach ($show as $key=>$value) { $output .= " \n"; } $output .= " \n"; $output .= " \n"; while ($account = db_fetch_array($result)) { $output .= " \n"; foreach ($show as $key=>$value) { switch($value) { case "real_email": $output .= " \n"; break; case "last_access": $output .= " \n"; break; case "status": $output .= " \n"; break; case "timezone": $output .= " \n"; break; case "url": $output .= " \n"; break; case "userid": $output .= " \n"; break; default: $output .= " \n"; } } $output .= " \n"; $output .= " \n"; } $output .= "
\n"; $output .= "
\n"; $output .= " \n"; $output .= " \n"; $output .= "
\n"; $output .= "
$keyoperations
". format_email($account[$value]) ."". format_date($account[$value]) ."". $stat[$account[$value]] ."". format_data($account[$value] / 3600) ."". format_url($account[$value]) ."". format_username($account[$value], 1) ."". format_data($account[$value]) ."view
\n"; print $output; } function account_stories($id) { $result = db_query("SELECT * FROM stories WHERE author = $id ORDER BY timestamp DESC"); while ($story = db_fetch_object($result)) { $output .= "
  • id\">". check_output($story->subject) ."
  • \n"; } return $output; } function account_comments($id) { $result = db_query("SELECT * FROM comments WHERE author = $id ORDER BY timestamp DESC"); while ($comment = db_fetch_object($result)) { $output .= "
  • sid&cid=$comment->cid&pid=$comment->pid#$comment->cid\">". check_output($comment->subject) ."
  • \n"; } return $output; } function account_view($name) { $status = array(0 => "blocked", 1 => "not confirmed", 2 => "open"); $result = db_query("SELECT * FROM users WHERE userid = '$name'"); if ($account = db_fetch_object($result)) { $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= "
    ID:$account->id
    Status:". $status[$account->status] ."
    Username:$account->userid
    Real name:". format_data($account->name) ."
    Real e-mail address:". format_email($account->real_email) ."
    Fake e-mail address:". format_data($account->fake_email) ."
    URL of homepage:". format_url($account->url) ."
    Last access:". format_date($account->last_access) ." from $account->last_host
    Bio information:". format_data($account->bio) ."
    Signature:". format_data($account->signature) ."
    Theme:". format_data($account->theme) ."
    Timezone:". format_data($account->timezone / 3600) ."
    Submitted stories:". format_data(account_stories($account->id)) ."
    Submitted comments:". format_data(account_comments($account->id)) ."
    \n"; print "$output"; } } /* * Watchdog administration: */ function watchdog_display($order = "date") { $colors = array("#D8BFD8", "#6495ED", "#6A5ADF", "#FFFFFF", "#FFA500", "#FF3C3C"); $fields = array("date" => "id DESC", "username" => "user", "location" => "location", "message" => "message DESC", "level" => "level DESC"); ### Perform query: $result = db_query("SELECT l.*, u.userid FROM watchdog l LEFT JOIN users u ON l.user = u.id ORDER BY l.$fields[$order]"); ### Generate output: $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; while ($watchdog = db_fetch_object($result)) { $output .= " level] ."\">\n"; } $output .= "
    \n"; $output .= "
    \n"; $output .= " \n"; $output .= " \n"; $output .= "
    \n"; $output .= "
    datemessageuseroperations
    ". format_date($watchdog->timestamp) ."". substr(check_output($watchdog->message), 0, 44) ."". format_username($watchdog->userid, 1) ."id\">more
    \n"; print $output; } function watchdog_view($id) { $result = db_query("SELECT l.*, u.userid FROM watchdog l LEFT JOIN users u ON l.user = u.id WHERE l.id = $id"); if ($watchdog = db_fetch_object($result)) { $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= "
    Level:$watchdog->level
    Date:". format_date($watchdog->timestamp, "extra large") ."
    User:". format_username($watchdog->userid, 1) ."
    Location:$watchdog->location
    Message:$watchdog->message
    Hostname:$watchdog->hostname
    \n"; print $output; } } /* * Ban administration: */ function ban_check($mask, $category) { $ban = ban_match($mask, $category); $output .= "". ($ban ? "Matched ban '$ban->mask' with reason: $ban->reason.

    \n" : "No matching bans for '$mask'.

    \n") .""; print $output; } function ban_new($mask, $category, $reason) { ban_add($mask, $category, $reason, &$message); $output .= "$message\n"; print $output; } function ban_display($category = "") { global $type2index; ### initialize variable: $category = $category ? $category : 1; ### Perform query: $result = db_query("SELECT * FROM bans WHERE type = $category ORDER BY mask"); ### Generate output: $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; while ($ban = db_fetch_object($result)) { $output .= " \n"; } $output .= " \n"; $output .= "
    \n"; $output .= "
    \n"; $output .= " \n"; $output .= " \n"; $output .= "
    \n"; $output .= "
    maskreasonoperations
    $ban->mask$ban->reasonid\">delete
    %: matches any number of characters, even zero characters.
    _: matches exactly one character.
    \n"; $output .= "


    \n"; $output .= "

    Add new ban:

    \n"; $output .= "
    \n"; $output .= "Banmask:
    \n"; $output .= "

    \n"; $output .= "Type:
    \n"; $output .= "

    \n"; $output .= "Reason:
    \n"; $output .= "

    \n"; $output .= "
    \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= "

    Ban check:

    \n"; $output .= "
    \n"; $output .= "Banmask:
    \n"; $output .= "

    \n"; $output .= "Type:
    \n"; $output .= "

    \n"; $output .= "
    \n"; $output .= "

    \n"; print $output; } /* * Comments administration: */ function comment_edit($id) { $result = db_query("SELECT c.*, u.userid FROM comments c LEFT JOIN users u ON c.author = u.id WHERE c.cid = $id"); $comment = db_fetch_object($result); $output .= "
    \n"; $output .= "

    \n"; $output .= " Author:
    \n"; $output .= " ". format_username($comment->userid, 1) ."\n"; $output .= "

    \n"; $output .= "

    \n"; $output .= " Subject:
    \n"; $output .= " subject)) ."\">
    \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= "Comment:
    \n"; $output .= "
    \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= " \n"; $output .= "

    \n"; $output .= "
    \n"; print $output; } function comment_save($id, $subject, $comment) { db_query("UPDATE comments SET subject = '". check_input($subject) ."', comment = '". check_input($comment) ."' WHERE cid = $id"); watchdog("message", "modified comment `$subject'."); } function comment_display($order = "date") { ### Initialize variables: $fields = array("author" => "author", "date" => "timestamp DESC", "subject" => "subject"); ### Perform SQL query: $result = db_query("SELECT c.*, u.userid FROM comments c LEFT JOIN users u ON u.id = c.author ORDER BY c.$fields[$order] LIMIT 50"); ### Display comments: $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; while ($comment = db_fetch_object($result)) { $output .= " \n"; } $output .= "
    \n"; $output .= "
    \n"; $output .= " \n"; $output .= " \n"; $output .= "
    \n"; $output .= "
    subjectauthoroperations
    sid&cid=$comment->cid&pid=$comment->pid#$comment->cid\">". check_output($comment->subject) ."". format_username($comment->userid, 1) ."cid\">edit
    \n"; print $output; } /* * Statistics administration: */ function stats_display() { # # Story statistics: # $result = db_query("SELECT s.subject, c.sid, COUNT(c.sid) AS count, u.userid FROM comments c, stories s LEFT JOIN users u ON s.author = u.id WHERE s.id = c.sid GROUP BY c.sid ORDER BY count DESC LIMIT 20;"); while ($stat = db_fetch_object($result)) $output1 .= "sid\">$stat->subject by ". format_username($stat->userid, 1) .": ". format_plural($stat->count, "comment", "comments") ."
    \n"; admin_box("Story statistics", $output1); # # Poster statistics: # $result = db_query("SELECT u.userid, COUNT(s.author) AS count FROM stories s LEFT JOIN users u ON s.author = u.id GROUP BY s.author ORDER BY count DESC LIMIT 20"); while ($stat = db_fetch_object($result)) $output2 .= "". format_username($stat->userid) .": ". format_plural($stat->count, "story", "stories") ."
    \n"; admin_box("Poster statistics", $output2); # # Category statistics: # $result = db_query("SELECT category, COUNT(category) AS count FROM stories GROUP by category ORDER BY count DESC"); while ($stat = db_fetch_object($result)) $output3 .= "$stat->category: ". format_plural($stat->count, "story", "stories") ."
    \n"; admin_box("Category statistics", $output3); # # Theme statistics: # $result = db_query("SELECT theme, COUNT(id) AS count FROM users GROUP BY theme ORDER BY count DESC"); while ($stat = db_fetch_object($result)) $output4 .= "$stat->theme-theme: ". format_plural($stat->count, "user", "users") ."
    \n"; admin_box("Theme statistics", $output4); } /* * Diary administration: */ function diary_edit($id) { $result = db_query("SELECT d.*, u.userid FROM diaries d LEFT JOIN users u ON d.author = u.id WHERE d.id = $id"); $diary = db_fetch_object($result); $output .= "
    \n"; $output .= "

    \n"; $output .= " Author:
    \n"; $output .= " ". format_username($diary->userid, 1) ."\n"; $output .= "

    \n"; $output .= "

    \n"; $output .= "Diary entry:
    \n"; $output .= "
    \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= " \n"; $output .= "

    \n"; $output .= "
    \n"; print $output; } function diary_save($id, $text) { db_query("UPDATE diaries SET text = '". check_input($text) ."' WHERE id = $id"); watchdog("message", "modified diary entry #$id."); } function diary_display($order = "date") { ### Initialize variables: $fields = array("author" => "author", "date" => "timestamp DESC"); ### Perform SQL query: $result = db_query("SELECT d.*, u.userid FROM diaries d LEFT JOIN users u ON u.id = d.author ORDER BY d.$fields[$order] LIMIT 50"); ### Display stories: $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; while ($diary = db_fetch_object($result)) { $output .= " \n"; } $output .= "
    \n"; $output .= "
    \n"; $output .= " \n"; $output .= " \n"; $output .= "
    \n"; $output .= "
    subjectauthoroperations
    userid\">$diary->userid on ". format_date($diary->date, "small") ."". format_username($diary->userid, 1) ."id\">edit
    \n"; print $output; } /* * Home administration: */ function home_display() { print "

    home
    \n"; } /* * Misc administration: */ function misc_display() { print "Upcoming features:"; print "\n"; } /* * Story administration: */ function story_edit($id) { global $categories; $result = db_query("SELECT s.*, u.userid FROM stories s LEFT JOIN users u ON s.author = u.id WHERE s.id = $id"); $story = db_fetch_object($result); $output .= "
    \n"; $output .= "

    \n"; $output .= " Author:
    \n"; $output .= " ". format_username($story->userid) ."\n"; $output .= "

    \n"; $output .= "

    \n"; $output .= " Subject:
    \n"; $output .= " subject)) ."\">
    \n"; $output .= "

    \n"; $output .= "

    Category:
    \n"; $output .= " \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= "Abstract:
    \n"; $output .= "
    \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= "Editor's note/updates:
    \n"; $output .= "
    \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= " Extended story:
    \n"; $output .= "
    \n"; $output .= "

    \n"; $output .= "

    Status:
    \n"; $output .= " \n"; $output .= "

    \n"; $output .= "

    \n"; $output .= " \n"; $output .= "

    \n"; $output .= "
    \n"; print $output; } function story_save($id, $subject, $abstract, $updates, $article, $category, $status) { db_query("UPDATE stories SET subject = '". check_input($subject) ."', abstract = '". check_input($abstract) ."', updates = '". check_input($updates) ."', article = '". check_input($article) ."', category = '". check_input($category) ."', status = '$status' WHERE id = $id"); watchdog("message", "modified story `$subject'."); } function story_display($order = "date") { ### Initialize variables: $status = array("deleted", "pending", "public"); $fields = array("author" => "author", "category" => "category", "date" => "timestamp DESC", "status" => "status DESC"); ### Perform SQL query: $result = db_query("SELECT s.*, u.userid FROM stories s LEFT JOIN users u ON u.id = s.author ORDER BY s.$fields[$order]"); ### Display stories: $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; while ($story = db_fetch_object($result)) { $output .= " \n"; } $output .= "
    \n"; $output .= "
    \n"; $output .= " \n"; $output .= " \n"; $output .= "
    \n"; $output .= "
    subjectauthorcategorystatusoperations
    id\">". check_output($story->subject) ."". format_username($story->userid, 1) ."$story->category". $status[$story->status] ."id\">edit
    \n"; print $output; } function info_display() { include "includes/config.inc"; $output .= "sitename: $site_name
    \n"; $output .= "e-mail address: $contact_email
    \n"; $output .= "send e-mail notifications: $notify
    \n"; $output .= "allowed HTML tags: ". htmlspecialchars($allowed_html) ."
    \n"; $output .= "anonymous user: $anonymous
    \n"; $output .= "submission post threshold: $submission_post_threshold
    \n"; $output .= "submission dump threshold: $submission_dump_threshold
    \n"; admin_box("$site_name settings", $output); } include "includes/config.inc"; include "includes/function.inc"; include "includes/database.inc"; include "includes/watchdog.inc"; include "includes/admin.inc"; admin_header(); switch ($section) { case "stories": switch ($op) { case "edit": story_edit($id); break; case "Save story": story_save($id, $subject, $abstract, $updates, $article, $category, $status); story_edit($id); break; case "Update": story_display($order); break; default: story_display(); } break; case "comments": switch ($op) { case "edit": comment_edit($id); break; case "Save comment": comment_save($id, $subject, $comment); comment_edit($id); break; case "Update": comment_display($order); break; default: comment_display(); } break; case "diaries": switch ($op) { case "edit": diary_edit($id); break; case "Save diary entry": diary_save($id, $text); diary_edit($id); break; case "Update": diary_display($order); break; default: diary_display(); } break; case "accounts": switch ($op) { case "view": account_view($name); break; case "Update": account_display($order); break; default: account_display(); } break; case "misc": misc_display(); break; case "bans": include "includes/ban.inc"; switch ($op) { case "Add ban": ban_new($mask, $category, $reason); ban_display($category); break; case "Check ban": ban_check($mask, $category); ban_display($category); break; case "delete": ban_delete($id); ban_display($category); break; default: ban_display($category); } break; case "watchdog": switch ($op) { case "view": watchdog_view($id); break; case "Update": watchdog_display($order); break; default: watchdog_display(); } break; case "stats": stats_display(); break; case "info": info_display(); break; case "home": home_display(); break; default: print "

    Welcome to the adminstration center!
    \n"; } admin_footer(); ?>