for the "is published" field... // show_comments() - Show comments for the given path... // validate_email() - Validate an email address... // // // 'abbreviate()' - Abbreviate long strings... // function // O - Abbreviated string abbreviate($text, // I - String $maxlen = 32) // I - Maximum length of string { $newtext = ""; $textlen = strlen($text); $inelement = 0; for ($i = 0, $len = 0; $i < $textlen && $len < $maxlen; $i ++) switch ($text[$i]) { case '<' : $inelement = 1; break; case '>' : if ($inelement) $inelement = 0; else { $newtext .= ">"; $len ++; } break; case '&' : $len ++; while ($i < $textlen) { $newtext .= $text[$i]; if ($text[$i] == ';') break; $i ++; } break; default : if (!$inelement) { $newtext .= $text[$i]; $len ++; } break; } if ($i < $textlen) return ($newtext . "..."); else return ($newtext); } // // 'count_comments()' - Count visible comments for the given path... // function // O - Number of comments count_comments($url, // I - URL for comment $parent_id = 0) // I - Parent comment { $result = db_query("SELECT * FROM comment WHERE " ."url = '" . db_escape($url) ."' " ."AND parent_id = $parent_id " ."ORDER BY id"); $num_comments = 0; while ($row = db_next($result)) { if ($row["status"] > 0) $num_comments ++; $num_comments += count_comments($url, $row['id']); } db_free($result); return ($num_comments); } // // 'format_text()' - Convert plain text to HTML... // function // O - Quoted string format_text($text) // I - Original string { $len = strlen($text); $col = 0; $list = 0; $bold = 0; $pre = 0; $ftext = "

"; for ($i = 0; $i < $len; $i ++) { switch ($text[$i]) { case '<' : $col ++; if (strtolower(substr($text, $i, 8)) == "" || strtolower(substr($text, $i, 3)) == "" || strtolower(substr($text, $i, 4)) == "" || strtolower(substr($text, $i, 12)) == "

" || strtolower(substr($text, $i, 13)) == "
" || strtolower(substr($text, $i, 6)) == "" || strtolower(substr($text, $i, 7)) == "" || strtolower(substr($text, $i, 4)) == "" || strtolower(substr($text, $i, 5)) == "" || strtolower(substr($text, $i, 4)) == "

" || strtolower(substr($text, $i, 5)) == "

" || strtolower(substr($text, $i, 4)) == "

" || strtolower(substr($text, $i, 5)) == "

" || strtolower(substr($text, $i, 4)) == "

" || strtolower(substr($text, $i, 5)) == "

" || strtolower(substr($text, $i, 4)) == "

" || strtolower(substr($text, $i, 5)) == "

" || strtolower(substr($text, $i, 4)) == "
" || strtolower(substr($text, $i, 5)) == "
" || strtolower(substr($text, $i, 4)) == "
" || strtolower(substr($text, $i, 5)) == "
" || strtolower(substr($text, $i, 3)) == "" || strtolower(substr($text, $i, 4)) == "" || strtolower(substr($text, $i, 5)) == "" || strtolower(substr($text, $i, 5)) == "" || strtolower(substr($text, $i, 4)) == "
    " || strtolower(substr($text, $i, 5)) == "
" || strtolower(substr($text, $i, 3)) == "

" || strtolower(substr($text, $i, 4)) == "

" || strtolower(substr($text, $i, 5)) == "
" ||
	      strtolower(substr($text, $i, 6)) == "
