theme.inc 7.32 KB
Newer Older
1 2
<?

Dries's avatar
 
Dries committed
3
function theme_account($theme) {
Dries's avatar
 
Dries committed
4
  global $user, $site_name, $links, $menu;
Dries's avatar
 
Dries committed
5 6 7 8 9 10 11 12
  
  if ($user->id) { 

    function submission_number() {
      $result = db_query("SELECT COUNT(id) FROM stories WHERE status = 1");
      return ($result) ? db_result($result, 0) : 0;
    }

Dries's avatar
 
Dries committed
13 14
    function menu($name, $module) {
      global $menu;
Dries's avatar
 
Dries committed
15
      if ($module["menu"]) $menu = ($menu) ? array_merge($menu, $module["menu"]()) : $module["menu"]();
Dries's avatar
 
Dries committed
16 17 18 19
    }

    module_iterate("menu");

Dries's avatar
 
Dries committed
20
    // Display account settings:
Dries's avatar
 
Dries committed
21 22 23 24 25 26
    $content .= "<LI><A HREF=\"account.php?op=track&topic=comments\">track your comments</A></LI>\n";
    $content .= "<LI><A HREF=\"account.php?op=track&topic=stories\">track your stories</A></LI>\n";
    $content .= "<LI><A HREF=\"account.php?op=track&topic=site\">track $site_name</A></LI>\n";
    $content .= "<P>\n";
    $content .= "<LI><A HREF=\"submission.php\">submission queue</A> (<FONT COLOR=\"red\">". submission_number() ."</FONT>)</LI>\n";
    $content .= "<P>\n";
Dries's avatar
 
Dries committed
27 28 29
    $content .= "<LI><A HREF=\"account.php?op=edit&topic=user\">edit your information</A></LI>\n";
    $content .= "<LI><A HREF=\"account.php?op=edit&topic=site\">edit your preferences</A></LI>\n";
    $content .= "<LI><A HREF=\"account.php?op=edit&topic=content\">edit site content</A></LI>\n";
30 31 32 33
		if (($user->id) && ($user->permissions == 1 || $user->id == 1)) {
      $content .= "<P>\n";
      $content .= "<LI><A HREF=\"admin.php\">administrate " . $site_name . "</A></LI>\n";
		}
Dries's avatar
 
Dries committed
34
    $content .= "<P>\n";
Dries's avatar
 
Dries committed
35 36 37 38
    if (ksort($menu)) {
      foreach ($menu as $link=>$url) $content .= "<LI><A HREF=\"$url\">$link</A></LI>\n";
      $content .= "<P>\n";
    }
Dries's avatar
 
Dries committed
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
    $content .= "<LI><A HREF=\"account.php?op=logout\">logout</A></LI>\n";

    $theme->box("$user->userid's configuration", "$content");
  }
  else {
    $output .= "<CENTER>\n";
    $output .= " <FORM ACTION=\"account.php?op=Login\" METHOD=\"post\">\n";
    $output .= "  <P><B>Username:</B><BR><INPUT NAME=\"userid\" SIZE=\"15\"></P>\n";
    $output .= "  <P><B>Password:</B><BR><INPUT NAME=\"passwd\" SIZE=\"15\" TYPE=\"password\"></P>\n";
    $output .= "  <P><INPUT NAME=\"op\" TYPE=\"submit\" VALUE=\"Login\"></P>\n";
    $output .= "  <P><A HREF=\"account.php\">REGISTER</A></P>\n";
    $output .= " </FORM>\n";
    $output .= "</CENTER>\n";

    $theme->box("Login", $output);
  }
}


function theme_main_blocks($theme) {
Dries's avatar
 
Dries committed
59
  global $id, $PHP_SELF, $user;
Dries's avatar
 
Dries committed
60 61 62 63 64 65 66
 
  switch (strtok($PHP_SELF, ".")) {
    case "/discussion":
      if ($user->id) $story = db_fetch_object(db_query("SELECT * FROM stories WHERE id = '$id'"));
      if ($story->status == 1) theme_moderation_results($theme, $story);
      else theme_new_headlines($theme);
      break;
Dries's avatar
 
Dries committed
67
    case "/index":
Dries's avatar
Dries committed
68
      theme_account($theme);
Dries's avatar
 
Dries committed
69 70 71 72 73 74
      $result = db_query("SELECT * FROM blocks WHERE status = 2");
      while ($block = db_fetch_object($result)) {
        $blocks = module_execute($block->module, "block");
        $theme->box($blocks[$block->offset]["subject"], $blocks[$block->offset]["content"]);     
      }
      break;
Dries's avatar
 
Dries committed
75 76 77 78 79 80 81 82
    default:
      theme_account($theme);
  }
}

function theme_user_blocks($theme) {
  global $PHP_SELF, $repository, $user; 
  if ($user->id && strstr($PHP_SELF, "index.php")) {
Dries's avatar
 
Dries committed
83
    $result = db_query("SELECT * FROM layout l LEFT JOIN blocks b ON l.block = b.name WHERE l.user = '$user->id' AND l.weight > 0 AND b.status = '1' ORDER BY weight");
Dries's avatar
 
Dries committed
84
    while ($block = db_fetch_object($result)) {
Dries's avatar
 
Dries committed
85 86
      $blocks = module_execute($block->module, "block");
      $theme->box($blocks[$block->offset]["subject"], $blocks[$block->offset]["content"]);
Dries's avatar
 
Dries committed
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
    }
  }
}

