userid != "Dries") exit(); /* * Account administration: */ function account_display($order = "username") { global $PHP_SELF; $sort = array("ID" => "id", "fake e-mail address" => "femail", "homepage" => "url", "hostname" => "last_host", "last access date" => "last_access", "real e-mail address" => "email", "real name" => "name", "status" => "status", "theme" => "theme", "username" => "userid"); $show = array("ID" => "id", "username" => "userid", "$order" => "$sort[$order]", "status" => "status"); ### 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 .= "

Accounts:

\n"; $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 "email": $output .= " \n"; break; case "last_access": $output .= " \n"; break; case "status": $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_address($account[$value]) ."". format_date($account[$value]) ."todo". 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\">$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->subject
  • \n"; } return $output; } function account_view($name) { ### Perform query: $result = db_query("SELECT * FROM users WHERE userid = '$name'"); if ($account = db_fetch_object($result)) { $output .= "

    Accounts:

    \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
    Username:$account->userid
    Real name:". format_data($account->name) ."
    Real e-mail address:". format_email_address($account->email) ."
    Fake e-mail address:". format_data($account->femail) ."
    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) ."
    Submitted stories:". format_data(account_stories($account->id)) ."
    Submitted comments:". format_data(account_comments($account->id)) ."
    \n"; print "$output"; } } /* * Log administration: */ function log_display($order = "date") { global $PHP_SELF, $anonymous; $colors = array("#FFFFFF", "#FFFFFF", "#90EE90", "#CD5C5C"); $fields = array("date" => "id DESC", "username" => "user", "message" => "message DESC", "level" => "level DESC"); ### Perform query: $result = db_query("SELECT l.*, u.userid FROM logs l LEFT JOIN users u ON l.user = u.id ORDER BY l.$fields[$order]"); ### Generate output: $output .= "

    Logs:

    \n"; $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; while ($log = db_fetch_object($result)) { $output .= " level] ."\">\n"; } $output .= "
    \n"; $output .= "
    \n"; $output .= " \n"; $output .= " \n"; $output .= "
    \n"; $output .= "
    dateusermessageoperations
    ". date("D d/m, H:m:s", $log->timestamp) ."". format_username($log->userid, 1) ."". substr($log->message, 0, 44) ."id\">more
    \n"; print $output; } function log_view($id) { ### Perform query: $result = db_query("SELECT l.*, u.userid FROM logs l LEFT JOIN users u ON l.user = u.id WHERE l.id = $id"); if ($log = db_fetch_object($result)) { $output .= "

    Logs:

    \n"; $output .= "\n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= " \n"; $output .= "
    Level:$log->level
    Date:". date("l, F d, Y - H:i A", $log->timestamp) ."
    User:". format_username($log->userid, 1) ."
    Message:$log->message
    Hostname:$log->hostname
    \n"; print $output; } } /* * Ban administration: */ function ban_check($mask, $category) { $ban = ban_match($mask, $category); $output .= "

    Status:

    \n"; $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 .= "

    Status:

    \n"; $output .= "$message\n"; print $output; } function ban_display($category = "") { global $PHP_SELF, $type2index; ### initialize variable: $category = $category ? $category : 1; ### Perform query: $result = db_query("SELECT * FROM bans WHERE type = $category ORDER BY mask"); ### Generate output: $output .= "

    Bans:

    \n"; $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; } /* * Story administration: */ function story_edit($id) { global $PHP_SELF, $anonymous, $categories; $result = db_query("SELECT stories.*, users.userid FROM stories LEFT JOIN users ON stories.author = users.id WHERE stories.id = $id"); $story = db_fetch_object($result); $output .= "
    \n"; $output .= "

    \n"; $output .= " Author:
    \n"; if ($story->userid) $output .= " author\">$story->userid\n"; else $output .= " $anonymous\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) { global $PHP_SELF; ### Add submission to SQL table: db_query("UPDATE stories SET subject = '". addslashes($subject) ."', abstract = '". addslashes($abstract) ."', updates = '". addslashes($updates) ."', article = '". addslashes($article) ."', category = '". addslashes($category) ."', status = '$status' WHERE id = $id"); ### Add log entry: watchdog(1, "modified story `$subject'."); } function story_display($order = "date") { global $PHP_SELF; ### 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 .= "

    Stories:

    \n"; $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\">$story->subject". format_username($story->userid, 1) ."$story->category". $status[$story->status] ."id\">edit
    \n"; print $output; } include "function.inc"; include "admin.inc"; admin_header(); switch ($section) { case "accounts": switch ($op) { case "view": account_view($name); break; case "Update": account_display($order); break; default: account_display(); } break; case "bans": include "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 "logs": switch ($op) { case "view": log_view($id); break; case "Update": log_display($order); break; default: log_display(); } break; 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; default: print "Welcome to the adminstration page!"; } admin_footer(); ?>