" || strtolower(substr($text, $i, 4)) == "" || strtolower(substr($text, $i, 5)) == "" || strtolower(substr($text, $i, 3)) == "" || strtolower(substr($text, $i, 4)) == "" || strtolower(substr($text, $i, 4)) == "") { while ($i < $len && $text[$i] != '>') { $ftext .= $text[$i]; $i ++; } $ftext .= ">"; } else $ftext .= "<"; break; case '>' : $col ++; $ftext .= ">"; break; case '&' : $col ++; $ftext .= "&"; break; case "\n" : if (($i + 1) < $len && ($text[$i + 1] == "\n" || $text[$i + 1] == "\r")) { while (($i + 1) < $len && ($text[$i + 1] == "\n" || $text[$i + 1] == "\r")) $i ++; if ($pre) { $ftext .= ""; $pre = 0; } if (($i + 1) < $len && $text[$i + 1] != '-' && $list) { $ftext .= "\n\n

"; $list = 0; } else $ftext .= "\n

"; } else if (($i + 1) < $len && ($text[$i + 1] == " " || $text[$i + 1] == "\t")) { if ($pre) { $ftext .= ""; $pre = 0; } else $ftext .= "
\n"; } else $ftext .= "\n"; $col = 0; break; case "\r" : break; case "\t" : if ($col == 0) $ftext .= "        "; else $ftext .= " "; break; case " " : if ($col == 0 && !$pre) { for ($j = $i + 1; $j < $len; $j ++) if ($text[$j] != " " && $text[$j] != "\t") break; if ($j < $len && $text[$j] == '%') { $ftext .= "\n