function theme_morelink($theme, $story) {
  return ($story->article) ? "[ <A HREF=\"discussion.php?id=$story->id\"><FONT COLOR=\"$theme->hlcolor2\"><B>read more</B></FONT></A> | ". strlen($story->article) ." bytes | <A HREF=\"discussion.php?id=$story->id\"><FONT COLOR=\"$theme->hlcolor2\">". format_plural($story->comments, "comment", "comments") ."</FONT></A> ]" : "[ <A HREF=\"discussion.php?id=$story->id\"><FONT COLOR=\"$theme->hlcolor2\">". format_plural($story->comments, "comment", "comments") ."</FONT></A> ]";
}

function theme_moderation_results($theme, $story) {
  global $user;

  if ($user->id && $story->id && $vote = user_getHistory($user->history, "s$story->id")) {
    $output .= "<P><B>You voted `$vote'.</B></P>\n";
    $output .= "<P>\n";
    $output .= "<B>Other people voted:</B><BR>\n";

    $result = db_query("SELECT * FROM users WHERE id != $user->id AND history LIKE '%s$story->id%'");
    while ($account = db_fetch_object($result)) {
      $output .= "". format_username($account->userid) ." voted `". user_getHistory($account->history, "s$story->id") ."'.<BR>";
    }
    
    $theme->box("Moderation results", $output);
  }
}

function theme_related_links($theme, $story) {
Dries's avatar
 
Dries committed
113
  // Parse story for <A HREF="">-tags:
Dries's avatar
 
Dries committed
114 115 116 117 118 119 120
  $text = stripslashes("$story->abstract $story->updates $story->article");
  while ($text = stristr($text, "<A HREF=")) {
    $link = substr($text, 0, strpos(strtolower($text), "</a>") + 4);
    $text = stristr($text, "</A>");
    if (!stristr($link, "mailto:")) $content .= "<LI>$link</LI>";
  }

Dries's avatar
 
Dries committed
121
  // Stories in the same category: 
Dries's avatar
 
Dries committed
122 123
  $content .= " <LI>More about <A HREF=\"search.php?category=". urlencode($story->category) ."\">$story->category</A>.</LI>";

Dries's avatar
 
Dries committed
124
  // Stories from the same author:
Dries's avatar
 
Dries committed
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
  if ($story->userid) $content .= " <LI>Also by <A HREF=\"search.php?author=". urlencode($story->userid) ."\">$story->userid</A>.</LI>";

  $theme->box("Related links", $content);
}

function theme_comment_moderation($id, $author, $score, $votes) {
  global $user, $comment_votes;
  
  if ($user->id && $user->userid != $author && !user_getHistory($user->history, "c$id")) {
    $output .= "<SELECT NAME=\"moderate[$id]\">\n";
    foreach ($comment_votes as $key=>$value) $output .= " <OPTION VALUE=\"$value\">$key</OPTION>\n";
    $output .= "</SELECT>\n";
  }
  else {
    $output .= "<TABLE BORDER=\"0\" CELLSPACING=\"1\" CELLPADDING=\"0\"><TR><TD>score:</TD><TD>". format_data($score) ."</TD></TR><TR><TD>votes:</TD><TD>". format_data($votes) ."</TR></TABLE>";
  }

  return $output;
}

function theme_new_headlines($theme, $num = 10) {
  global $user;

  $content = "";
  $result = db_query("SELECT id, subject FROM stories WHERE status = 2 ORDER BY id DESC LIMIT $num");
Dries's avatar
 
Dries committed
150
  while ($story = db_fetch_object($result)) $content .= "<LI><A HREF=\"discussion.php?id=$story->id\">". check_output($story->subject) ."</A></LI>\n";
Dries's avatar
 
Dries committed
151 152 153
  $content .= "<P ALIGN=\"right\">[ <A HREF=\"search.php\"><FONT COLOR=\"$theme->hlcolor2\">more</FONT></A> ]</P>";
  $theme->box("Latest headlines", $content);
}
154

Dries's avatar
 
Dries committed
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
function theme_old_headlines($theme, $num = 10) {
  global $user;
  
  if ($user->stories) $result = db_query("SELECT id, subject, timestamp FROM stories WHERE status = 2 ORDER BY timestamp DESC LIMIT $user->stories, $num");
  else $result = db_query("SELECT id, subject, timestamp FROM stories WHERE status = 2 ORDER BY timestamp DESC LIMIT $num, $num");

  while ($story = db_fetch_object($result)) {    
    if ($time != date("F jS", $story->timestamp)) {
      $content .= "<P><B>". date("l, M jS", $story->timestamp) ."</B></P>\n";
      $time = date("F jS", $story->timestamp);
    }
    $content .= "<LI><A HREF=\"discussion.php?id=$story->id\">". check_output($story->subject) ."</A></LI>\n";
  }
  $content .= "<P ALIGN=\"right\">[ <A HREF=\"search.php\"><FONT COLOR=\"$theme->hlcolor2\">more</FONT></A> ]</P>";

  $theme->box("Older headlines", $content);
}


Dries's avatar
 
Dries committed
174
?>