";
	      $pre   = 1;
	    }

	    $ftext .= " ";
	  }
	  else if ($text[$i + 1] == " ")
	    $ftext .= " ";
	  else
            $ftext .= " ";

          if ($col > 0)
	    $col ++;
	  break;

      case '*' :
          if ($bold)
	    $ftext .= "";
	  else
	    $ftext .= "";

	  $bold = 1 - $bold;
	  break;

      case '-' :
          // Possible list...
	  if ($col == 0)
	  {
	    if (!$list)
	    {
	      $ftext .= "\n";

  if ($pre)
    $ftext .= "
"; return ($ftext); } // // 'quote_text()' - Quote a string... // function // O - Quoted string quote_text($text, // I - Original string $quote = 0) // I - Add ">" to front of message { $len = strlen($text); $col = 0; if ($quote) $qtext = "> "; else $qtext = ""; for ($i = 0; $i < $len; $i ++) { switch ($text[$i]) { case '<' : $col ++; $qtext .= "<"; break; case '>' : $col ++; $qtext .= ">"; break; case '&' : $col ++; $qtext .= "&"; break; case "\n" : if ($quote) $qtext .= "\n> "; else $qtext .= "
"; $col = 0; break; case "\r" : break; case "\t" : if ($col == 0) $qtext .= "        "; else $qtext .= " "; break; case " " : if ($col == 0 || $text[$i + 1] == " ") $qtext .= " "; else if ($col > 65 && $quote) { $qtext .= "\n> "; $col = 0; } else $qtext .= " "; if ($col > 0) $col ++; break; case 'f' : case 'h' : if (substr($text, $i, 7) == "http://" || substr($text, $i, 8) == "https://" || substr($text, $i, 6) == "ftp://") { // Extract the URL and make this a link... for ($j = $i; $j < $len; $j ++) if ($text[$j] == " " || $text[$j] == "\n" || $text[$j] == "\r" || $text[$j] == "\t" || $text[$j] == "\'" || $text[$j] == "'") break; $count = $j - $i; $url = substr($text, $i, $count); $qtext .= "$url"; $col += $count; $i = $j - 1; break; } default : $col ++; $qtext .= $text[$i]; break; } } return ($qtext); } // // 'sanitize_email()' - Convert an email address to something a SPAMbot // can't read... // function // O - Sanitized email sanitize_email($email, // I - Email address $html = 1) // I - HTML format? { $nemail = ""; $len = strlen($email); for ($i = 0; $i < $len; $i ++) { switch ($email[$i]) { case '@' : if ($i > 0) $i = $len; else if ($html) $nemail .= " at "; else $nemail .= " at "; break; case '<' : if ($i > 0) $i = $len; break; case '>' : break; case '&' ; $nemail .= "&"; break; default : $nemail .= $email[$i]; break; } } return (trim($nemail)); } // // 'sanitize_text()' - Sanitize text. // function // O - Sanitized text sanitize_text($text) // I - Original text { $len = strlen($text); $word = ""; $qtext = ""; for ($i = 0; $i < $len; $i ++) { switch ($text[$i]) { case "\n" : if (!strncmp($word, "http://", 7) || !strncmp($word, "https://", 8) || !strncmp($word, "ftp://", 6)) $qtext .= "$word"; else if (strchr($word, '@')) $qtext .= sanitize_email($word); else $qtext .= quote_text($word); $qtext .= "
"; $word = ""; break; case "\r" : break; case "\t" : case " " : if (!strncmp($word, "http://", 7) || !strncmp($word, "https://", 8) || !strncmp($word, "ftp://", 6)) $qtext .= "$word"; else if (strchr($word, '@')) $qtext .= sanitize_email($word); else $qtext .= quote_text($word); if ($word) $qtext .= " "; else $qtext .= " "; $word = ""; break; default : $word .= $text[$i]; break; } } if (!strncmp($word, "http://", 7) || !strncmp($word, "https://", 8) || !strncmp($word, "ftp://", 6)) $qtext .= "$word"; else if (strchr($word, '@')) $qtext .= sanitize_email($word); else $qtext .= quote_text($word); return ($qtext); } // // 'select_is_published()' - Do a "); if ($is_published) { print(""); print(""); } else { print(""); print(""); } print(""); } // // 'show_comments()' - Show comments for the given path... // function // O - Number of comments show_comments($url, // I - URL for comment $path = "", // I - Path component $parent_id = 0, // I - Parent comment $heading = 3) // I - Heading level { global $_COOKIE, $LOGIN_LEVEL; $result = db_query("SELECT * FROM comment WHERE " ."url = '" . db_escape($url) ."' " ."AND parent_id = $parent_id " ."ORDER BY id"); if (array_key_exists("MODPOINTS", $_COOKIE)) $modpoints = $_COOKIE["MODPOINTS"]; else $modpoints = 5; if ($parent_id == 0 && $modpoints > 0) print("

You have $modpoints moderation points available.

\n"); if ($heading > 6) $heading = 6; $safeurl = urlencode($url); $num_comments = 0; $div = 0; while ($row = db_next($result)) { if ($row["status"] > 0) { if ($heading > 3 && !$div) { print("
\n"); $div = 1; } $num_comments ++; $create_date = date("H:i M d, Y", $row['create_date']); $create_user = sanitize_email($row['create_user']); $contents = format_text($row['contents']); print("From " ."$create_user, $create_date (score=$row[status])\n" ."$contents\n"); html_start_links(); if ($LOGIN_LEVEL >= AUTH_DEVEL) { html_link("Edit", "${path}comment.php?e$row[id]+p$safeurl"); html_link("Delete", "${path}comment.php?d$row[id]+p$safeurl"); } html_link("Reply", "${path}comment.php?r$row[id]+p$safeurl"); if ($modpoints > 0) { if ($row['status'] > 0) html_link("Moderate Down", "${path}comment.php?md$row[id]+p$safeurl"); if ($row['status'] < 5) html_link("Moderate Up", "${path}comment.php?mu$row[id]+p$safeurl"); } html_end_links(); } $num_comments += show_comments($url, $path, $row['id'], $heading + 1); } db_free($result); if ($div) print("
\n"); return ($num_comments); } // // 'validate_email()' - Validate an email address... // function // O - TRUE if OK, FALSE otherwise validate_email($email) // I - Email address { // Check for both "name@domain.com" and "Full Name " return (eregi("^[a-zA-Z0-9_\.+-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}$", $email) || eregi("^[^<]*<[a-zA-Z0-9_\.+-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}>$", $email)); } // // End of "$Id: common.php,v 1.12 2004/05/20 21:37:57 mike Exp $". // ?>