From 6e38a010ee903df1804692ed6e44243b154c8862 Mon Sep 17 00:00:00 2001 From: David Bartley Date: Fri, 13 Jul 2007 21:20:51 -0400 Subject: [PATCH] Moved /newsgroup to webapps --- newsgroup/.htaccess | 6 - newsgroup/article.php | 85 -- newsgroup/attachment.php | 23 - newsgroup/auth.inc | 0 newsgroup/config.inc.php | 170 ---- newsgroup/groups.txt | 4 - newsgroup/head.inc | 7 - newsgroup/img/I.gif | Bin 68 -> 0 bytes newsgroup/img/L.gif | Bin 67 -> 0 bytes newsgroup/img/T.gif | Bin 71 -> 0 bytes newsgroup/img/e.gif | Bin 42 -> 0 bytes newsgroup/img/k1.gif | Bin 61 -> 0 bytes newsgroup/img/k2.gif | Bin 66 -> 0 bytes newsgroup/img/s.gif | Bin 55 -> 0 bytes newsgroup/index.php | 18 - newsgroup/lang/english.lang | 66 -- newsgroup/lib/check.php | 6 - newsgroup/lib/message.inc.php | 539 ---------- newsgroup/lib/post.inc.php | 195 ---- newsgroup/lib/thread.inc.php | 1030 -------------------- newsgroup/lib/types.inc.php | 79 -- newsgroup/lib/validator.inc | 243 ----- newsgroup/newsportal-0.37.zip | Bin 87639 -> 0 bytes newsgroup/newsportal.php | 811 --------------- newsgroup/post.php | 315 ------ newsgroup/spool/groups.dat | 1 - newsgroup/spool/uw.csc-1-50.html | 1 - newsgroup/spool/uw.csc-data.dat | 1 - newsgroup/spool/uw.csc-info.txt | 2 - newsgroup/spool/uw.csc-lastarticleinfo.dat | 1 - newsgroup/style.css | 185 ---- newsgroup/tail.inc | 6 - newsgroup/thread.php | 82 -- 33 files changed, 3876 deletions(-) delete mode 100644 newsgroup/.htaccess delete mode 100644 newsgroup/article.php delete mode 100644 newsgroup/attachment.php delete mode 100644 newsgroup/auth.inc delete mode 100644 newsgroup/config.inc.php delete mode 100644 newsgroup/groups.txt delete mode 100644 newsgroup/head.inc delete mode 100644 newsgroup/img/I.gif delete mode 100644 newsgroup/img/L.gif delete mode 100644 newsgroup/img/T.gif delete mode 100644 newsgroup/img/e.gif delete mode 100644 newsgroup/img/k1.gif delete mode 100644 newsgroup/img/k2.gif delete mode 100644 newsgroup/img/s.gif delete mode 100644 newsgroup/index.php delete mode 100644 newsgroup/lang/english.lang delete mode 100644 newsgroup/lib/check.php delete mode 100644 newsgroup/lib/message.inc.php delete mode 100644 newsgroup/lib/post.inc.php delete mode 100644 newsgroup/lib/thread.inc.php delete mode 100644 newsgroup/lib/types.inc.php delete mode 100644 newsgroup/lib/validator.inc delete mode 100644 newsgroup/newsportal-0.37.zip delete mode 100644 newsgroup/newsportal.php delete mode 100644 newsgroup/post.php delete mode 100644 newsgroup/spool/groups.dat delete mode 100644 newsgroup/spool/uw.csc-1-50.html delete mode 100644 newsgroup/spool/uw.csc-data.dat delete mode 100644 newsgroup/spool/uw.csc-info.txt delete mode 100644 newsgroup/spool/uw.csc-lastarticleinfo.dat delete mode 100644 newsgroup/style.css delete mode 100644 newsgroup/tail.inc delete mode 100644 newsgroup/thread.php diff --git a/newsgroup/.htaccess b/newsgroup/.htaccess deleted file mode 100644 index 7e91dfc..0000000 --- a/newsgroup/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ -AuthPAM_Enabled on - -AuthType Basic -AuthName "CSC Login Required" -require group daemon - diff --git a/newsgroup/article.php b/newsgroup/article.php deleted file mode 100644 index 976fd6e..0000000 --- a/newsgroup/article.php +++ /dev/null @@ -1,85 +0,0 @@ -header->subject); - header("Last-Modified: ".date("r", $message->header->date)); - $title.= ' - '.$subject; - } - include "head.inc"; - - // has the user read-rights on this article? - if((function_exists("npreg_group_has_read_access") && - !npreg_group_has_read_access($group)) || - (function_exists("npreg_group_is_visible") && - !npreg_group_is_visible($group))) { - die("access denied"); - } - - -?> - - - -

- - -'.$text_thread["button_grouplist"].''; - echo ''; - if ((!$readonly) && ($message) && - (!function_exists("npreg_group_has_write_access") || - npreg_group_has_write_access($group))) - echo ''; - - if(function_exists(npreg_user_is_moderator) && npreg_user_is_moderator($group)) { - echo ''; - } - -?> -
'.$text_article["back_to_group"].' '.$text_article["button_answer"]. - ''.$text_article["button_cancel"].' 
- -"; - message_show($group,$id,0,$message); - if($article_showthread) - message_thread($message->header->id,$group,$thread); - - } - include "tail.inc"; -?> diff --git a/newsgroup/attachment.php b/newsgroup/attachment.php deleted file mode 100644 index 79a66f0..0000000 --- a/newsgroup/attachment.php +++ /dev/null @@ -1,23 +0,0 @@ -header); -if (!$message) { - header ("HTTP/1.0 404 Not Found"); - echo "The Attachment doesn't exists"; -} else { - header("Content-Disposition: attachment; filename=". - $message->header->content_type_name[$attachment]); - header("Content-type: ".$message->header->content_type[$attachment]); - message_show("",$id,$attachment,$message); -} -?> \ No newline at end of file diff --git a/newsgroup/auth.inc b/newsgroup/auth.inc deleted file mode 100644 index e69de29..0000000 diff --git a/newsgroup/config.inc.php b/newsgroup/config.inc.php deleted file mode 100644 index 99146b2..0000000 --- a/newsgroup/config.inc.php +++ /dev/null @@ -1,170 +0,0 @@ - "aldi.inc", -// '^de\.' => "german.inc" -//); - -/* - * Do not edit anything below this line - */ -// Load group specifig config files -if((isset($group)) && (isset($group_config))) { - foreach ($group_config as $key => $value) { - if (ereg($key,$group)) { - include $value; - break; - } - } -} - -// check the settings -include "lib/check.php"; - -// load the english language definitions first because some of the other -// definitions are incomplete -include("lang/english.lang"); -include($file_language); -?> diff --git a/newsgroup/groups.txt b/newsgroup/groups.txt deleted file mode 100644 index f086e2c..0000000 --- a/newsgroup/groups.txt +++ /dev/null @@ -1,4 +0,0 @@ -:Computer Science Club -uw.csc -uw.csc.hardware -uw.csc.software diff --git a/newsgroup/head.inc b/newsgroup/head.inc deleted file mode 100644 index 7a5142e..0000000 --- a/newsgroup/head.inc +++ /dev/null @@ -1,7 +0,0 @@ - - -<? echo htmlspecialchars($title); ?> - - - - diff --git a/newsgroup/img/I.gif b/newsgroup/img/I.gif deleted file mode 100644 index a7cb3a2c4a64cd64e6512c5a28d33bc0fa25e4bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZ?wbhEHb0r5dH3{28J%*$u(e#_U>;gy|srO!Sl RQI5H9dc?99S(U5|)&Mv*6Egq+ diff --git a/newsgroup/img/L.gif b/newsgroup/img/L.gif deleted file mode 100644 index 171dcb625bd0365954665581d170a3211df7cbfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZ?wbhEHb0r5dH3`|lz%*$u(e#_U>;gy|srO&>H R;n9o6XPwJl%@Sj<1^_oy6z2c{ diff --git a/newsgroup/img/T.gif b/newsgroup/img/T.gif deleted file mode 100644 index cf2335f6da2d4f18f83fbb5b76205a010d070533..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71 zcmZ?wbhEHb0r5dH3`}x8%*$u(e#_U>;gy|srO&>H V;gLlpPexqCtcCA>>9I0c0|0yV6$AhP diff --git a/newsgroup/img/e.gif b/newsgroup/img/e.gif deleted file mode 100644 index e92eaac290eb94ef378e40d3d96c9a69d29df71c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42 ncmZ?wbhEHbWMp7uXkcLY4+e@qSr{3BKnFyCWEhwjT^OtZ45|tA diff --git a/newsgroup/img/k1.gif b/newsgroup/img/k1.gif deleted file mode 100644 index 9cbf0a4ce9f77a8418c37a0b615ec15d2ef3163b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61 zcmZ?wbhEHb0r5dH3``h#ku LTOREYVXy`O$P^MT diff --git a/newsgroup/img/k2.gif b/newsgroup/img/k2.gif deleted file mode 100644 index 37eb3680d0793e6430332d6b022b0bded6a93ac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmZ?wbhEHb0r5dH3`~+e{VPx3Wmp_Dfl2zw+Aj6} PjHnYaA)WKw85yhr8dnmQ diff --git a/newsgroup/img/s.gif b/newsgroup/img/s.gif deleted file mode 100644 index 4a45d92fcdbed898f097571af53fa7ef960d3170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZ?wbhEHb0r5dH3`~4I{VPwu diff --git a/newsgroup/index.php b/newsgroup/index.php deleted file mode 100644 index 2814141..0000000 --- a/newsgroup/index.php +++ /dev/null @@ -1,18 +0,0 @@ - - -

- -'; -groups_show($newsgroups); -echo ''; -?> - - diff --git a/newsgroup/lang/english.lang b/newsgroup/lang/english.lang deleted file mode 100644 index 50d11e9..0000000 --- a/newsgroup/lang/english.lang +++ /dev/null @@ -1,66 +0,0 @@ -From: "; -$text_header["subject"]="Subject: "; -$text_header["newsgroups"]="Newsgroups: "; -$text_header["followup"]="Followup: "; -$text_header["organization"]="Organization: "; -$text_header["date"]="Date: "; -$text_header["message-id"]="Message-ID: "; -$text_header["references"]="References: "; -$text_header["user-agent"]="User-Agent: "; -$text_header["date_format"]="M d Y H:i:s"; -$text_header["attachments"]="Attachments: "; - -$text_thread["no_articles"]="

No articles available

"; -$text_thread["button_write"]="Write"; -$text_thread["button_grouplist"]="Newsgroups"; -$text_thread["button_top"]="Back to Top"; -$text_thread["date"]="Date"; -$text_thread["subject"]="Subject"; -$text_thread["threadsize"]="#"; -$text_thread["author"]="Author"; -$text_thread["no_such_group"]="No such Group."; -$text_thread["pages"]="Pages:"; - -$text_groups["newsgroup"]="Newsgroup"; -$text_groups["description"]="Description"; - -$text_article["button_answer"]="Answer"; -$text_article["button_cancel"]="Delete"; -$text_article["block-xnoarchive"]="This system is not an archive, but the -administrator of this system decided to block postings, where the author -doesn't want archivation."; -$text_article["full_article"]="Click here to read the complete article"; - -$text_post["name"]="Your Name:"; -$text_post["email"]="Your E-Mail:"; -$text_post["missing_message"]="You must include a message to post."; -$text_post["missing_email"]="You must include an email address."; -$text_post["missing_name"]="You must include a name or at least an alias."; -$text_post["missing_subject"]="You must include a subject."; -$text_post["button_post"]="Post"; -$text_post["remember"]="Remember name and email address"; -$text_post["message"]="Message"; -$text_post["group_head"]="Compose article for "; -$text_post["group_tail"]=""; -$text_post["followup_not_allowed"]="You aren't allowed to post to the groups:"; -$text_post["message_posted"]="Message posted"; -$text_post["message_posted2"]="The message was successfully posted."; -$text_post["button_back"]="Back"; -$text_post["button_back2"]="to"; -$text_post["error_newsserver"]="The newsserver does not accept the message:"; -$text_post["error_readonly"]="The group is write protected"; -$text_post["error_wrong_email"]="The email adress is wrong"; -$text_post["wrote_prefix"]=""; -$text_post["wrote_suffix"]=" wrote:"; -$text_post["quote"]="Quote"; - -$text_error["error:"]='Error:'; -$text_error["connection_failed"]="The connection to the Newsserver failed"; -$text_error["article_not_found"]="

The article doesn't exist.

"; -$text_error["read_access_denied"]="

No permission to read!

"; -$text_error["post_failed"]="Connection failed. Try to reload later."; -$text_error["auth_error"]="Authentifikation at the Newsserver failed."; -$text_error["spool_error"]="Error in spoolfile. Please reload."; - -?> diff --git a/newsgroup/lib/check.php b/newsgroup/lib/check.php deleted file mode 100644 index 05460a2..0000000 --- a/newsgroup/lib/check.php +++ /dev/null @@ -1,6 +0,0 @@ -$iconv_enable=false - in config.inc.php to disable automatic charset recoding.'); -?> \ No newline at end of file diff --git a/newsgroup/lib/message.inc.php b/newsgroup/lib/message.inc.php deleted file mode 100644 index 7a44c4b..0000000 --- a/newsgroup/lib/message.inc.php +++ /dev/null @@ -1,539 +0,0 @@ -header=parse_header($rawheader); - // Now we know if the message is a mime-multipart message: - $content_type=split("/",$message->header->content_type[0]); - if ($content_type[0]=="multipart") { - $message->header->content_type=array(); - // We have multible bodies, so we split the message into its parts - $boundary="--".$message->header->content_type_boundary; - // lets find the first part - while($rawmessage[$i] != $boundary) - $i++; - $i++; - $part=array(); - while($i<=$count_rawmessage) { - if (($rawmessage[$i]==$boundary) || ($i==$count_rawmessage-1) || - ($rawmessage[$i]==$boundary.'--')) { - $partmessage=message_parse($part); - // merge the content-types of the message with those of the part - for ($o=0; $oheader->content_type); $o++) { - $message->header->content_type[]= - $partmessage->header->content_type[$o]; - $message->header->content_type_charset[]= - $partmessage->header->content_type_charset[$o]; - $message->header->content_type_name[]= - $partmessage->header->content_type_name[$o]; - $message->header->content_type_format[]= - $partmessage->header->content_type_format[$o]; - $message->body[]=$partmessage->body[$o]; - } - $part=array(); - } else { - if ($i<$count_rawmessage) - $part[]=$rawmessage[$i]; - } - if ($rawmessage[$i]==$boundary.'--') break; - $i++; - } - // Is this a multipart/alternative multipart-message? Do we have to - // delete all non plain/text parts? - if (($attachment_delete_alternative) && - ($content_type[1]=="alternative")) { - $plaintext=false; - for ($o=0; $oheader->content_type); $o++) { - if ($message->header->content_type[$o]=="text/plain") - $plaintext=true; // we found at least one text/plain - } - if ($plaintext) { // now we can delete the other parts - for ($o=0; $oheader->content_type); $o++) { - if ($message->header->content_type[$o]!="text/plain") { - unset($message->header->content_type[$o]); - unset($message->header->content_type_name[$o]); - unset($message->header->content_type_charset[$o]); - unset($message->header->content_type_format[$o]); - unset($message->body[$o]); - } - } - } - } - } else { - // No mime-attachments in the message: - $body=""; - $uueatt=0; // as default we have no uuencoded attachments - for($i++;$i<$count_rawmessage; $i++) { - // do we have an inlay uuencoded file? - if ((strtolower(substr($rawmessage[$i],0,5))!="begin") || - ($attachment_uudecode==false)) { - $body.=$rawmessage[$i]."\n"; - // yes, it seems, we have! - } else { - $old_i=$i; - $uue_infoline_raw=$rawmessage[$i]; - $uue_infoline=explode(" ",$uue_infoline_raw); - $uue_data=""; - $i++; - while($rawmessage[$i]!="end") { - if (strlen(trim($rawmessage[$i])) > 2) - $uue_data.=$rawmessage[$i]."\n"; - $i++; - } - // now write the data in an attachment - $uueatt++; - $message->body[$uueatt]=uudecode($uue_data); - $message->header->content_type_name[$uueatt]=""; - for ($o=2; $oheader->content_type_name[$uueatt].=$uue_infoline[$o]; - $message->header->content_type[$uueatt]= - get_mimetype_by_filename($message->header->content_type_name[$uueatt]); - } - } - //if ($message->header->content_type[0]=="text/plain") { - $body=decode_body($body,$message->header->content_transfer_encoding); - $body=recode_charset($body, - $message->header->content_type_charset[0], - $www_charset); - if ($body=="") $body=" "; - //} - $message->body[0]=$body; - } - if (!isset($message->header->content_type_charset)) - $message->header->content_type_charset=array($www_charset); - if (!isset($message->header->content_type_name)) - $message->header->content_type_name=array("unnamed"); - if (!isset($message->header->content_type_format)) - $message->header->content_type_format=array("fixed"); - for ($o=0; $obody); $o++) { - if (!isset($message->header->content_type_charset[$o])) - $message->header->content_type_charset[$o]=$www_charset; - if (!isset($message->header->content_type_name[$o])) - $message->header->content_type_name[$o]="unnamed"; - if (!isset($message->header->content_type_format[$o])) - $message->header->content_type_format[$o]="fixed"; - } - return $message; -} - - -/* - * read an article from the newsserver or the spool-directory - * - * $id: the Message-ID of an article - * $bodynum: the number of the attachment: - * -1: return only the header without any bodies or attachments. - * 0: the body - * 1: the first attachment... - * - * The function returns an article as an messageType or false if the article - * doesn't exists on the newsserver or doesn't contain the given - * attachment. - */ -function message_read($id,$bodynum=0,$group="") { - global $cache_articles,$spooldir,$text_error,$ns; - if (!testGroup($group)) { - echo $text_error["read_access_denied"]; - return; - } - $message = new messageType; - if ((isset($cache_articles)) && ($cache_articles == true)) { - // Try to load a cached article - if ((ereg('^[0-9]+$',$id)) && ($group != '')) - $filename=$group.'_'.$id; - else - $filename=base64_encode($id); - $cachefilename_header=$spooldir."/".$filename.'.header'; - $cachefilename_body=$spooldir."/".$filename.'.body'; - if (file_exists($cachefilename_header)) { - $cachefile=fopen($cachefilename_header,"r"); - $message->header=unserialize(fread($cachefile,filesize($cachefilename_header))); - fclose($cachefile); - } else { - unset($message->header); - } - // Is a non-existing attachment of an article requested? - if ((isset($message->header)) && - ($bodynum!= -1) && - (!isset($message->header->content_type[$bodynum]))) - return false; - if ((file_exists($cachefilename_body.$bodynum)) && - ($bodynum != -1)) { - $cachefile=fopen($cachefilename_body.$bodynum,"r"); - $message->body[$bodynum]= - fread($cachefile,filesize($cachefilename_body.$bodynum)); - fclose($cachefile); - } - } - if ((!isset($message->header)) || - ((!isset($message->body[$bodynum])) && - ($bodynum != -1))) { - if (!isset($ns)) { - $ns=nntp_open(); - } - if ($group != "") { - fputs($ns,"GROUP ".$group."\r\n"); - $line=line_read($ns); - } - fputs($ns,'ARTICLE '.$id."\r\n"); - $line=line_read($ns); - if (substr($line,0,3) != "220") { - // requested article doesn't exist on the newsserver. Now we - // should check, if the thread stored in the spool-directory - // also doesnt't contain that article... - thread_cache_removearticle($group,$id); - return false; - } - $rawmessage=array(); - $line=line_read($ns); - while(strcmp($line,".") != 0) { - $rawmessage[]=$line; - $line=line_read($ns); - } - $message=message_parse($rawmessage); - if (ereg('^[0-9]+$',$id)) $message->header->number=$id; - // write header, body and attachments to the cache - if ((isset($cache_articles)) && ($cache_articles == true)) { - $cachefile=fopen($cachefilename_header,"w"); - if ($cachefile) { - fputs($cachefile,serialize($message->header)); - } - fclose($cachefile); - for ($i=0; $iheader->content_type); $i++) { - if (isset($message->body[$i])) { - $cachefile=fopen($cachefilename_body.$i,"w"); - fwrite($cachefile,$message->body[$i]); - fclose($cachefile); - } - } - } - } - return $message; -} - -function textwrap($text, $wrap=80, $break="\n",$maxlen=false){ - $len = strlen($text); - if ($len > $wrap) { - $h = ''; // massaged text - $lastWhite = 0; // position of last whitespace char - $lastChar = 0; // position of last char - $lastBreak = 0; // position of last break - // while there is text to process - while ($lastChar < $len && (($maxlen==false) || (strlen($h)<$maxlen))) { - $char = substr($text, $lastChar, 1); // get the next character - // if we are beyond the wrap boundry and there is a place to break - if (($lastChar - $lastBreak > $wrap) && ($lastWhite > $lastBreak)) { - $h .= substr($text, $lastBreak, ($lastWhite - $lastBreak)) . $break; - $lastChar = $lastWhite + 1; - $lastBreak = $lastChar; - } - // You may wish to include other characters as valid whitespace... - if ($char == ' ' || $char == chr(13) || $char == chr(10)) { - $lastWhite = $lastChar; // note the position of the last whitespace - } - $lastChar = $lastChar + 1; // advance the last character position by one - } - $h .= substr($text, $lastBreak); // build line - } else { - $h = $text; // in this case everything can fit on one line - } - return $h; -} -/* - * Displays a (Sub)-Thread. Is used in article.php - * - * $id: Message-ID (not number!) of an article in the thread - * $group: name of the newsgroup - */ -function message_thread($id,$group,$thread,$highlightids=false) { - $current=$id; - // set the highlightid, if not set - if(!$highlightids) - $highlightids=array($current); - flush(); - // find the first article in the subthread of $id - while(isset($thread[$id]->references)) { - foreach($thread[$id]->references as $reference) { - if((trim($reference)!='') && (isset($thread[$reference]))) { - $id=$reference; - continue 2; - } - } - break; - } - $liste=array(); - $liste[]=$id; - $tmp=0; - thread_show_head(); - echo thread_show_recursive($thread,$liste,1,"",$group,0,100,$tmp,$highlightids); - thread_show_tail(); -} - -/* - * Print the header of a message to the webpage - * - * $head: the header of the message as an headerType - * $group: the name of the newsgroup, is needed for the links to post.php3 - * and the header. - */ -function show_header($head,$group) { - global $article_show,$text_header,$file_article,$attachment_show; - global $file_attachment,$anonym_address; - echo '
'; - if ($article_show["Subject"]) echo $text_header["subject"].htmlspecialchars($head->subject)."
"; - if ($article_show["From"]) { - echo $text_header["from"]; - if($head->from==$anonym_address) { - // this is the anonymous address, so only show the name - echo htmlspecialchars($head->name); - } else { - if($article_show["From_link"]) - echo ''; - if(isset($article_show["From_rewrite"])) - echo eregi_replace($article_show["From_rewrite"][0], - $article_show["From_rewrite"][1], - htmlspecialchars($head->from)); - else - echo htmlspecialchars($head->from); - if($article_show["From_link"]) - echo ''; - if ($head->name != "") echo ' ('.htmlspecialchars($head->name).')'; - } - echo "
"; - } - if ($article_show["Newsgroups"]) - echo $text_header["newsgroups"].htmlspecialchars(str_replace(',',', ',$head->newsgroups))."
\n"; - if (isset($head->followup) && ($article_show["Followup"]) && ($head->followup != "")) - echo $text_header["followup"].htmlspecialchars($head->followup)."
\n"; - if ((isset($head->organization)) && ($article_show["Organization"]) && - ($head->organization != "")) - echo $text_header["organization"]. - html_parse(htmlspecialchars($head->organization))."
\n"; - if ($article_show["Date"]) - echo $text_header["date"].date($text_header["date_format"],$head->date)."
\n"; - if ($article_show["Message-ID"]) - echo $text_header["message-id"].htmlspecialchars($head->id)."
\n"; - if (($article_show["References"]) && (isset($head->references[0]))) { - echo $text_header["references"]; - for ($i=0; $i<=count($head->references)-1; $i++) { - $ref=$head->references[$i]; - echo ' '.''.($i+1).''; - } - echo "
"; - } - if (isset($head->user_agent)) { - if ((isset($article_show["User-Agent"])) && - ($article_show["User-Agent"])) { - echo $text_header["user-agent"].htmlspecialchars($head->user_agent)."
\n"; - } else { - echo "\n"; - } - } - if ((isset($attachment_show)) && ($attachment_show==true) && - (isset($head->content_type[1]))) { - echo $text_header["attachments"]; - for ($i=1; $icontent_type); $i++) { - echo ''. - $head->content_type_name[$i].' ('. - $head->content_type[$i].')'; - if ($icontent_type)-1) echo ', '; - } - } - echo '
'; -} - -/* - * decodes a body. Splits the content of $body into an array of several - * lines, respecting the special decoding issues of format=flowed - * articles. Each returned line consists of two fields: text and - * the quote depth (depth) - */ -function decode_textbody($body,$format="fixed") { - $body=split("\n",$body); - $nbody=array(); - $depth=0; - $paragraph=""; // empty paragraph - $lastline=""; - for($i=0; $i') { - $ndepth++; - } else { - if(($body[$i][$j]!=' ') || ($body[$i][$j-1]==' ') || ($j==0)) { - break; - } - } - } - // generate a new paragraph? - if(($i>0) && (($ndepth!=$depth) || $format!="flowed" || - ($paragraph[strlen($paragraph)-1]!=' ')) || ($i==count($body))) { - $tmp->text=$lastline=$paragraph; - $tmp->depth=$depth; - $paragraph=""; - if(phpversion()>=5) - $nbody[]=clone($tmp); - else - $nbody[]=$tmp; - } - if($body[$i]=="-- " && $format=="flowed") $body[$i]="--"; - $paragraph.=substr($body[$i],$tdepth); - $depth=$ndepth; - } - return $nbody; -} - -/* - * replaces multiple spaces in texts by  es and convert special-chars - * to their entities - */ -function text2html($text) { - return eregi_replace("^ "," ", - str_replace(" ","  ", - str_replace(" ","  ", - str_replace("\n","
", - htmlspecialchars($text))))); -} - - -/* - * print an article to the webpage - * - * $group: The name of the newsgroup - * $id: the ID of the article inside the group or the message-id - * $attachment: The number of the attachment of the article. - * 0 means the normal textbody. - */ -function message_show($group,$id,$attachment=0,$article_data=false,$maxlen=false) { - global $file_article,$file_article_full; - global $text_header,$text_article,$article_showthread; - global $block_xnoarchive,$article_graphicquotes; - if ($article_data == false) - $article_data=message_read($id,$attachment,$group); - $head=$article_data->header; - $body=$article_data->body[$attachment]; - if ($head) { - if (($block_xnoarchive) && (isset($head->xnoarchive)) && - ($head->xnoarchive=="yes")) { - echo $text_article["block-xnoarchive"]; - } else - if (($head->content_type[$attachment]=="text/plain") && - ($attachment==0)) { - show_header($head,$group); - $body=decode_textbody($body, - $article_data->header->content_type_format[$attachment]); - $depth=0; - echo '
'; - $currentlen=0; // needed if $maxlen is set - for ($i=0; $i<=count($body) && - (($currentlen<$maxlen) || ($maxlen==false)); $i++) { - // HTMLized Quotings instead of boring > ? - if($article_graphicquotes) { - // HTMLized Quotings - for($j=$depth; $j<$body[$i]->depth; $j++) - echo '
'; - for($j=$body[$i]->depth; $j<$depth; $j++) - echo '
'; - $t=html_parse(text2html($body[$i]->text)).'
'; - echo $t; - $currentlen+=strlen($t); - echo "\n"; - $depth=$body[$i]->depth; - } else { - // Boring old Quotings with > - if($body[$i]->depth==0) { - if(trim($body[$i]->text)=='') - $t="
\n"; - else - $t=html_parse(text2html($body[$i]->text))."
\n"; - } else { - $t=''.str_repeat('>',$body[$i]->depth).' '. - html_parse(text2html( - textwrap($body[$i]->text,72-$body[$i]->depth, - "\n".str_repeat('>',$body[$i]->depth).' '))). - "
\n"; - } - echo $t; - $currentlen+=strlen($t); - } - } - echo '
'; - if($maxlen!=false && $currentlen>=$maxlen) { - echo '
'.$text_article["full_article"].''; - } - } else { - echo $body; - } - } -} - -/* - * Shows the little menu on article-flat.php where you can select the - * different pages with the articles on it - */ -function articleflat_pageselect($group,$id,$article_count,$first) { - global $articleflat_articles_per_page,$file_article,$file_framethread,$name; - global $text_thread,$thread_show; - $pages=ceil($article_count / $articleflat_articles_per_page); - $return=""; - if ($article_count > $articleflat_articles_per_page) - $return.= $text_thread["pages"]; - for ($i = 0; $i < $pages; $i++) { - if ($first != $i*$articleflat_articles_per_page+1) - $return.= ''; - else - $return.= ''; - $return.= $i+1; - if ($i == $pages-1) { - // $return.= $article_count; - } - if ($first != $i*$articleflat_articles_per_page+1) - $return.= ''; - else - $return.= ''; - } - return $return; -} diff --git a/newsgroup/lib/post.inc.php b/newsgroup/lib/post.inc.php deleted file mode 100644 index c322cb6..0000000 --- a/newsgroup/lib/post.inc.php +++ /dev/null @@ -1,195 +0,0 @@ -', '=3F', '@', 'A', - 'B', 'C', 'D', 'E', 'F', 'G', - 'H', 'I', 'J', 'K', 'L', 'M', - 'N', 'O', 'P', 'Q', 'R', 'S', - 'T', 'U', 'V', 'W', 'X', 'Y', - 'Z', '[', '\\', ']', '^', '=5F', - '', 'a', 'b', 'c', 'd', 'e', - 'f', 'g', 'h', 'i', 'j', 'k', - 'l', 'm', 'n', 'o', 'p', 'q', - 'r', 's', 't', 'u', 'v', 'w', - 'x', 'y', 'z', '{', '|', '}', - '~', '=7F', '=80', '=81', '=82', '=83', - '=84', '=85', '=86', '=87', '=88', '=89', - '=8A', '=8B', '=8C', '=8D', '=8E', '=8F', - '=90', '=91', '=92', '=93', '=94', '=95', - '=96', '=97', '=98', '=99', '=9A', '=9B', - '=9C', '=9D', '=9E', '=9F', '=A0', '=A1', - '=A2', '=A3', '=A4', '=A5', '=A6', '=A7', - '=A8', '=A9', '=AA', '=AB', '=AC', '=AD', - '=AE', '=AF', '=B0', '=B1', '=B2', '=B3', - '=B4', '=B5', '=B6', '=B7', '=B8', '=B9', - '=BA', '=BB', '=BC', '=BD', '=BE', '=BF', - '=C0', '=C1', '=C2', '=C3', '=C4', '=C5', - '=C6', '=C7', '=C8', '=C9', '=CA', '=CB', - '=CC', '=CD', '=CE', '=CF', '=D0', '=D1', - '=D2', '=D3', '=D4', '=D5', '=D6', '=D7', - '=D8', '=D9', '=DA', '=DB', '=DC', '=DD', - '=DE', '=DF', '=E0', '=E1', '=E2', '=E3', - '=E4', '=E5', '=E6', '=E7', '=E8', '=E9', - '=EA', '=EB', '=EC', '=ED', '=EE', '=EF', - '=F0', '=F1', '=F2', '=F3', '=F4', '=F5', - '=F6', '=F7', '=F8', '=F9', '=FA', '=FB', - '=FC', '=FD', '=FE', '=FF'); - // are there "forbidden" characters in the string? - for($i=0; $i0 && $line[$from] != ' '; $from--); - if($from>0) $from++; - for(;$to'; - break; - default: - return false; - break; - } -} - -/* - * Post an article to a newsgroup - * - * $subject: The Subject of the article - * $from: The authors name and email of the article - * $newsgroups: The groups to post to - * $ref: The references of the article - * $body: The article itself - */ -function message_post($subject,$from,$newsgroups,$ref,$body) { - global $server,$port,$send_poster_host,$organization,$text_error; - global $file_footer,$www_charset,$spooldir; - global $msgid_generate,$msgid_fqdn; - flush(); - $ns=nntp_open($server,$port); - if ($ns != false) { - fputs($ns,"POST\r\n"); - $weg=line_read($ns); - fputs($ns,'Subject: '.quoted_printable_encode($subject)."\r\n"); - fputs($ns,'From: '.$from."\r\n"); - fputs($ns,'Newsgroups: '.$newsgroups."\r\n"); - fputs($ns,"Mime-Version: 1.0\r\n"); - fputs($ns,"Content-Type: text/plain; charset=".$www_charset."; format=flowed\r\n"); - fputs($ns,"Content-Transfer-Encoding: 8bit\r\n"); - fputs($ns,"User-Agent: NewsPortal/0.36 (http://florian-amrhein.de/newsportal)\r\n"); - if ($send_poster_host) - @fputs($ns,'X-HTTP-Posting-Host: '.gethostbyaddr(getenv("REMOTE_ADDR"))."\r\n"); - if (($ref!=false) && (count($ref)>0)) { - // strip references - if(strlen(implode(" ",$ref))>900) { - $ref_first=array_shift($ref); - do { - $ref=array_slice($ref,1); - } while(strlen(implode(" ",$ref))>800); - array_unshift($ref,$ref_first); - } - fputs($ns,'References: '.implode(" ",$ref)."\r\n"); - } - if (isset($organization)) - fputs($ns,'Organization: '.quoted_printable_encode($organization)."\r\n"); - if ((isset($file_footer)) && ($file_footer!="")) { - $footerfile=fopen($file_footer,"r"); - $body.="\n".fread($footerfile,filesize($file_footer)); - fclose($footerfile); - } - if($msgid=generate_msgid( - $subject.",".$from.",".$newsgroups.",".$ref.",".$body)) - fputs($ns,'Message-ID: '.$msgid."\r\n"); - $body=str_replace("\n.\r","\n..\r",$body); - $body=str_replace("\r",'',$body); - $b=split("\n",$body); - $body=""; - for ($i=0; $i") != false) | (strcmp(substr($b[$i],0,1),">") == 0)) { - $body .= textwrap(stripSlashes($b[$i]),78," \r\n")."\r\n"; - } else { - $body .= textwrap(stripSlashes($b[$i]),74," \r\n")."\r\n"; - } - } - fputs($ns,"\r\n".$body."\r\n.\r\n"); - $message=line_read($ns); - nntp_close($ns); - } else { - $message=$text_error["post_failed"]; - } - // let thread.php ignore the cache for this group, so this new - // article will be visible instantly - $cachefile=$spooldir.'/'.$newsgroups.'-cache.txt'; - @unlink($cachefile); - return $message; -} -?> \ No newline at end of file diff --git a/newsgroup/lib/thread.inc.php b/newsgroup/lib/thread.inc.php deleted file mode 100644 index 78c8e42..0000000 --- a/newsgroup/lib/thread.inc.php +++ /dev/null @@ -1,1030 +0,0 @@ - $articles_per_page) - echo $text_thread["pages"]; - for ($i = 0; $i < $pages; $i++) { - // echo '['; - if ($first != $i*$articles_per_page+1) - echo ''; - else - ; //echo ''; - // echo ($i*$articles_per_page+1).'-'; - echo $i+1; - if ($i == $pages-1) { - // echo $article_count; - } else { - // echo ($i+1)*$articles_per_page; - } - if ($first != $i*$articles_per_page+1) - echo ''; - else - ; //echo ''; - // echo '] '; - } -} - -/* - * Load a thread from disk - * - * $group: name of the newsgroup, is needed to create the filename - * - * returns: an array of headerType containing the thread. - */ -function thread_cache_load($group) { - global $spooldir,$compress_spoolfiles; - $filename=$spooldir."/".$group."-data.dat"; - if (!file_exists($filename)) return false; - if ($compress_spoolfiles) { - $file=gzopen("$spooldir/$group-data.dat","r"); - $headers=unserialize(gzread($file,1000000)); - gzclose($file); - } else { - $file=fopen($filename,"r"); - $headers=unserialize(fread($file,filesize($filename))); - fclose($file); - } - return($headers); -} - - -/* - * Save the thread to disk - * - * $header: is an array of headerType containing the thread - * $group: name of the newsgroup, is needed to create the filename - */ -function thread_cache_save($headers,$group) { - global $spooldir,$compress_spoolfiles; - if ($compress_spoolfiles) { - $file=gzopen("$spooldir/$group-data.dat","w"); - gzputs($file,serialize($headers)); - gzclose($file); - } else { - $file=fopen("$spooldir/$group-data.dat","w"); - if($file===false) { - die('The spool-directory is not writeable. Please change the user '. - 'permissions to give the webserver write-access to it.'); - } - fputs($file,serialize($headers)); - fclose($file); - } -} - -/* - * remove an article from the overview-file - * is needed, when article has been canceled, the article is still - * in the thread spool on disc and someone wants to read this article. - * the message_read function can now call this function to remove - * the article. - */ -function thread_cache_removearticle($group,$id) { - $thread=thread_cache_load($group); - if(!$thread) return false; - $changed=false; - foreach ($thread as $value) { - if(($value->number==$id) || ($value->id==$id)) { - // found to be deleted article - // now lets rebuild the tree... - if(isset($value->answers)) - foreach ($value->answers as $key => $answer) { - $thread[$answer]->isAnswer=false; - } - if(isset($value->references)) - foreach ($value->references as $reference) { - if(isset($thread[$reference]->answers)) { - $search=array_search($value->id,$thread[$reference]->answers); - if(!($search===false)) - unset($thread[$reference]->answers[$search]); - } - } - unset($thread[$value->id]); - $changed=true; - break; - } - } - if($changed) thread_cache_save($thread,$group); -} - -/* -function readArticles(&$ns,$groupname,$articleList) { - for($i = 0; $i <= count($articleList)-1 ; $i++) { - $temp=read_header($ns,$articleList[$i]); - $articles[$temp->id] = $temp; - } - return $articles; -} -*/ - -/* - * interpret and decode one line of overview-data from the newsserver and - * put it into an headerType - * - * $line: the data to be interpreted - * $overviewformat: the format of an overview-line, given by - * thread_overview_read() - * $groupname: the name of the newsgroup - * - * returns: headerType containing the data - */ -function thread_overview_interpret($line,$overviewformat,$groupname) { - $return=""; - $overviewfmt=explode("\t",$overviewformat); - echo " "; // keep the connection to the webbrowser alive - flush(); // while generating the message-tree -// $over=split("\t",$line,count($overviewfmt)-1); - $over=split("\t",$line); - //$article=new headerType; - for ($i=0; $iisReply=splitSubject($subject); - $article->subject=$subject; - } - if ($overviewfmt[$i]=="Date:") { - $article->date=getTimestamp($over[$i+1]); - } - if ($overviewfmt[$i]=="From:") { - $fromline=address_decode(headerDecode($over[$i+1]),"nirgendwo"); - $article->from=$fromline[0]["mailbox"]."@".$fromline[0]["host"]; - $article->username=$fromline[0]["mailbox"]; - if (!isset($fromline[0]["personal"])) { - $article->name=$fromline[0]["mailbox"]; - if (strpos($article->name,'%')) { - $article->name=substr($article->name,0,strpos($article->name,'%')); - } - $article->name=strtr($article->name,'_',' '); - } else { - $article->name=$fromline[0]["personal"]; - } - } - if ($overviewfmt[$i]=="Message-ID:") $article->id=$over[$i+1]; - if (($overviewfmt[$i]=="References:") && ($over[$i+1] != "")) { - $article->references=explode(" ",$over[$i+1]); - } - } - $article->number=$over[0]; - $article->isAnswer=false; - return($article); -} - -/* - * read the overview-format from the newsserver. This data is used - * by thread_overview_interpret - */ -function thread_overview_read(&$ns) { - $overviewfmt=array(); - fputs($ns,"LIST overview.fmt\r\n"); // find out the format of the - $tmp=line_read($ns); // xover-command - if(substr($tmp,0,3)=="215") { - $line=line_read($ns); - while (strcmp($line,".") != 0) { - // workaround for braindead CLNews newsserver - if($line=="Author:") - $overviewfmt[]="From:"; - else - $overviewfmt[]=$line; - $line=line_read($ns); - } - } else { - // some stupid newsservers, like changi, don't send their overview - // format - // let's hope, that the format is like that from INN - $overviewfmt=array("Subject:","From:","Date:","Message-ID:", - "References:","Bytes:"); - } - $overviewformat=implode("\t",$overviewfmt); - return $overviewformat; -} - -function thread_mycompare($a,$b) { - global $thread_sort_order,$thread_sort_type; - if($thread_sort_type!="thread") { - $r=($a->date<$b->date) ? -1 : 1; - if ($a->date==$b->date) $r=0; - } else { - $r=($a->date_thread<$b->date_thread) ? -1 : 1; - if ($a->date_thread==$b->date_thread) $r=0; - } - return $r*$thread_sort_order; -} - -/* - * this function loads the (missing parts of the) thread from the newsserver. - * it also loads the thread from the disk cache to detect which parts - * are missing and merges this data with the parts from the - * newsserver. - * if it detects that the newsserver made major changes in the groups, - * for example if it expired parts of the group or reset its counters, - * this function deletes the cached data and make a complete rebuild. - * - * $ns: handle of the connection to the newsserver - * $groupname: name of the newsgroup - * $poll: if set to 1, this function works in polling-mode, which - * means, that it also read every article from the newsserver. - * This makes only sense if the article cache is activated - */ -function thread_load_newsserver(&$ns,$groupname,$poll) { - global $spooldir,$maxarticles,$maxfetch,$initialfetch,$maxarticles_extra; - global $text_error,$text_thread,$compress_spoolfiles,$server; - global $www_charset,$iconv_enable,$thread_show,$thread_sort_order; - $idstring="0.36,".$server.",".$compress_spoolfiles.",".$maxarticles.",". - $maxarticles_extra.",".$maxfetch.",".$initialfetch.",". - $www_charset.','.$iconv_enable.','.$thread_show["replies"]; - $overviewformat=thread_overview_read($ns); - $spoolfilename=$spooldir."/".$groupname."-data.dat"; - fputs($ns,"GROUP $groupname\r\n"); // select a group - $groupinfo=explode(" ",line_read($ns)); - if (substr($groupinfo[0],0,1) != 2) { - echo "

".$text_error["error:"]."

"; - echo "

".$text_thread["no_such_group"]."

"; - flush(); - } else { - $infofilename=$spooldir."/".$groupname."-info.txt"; - // lets find out, in which mode wie want to read articles: - // w: complete rebuild of the group-info file - // a: add new articles to the group-info file - // n: there are no new articles, no rebuild or actualisation - $spoolopenmodus="n"; - // if the group-info file doesn't exist: create it - if (!((file_exists($infofilename)) && (file_exists($spoolfilename)) && - (filesize($infofilename)>0) && (filesize($spoolfilename)>0))) { - $spoolopenmodus="w"; - } else { - $infofile=fopen($infofilename,"r"); - $oldid=fgets($infofile,100); - if (trim($oldid) != $idstring) { - echo "\n"; - $spoolopenmodus="w"; - } - $oldgroupinfo=explode(" ",trim(fgets($infofile,200))); - fclose($infofile); - if ($groupinfo[3] < $oldgroupinfo[1]) { - $spoolopenmodus="w"; - } - if ($maxarticles == 0) { - if ($groupinfo[2] != $oldgroupinfo[0]) $spoolopenmodus="w"; - } else { - if ($groupinfo[2] > $oldgroupinfo[0]) $spoolopenmodus="w"; - } - // if the high watermark increased, add articles to the existing spool - if (($spoolopenmodus == "n") && ($groupinfo[3] > $oldgroupinfo[1])) - $spoolopenmodus="a"; - } - if ($spoolopenmodus=="a") { - $firstarticle=$oldgroupinfo[1]+1; - $lastarticle=$groupinfo[3]; - } - if ($spoolopenmodus=="w") { - $firstarticle=$groupinfo[2]; - $lastarticle=$groupinfo[3]; - } - if ($spoolopenmodus != "n") { - if ($maxarticles != 0) { - if ($spoolopenmodus == "w") { - $firstarticle=$lastarticle-$maxarticles+1; - if ($firstarticle < $groupinfo[2]) - $firstarticle=$groupinfo[2]; - } else { - if ($lastarticle-$oldgroupinfo[0]+1 > $maxarticles + $maxarticles_extra) { - $firstarticle=$lastarticle-$maxarticles+1; - $spoolopenmodus="w"; - } - } - } - if (($maxfetch!=0) && (($lastarticle-$firstarticle+1) > $maxfetch)) { - if ($spoolopenmodus=="w") { - $tofetch=($initialfetch != 0) ? $initialfetch : $maxfetch; - $lastarticle=$firstarticle+$tofetch-1; - } else { - $lastarticle=$firstarticle+$maxfetch-1; - } - } - } - echo "\n"; - // load the old spool-file, if we do not have a complete rebuild - if ($spoolopenmodus != "w") $headers=thread_cache_load($groupname); - // read articles from the newsserver - if ($spoolopenmodus != "n") { - // order the article overviews from the newsserver - fputs($ns,"XOVER ".$firstarticle."-".$lastarticle."\r\n"); - $tmp=line_read($ns); - // have the server accepted our order? - if (substr($tmp,0,3) == "224") { - $line=line_read($ns); - // read overview by overview until the data ends - while ($line != ".") { - // parse the output of the server... - $article=thread_overview_interpret($line,$overviewformat,$groupname); - // ... and save it in our data structure - $article->threadsize++; - $article->date_thread=$article->date; - $headers[$article->id]=$article; - // if we are in poll-mode: print status information and - // decode the article itself, so it can be saved in the article - // cache - if($poll) { - echo $article->number.", "; flush(); - message_read($article->number,0,$groupname); - } - // read the next line from the newsserver - $line=line_read($ns); - } - // write information about the last article to the spool-directory - $infofile=fopen($spooldir."/".urlencode($groupname)."-lastarticleinfo.dat","w"); - $lastarticleinfo->from=$article->from; - $lastarticleinfo->date=$article->date; - $lastarticleinfo->name=$article->name; - fputs($infofile,serialize($lastarticleinfo)); - fclose($infofile); - } - // remove the old spoolfile - if (file_exists($spoolfilename)) unlink($spoolfilename); - if ((isset($headers)) && (count($headers)>0)) { - //$infofile=fopen($infofilename,"w"); - //if ($spoolopenmodus=="a") $firstarticle=$oldgroupinfo[0]; - //fputs($infofile,$idstring."\n"); - //fputs($infofile,$firstarticle." ".$lastarticle."\r\n"); - //fclose($infofile); - foreach($headers as $c) { - if (($c->isAnswer == false) && - (isset($c->references))) { // is the article an answer to an - // other article? - // try to find a matching article to one of the references - $refmatch=false; - foreach ($c->references as $reference) { - if(isset($headers[$reference])) { - $refmatch=$reference; - } - } - // have we found an article, to which this article is an answer? - if($refmatch!=false) { - $c->isAnswer=true; - $c->bestreference=$refmatch; - $headers[$c->id]=$c; - // the referenced article get the ID af this article as in - // its answers-array - $headers[$refmatch]->answers[]=$c->id; - // propagate down the number of articles in this thread - $d =& $headers[$c->bestreference]; - do { - $d->threadsize+=$c->threadsize; - $d->date_thread=max($c->date,$d->date_thread); - } while(($headers[$d->bestreference]) && - (isset($d->bestreference)) && - ($d =& $headers[$d->bestreference])); - } - } - } - reset($headers); - // sort the articles - if (($thread_sort_order != 0) && (count($headers)>0)) - uasort($headers,'thread_mycompare'); - // Save the thread-informations - thread_cache_save($headers,$groupname); - // Save the info-file - $infofile=fopen($infofilename,"w"); - if ($spoolopenmodus=="a") $firstarticle=$oldgroupinfo[0]; - fputs($infofile,$idstring."\n"); - fputs($infofile,$firstarticle." ".$lastarticle." ".count($headers)."\r\n"); - fclose($infofile); - } - // remove cached articles that are not in this group - // (expired on the server or canceled) - $dirhandle=opendir($spooldir); - while ($cachefile = readdir($dirhandle)) { - if(substr($cachefile,0,strlen($groupname)+1)==$groupname."_") { - $num=eregi_replace('^(.*)_(.*)\.(.*)$','\2',$cachefile); - if(($num<$firstarticle) || ($num>$lastarticle)) - unlink($spooldir.'/'.$cachefile); - } - // remove the html cache files of this group - if((substr($cachefile,strlen($cachefile)-5)==".html") && - (substr($cachefile,0,strlen($groupname)+1)==$groupname."-")) - unlink($spooldir.'/'.$cachefile); - } - } - if(isset($headers)) - return $headers; - return false; - //return((isset($headers)) ? $headers : false); - } -} - - -/* - * Read the Overview. - * Format of the overview-file: - * message-id - * date - * subject - * author - * email - * references - * - * $groupname: name of the newsgroup - * $readmode: if set to 0, this function only reads data from the - * newsserver, if there exists no cached data for this group - * $poll: polling mode, see description at thread_load_newsserver() - */ - -function thread_load($groupname,$readmode = 1,$poll=false) { - global $text_error, $maxarticles, $server, $port; - global $spooldir,$thread_sort_order,$cache_thread; - if (!testGroup($groupname)) { - echo $text_error["read_access_denied"]; - return; - } - // first assume that we have to query the newsserver - $query_ns=true; - // name of the file that indicates by it's timestamp when the - // last query of the newsserver was - $cachefile=$spooldir.'/'.$groupname.'-cache.txt'; - // should we load the data only from cache if it's recent enough, or - // do we have to query the newsserver every time? - if($cache_thread>0) { - if((file_exists($cachefile)) && - (filemtime($cachefile)+$cache_thread>time())) { - // cached file exists and is new enough. so lets read it out. - $articles=thread_cache_load($groupname); - return $articles; - $query_ns=false; - } - } - // do we have to query the newsserver? - if($query_ns) { - // look if there is new data on the newsserver - $ns=nntp_open($server,$port); - if ($ns == false) return false; - if (($ns!=false) && ($readmode > 0)) - $articles=thread_load_newsserver($ns,$groupname,$poll); - if ((isset($articles)) && ($articles)) { - - // write the file which indicates the time of the last newsserver query - $fp_cachefile=@fopen($cachefile,"w"); - if($fp_cachefile!==false) { - fputs($fp_cachefile,""); - fclose($fp_cachefile); - return $articles; - } - } else { - // uh, we didn't get articles from the newsservers... - // for now, return false. but it would also make sense to get - // the articles from the cache then... - return false; - } - nntp_close($ns); - } -} - -/* - * Remove re:, aw: etc. from a subject. - * - * $subject: a string containing the complete Subject - * - * The function removes the re:, aw: etc. from $subject end returns true - * if it removed anything, and false if not. - */ -function splitSubject(&$subject) { - $s=eregi_replace('^(odp:|aw:|re:|re\[2\]:| )+','',$subject); - $return=($s != $subject); - $subject=$s; - return $return; -} - -function str_change($str,$pos,$char) { - return(substr($str,0,$pos).$char.substr($str,$pos+1,strlen($str)-$pos)); -} - -/* - * calculate the graphic representation of the thread - */ -function thread_show_calculate($newtree,$depth,$num,$liste,$c) { - global $thread_show; - // displays the replies to an article? - if(!$thread_show["replies"]) { - // no - if ((isset($c->answers[0])) && (count($c->answers)>0)) - $newtree.="o"; - else - $newtree.="o"; - } else { - // yes, display the replies - if ((isset($c->answers[0])) && (count($c->answers)>0)) { - $newtree.="*"; - } else { - if ($depth == 1) { - $newtree.="o"; - } else { - $newtree.="-"; - } - } - if (($num == count($liste)-1) && ($depth>1)) { - $newtree=str_change($newtree,$depth-2,"`"); - } - } - return($newtree); -} - - -/* - * Format the message-tree - * Zeichen im Baum: - * o : leerer Kasten k1.gif - * * : Kasten mit Zeichen drin k2.gif - * i : vertikale Linie I.gif - * - : horizontale Linie s.gif - * + : T-Stueck T.gif - * ` : Winkel L.gif - */ -function thread_show_treegraphic($newtree) { - global $imgdir; - $return=""; - for ($o=0 ; $oisReply) { - $re="Re: "; - } else { - $re=""; - } - // is the current article to be highlighted? - if(($highlightids) && - ((in_array($c->id,$highlightids)) || - (in_array($c->number,$highlightids)))) - $highlight=true; - else - $highlight=false; - if($highlight) - $return=''; - else { - $return='number).'">'; - } - $return.=$re.htmlspecialchars(substr(trim($c->subject),0,$thread_maxSubject)); - if($highlight) - $return.=''; - else - $return.=''; - return($return); -} - -/* - * colorize the date inside the thread - */ -function thread_format_date_color($date) { - global $age_count,$age_time,$age_color; - $return=""; - $currentTime=time(); - if ($age_count > 0) - for($t = $age_count; $t >= 1; $t--) { - if ($currentTime - $date < $age_time[$t]) - $color = $age_color[$t]; - } - if (isset($color)) - return $color; - else - return ""; -} - -/* - * format the date inside the thread - */ -function thread_format_date($c) { - global $age_count,$age_time,$age_color,$thread_show; - $return=""; - $currentTime=time(); - $color=""; - // show the date of the individual article or of the latest article - // in the thread? - if($thread_show["lastdate"]) - $date=$c->date_thread; - else - $date=$c->date; - if ($age_count > 0) - for($t = $age_count; $t >= 1; $t--) - if ($currentTime - $date < $age_time[$t]) $color = $age_color[$t]; - if ($color != "") $return .= ''; - $return .= date("d.m.",$date); // format the date - if ($color != "") $return .= ''; - return($return); -} - -/* - * format the author inside the thread - */ -function thread_format_author($c) { - global $thread_show,$anonym_address; - // if the address the anonymous address, only return the name - if($c->from==$anonym_address) - return $c->name; - $return=""; - if($thread_show["authorlink"]) - $return .= ''; - if (trim($c->name)!="") { - $return .= htmlspecialchars(trim($c->name)); - } else { - if (isset($c->username)) { - $s = strpos($c->username,"%"); - if ($s != false) { - $return .= htmlspecialchars(substr($c->username,0,$s)); - } else { - $return .= htmlspecialchars($c->username); - } - } - } - if($thread_show["authorlink"]) - $return .= ""; - return($return); -} - -/* - * Displays a part of the thread. This function is recursively called - * It is used by thread_show - */ -function thread_show_recursive(&$headers,&$liste,$depth,$tree,$group,$article_first=0,$article_last=0,&$article_count,$highlight=false) { - global $thread_treestyle; - global $thread_show,$imgdir; - global $file_article,$thread_maxSubject; - global $age_count,$age_time,$age_color; - global $frame_article; - $output=""; - if ($thread_treestyle==3) $output.= "\n
    \n"; - for ($i = 0 ; $i= $article_first) && - ($article_count <= $article_last))) { - switch ($thread_treestyle) { - case 0: // simple list - $output.= ''; - if ($thread_show["date"]) $output.= thread_format_date($c)." "; - if ($thread_show["subject"]) $output.= thread_format_subject($c,$group)." "; - if ($thread_show["author"]) $output.= "(".thread_format_author($c).")"; - $output.= ''; - $output.= "
    \n"; - break; - case 1: // html-auflistung, kein baum - $output.= '
  • '; - if ($thread_show["date"]) - $output.= thread_format_date($c).' '; - if ($thread_show["subject"]) - $output.= thread_format_subject($c,$group,$highlight).' '; - if ($thread_show["author"]) - $output.= "(".thread_format_author($c).")"; - $output.= '
  • '; - break; - case 2: // table - $output.= ''; - if ($thread_show["date"]) { - $output.= ''. - thread_format_date($c).' '; - } - if ($thread_show["subject"]) { - $output.= ''. - ''. - thread_format_subject($c,$group,$highlight). - ''; - } - if ($thread_show["author"]) { - $output.= ''. - ''. - ''.thread_format_author($c). - ''; - } - $output.= "\n"; - break; - case 3: // html-tree - $output.= '
  • '; - if ($thread_show["date"]) - $output.= thread_format_date($c)." "; - if ($thread_show["subject"]) - $output.= thread_format_subject($c,$group,$highlight)." "; - if ($thread_show["author"]) - $output.= "(".thread_format_author($c).")"; - $output.= ""; - break; - case 4: // thread - $output.= ''; - if ($thread_show["date"]) - $output.= thread_format_date($c)." "; - $output.= formatTreeText($newtree)." "; - if ($thread_show["subject"]) - $output.= thread_format_subject($c,$group,$highlight)." "; - if ($thread_show["author"]) - $output.= "(".thread_format_author($c).")"; - $output.= '
    '; - break; - case 5: // thread, graphic - $output.= ''; - if ($thread_show["date"]) - $output.= ''; - $output.= ''; - if ($thread_show["subject"]) - $output.= ''; - $output.= "
    '. - ''. - thread_format_date($c).' '. - thread_show_treegraphic($newtree).''. - ' '. - thread_format_subject($c,$group,$highlight)." "; - if ($thread_show["author"]) - $output.= '('.thread_format_author($c).')
    "; - break; - case 6: // thread, table - $output.= ""; - if ($thread_show["date"]) - $output.= ''. - ''. - thread_format_date($c).' '; - $output.= ''. - ''. - formatTreeText($newtree)." "; - if ($thread_show["subject"]) { - $output.= thread_format_subject($c,$group,$highlight).""; - $output.= ""; - } - if ($thread_show["author"]) - $output.= ''. - ''. - thread_format_author($c).''; - $output.= ""; - break; - case 7: // thread, table, graphic - $output.= ''; - if ($thread_show["date"]) - $output.= ''. - ''. - thread_format_date($c)." ". - ''; - $output.= ''; - $output.= thread_show_treegraphic($newtree); - if ($thread_show["subject"]) - $output.= ' '. - thread_format_subject($c,$group,$highlight).''; - $output.=''; - if($thread_show["threadsize"]) - $output.= "".$c->threadsize.''; - if ($thread_show["subject"]) $output.= ""; - if ($thread_show["author"]) - $output.= ''. - ''. - thread_format_author($c).''; - $output.= ""; - break; - } - } - if ((isset($c->answers[0])) && (count($c->answers)>0) && - ($article_count<=$article_last)) { - if ($thread_treestyle >= 4) { - if (substr($newtree,$depth-2,1) == "+") - $newtree=str_change($newtree,$depth-2,"i"); - $newtree=str_change($newtree,$depth-1,"+"); - $newtree=strtr($newtree,"`","."); - } - if (!isset($newtree)) $newtree=""; - if($thread_show["replies"]) { - $output.=thread_show_recursive($headers,$c->answers,$depth+1,$newtree."",$group, - $article_first,$article_last,$article_count,$highlight); - } - } - flush(); - } - if ($thread_treestyle==3) $output.= "
"; - return $output; -} - - -/* - * Displays the Head (table tags, headlines etc.) of a thread - */ -function thread_show_head() { - global $thread_show, $thread_showTable; - global $text_thread,$thread_treestyle; - if (($thread_treestyle==2) || ($thread_treestyle==6) || - ($thread_treestyle==7)) { - echo ''; - echo ''."\n"; - if ($thread_show["date"]) - echo '"; - if ($thread_show["subject"]) - echo '"; - if ($thread_show["threadsize"]) - echo '"; - if ($thread_show["author"]) { - echo ''; - echo '\n"; - } - echo "\n"; - } else { - if ($thread_treestyle==1) echo "
    \n"; - } -} - -/* - * Displays the tail (closing table tags, headlines etc.) of a thread - */ -function thread_show_tail() { - global $thread_show, $thread_showTable; - global $text_thread,$thread_treestyle; - if (($thread_treestyle==2) || ($thread_treestyle==6) || - ($thread_treestyle==7)) { - echo "
'.$text_thread["date"]." '. - $text_thread["subject"]."'. - $text_thread["threadsize"]."  '.$text_thread["author"]."
\n"; - } else { - if ($thread_treestyle==1) echo "\n"; - } -} - -/* - * Shows a complete thread - * - * $headers: The thread to be displayed - * $group: name of the newsgroup - * $article_first: Number of the first article to be displayed - * $article_last: last article - */ -function thread_show(&$headers,$group,$article_first=0,$article_last=0) { - global $spooldir,$text_thread; - $article_count=0; - if ($headers == false) { - echo $text_thread["no_articles"]; - } else { - // exists a cached html-output? - $filename=$spooldir."/".$group."-".$article_first."-". - $article_last.".html"; - if (!file_exists($filename)) { - // no, we need to create a new html-output - $output=""; - reset($headers); - $c=current($headers); - for ($i=0; $i<=count($headers)-1; $i++) { // create the array $liste - if ($c->isAnswer == false) { // where are all the articles - $liste[]=$c->id; // in that don't have - } // references - $c=next($headers); - } - reset($liste); - if (count($liste)>0) { - $output.=thread_show_recursive($headers,$liste,1,"",$group,$article_first, - $article_last,$article_count); - } - // cache the html-output - $file=fopen($filename,"w"); - fputs($file,$output); - fclose($file); - } else { - // yes, a cached output exists, load it! - $file=fopen($filename,"r"); - $output=fread($file,filesize($filename)); - fclose($file); - } - thread_show_head(); - echo $output; - thread_show_tail(); - } -} - - - - -/* - * returns the article-numbers of all articles in a given subthread - * - * $id: article number or message id of a article in a subthread - * $thread: thread data, as returned by thread_cache_load() - */ -function thread_getsubthreadids($id,$thread) { - // recursive helper function to walk through the subtree - function thread_getsubthreadids_recursive($id) { - global $thread; - $answers=array($thread[$id]->number); - // has this article answers? - if(isset($thread[$id]->answers)) { - // walk through the answers - foreach($thread[$id]->answers as $answer) { - $answers=array_merge($answers, - thread_getsubthreadids_recursive($answer)); - } - } - return $answers; - } - -//echo htmlspecialchars(print_r($thread,true)); - // exists the article $id? - if(!isset($thread[$id])) - return false; - // "rewind" the subthread to the first article in the subthread - $current=$id; - flush(); - while(isset($thread[$id]->references)) { - foreach($thread[$id]->references as $reference) { - if((trim($reference)!='') && (isset($thread[$reference]))) { - $id=$reference; - continue 2; - } - } - break; - } - - // walk through the thread and fill up $subthread - // use the recursive helper-function thread_getsubthreadids_recursive - $subthread=thread_getsubthreadids_recursive($id); - return $subthread; -} - -?> \ No newline at end of file diff --git a/newsgroup/lib/types.inc.php b/newsgroup/lib/types.inc.php deleted file mode 100644 index df049d8..0000000 --- a/newsgroup/lib/types.inc.php +++ /dev/null @@ -1,79 +0,0 @@ -0) - var $content_type_charset; // like content_type - var $content_type_name; // array of the names of the attachments - var $content_type_boundary; // The boundary of an multipart-article. - var $content_type_format; // array, is the body in flowed format? - var $answers; // which articles are followups of this article? - var $isAnswer; // is the article an answer to an other article? - var $username; - var $user_agent; - var $isReply; // has this article "Re: " at the beginning of the subject? - var $threadsize; // number of articles in this thread -} -?> \ No newline at end of file diff --git a/newsgroup/lib/validator.inc b/newsgroup/lib/validator.inc deleted file mode 100644 index efcd993..0000000 --- a/newsgroup/lib/validator.inc +++ /dev/null @@ -1,243 +0,0 @@ -fields as $field) { - switch($field->typ) { - case "text": - case "textarea": - case "checkbox": - case "radiobutton": - // Basteln wegen scheiss PHP - $valtmp=$field->validator; - // feld_leer*feld_darf_leer + - // nicht_feld_leer*(testfkt.ex.*testfkt + - // nicht_testfkt.ex) - if( - ( - ( - (!isset($_REQUEST[$field->name])) || - (trim($_REQUEST[$field->name])=="") - ) && - (isset($field->empty)) && - ($field->empty==true) - ) || ( - (isset($_REQUEST[$field->name])) && - (trim($_REQUEST[$field->name])!="") && - ( - ($field->validator==false) || - ($field->validator!=false) && - (($errmsg=$valtmp($_REQUEST[$field->name]))===true) - ) - ) - ) { - // Feld leer und darf leer sein, oder - // feld voll und (testfunktion existiert und testfkt.=true - // oder testfunktion existiert nicht) - $this->fields[$field->name]->error=false; - } else { - // Feld leer und darf nicht leer sein, oder - // Feld voll und testfkt.ex und testfunktion=false - $errors=true; - $this->fields[$field->name]->error=true; - if(isset($errmsg)) { - $this->fields[$field->name]->errormessage=$errmsg; - unset($errmsg); - } - } - break; - case "pulldown": - case "check-text": - case "radio-text": - if((isset($field->empty)) && (!$field->empty) && - ((!isset($_REQUEST[$field->name])) || - (trim($_REQUEST[$field->name])=="") || - (($_REQUEST[$field->name]=="_frei") && - ((!isset($_REQUEST[$field->name."_frei"])) || - (trim($_REQUEST[$field->name."_frei"])=="") - ) - ) - ) - ) { - $errors=true; - $this->fields[$field->name]->error=true; - } else { - $this->fields[$field->name]->error=false; - } - break; - } -// echo '

eval: '.$field->name.': '.$_REQUEST[$field->name].'

'; - } - return !$errors; - } - - - /* - * liefert true, falls $name fehlerhaft ausgefüllt wurde - */ - function is_error($name) { - return $this->fields[$name]->error; - } - - /* - * Liefert die individuelle Fehlermeldung, falls $name fehlerhaft - * ausgefüllt wurde. Falls keine Meldung vorliegt, wird false - * geliefert. - */ - function geterrormessage($name) { - if(isset($this->fields[$name]->errormessage)) - return $this->fields[$name]->errormessage; - else - return false; - } - - /* - * Zeigt gegebenenfalls eine Fehlermeldung an, falls $name nicht - * korrekt ausgefüllt wurde - */ - function show_error($name) { - if($this->is_error($name)) { - echo "

fehler

"; - } - } - - /* - * Zeigt den Titel zu einem Feld an. Ist das zugehörige Feld fehlerhaft - * ausgefüllt worden, wird es (z.B. farblich) markiert. - * - * $name: Name des Feldes - * $text: auszugebener Text - */ - function show_title($name,$text) { - if($this->is_error($name)) - echo ''.$text.''; - else - echo $text; - } - - /* - * Zeigt die Daten an, die der Benutzer in das Formular, ob richtig oder - * falsch ist egal, eingegeben hatte. - */ - function show_value($name) { - echo stripslashes($_REQUEST[$name]); - } - - /* - * Liefert Variablenwerte ohne vorherige Umkodierung/Zusammenfassung - * zurück - */ - function value($name) { - if(is_array($_REQUEST[$name])) { - $a=$_REQUEST[$name]; - return $a; - } - return stripslashes($_REQUEST[$name]); - } - - /* Liefert Variablenwerte mit vorheriger Umkodierung/Zusammenfassung - * zurück. Vor allem wichtig bei Typ check-text und radio-text, wo - * der eigentliche Inhalt über mehrere Variablen verteilt ist, bzw. - * teilweise gar nicht zum Zuge kommt (freies Textfeld ausgefüllt, - * aber nicht angeklickt) - */ - function get_value($name) { - if(is_array($_REQUEST[$name])) { - $a=$_REQUEST[$name]; - // Freies Textfeld? - if(in_array("_frei",$a)) { - if((isset($_REQUEST[$name.'_frei'])) && - ($_REQUEST[$name.'_frei']!="")) - $a[]=$_REQUEST[$name.'_frei']; - unset($a[$name.'_frei']); - } - - return $a; - } else if(($_REQUEST[$name]=='_frei') && - ($this->fields[$name]->typ=='radio-text')) { - return stripslashes($_REQUEST[$name.'_frei']); - } else - return stripslashes($_REQUEST[$name]); - } - - /* - * gibt einfach nur " checked" aus, wenn $name den wert $value enthält. - * Nötig für das Vorselektieren von Knöpfen - */ - function show_checked($name,$value) { - global $fields; - if(($this->fields[$name]->typ!="checkbox") && - ($this->fields[$name]->typ!="check-text")) { - if($this->value($name)==$value) { - if($this->fields[$name]->typ=="pulldown") - echo ' selected'; - else - echo ' checked'; - } - } else { - if(in_array($value,$this->value($name))) - echo ' checked'; - } - } - - function show_selected($name,$value) { - global $fields; - if(($this->fields[$name]->typ!="checkbox") && - ($this->fields[$name]->typ!="check-text")) { - if($this->value($name)==$value) { - echo ' selected'; - } - } - } - - - /* - * Registriert eine Variable als zum Formular gehörend - * - * $name: Name der Variablen - * $typ: Art der Eingabe: - * - text: Textfeld mit einfacher freier Eingabe - * - textarea: Mehrzeiliger Text mit freier Eingabe - * - checkbox: Ankreuzfelder, mehrere gleichzeitig - * - radiobutton: Ankreuzfelder, nur eins gleichzeitig - * - pulldown: Pulldown-Menu, nut eins gleichzeitig - * - check-text: Ankreuzfelder+Textfeld, mehrere gleichzeitig - * - radio-text: Ankreuzfelder+Textfeld, maximal eins - * $empty: Darf das entsprechende Feld leer gelassen werden? - * bzw. mindestens kein angekreuzt bzw. ausgefüllt? - * $validator: Information, wie der Inhalt auf Korrektheit geprüft - * werden soll - * $errmsg: Fehlermeldung, die bei erkanntem Fehler ausgegeben - * werden soll - */ - function register($name,$typ,$empty=true,$validator=false,$errmsg=false) { - $var->name=$name; - $var->typ=$typ; - $var->empty=$empty; - $var->validator=$validator; - $var->errmsg=$errmsg; - $this->fields[$name]=$var; - } - - /* - * der Konstruktor - */ - function formvalidate() { - } -} -?> diff --git a/newsgroup/newsportal-0.37.zip b/newsgroup/newsportal-0.37.zip deleted file mode 100644 index a8f8d39d2dcf72a10a67c022ee2dd130d12661ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87639 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

vo%kG7j@1 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 diff --git a/newsgroup/newsportal.php b/newsgroup/newsportal.php deleted file mode 100644 index 22efe9d..0000000 --- a/newsgroup/newsportal.php +++ /dev/null @@ -1,811 +0,0 @@ -HTTP Gateway - * Version: 0.36 - * Download: http://florian-amrhein.de/newsportal - * - * Copyright (C) 2002-2004 Florian Amrhein - * E-Mail: newsportal@florian-amrhein.de - * Web: http://florian-amrhein.de - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -include "lib/types.inc.php"; -include "lib/thread.inc.php"; -include "lib/message.inc.php"; -include "lib/post.inc.php"; -//include "lib/validator.inc.php"; - -/* - * opens the connection to the NNTP-Server - * - * $server: adress of the NNTP-Server - * $port: port of the server - */ -function nntp_open($nserver=0,$nport=0) { - global $text_error,$server_auth_user,$server_auth_pass,$readonly; - global $server,$port; - // echo "
NNTP OPEN
"; - $authorize=((isset($server_auth_user)) && (isset($server_auth_pass)) && - ($server_auth_user != "")); - if ($nserver==0) $nserver=$server; - if ($nport==0) $nport=$port; - $ns=@fsockopen($nserver,$nport); - $weg=line_read($ns); // kill the first line - if (substr($weg,0,2) != "20") { - echo "

".$text_error["error:"].$weg."

"; - fclose($ns); - $ns=false; - } else { - if ($ns != false) { - fputs($ns,"MODE reader\r\n"); - $weg=line_read($ns); // and once more - if ((substr($weg,0,2) != "20") && - ((!$authorize) || ((substr($weg,0,3) != "480") && ($authorize)))) { - echo "

".$text_error["error:"].$weg."

"; - fclose($ns); - $ns=false; - } - } - if ((isset($server_auth_user)) && (isset($server_auth_pass)) && - ($server_auth_user != "")) { - fputs($ns,"AUTHINFO USER $server_auth_user\r\n"); - $weg=line_read($ns); - fputs($ns,"AUTHINFO PASS $server_auth_pass\r\n"); - $weg=line_read($ns); - if (substr($weg,0,3) != "281") { - echo "

".$text_error["error:"]."

"; - echo "

".$text_error["auth_error"]."

"; - } - } - } - if ($ns==false) echo "

".$text_error["connection_failed"]."

"; - return $ns; -} - -/* - * Close a NNTP connection - * - * $ns: the handle of the connection - */ -function nntp_close(&$ns) { - if ($ns != false) { - fputs($ns,"QUIT\r\n"); - fclose($ns); - } -} - -/* - * Validates an email adress - * - * $address: a string containing the email-address to be validated - * - * returns true if the address passes the tests, false otherwise. - */ -function validate_email($address) -{ - global $validate_email; - $return=true; - if (($validate_email >= 1) && ($return == true)) - $return = (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_A-z{|}~]+'.'@'. - '[-!#$%&\'*+\\/0-9=?A-Z^_A-z{|}~]+\.'. - '[-!#$%&\'*+\\./0-9=?A-Z^_A-z{|}~]+$',$address)); - if (($validate_email >= 2) && ($return == true)) { - $addressarray=address_decode($address,"garantiertungueltig"); - $return=checkdnsrr($addressarray[0]["host"],"MX"); - if (!$return) $return=checkdnsrr($addressarray[0]["host"],"A"); - } - return($return); -} - -/* - * decodes a block of 7bit-data in uuencoded format to it's original - * 8bit format. - * The headerline containing filename and permissions doesn't have to - * be included. - * - * $data: The uuencoded data as a string - * - * returns the 8bit data as a string - * - * Note: this function is very slow and doesn't recognize incorrect code. - */ -function uudecode_line($line) { - $data=substr($line,1); - $length=ord($line[0])-32; - $decoded=""; - for ($i=0; $i<(strlen($data)>>2); $i++) { - $pack=substr($data,$i<<2,4); - $upack=""; - $bitmaske=0; - for ($o=0; $o<4; $o++) { - $g=((ord($pack[3-$o])-32)); - if ($g==64) $g=0; - $bitmaske=$bitmaske | ($g << (6*$o)); - } - $schablone=255; - for ($o=0; $o<3; $o++) { - $c=($bitmaske & $schablone) >> ($o << 3); - $schablone=($schablone << 8); - $upack=chr($c).$upack; - } - $decoded.=$upack; - } - $decoded=substr($decoded,0,$length); - return $decoded; -} - -/* - * decodes uuencoded Attachments. - * - * $data: the encoded data - * - * returns the decoded data - */ -function uudecode($data) { - $d=explode("\n",$data); - $u=""; - for ($i=0; $i0) $return.=","; - $o++; - $return.=$groups[$i]; - } - } - return($return); -} - -/* - * read one line from the NNTP-server - */ -function line_read(&$ns) { - if ($ns != false) { - $t=str_replace("\n","",str_replace("\r","",fgets($ns,1200))); - return $t; - } -} - -/* - * Split an internet-address string into its parts. An address string could - * be for example: - * - user@host.domain (Realname) - * - "Realname" - * - user@host.domain - * - * The address will be split into user, host (incl. domain) and realname - * - * $adrstring: The string containing the address in internet format - * $defaulthost: The name of the host which should be returned if the - * address-string doesn't contain a hostname. - * - * returns an hash containing the fields "mailbox", "host" and "personal" - */ -function address_decode($adrstring,$defaulthost) { - $parsestring=trim($adrstring); - $len=strlen($parsestring); - $at_pos=strpos($parsestring,'@'); // find @ - $ka_pos=strpos($parsestring,"("); // find ( - $kz_pos=strpos($parsestring,')'); // find ) - $ha_pos=strpos($parsestring,'<'); // find < - $hz_pos=strpos($parsestring,'>'); // find > - $space_pos=strpos($parsestring,')'); // find ' ' - $email=""; - $mailbox=""; - $host=""; - $personal=""; - if ($space_pos != false) { - if (($ka_pos != false) && ($kz_pos != false)) { - $personal=substr($parsestring,$ka_pos+1,$kz_pos-$ka_pos-1); - $email=trim(substr($parsestring,0,$ka_pos-1)); - } - } else { - $email=$adrstring; - } - if (($ha_pos != false) && ($hz_pos != false)) { - $email=trim(substr($parsestring,$ha_pos+1,$hz_pos-$ha_pos-1)); - $personal=substr($parsestring,0,$ha_pos-1); - } - if ($at_pos != false) { - $mailbox=substr($email,0,strpos($email,'@')); - $host=substr($email,strpos($email,'@')+1); - } else { - $mailbox=$email; - $host=$defaulthost; - } - $personal=trim($personal); - if (substr($personal,0,1) == '"') $personal=substr($personal,1); - if (substr($personal,strlen($personal)-1,1) == '"') - $personal=substr($personal,0,strlen($personal)-1); - $result["mailbox"]=trim($mailbox); - $result["host"]=trim($host); - if ($personal!="") $result["personal"]=$personal; - $complete[]=$result; - return ($complete); -} - -/* - * Read the groupnames from groups.txt, and get additional informations - * of the groups from the newsserver - */ -function groups_read($server,$port) { - global $gl_age,$file_groups,$spooldir,$cache_index; - // is there a cached version, and is it actual enough? - $cachefile=$spooldir.'/groups.dat'; - if((file_exists($cachefile)) && (filemtime($cachefile)+$cache_index>time())) { - // cached file exists and is new enough. so lets read it out. - $file=fopen($cachefile,"r"); - $data=""; - while(!feof($file)) { - $data.=fgets($file,1000); - } - fclose($file); - $newsgroups=unserialize($data); - } else { - $ns=nntp_open($server,$port); - if ($ns == false) return false; - $gf=fopen($file_groups,"r"); - // if we want to mark groups with new articles with colors, wie will later - // need the format of the overview - $overviewformat=thread_overview_read($ns); - while (!feof($gf)) { - $gruppe=new newsgroupType; - $tmp=trim(line_read($gf)); - if(substr($tmp,0,1)==":") { - $gruppe->text=substr($tmp,1); - $newsgroups[]=$gruppe; - } elseif(strlen(trim($tmp))>0) { - // is there a description in groups.txt? - $pos=strpos($tmp," "); - if ($pos != false) { - // yes. - $gruppe->name=substr($tmp,0,$pos); - $desc=substr($tmp,$pos); - } else { - // no, get it from the newsserver. - $gruppe->name=$tmp; - fputs($ns,"XGTITLE $gruppe->name\r\n"); - $response=line_read($ns); - if (strcmp(substr($response,0,3),"282") == 0) { - $neu=line_read($ns); - do { - $response=$neu; - if ($neu != ".") $neu=line_read($ns); - } while ($neu != "."); - $desc=strrchr($response,"\t"); - if (strcmp($response,".") == 0) { - $desc="-"; - } - } else { - $desc=$response; - } - if (strcmp(substr($response,0,3),"500") == 0) - $desc="-"; - } - if (strcmp($desc,"") == 0) $desc="-"; - $gruppe->description=$desc; - fputs($ns,"GROUP ".$gruppe->name."\r\n"); - $t=explode(" ",line_read($ns)); - $gruppe->count=$t[1]; - // mark group with new articles with colors - if($gl_age) { - fputs($ns,'XOVER '.$t[3]."\r\n"); - $tmp=explode(" ",line_read($ns)); - if($tmp[0]=="224") { - $tmp=line_read($ns); - if($tmp!=".") { - $head=thread_overview_interpret($tmp,$overviewformat,$gruppe->name); - $tmp=line_read($ns); - $gruppe->age=$head->date; - } - } - } - if ((strcmp(trim($gruppe->name),"") != 0) && - (substr($gruppe->name,0,1) != "#")) - $newsgroups[]=$gruppe; - } - } - fclose($gf); - nntp_close($ns); - // write the data to the cachefile - $file=fopen($cachefile,"w"); - fputs($file,serialize($newsgroups)); - fclose($file); - } - return $newsgroups; -} - -/* - * print the group names from an array to the webpage - */ -function groups_show($gruppen) { - global $gl_age; - if ($gruppen == false) return; - global $file_thread,$text_groups; - $c = count($gruppen); - echo '
'; - $acttype="keins"; - for($i = 0 ; $i < $c ; $i++) { - $g = $gruppen[$i]; - if(isset($g->text)) { - if($acttype!="text") { - $acttype="text"; - if($i>0) - echo '
'; - echo '
'; - } - echo $g->text; - } else { - if($acttype!="group") { - $acttype="group"; - if($i>0) - echo '
'; - echo '
'; - } - echo '
'; - echo ''.$g->name."\n"; - if($gl_age) - $datecolor=thread_format_date_color($g->age); - echo '('; - if($datecolor!="") - echo ''.$g->count.''; - else - echo $g->count; - echo ')'; - if($g->description!="-") - echo '
'.$g->description.''; - echo '
'; - } - echo "\n"; - flush(); - } - echo "
\n"; -} - -/* - * gets a list of aviable articles in the group $groupname - */ -/* -function getArticleList(&$ns,$groupname) { - fputs($ns,"LISTGROUP $groupname \r\n"); - $line=line_read($ns); - $line=line_read($ns); - while(strcmp($line,".") != 0) { - $articleList[] = trim($line); - $line=line_read($ns); - } - if (!isset($articleList)) $articleList="-"; - return $articleList; -} -*/ - -/* - * Decode quoted-printable or base64 encoded headerlines - * - * $value: The to be decoded line - * - * returns the decoded line - */ -function headerDecode($value) { - if (eregi('=\?.*\?.\?.*\?=',$value)) { // is there anything encoded? - if (eregi('=\?.*\?Q\?.*\?=',$value)) { // quoted-printable decoding - - $charset=eregi_replace('(.*)=\?(.*)\?Q\?(.*)\?=(.*)','\2',$value); - $result1=eregi_replace('(.*)=\?.*\?Q\?(.*)\?=(.*)','\1',$value); - $result2=eregi_replace('(.*)=\?.*\?Q\?(.*)\?=(.*)','\2',$value); - $result3=eregi_replace('(.*)=\?.*\?Q\?(.*)\?=(.*)','\3',$value); - $result2=str_replace("_"," ",quoted_printable_decode($result2)); - $newvalue=$result1.recode_charset($result2,$charset).$result3; - } - if (eregi('=\?.*\?B\?.*\?=',$value)) { // base64 decoding - $result1=eregi_replace('(.*)=\?.*\?B\?(.*)\?=(.*)','\1',$value); - $result2=eregi_replace('(.*)=\?.*\?B\?(.*)\?=(.*)','\2',$value); - $result3=eregi_replace('(.*)=\?.*\?B\?(.*)\?=(.*)','\3',$value); - $result2=base64_decode($result2); - $newvalue=$result1.$result2.$result3; - } - if (!isset($newvalue)) // nothing of the above, must be an unknown encoding... - $newvalue=$value; - else - $newvalue=headerDecode($newvalue); // maybe there are more encoded - return($newvalue); // parts - } else { // there wasn't anything encoded, return the original string - return($value); - } -} - -/* - * calculates an Unix timestamp out of a Date-Header in an article - * - * $value: Value of the Date: header - * - * returns an Unix timestamp - */ -function getTimestamp($value) { - global $timezone; - $months=array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12); - $value=str_replace(" "," ",$value); - $d=split(" ",$value,6); - if (strcmp(substr($d[0],strlen($d[0])-1,1),",") == 0) { - $date[0]=$d[1]; // day - $date[1]=$d[2]; // month - $date[2]=$d[3]; // year - $date[3]=$d[4]; // hours:minutes:seconds - $gmt=$d[5]; // timezone - } else { - $date[0]=$d[0]; // day - $date[1]=$d[1]; // month - $date[2]=$d[2]; // year - $date[3]=$d[3]; // hours:minutes:seconds - $gmt=$d[4]; // timezone - } - $time=split(":",$date[3]); - // timezone handling - $msgtimezone=0; - if ($gmt[0]=='-') { - $msgtimezone=-substr($gmt,1,2); - $msgminzone=-substr($gmt,3,2); - } else if ($gmt[0]=='+') { - $msgtimezone=+substr($gmt,1,2); - $msgminzone=+substr($gmt,3,2); - } - $time[0]=$time[0]-$msgtimezone+$timezone; - $time[1]=$time[1]-$msgminzone+$minzone; - $timestamp=mktime($time[0],$time[1],$time[2],$months[$date[1]],$date[0],$date[2]); - return $timestamp; -} - -function parse_header($hdr,$number="") { - for ($i=count($hdr)-1; $i>0; $i--) - if (preg_match("/^(\x09|\x20)/",$hdr[$i])) - $hdr[$i-1]=$hdr[$i-1]." ".ltrim($hdr[$i]); - $header = new headerType; - $header->isAnswer=false; - for ($count=0;$countfrom=$fromline[0]["mailbox"]."@".$fromline[0]["host"]; - $header->username=$fromline[0]["mailbox"]; - if (!isset($fromline[0]["personal"])) { - $header->name=""; - } else { - $header->name=$fromline[0]["personal"]; - } - break; - case "message-id:": - $header->id=$value; - break; - case "subject:": - $header->subject=headerDecode($value); - break; - case "newsgroups:": - $header->newsgroups=$value; - break; - case "organization:": - $header->organization=headerDecode($value); - break; - case "content-transfer-encoding:": - $header->content_transfer_encoding=trim(strtolower($value)); - break; - case "content-type:": - $header->content_type=array(); - $subheader=split(";",$value); - $header->content_type[0]=strtolower(trim($subheader[0])); - for ($i=1; $icontent_type_charset=array(strtolower($subvalue)); - break; - case "name": - $header->content_type_name=array($subvalue); - break; - case "boundary": - $header->content_type_boundary=$subvalue; - break; - case "format": - $header->content_type_format=array($subvalue); - } - } - } - break; - case "references:": - $ref=trim($value); - while (strpos($ref,"> <") != false) { - $header->references[]=substr($ref,0,strpos($ref," ")); - $ref=substr($ref,strpos($ref,"> <")+2); - } - $header->references[]=trim($ref); - break; - case "date:": - $header->date=getTimestamp(trim($value)); - break; - case "followup-to:": - $header->followup=trim($value); - break; - case "x-newsreader:": - case "x-mailer:": - case "user-agent:": - $header->user_agent=trim($value); - break; - case "x-face:": // not ready -// echo "

-".base64_decode($value)."-

"; - break; - case "x-no-archive:": - $header->xnoarchive=strtolower(trim($value)); - } - } - if (!isset($header->content_type[0])) - $header->content_type[0]="text/plain"; - if (!isset($header->content_transfer_encoding)) - $header->content_transfer_encoding="8bit"; - if ($number != "") $header->number=$number; - return $header; -} - -/* - * convert the charset of a text - */ -function recode_charset($text,$source=false,$dest=false) { - global $iconv_enable,$www_charset; - if($dest==false) - $dest=$www_charset; - if(($iconv_enable) && ($source!=false)) { - $return=iconv($source, - $dest."//TRANSLIT",$text); - if($return!="") - return $return; - else - return $text; - } else { - return $text; - } -} - -function decode_body($body,$encoding) { - $bodyzeile=""; - switch ($encoding) { - case "base64": - $body=base64_decode($body); - break; - case "quoted-printable": - $body=Quoted_printable_decode($body); - $body=str_replace("=\n","",$body); -// default: -// $body=str_replace("\n..\n","\n.\n",$body); - } - - return $body; -} - -/* - * makes URLs clickable - * - * $text: A text-line probably containing links. - * - * the function returns the text-line with HTML-Links to the links or - * email-adresses. - */ -function html_parse($text) { - global $frame_externallink; - if ((isset($frame_externallink)) && ($frame_externallink != "")) { - $target=' TARGET="'.$frame_externallink.'" '; - } else { - $target=' '; - } - // regular expressions that will be applied to every word in the text - $regexp_replace=array( - 'http://((\.*([-a-z0-9_/~@?=%#;+]|&)+)+)' => - 'http://\1', - '(www\.[-a-z]+\.(de|pl|cz|sk|tk|tv|cc|cx|biz|us|uk|info|int|eu|dk|org|net|at|ch|com))' => - '\1', - 'https://([-a-z0-9_./~@?=%#&;\n]+)' => - 'https://\1', - 'gopher://([-a-z0-9_./~@?=%\n]+)' => - 'gopher://\1', - 'news://([-a-z0-9_./~@?=%\n]+)' => - 'news://\1', - 'ftp://([-a-z0-9_./~@?=%\n]+)' => - 'ftp://\1', - //'([-a-z0-9_./n]+)@([-a-z0-9_.]+)' => - // $_SESSION["loggedin"]!==true ? '(e-Mail)' : - // '\1@\2' - ); - $ntext=""; - // split every line into it's words - $words=explode(" ",$text); - $n=count($words); - for($i=0; $i<$n; $i++) { - $word=$words[$i]; - // test, if we need the slow walk through all the regular expressions - if(eregi('www|\:|@',$word)) { - // apply the regular expressions to the word until a matching - // expression is found - foreach ($regexp_replace as $key => $value) { - $nword=eregi_replace($key,$value,$word); - if($nword!=$word) { - $word=$nword; - break; - } - } - } - // add the spaces between the words - if($i>0) - $ntext.=" "; - $ntext.=$word; - } - return($ntext); -} - - -/* - * read the header of an article in plaintext into an array - * $articleNumber can be the number of an article or its message-id. - */ -function readPlainHeader(&$ns,$group,$articleNumber) { - fputs($ns,"GROUP $group\r\n"); - $line=line_read($ns); - fputs($ns,"HEAD $articleNumber\r\n"); - $line=line_read($ns); - if (substr($line,0,3) != "221") { - echo $text_error["article_not_found"]; - $header=false; - } else { - $line=line_read($ns); - $body=""; - while(strcmp(trim($line),".") != 0) { - $body .= $line."\n"; - $line=line_read($ns); - } - return split("\n",str_replace("\r\n","\n",$body)); - } -} - -/* - * cancel an article on the newsserver - * - * DO NOT USE THIS FUNCTION, IF YOU DON'T KNOW WHAT YOU ARE DOING! - * - * $ns: The handler of the NNTP-Connection - * $group: The group of the article - * $id: the Number of the article inside the group or the message-id - */ -function message_cancel($subject,$from,$newsgroups,$ref,$body,$id) { - global $server,$port,$send_poster_host,$organization,$text_error; - global $file_footer,$www_charset; - flush(); - $ns=nntp_open($server,$port); - if ($ns != false) { - fputs($ns,"POST\r\n"); - $weg=line_read($ns); - fputs($ns,'Subject: '.quoted_printable_encode($subject)."\r\n"); - fputs($ns,'From: '.$from."\r\n"); - fputs($ns,'Newsgroups: '.$newsgroups."\r\n"); - fputs($ns,"Mime-Version: 1.0\r\n"); - fputs($ns,"Content-Type: text/plain; charset=".$www_charset."\r\n"); - fputs($ns,"Content-Transfer-Encoding: 8bit\r\n"); - if ($send_poster_host) - fputs($ns,'X-HTTP-Posting-Host: '.gethostbyaddr(getenv("REMOTE_ADDR"))."\r\n"); - if ($ref!=false) fputs($ns,'References: '.$ref."\r\n"); - if (isset($organization)) - fputs($ns,'Organization: '.quoted_printable_encode($organization)."\r\n"); - fputs($ns,"Control: cancel ".$id."\r\n"); - if ((isset($file_footer)) && ($file_footer!="")) { - $footerfile=fopen($file_footer,"r"); - $body.="\n".fread($footerfile,filesize($file_footer)); - fclose($footerfile); - } - $body=str_replace("\n.\r","\n..\r",$body); - $body=str_replace("\r",'',$body); - $b=split("\n",$body); - $body=""; - for ($i=0; $i") != false ) | (strcmp(substr($b[$i],0,1),">") == 0)) { - $body .= textwrap(stripSlashes($b[$i]),78,"\r\n")."\r\n"; - } else { - $body .= textwrap(stripSlashes($b[$i]),74,"\r\n")."\r\n"; - } - } - fputs($ns,"\r\n".$body."\r\n.\r\n"); - $message=line_read($ns); - nntp_close($ns); - } else { - $message=$text_error["post_failed"]; - } - return $message; -} - -?> \ No newline at end of file diff --git a/newsgroup/post.php b/newsgroup/post.php deleted file mode 100644 index 2ef2075..0000000 --- a/newsgroup/post.php +++ /dev/null @@ -1,315 +0,0 @@ -HTTP Gateway - * Download: http://florian-amrhein.de/newsportal - * - * Copyright (C) 2002-2004 Florian Amrhein - * E-Mail: florian.amrhein@gmx.de - * Web: http://florian-amrhein.de - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -@$newsgroups=$_REQUEST["newsgroups"]; -@$group=$_REQUEST["group"]; -@$type=$_REQUEST["type"]; -@$subject=stripslashes($_REQUEST["subject"]); -@$name=$_REQUEST["name"]; -@$email=$_REQUEST["email"]; -@$body=stripslashes($_REQUEST["body"]); -@$abspeichern=$_REQUEST["abspeichern"]; -@$references=$_REQUEST["references"]; -@$id=$_REQUEST["id"]; -if (!isset($group)) $group=$newsgroups; - -include "config.inc.php"; -include "auth.inc"; - -// Save name and email in cookies -if (($setcookies==true) && (isset($abspeichern)) && ($abspeichern=="ja")) { - setcookie("cookie_name",stripslashes($name),time()+(3600*24*90)); - setcookie("cookie_email",$email,time()+(3600*24*90)); -} -if ((isset($post_server)) && ($post_server!="")) - $server=$post_server; -if ((isset($post_port)) && ($post_port!="")) - $port=$post_port; - - include "head.inc"; - include $file_newsportal; - - -?> - - -

- -

- -

'.$text_post["button_back"].' ' - .$text_post["button_back2"].' '.urlencode($group) ?>

-
$message
"; - } - } else { - echo $text_post["error_readonly"]; - } - } -} - -// A reply of an other article. -if ($type=="reply") { - $message=message_read($id,0,$group); - $head=$message->header; - $body=explode("\n",$message->body[0]); - nntp_close($ns); - if ($head->name != "") { - $bodyzeile=$head->name; - } else { - $bodyzeile=$head->from; - } - $bodyzeile=$text_post["wrote_prefix"].$bodyzeile. - $text_post["wrote_suffix"]."\n\n"; - for ($i=0; $i<=count($body)-1; $i++) { - if((isset($cutsignature)) && ($cutsignature==true) && - ($body[$i]=='-- ')) - break; - if (trim($body[$i])!="") { - if($body[$i][0]=='>') - $bodyzeile.=">".$body[$i]."\n"; - else - $bodyzeile.="> ".$body[$i]."\n"; - } else { - $bodyzeile.="\n"; - } - } - $subject=$head->subject; - if (isset($head->followup) && ($head->followup != "")) { - $newsgroups=$head->followup; - } else { - $newsgroups=$head->newsgroups; - } - splitSubject($subject); - $subject="Re: ".$subject; - // Cut off old parts of a subject - // for example: 'foo (was: bar)' becomes 'foo'. - $subject=eregi_replace('(\(wa[sr]: .*\))$','',$subject); - $show=1; - $references=false; - if (isset($head->references[0])) { - for ($i=0; $i<=count($head->references)-1; $i++) { - $references .= $head->references[$i]." "; - } - } - $references .= $head->id; -} - -if ($type=="retry") { - $show=1; - $bodyzeile=$body; -} - -if ($show==1) { - -if ($testgroup) { - $testnewsgroups=testgroups($newsgroups); -} else { - $testnewsgroups=$newsgroups; -} - -if ($testnewsgroups == "") { - echo $text_post["followup_not_allowed"]; - echo " ".$newsgroups; -} else { - $newsgroups=$testnewsgroups; - - echo '

'.$text_post["group_head"].$newsgroups - .$text_post["group_tail"].'

'; - - if (isset($error)) echo "

$error

"; ?> - -
- -
- - - - - - - -
- '; - } - ?> -
- '; - } - ?> -
-
- -
- - - - -

-
- - - - - - - -" onclick="quoten()"> - - - -"> - - - - -
-
- - - - -
- - - - diff --git a/newsgroup/spool/groups.dat b/newsgroup/spool/groups.dat deleted file mode 100644 index fefb157..0000000 --- a/newsgroup/spool/groups.dat +++ /dev/null @@ -1 +0,0 @@ -a:4:{i:0;O:13:"newsgroupType":4:{s:4:"name";N;s:11:"description";N;s:5:"count";N;s:4:"text";s:21:"Computer Science Club";}i:1;O:13:"newsgroupType":5:{s:4:"name";s:6:"uw.csc";s:11:"description";s:22:" Computer Science Club";s:5:"count";s:3:"115";s:4:"text";N;s:3:"age";i:1181337436;}i:2;O:13:"newsgroupType":4:{s:4:"name";s:15:"uw.csc.hardware";s:11:"description";s:16:" No description.";s:5:"count";s:1:"0";s:4:"text";N;}i:3;O:13:"newsgroupType":5:{s:4:"name";s:15:"uw.csc.software";s:11:"description";s:16:" No description.";s:5:"count";s:1:"3";s:4:"text";N;s:3:"age";i:1180792889;}} \ No newline at end of file diff --git a/newsgroup/spool/uw.csc-1-50.html b/newsgroup/spool/uw.csc-1-50.html deleted file mode 100644 index c6d0be8..0000000 --- a/newsgroup/spool/uw.csc-1-50.html +++ /dev/null @@ -1 +0,0 @@ -19.06. o Tuesday, July 17th 2007: CSC Talk with very speciaGaelan D'costa19.06. o Friday, July 6, 2007: CSC Talk with very special gGaelan D'costa19.06. o June 22, 2007 - CSC Talk: Email encryption and theGaelan D'costa12.06. * systems projects updateMichael Spang13.06. +* Re: systems projects updateDave Vandervies13.06. |`- Re: systems projects updateRoss Ridge13.06. +* Re: systems projects updateRoss Ridge16.06. |`* Re: systems projects updateRoss Ridge17.06. | `* Re: systems projects updateMichael Spang17.06. |  `* Re: systems projects updateRoss Ridge17.06. |   `* Re: systems projects updateMichael Spang17.06. |    +- Re: systems projects updateMichael Spang17.06. |    `* Re: systems projects updateRoss Ridge17.06. |     `* Re: systems projects updateKyle Larose18.06. |      `- Re: systems projects updateRoss Ridge13.06. `- Re: systems projects updateColin Bell [UW CS241 S07 Tutor]14.06. * Major Talks for Spring 2007 - Richard Stallman andGaelan D'costa14.06. +* Re: Major Talks for Spring 2007 - Richard Stallman andKyle Spaans14.06. |`- Re: Major Talks for Spring 2007 - Richard Stallman andMichael Ellis15.06. `* Re: Major Talks for Spring 2007 - Richard Stallman andKyle Larose15.06.  `* Re: Major Talks for Spring 2007 - Richard Stallman andRoss Ridge15.06.   `- Re: Major Talks for Spring 2007 - Richard Stallman andKyle Larose14.06. o NeXT Stuff for saleChris Reuter14.06. o Distinguished Lecture Series - Dr. Vinton G. Cerf;Gaelan D'costa13.06. o Employer Info Session: GoogleSarah Uppal12.06. o June 18th 2007 - Talk by Peter MacdonaldGaelan D'costa04.06. * UNIX101 creation: June 9, 2007 @ 1:00pmColin Bell [UW CS241 S07 Tutor]04.06. +* Re: UNIX101 creation: June 9, 2007 @ 1:00pmMichael Spang04.06. |`* Re: UNIX101 creation: June 9, 2007 @ 1:00pmMichael Spang04.06. | `* Re: UNIX101 creation: June 9, 2007 @ 1:00pmMike Patterson04.06. |  `- Re: UNIX101 creation: June 9, 2007 @ 1:00pmMichael Spang12.06. `- Re: UNIX101 creation: June 9, 2007 @ 1:00pmColin Bell [UW CS241 S07 Tutor]12.06. o Terry Talk rescheduledGaelan D'costa08.06. o Migrating mail to ~/.maildirGaelan D'Costa07.06. o Upcoming Talk - Michael TerryGaelan D'Costa07.06. o Employer Info Session: Lime WireSarah Uppal22.02. * possible UW meeting for MSc in computer games desiPaul Kates04.06. `- Tuesday, 1:30: Using Second Life for Higher EducatPaul Kates04.06. o New course: Computer Security and PrivacyIan Goldberg31.05. o May 31, 2007 Meeting ReplacementErik Louie30.05. o Re: Employer Info Session: Microsoft - CancelledSarah Uppal30.05. o Employer Info Session: NeoEdge NetworksSarah Uppal30.05. o Employer Info Session: MicrosoftSarah Uppal30.05. o Employer Info Session: Amazon.comSarah Uppal30.05. o Employer Info Session: Safe SoftwareSarah Uppal30.05. o Employer Info Session: National InstrumentsSarah Uppal30.05. o Employer Info Session: Cigital Inc.Sarah Uppal27.05. * Meeting Minutes for 05-17-07Secretary29.05. `- Re: Meeting Minutes for 05-17-07Michael Spang27.05. * Meeting Minutes for 05-24-07Erik Louie \ No newline at end of file diff --git a/newsgroup/spool/uw.csc-data.dat b/newsgroup/spool/uw.csc-data.dat deleted file mode 100644 index b8c58ca..0000000 --- a/newsgroup/spool/uw.csc-data.dat +++ /dev/null @@ -1 +0,0 @@ -a:139:{s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:75:"Tuesday, July 17th 2007: CSC Talk with very special guest Bjarne Stroustrup";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1182286368;s:2:"id";s:35:"";s:6:"number";s:5:"10971";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1182286368;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:74:"Friday, July 6, 2007: CSC Talk with very special guest Richard M. Stallman";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1182285724;s:2:"id";s:35:"";s:6:"number";s:5:"10970";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1182285724;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:68:"June 22, 2007 - CSC Talk: Email encryption and the GNU Privacy Guard";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1182284806;s:2:"id";s:35:"";s:6:"number";s:5:"10969";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1182284806;}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1182084508;s:2:"id";s:35:"";s:10:"references";a:4:{i:0;s:52:"";i:1;s:35:"";i:2;s:35:"";i:3;s:52:"";}s:6:"number";s:5:"10963";s:8:"isAnswer";b:1;s:10:"threadsize";i:6;s:11:"date_thread";i:1182171593;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:52:"";}}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1182063600;s:2:"id";s:52:"";s:10:"references";a:3:{i:0;s:52:"";i:1;s:35:"";i:2;s:35:"";}s:6:"number";s:5:"10962";s:8:"isAnswer";b:1;s:10:"threadsize";i:7;s:11:"date_thread";i:1182171593;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:26:"rridge@csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1181995565;s:2:"id";s:35:"";s:10:"references";a:2:{i:0;s:52:"";i:1;s:35:"";}s:6:"number";s:5:"10961";s:8:"isAnswer";b:1;s:10:"threadsize";i:8;s:11:"date_thread";i:1182171593;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:52:"";}}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1181749092;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:52:"";}s:6:"number";s:5:"10950";s:8:"isAnswer";b:1;s:10:"threadsize";i:9;s:11:"date_thread";i:1182171593;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1182115800;s:2:"id";s:52:"";s:10:"references";a:5:{i:0;s:52:"";i:1;s:35:"";i:2;s:35:"";i:3;s:52:"";i:4;s:35:"";}s:6:"number";s:5:"10964";s:8:"isAnswer";b:1;s:10:"threadsize";i:5;s:11:"date_thread";i:1182171593;s:13:"bestreference";s:35:"";s:7:"answers";a:2:{i:0;s:52:"";i:1;s:35:"";}}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1182131671;s:2:"id";s:35:"";s:10:"references";a:4:{i:0;s:52:"";i:1;s:52:"";i:2;s:35:"";i:3;s:52:"";}s:6:"number";s:5:"10966";s:8:"isAnswer";b:1;s:10:"threadsize";i:3;s:11:"date_thread";i:1182171593;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:65:"";}}s:52:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:23:"systems projects update";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1181700644;s:2:"id";s:52:"";s:6:"number";s:5:"10946";s:8:"isAnswer";b:0;s:10:"threadsize";i:13;s:11:"date_thread";i:1182171593;s:7:"answers";a:3:{i:0;s:35:"";i:1;s:35:"";i:2;s:35:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1182171593;s:2:"id";s:35:"";s:10:"references";a:4:{i:0;s:52:"";i:1;s:52:"";i:2;s:35:"";i:3;s:65:"";}s:6:"number";s:5:"10968";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1182171593;s:13:"bestreference";s:65:"";}s:65:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1182133874;s:2:"id";s:65:"";s:10:"references";a:5:{i:0;s:52:"";i:1;s:52:"";i:2;s:35:"";i:3;s:52:"";i:4;s:35:"";}s:6:"number";s:5:"10967";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1182171593;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:52:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1182116432;s:2:"id";s:52:"";s:10:"references";a:6:{i:0;s:52:"";i:1;s:35:"";i:2;s:35:"";i:3;s:52:"";i:4;s:35:"";i:5;s:52:"";}s:6:"number";s:5:"10965";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1182116432;s:13:"bestreference";s:52:"";}s:35:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:68:"Major Talks for Spring 2007 - Richard Stallman and Bjarne Stroustrup";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1181797263;s:2:"id";s:35:"";s:6:"number";s:5:"10954";s:8:"isAnswer";b:0;s:10:"threadsize";i:6;s:11:"date_thread";i:1181965682;s:7:"answers";a:2:{i:0;s:59:"<20070614184523.08d6f811.kspaans@student.math.uwaterloo.ca>";i:1;s:64:"";}}s:64:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:68:"Major Talks for Spring 2007 - Richard Stallman and Bjarne Stroustrup";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1181916439;s:2:"id";s:64:"";s:10:"references";a:1:{i:0;s:35:"";}s:6:"number";s:5:"10958";s:8:"isAnswer";b:1;s:10:"threadsize";i:3;s:11:"date_thread";i:1181965682;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:68:"Major Talks for Spring 2007 - Richard Stallman and Bjarne Stroustrup";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1181922611;s:2:"id";s:35:"";s:10:"references";a:2:{i:0;s:35:"";i:1;s:64:"";}s:6:"number";s:5:"10959";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1181965682;s:13:"bestreference";s:64:"";s:7:"answers";a:1:{i:0;s:65:"";}}s:65:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:68:"Major Talks for Spring 2007 - Richard Stallman and Bjarne Stroustrup";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1181965682;s:2:"id";s:65:"";s:10:"references";a:3:{i:0;s:35:"";i:1;s:64:"";i:2;s:35:"";}s:6:"number";s:5:"10960";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1181965682;s:13:"bestreference";s:35:"";}s:55:"<1181866978.387635.119580@z28g2000prd.googlegroups.com>";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:68:"Major Talks for Spring 2007 - Richard Stallman and Bjarne Stroustrup";s:4:"from";s:21:"zeppelin188@gmail.com";s:8:"username";s:11:"zeppelin188";s:4:"name";s:13:"Michael Ellis";s:4:"date";i:1181863378;s:2:"id";s:55:"<1181866978.387635.119580@z28g2000prd.googlegroups.com>";s:10:"references";a:4:{i:0;s:35:"";i:1;s:0:"";i:2;s:0:"";i:3;s:59:"<20070614184523.08d6f811.kspaans@student.math.uwaterloo.ca>";}s:6:"number";s:5:"10957";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1181863378;s:13:"bestreference";s:59:"<20070614184523.08d6f811.kspaans@student.math.uwaterloo.ca>";}s:59:"<20070614184523.08d6f811.kspaans@student.math.uwaterloo.ca>";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:68:"Major Talks for Spring 2007 - Richard Stallman and Bjarne Stroustrup";s:4:"from";s:33:"kspaans@student.math.uwaterloo.ca";s:8:"username";s:7:"kspaans";s:4:"name";s:11:"Kyle Spaans";s:4:"date";i:1181857523;s:2:"id";s:59:"<20070614184523.08d6f811.kspaans@student.math.uwaterloo.ca>";s:10:"references";a:1:{i:0;s:35:"";}s:6:"number";s:5:"10956";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1181863378;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:55:"<1181866978.387635.119580@z28g2000prd.googlegroups.com>";}}s:32:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:19:"NeXT Stuff for sale";s:4:"from";s:28:"cgreuter@csclub.uwaterloo.ca";s:8:"username";s:8:"cgreuter";s:4:"name";s:12:"Chris Reuter";s:4:"date";i:1181854189;s:2:"id";s:32:"";s:6:"number";s:5:"10955";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1181854189;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:64:"Distinguished Lecture Series - Dr. Vinton G. Cerf; June 21, 2007";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1181796650;s:2:"id";s:35:"";s:6:"number";s:5:"10952";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1181796650;}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:29:"cs241@student.cs.uwaterloo.ca";s:8:"username";s:5:"cs241";s:4:"name";s:31:"Colin Bell [UW CS241 S07 Tutor]";s:4:"date";i:1181755423;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:52:"";}s:6:"number";s:5:"10951";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1181755423;s:13:"bestreference";s:52:"";}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:28:"dj3vande@csclub.uwaterloo.ca";s:8:"username";s:8:"dj3vande";s:4:"name";s:15:"Dave Vandervies";s:4:"date";i:1181746905;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:52:"";}s:6:"number";s:5:"10948";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1181748689;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:23:"systems projects update";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1181748689;s:2:"id";s:35:"";s:10:"references";a:2:{i:0;s:52:"";i:1;s:35:"";}s:6:"number";s:5:"10949";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1181748689;s:13:"bestreference";s:35:"";}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:29:"Employer Info Session: Google";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1181736483;s:2:"id";s:35:"";s:6:"number";s:5:"10947";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1181736483;}s:59:"<9B63328F-A409-4314-9195-BAF04E9929C9%gdcosta@uwaterloo.ca>";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:40:"June 18th 2007 - Talk by Peter Macdonald";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1181690001;s:2:"id";s:59:"<9B63328F-A409-4314-9195-BAF04E9929C9%gdcosta@uwaterloo.ca>";s:6:"number";s:5:"10945";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1181690001;}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:39:"UNIX101 creation: June 9, 2007 @ 1:00pm";s:4:"from";s:29:"cs241@student.cs.uwaterloo.ca";s:8:"username";s:5:"cs241";s:4:"name";s:31:"Colin Bell [UW CS241 S07 Tutor]";s:4:"date";i:1181661355;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:35:"";}s:6:"number";s:5:"10944";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1181661355;s:13:"bestreference";s:35:"";}s:35:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:39:"UNIX101 creation: June 9, 2007 @ 1:00pm";s:4:"from";s:29:"cs241@student.cs.uwaterloo.ca";s:8:"username";s:5:"cs241";s:4:"name";s:31:"Colin Bell [UW CS241 S07 Tutor]";s:4:"date";i:1180963656;s:2:"id";s:35:"";s:6:"number";s:5:"10934";s:8:"isAnswer";b:0;s:10:"threadsize";i:6;s:11:"date_thread";i:1181661355;s:7:"answers";a:2:{i:0;s:52:"";i:1;s:35:"";}}s:59:"<8B3399A9-A7E1-4F86-9286-FF39FA82FA00%gdcosta@uwaterloo.ca>";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:22:"Terry Talk rescheduled";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1181625048;s:2:"id";s:59:"<8B3399A9-A7E1-4F86-9286-FF39FA82FA00%gdcosta@uwaterloo.ca>";s:6:"number";s:5:"10943";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1181625048;}s:64:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:28:"Migrating mail to ~/.maildir";s:4:"from";s:27:"gdcosta@csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1181337436;s:2:"id";s:64:"";s:6:"number";s:5:"10942";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1181337436;}s:74:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:29:"Upcoming Talk - Michael Terry";s:4:"from";s:47:"gdcosta@artificial-flavours.csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1181246343;s:2:"id";s:74:"";s:6:"number";s:5:"10941";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1181246343;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:32:"Employer Info Session: Lime Wire";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1181219676;s:2:"id";s:35:"";s:6:"number";s:5:"10940";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1181219676;}s:59:"";O:8:"stdClass":13:{s:7:"isReply";b:0;s:7:"subject";s:53:"Tuesday, 1:30: Using Second Life for Higher Education";s:4:"from";s:24:"pkates@math.uwaterloo.ca";s:8:"username";s:6:"pkates";s:4:"name";s:10:"Paul Kates";s:4:"date";i:1180988873;s:2:"id";s:59:"";s:10:"references";a:2:{i:0;s:65:"";i:1;s:59:"";}s:6:"number";s:5:"10939";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1180988873;s:13:"bestreference";s:59:"";}s:59:"";O:8:"stdClass":13:{s:7:"isReply";b:0;s:7:"subject";s:63:"possible UW meeting for MSc in computer games design (Algoma U)";s:4:"from";s:24:"pkates@math.uwaterloo.ca";s:8:"username";s:6:"pkates";s:4:"name";s:10:"Paul Kates";s:4:"date";i:1172169751;s:2:"id";s:59:"";s:10:"references";a:1:{i:0;s:65:"";}s:6:"number";s:5:"10832";s:8:"isAnswer";b:0;s:10:"threadsize";i:2;s:11:"date_thread";i:1180988873;s:7:"answers";a:1:{i:0;s:59:"";}}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:39:"UNIX101 creation: June 9, 2007 @ 1:00pm";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1180966385;s:2:"id";s:52:"";s:10:"references";a:1:{i:0;s:35:"";}s:6:"number";s:5:"10935";s:8:"isAnswer";b:1;s:10:"threadsize";i:4;s:11:"date_thread";i:1180976392;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:52:"";}}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:39:"UNIX101 creation: June 9, 2007 @ 1:00pm";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1180972199;s:2:"id";s:52:"";s:10:"references";a:2:{i:0;s:35:"";i:1;s:52:"";}s:6:"number";s:5:"10936";s:8:"isAnswer";b:1;s:10:"threadsize";i:3;s:11:"date_thread";i:1180976392;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:46:"";}}s:46:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:39:"UNIX101 creation: June 9, 2007 @ 1:00pm";s:4:"from";s:24:"mpatters@cs.uwaterloo.ca";s:8:"username";s:8:"mpatters";s:4:"name";s:14:"Mike Patterson";s:4:"date";i:1180974401;s:2:"id";s:46:"";s:10:"references";a:3:{i:0;s:35:"";i:1;s:52:"";i:2;s:52:"";}s:6:"number";s:5:"10937";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1180976392;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:52:"";}}s:52:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:39:"UNIX101 creation: June 9, 2007 @ 1:00pm";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1180976392;s:2:"id";s:52:"";s:10:"references";a:4:{i:0;s:35:"";i:1;s:52:"";i:2;s:52:"";i:3;s:46:"";}s:6:"number";s:5:"10938";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1180976392;s:13:"bestreference";s:46:"";}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:41:"New course: Computer Security and Privacy";s:4:"from";s:20:"iang@cs.uwaterloo.ca";s:8:"username";s:4:"iang";s:4:"name";s:12:"Ian Goldberg";s:4:"date";i:1180956937;s:2:"id";s:35:"";s:6:"number";s:5:"10933";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180956937;}s:52:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:32:"May 31, 2007 Meeting Replacement";s:4:"from";s:29:"secretary@csclub.uwaterloo.ca";s:8:"username";s:9:"secretary";s:4:"name";s:10:"Erik Louie";s:4:"date";i:1180654740;s:2:"id";s:52:"";s:6:"number";s:5:"10932";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180654740;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:1;s:7:"subject";s:44:"Employer Info Session: Microsoft - Cancelled";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1180541355;s:2:"id";s:35:"";s:6:"number";s:5:"10931";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180541355;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:39:"Employer Info Session: NeoEdge Networks";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1180535435;s:2:"id";s:35:"";s:6:"number";s:5:"10930";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180535435;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:32:"Employer Info Session: Microsoft";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1180535335;s:2:"id";s:35:"";s:6:"number";s:5:"10929";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180535335;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:33:"Employer Info Session: Amazon.com";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1180535173;s:2:"id";s:35:"";s:6:"number";s:5:"10928";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180535173;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:36:"Employer Info Session: Safe Software";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1180535072;s:2:"id";s:35:"";s:6:"number";s:5:"10927";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180535072;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:43:"Employer Info Session: National Instruments";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1180534951;s:2:"id";s:35:"";s:6:"number";s:5:"10926";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180534951;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:35:"Employer Info Session: Cigital Inc.";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1180534693;s:2:"id";s:35:"";s:6:"number";s:5:"10925";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180534693;}s:52:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:28:"Meeting Minutes for 05-17-07";s:4:"from";s:29:"secretary@csclub.uwaterloo.ca";s:8:"username";s:9:"secretary";s:4:"name";s:9:"Secretary";s:4:"date";i:1180293810;s:2:"id";s:52:"";s:6:"number";s:5:"10916";s:8:"isAnswer";b:0;s:10:"threadsize";i:2;s:11:"date_thread";i:1180495511;s:7:"answers";a:1:{i:0;s:52:"";}}s:52:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:28:"Meeting Minutes for 05-17-07";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1180495511;s:2:"id";s:52:"";s:10:"references";a:1:{i:0;s:52:"";}s:6:"number";s:5:"10924";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1180495511;s:13:"bestreference";s:52:"";}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:28:"Meeting Minutes for 05-24-07";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1180363737;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:52:"";}s:6:"number";s:5:"10919";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1180372833;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:52:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:28:"Meeting Minutes for 05-24-07";s:4:"from";s:29:"secretary@csclub.uwaterloo.ca";s:8:"username";s:9:"secretary";s:4:"name";s:10:"Erik Louie";s:4:"date";i:1180295073;s:2:"id";s:52:"";s:6:"number";s:5:"10917";s:8:"isAnswer";b:0;s:10:"threadsize";i:4;s:11:"date_thread";i:1180372833;s:7:"answers";a:2:{i:0;s:35:"";i:1;s:61:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:28:"Meeting Minutes for 05-24-07";s:4:"from";s:28:"lsorense@csclub.uwaterloo.ca";s:8:"username";s:8:"lsorense";s:4:"name";s:16:"Lennart Sorensen";s:4:"date";i:1180372833;s:2:"id";s:35:"";s:10:"references";a:2:{i:0;s:52:"";i:1;s:35:"";}s:6:"number";s:5:"10923";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1180372833;s:13:"bestreference";s:35:"";}s:52:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:11:"new machine";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1179711859;s:2:"id";s:52:"";s:6:"number";s:5:"10891";s:8:"isAnswer";b:0;s:10:"threadsize";i:10;s:11:"date_thread";i:1180371644;s:7:"answers";a:2:{i:0;s:52:"";i:1;s:52:"";}}s:52:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:11:"new machine";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1180371644;s:2:"id";s:52:"";s:10:"references";a:1:{i:0;s:52:"";}s:6:"number";s:5:"10922";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1180371644;s:13:"bestreference";s:52:"";}s:61:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:28:"Meeting Minutes for 05-24-07";s:4:"from";s:34:"dbelange@student.math.uwaterloo.ca";s:8:"username";s:8:"dbelange";s:4:"name";s:14:"David Belanger";s:4:"date";i:1180370183;s:2:"id";s:61:"";s:10:"references";a:1:{i:0;s:52:"";}s:6:"number";s:5:"10921";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1180370183;s:13:"bestreference";s:52:"";}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:3:"trn";s:4:"from";s:38:"dj3vande@cpu08.student.cs.uwaterloo.ca";s:8:"username";s:8:"dj3vande";s:4:"name";s:15:"Dave Vandervies";s:4:"date";i:1180364279;s:2:"id";s:35:"";s:6:"number";s:5:"10920";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1180364279;}s:63:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:8:"RMS talk";s:4:"from";s:26:"hkarau@csclub.uwaterloo.ca";s:8:"username";s:6:"hkarau";s:4:"name";s:12:"Holden Karau";s:4:"date";i:1180038942;s:2:"id";s:63:"";s:10:"references";a:2:{i:0;s:63:"";i:1;s:35:"";}s:6:"number";s:5:"10913";s:8:"isAnswer";b:1;s:10:"threadsize";i:4;s:11:"date_thread";i:1180313628;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:54:"<1180098617.965641.39280@p47g2000hsd.googlegroups.com>";}}s:63:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:8:"RMS talk";s:4:"from";s:26:"hkarau@csclub.uwaterloo.ca";s:8:"username";s:6:"hkarau";s:4:"name";s:12:"Holden Karau";s:4:"date";i:1180036602;s:2:"id";s:63:"";s:6:"number";s:5:"10911";s:8:"isAnswer";b:0;s:10:"threadsize";i:6;s:11:"date_thread";i:1180313628;s:7:"answers";a:1:{i:0;s:35:"";}}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:8:"RMS talk";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1180037435;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:63:"";}s:6:"number";s:5:"10912";s:8:"isAnswer";b:1;s:10:"threadsize";i:5;s:11:"date_thread";i:1180313628;s:13:"bestreference";s:63:"";s:7:"answers";a:1:{i:0;s:63:"";}}s:64:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:8:"RMS talk";s:4:"from";s:27:"gdcosta@csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1180105752;s:2:"id";s:64:"";s:10:"references";a:8:{i:0;s:63:"";i:1;s:0:"";i:2;s:0:"";i:3;s:35:"";i:4;s:0:"";i:5;s:0:"";i:6;s:63:"";i:7;s:54:"<1180098617.965641.39280@p47g2000hsd.googlegroups.com>";}s:6:"number";s:5:"10915";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1180313628;s:13:"bestreference";s:54:"<1180098617.965641.39280@p47g2000hsd.googlegroups.com>";s:7:"answers";a:1:{i:0;s:54:"<1180317228.060989.90960@k79g2000hse.googlegroups.com>";}}s:54:"<1180317228.060989.90960@k79g2000hse.googlegroups.com>";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:8:"RMS talk";s:4:"from";s:21:"zeppelin188@gmail.com";s:8:"username";s:11:"zeppelin188";s:4:"name";s:13:"Michael Ellis";s:4:"date";i:1180313628;s:2:"id";s:54:"<1180317228.060989.90960@k79g2000hse.googlegroups.com>";s:10:"references";a:13:{i:0;s:63:"";i:1;s:0:"";i:2;s:0:"";i:3;s:35:"";i:4;s:0:"";i:5;s:0:"";i:6;s:63:"";i:7;s:0:"";i:8;s:0:"";i:9;s:54:"<1180098617.965641.39280@p47g2000hsd.googlegroups.com>";i:10;s:0:"";i:11;s:0:"";i:12;s:64:"";}s:6:"number";s:5:"10918";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1180313628;s:13:"bestreference";s:64:"";}s:54:"<1180098617.965641.39280@p47g2000hsd.googlegroups.com>";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:8:"RMS talk";s:4:"from";s:21:"zeppelin188@gmail.com";s:8:"username";s:11:"zeppelin188";s:4:"name";s:13:"Michael Ellis";s:4:"date";i:1180095018;s:2:"id";s:54:"<1180098617.965641.39280@p47g2000hsd.googlegroups.com>";s:10:"references";a:7:{i:0;s:63:"";i:1;s:0:"";i:2;s:0:"";i:3;s:35:"";i:4;s:0:"";i:5;s:0:"";i:6;s:63:"";}s:6:"number";s:5:"10914";s:8:"isAnswer";b:1;s:10:"threadsize";i:3;s:11:"date_thread";i:1180313628;s:13:"bestreference";s:63:"";s:7:"answers";a:1:{i:0;s:64:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:12:"machine list";s:4:"from";s:26:"dfevans@bcr10.uwaterloo.ca";s:8:"username";s:7:"dfevans";s:4:"name";s:11:"David Evans";s:4:"date";i:1179957622;s:2:"id";s:35:"";s:10:"references";a:4:{i:0;s:52:"";i:1;s:64:"";i:2;s:46:"";i:3;s:35:"";}s:6:"number";s:5:"10910";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179957622;s:13:"bestreference";s:35:"";}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:12:"machine list";s:4:"from";s:28:"dkeenan@tiercel.uwaterloo.ca";s:8:"username";s:7:"dkeenan";s:4:"name";s:11:"Dawn Keenan";s:4:"date";i:1179919274;s:2:"id";s:35:"";s:10:"references";a:4:{i:0;s:52:"";i:1;s:35:"";i:2;s:64:"";i:3;s:46:"";}s:6:"number";s:5:"10906";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1179957622;s:13:"bestreference";s:46:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:46:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:12:"machine list";s:4:"from";s:24:"mpatters@cs.uwaterloo.ca";s:8:"username";s:8:"mpatters";s:4:"name";s:14:"Mike Patterson";s:4:"date";i:1179839952;s:2:"id";s:46:"";s:10:"references";a:4:{i:0;s:52:"";i:1;s:52:"";i:2;s:35:"";i:3;s:64:"";}s:6:"number";s:5:"10901";s:8:"isAnswer";b:1;s:10:"threadsize";i:5;s:11:"date_thread";i:1179957622;s:13:"bestreference";s:64:"";s:7:"answers";a:2:{i:0;s:52:"";i:1;s:35:"";}}s:64:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:12:"machine list";s:4:"from";s:27:"gdcosta@csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1179755961;s:2:"id";s:64:"";s:10:"references";a:3:{i:0;s:52:"";i:1;s:52:"";i:2;s:35:"";}s:6:"number";s:5:"10894";s:8:"isAnswer";b:1;s:10:"threadsize";i:6;s:11:"date_thread";i:1179957622;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:46:"";}}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:12:"machine list";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1179753533;s:2:"id";s:35:"";s:10:"references";a:2:{i:0;s:52:"";i:1;s:52:"";}s:6:"number";s:5:"10893";s:8:"isAnswer";b:1;s:10:"threadsize";i:7;s:11:"date_thread";i:1179957622;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:64:"";}}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:0;s:7:"subject";s:12:"machine list";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1179715065;s:2:"id";s:52:"";s:10:"references";a:1:{i:0;s:52:"";}s:6:"number";s:5:"10892";s:8:"isAnswer";b:1;s:10:"threadsize";i:8;s:11:"date_thread";i:1179957622;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:20:"UNIX 101 Development";s:4:"from";s:29:"cs241@student.cs.uwaterloo.ca";s:8:"username";s:5:"cs241";s:4:"name";s:31:"Colin Bell [UW CS241 S07 Tutor]";s:4:"date";i:1179955165;s:2:"id";s:35:"";s:10:"references";a:2:{i:0;s:35:"";i:1;s:64:"";}s:6:"number";s:5:"10909";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179955165;s:13:"bestreference";s:64:"";}s:35:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:20:"UNIX 101 Development";s:4:"from";s:29:"cs241@student.cs.uwaterloo.ca";s:8:"username";s:5:"cs241";s:4:"name";s:31:"Colin Bell [UW CS241 S07 Tutor]";s:4:"date";i:1179953874;s:2:"id";s:35:"";s:6:"number";s:5:"10907";s:8:"isAnswer";b:0;s:10:"threadsize";i:3;s:11:"date_thread";i:1179955165;s:7:"answers";a:1:{i:0;s:64:"";}}s:64:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:20:"UNIX 101 Development";s:4:"from";s:28:"dtbartle@csclub.uwaterloo.ca";s:8:"username";s:8:"dtbartle";s:4:"name";s:13:"David Bartley";s:4:"date";i:1179954240;s:2:"id";s:64:"";s:10:"references";a:1:{i:0;s:35:"";}s:6:"number";s:5:"10908";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1179955165;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:31:"<46537470.7070200@uwaterloo.ca>";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:18:"Spring 2007 Budget";s:4:"from";s:21:"dtbartle@uwaterloo.ca";s:8:"username";s:8:"dtbartle";s:4:"name";s:13:"David Bartley";s:4:"date";i:1179870816;s:2:"id";s:31:"<46537470.7070200@uwaterloo.ca>";s:10:"references";a:1:{i:0;s:59:"<20070522173526.5dd8955e.kspaans@student.math.uwaterloo.ca>";}s:6:"number";s:5:"10905";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179870816;s:13:"bestreference";s:59:"<20070522173526.5dd8955e.kspaans@student.math.uwaterloo.ca>";}s:59:"<20070522173526.5dd8955e.kspaans@student.math.uwaterloo.ca>";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:18:"Spring 2007 Budget";s:4:"from";s:33:"kspaans@student.math.uwaterloo.ca";s:8:"username";s:7:"kspaans";s:4:"name";s:11:"Kyle Spaans";s:4:"date";i:1179866126;s:2:"id";s:59:"<20070522173526.5dd8955e.kspaans@student.math.uwaterloo.ca>";s:6:"number";s:5:"10903";s:8:"isAnswer";b:0;s:10:"threadsize";i:2;s:11:"date_thread";i:1179870816;s:7:"answers";a:1:{i:0;s:31:"<46537470.7070200@uwaterloo.ca>";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:12:"machine list";s:4:"from";s:26:"dfevans@bcr10.uwaterloo.ca";s:8:"username";s:7:"dfevans";s:4:"name";s:11:"David Evans";s:4:"date";i:1179867506;s:2:"id";s:35:"";s:10:"references";a:4:{i:0;s:52:"";i:1;s:64:"";i:2;s:46:"";i:3;s:52:"";}s:6:"number";s:5:"10904";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179867506;s:13:"bestreference";s:52:"";}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:12:"machine list";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1179850843;s:2:"id";s:52:"";s:10:"references";a:5:{i:0;s:52:"";i:1;s:52:"";i:2;s:35:"";i:3;s:64:"";i:4;s:46:"";}s:6:"number";s:5:"10902";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1179867506;s:13:"bestreference";s:46:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Removing Linux";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1179694950;s:2:"id";s:52:"";s:10:"references";a:1:{i:0;s:34:"";}s:6:"number";s:5:"10889";s:8:"isAnswer";b:1;s:10:"threadsize";i:6;s:11:"date_thread";i:1179831395;s:13:"bestreference";s:34:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Removing Linux";s:4:"from";s:21:"l2waldma@uwaterloo.ca";s:8:"username";s:8:"l2waldma";s:4:"name";s:12:"Lyle Waldman";s:4:"date";i:1179697723;s:2:"id";s:35:"";s:10:"references";a:2:{i:0;s:34:"";i:1;s:52:"";}s:6:"number";s:5:"10890";s:8:"isAnswer";b:1;s:10:"threadsize";i:5;s:11:"date_thread";i:1179831395;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:32:"";}}s:32:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Removing Linux";s:4:"from";s:28:"cgreuter@csclub.uwaterloo.ca";s:8:"username";s:8:"cgreuter";s:4:"name";s:12:"Chris Reuter";s:4:"date";i:1179770406;s:2:"id";s:32:"";s:10:"references";a:3:{i:0;s:34:"";i:1;s:52:"";i:2;s:35:"";}s:6:"number";s:5:"10895";s:8:"isAnswer";b:1;s:10:"threadsize";i:4;s:11:"date_thread";i:1179831395;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:35:"";}}s:34:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:14:"Removing Linux";s:4:"from";s:21:"l2waldma@uwaterloo.ca";s:8:"username";s:8:"l2waldma";s:4:"name";s:12:"Lyle Waldman";s:4:"date";i:1179677582;s:2:"id";s:34:"";s:6:"number";s:5:"10888";s:8:"isAnswer";b:0;s:10:"threadsize";i:7;s:11:"date_thread";i:1179831395;s:7:"answers";a:1:{i:0;s:52:"";}}s:55:"<1179834994.913203.143290@x35g2000prf.googlegroups.com>";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Removing Linux";s:4:"from";s:21:"zeppelin188@gmail.com";s:8:"username";s:11:"zeppelin188";s:4:"name";s:13:"Michael Ellis";s:4:"date";i:1179831395;s:2:"id";s:55:"<1179834994.913203.143290@x35g2000prf.googlegroups.com>";s:10:"references";a:13:{i:0;s:34:"";i:1;s:0:"";i:2;s:0:"";i:3;s:52:"";i:4;s:0:"";i:5;s:0:"";i:6;s:35:"";i:7;s:0:"";i:8;s:0:"";i:9;s:32:"";i:10;s:0:"";i:11;s:0:"";i:12;s:35:"";}s:6:"number";s:5:"10900";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179831395;s:13:"bestreference";s:35:"";}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Removing Linux";s:4:"from";s:21:"l2waldma@uwaterloo.ca";s:8:"username";s:8:"l2waldma";s:4:"name";s:12:"Lyle Waldman";s:4:"date";i:1179800999;s:2:"id";s:35:"";s:10:"references";a:4:{i:0;s:34:"";i:1;s:52:"";i:2;s:35:"";i:3;s:32:"";}s:6:"number";s:5:"10896";s:8:"isAnswer";b:1;s:10:"threadsize";i:3;s:11:"date_thread";i:1179831395;s:13:"bestreference";s:32:"";s:7:"answers";a:2:{i:0;s:35:"";i:1;s:55:"<1179834994.913203.143290@x35g2000prf.googlegroups.com>";}}s:52:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:30:"Brand new macbook pro for sale";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1179819262;s:2:"id";s:52:"";s:10:"references";a:1:{i:0;s:53:"<1179809548.580490.58390@o5g2000hsb.googlegroups.com>";}s:6:"number";s:5:"10899";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179819262;s:13:"bestreference";s:53:"<1179809548.580490.58390@o5g2000hsb.googlegroups.com>";}s:53:"<1179809548.580490.58390@o5g2000hsb.googlegroups.com>";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:30:"Brand new macbook pro for sale";s:4:"from";s:25:"azeemsarwarawan@gmail.com";s:8:"username";s:15:"azeemsarwarawan";s:4:"name";s:15:"azeemsarwarawan";s:4:"date";i:1179805948;s:2:"id";s:53:"<1179809548.580490.58390@o5g2000hsb.googlegroups.com>";s:6:"number";s:5:"10897";s:8:"isAnswer";b:0;s:10:"threadsize";i:2;s:11:"date_thread";i:1179819262;s:7:"answers";a:1:{i:0;s:52:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Removing Linux";s:4:"from";s:37:"dj3vande@caffeine.csclub.uwaterloo.ca";s:8:"username";s:8:"dj3vande";s:4:"name";s:15:"Dave Vandervies";s:4:"date";i:1179810140;s:2:"id";s:35:"";s:10:"references";a:4:{i:0;s:34:"";i:1;s:35:"";i:2;s:32:"";i:3;s:35:"";}s:6:"number";s:5:"10898";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179810140;s:13:"bestreference";s:35:"";}s:64:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:27:"gdcosta@csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1179258577;s:2:"id";s:64:"";s:10:"references";a:8:{i:0;s:65:"";i:1;s:61:"";i:2;s:60:"";i:3;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";i:4;s:52:"";i:5;s:35:"";i:6;s:64:"";i:7;s:52:"";}s:6:"number";s:5:"10879";s:8:"isAnswer";b:1;s:10:"threadsize";i:4;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:52:"";s:7:"answers";a:2:{i:0;s:55:"<1179287410.558127.198470@l77g2000hsb.googlegroups.com>";i:1;s:46:"";}}s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:33:"kspaans@student.math.uwaterloo.ca";s:8:"username";s:7:"kspaans";s:4:"name";s:11:"Kyle Spaans";s:4:"date";i:1179144492;s:2:"id";s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";s:10:"references";a:3:{i:0;s:65:"";i:1;s:61:"";i:2;s:60:"";}s:6:"number";s:5:"10872";s:8:"isAnswer";b:1;s:10:"threadsize";i:9;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:60:"";s:7:"answers";a:1:{i:0;s:52:"";}}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:26:"elouie@csclub.uwaterloo.ca";s:8:"username";s:6:"elouie";s:4:"name";s:10:"Erik Louie";s:4:"date";i:1179152493;s:2:"id";s:52:"";s:10:"references";a:4:{i:0;s:65:"";i:1;s:61:"";i:2;s:60:"";i:3;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";}s:6:"number";s:5:"10873";s:8:"isAnswer";b:1;s:10:"threadsize";i:8;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";s:7:"answers";a:1:{i:0;s:35:"";}}s:65:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1178919243;s:2:"id";s:65:"";s:6:"number";s:5:"10861";s:8:"isAnswer";b:0;s:10:"threadsize";i:19;s:11:"date_thread";i:1179508150;s:7:"answers";a:5:{i:0;s:35:"";i:1;s:35:"";i:2;s:61:"";i:3;s:55:"<1179256530.251434.156410@e65g2000hsc.googlegroups.com>";i:4;s:32:"";}}s:60:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:34:"dbelange@student.math.uwaterloo.ca";s:8:"username";s:8:"dbelange";s:4:"name";s:14:"David Belanger";s:4:"date";i:1179107383;s:2:"id";s:60:"";s:10:"references";a:2:{i:0;s:65:"";i:1;s:61:"";}s:6:"number";s:5:"10869";s:8:"isAnswer";b:1;s:10:"threadsize";i:11;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:61:"";s:7:"answers";a:2:{i:0;s:63:"";i:1;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";}}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:15:"cpb@tklogic.net";s:8:"username";s:3:"cpb";s:4:"name";s:10:"Colin Bell";s:4:"date";i:1179154719;s:2:"id";s:35:"";s:10:"references";a:5:{i:0;s:65:"";i:1;s:61:"";i:2;s:60:"";i:3;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";i:4;s:52:"";}s:6:"number";s:5:"10874";s:8:"isAnswer";b:1;s:10:"threadsize";i:7;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:52:"";s:7:"answers";a:1:{i:0;s:64:"";}}s:61:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:34:"dbelange@student.math.uwaterloo.ca";s:8:"username";s:8:"dbelange";s:4:"name";s:14:"David Belanger";s:4:"date";i:1179102231;s:2:"id";s:61:"";s:10:"references";a:1:{i:0;s:65:"";}s:6:"number";s:5:"10867";s:8:"isAnswer";b:1;s:10:"threadsize";i:13;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:65:"";s:7:"answers";a:2:{i:0;s:65:"";i:1;s:60:"";}}s:46:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:24:"mpatters@cs.uwaterloo.ca";s:8:"username";s:8:"mpatters";s:4:"name";s:14:"Mike Patterson";s:4:"date";i:1179508150;s:2:"id";s:46:"";s:10:"references";a:9:{i:0;s:65:"";i:1;s:61:"";i:2;s:60:"";i:3;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";i:4;s:52:"";i:5;s:35:"";i:6;s:64:"";i:7;s:52:"";i:8;s:64:"";}s:6:"number";s:5:"10887";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:64:"";}s:52:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:26:"mspang@csclub.uwaterloo.ca";s:8:"username";s:6:"mspang";s:4:"name";s:13:"Michael Spang";s:4:"date";i:1179256276;s:2:"id";s:52:"";s:10:"references";a:7:{i:0;s:65:"";i:1;s:61:"";i:2;s:60:"";i:3;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";i:4;s:52:"";i:5;s:35:"";i:6;s:64:"";}s:6:"number";s:5:"10878";s:8:"isAnswer";b:1;s:10:"threadsize";i:5;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:64:"";s:7:"answers";a:1:{i:0;s:64:"";}}s:64:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:29:"mtsay@student.cs.uwaterloo.ca";s:8:"username";s:5:"mtsay";s:4:"name";s:20:"Alex, Meng-Zane Tsay";s:4:"date";i:1179155716;s:2:"id";s:64:"";s:10:"references";a:6:{i:0;s:65:"";i:1;s:61:"";i:2;s:60:"";i:3;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";i:4;s:52:"";i:5;s:35:"";}s:6:"number";s:5:"10875";s:8:"isAnswer";b:1;s:10:"threadsize";i:6;s:11:"date_thread";i:1179508150;s:13:"bestreference";s:35:"";s:7:"answers";a:1:{i:0;s:52:"";}}s:65:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:7:"Minutes";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1179447811;s:2:"id";s:65:"";s:6:"number";s:5:"10886";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1179447811;}s:65:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1179366081;s:2:"id";s:65:"";s:10:"references";a:26:{i:0;s:65:"";i:1;s:0:"";i:2;s:0:"";i:3;s:61:"";i:4;s:0:"";i:5;s:0:"";i:6;s:60:"";i:7;s:0:"";i:8;s:0:"";i:9;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";i:10;s:0:"";i:11;s:0:"";i:12;s:52:"";i:13;s:0:"";i:14;s:0:"";i:15;s:35:"";i:16;s:0:"";i:17;s:0:"";i:18;s:64:"";i:19;s:0:"";i:20;s:0:"";i:21;s:52:"";i:22;s:0:"";i:23;s:0:"";i:24;s:64:"";i:25;s:55:"<1179287410.558127.198470@l77g2000hsb.googlegroups.com>";}s:6:"number";s:5:"10885";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179366081;s:13:"bestreference";s:55:"<1179287410.558127.198470@l77g2000hsb.googlegroups.com>";}s:55:"<1179287410.558127.198470@l77g2000hsb.googlegroups.com>";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:21:"zeppelin188@gmail.com";s:8:"username";s:11:"zeppelin188";s:4:"name";s:13:"Michael Ellis";s:4:"date";i:1179283810;s:2:"id";s:55:"<1179287410.558127.198470@l77g2000hsb.googlegroups.com>";s:10:"references";a:25:{i:0;s:65:"";i:1;s:0:"";i:2;s:0:"";i:3;s:61:"";i:4;s:0:"";i:5;s:0:"";i:6;s:60:"";i:7;s:0:"";i:8;s:0:"";i:9;s:59:"<20070514090812.cb36ce54.kspaans@student.math.uwaterloo.ca>";i:10;s:0:"";i:11;s:0:"";i:12;s:52:"";i:13;s:0:"";i:14;s:0:"";i:15;s:35:"";i:16;s:0:"";i:17;s:0:"";i:18;s:64:"";i:19;s:0:"";i:20;s:0:"";i:21;s:52:"";i:22;s:0:"";i:23;s:0:"";i:24;s:64:"";}s:6:"number";s:5:"10880";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1179366081;s:13:"bestreference";s:64:"";s:7:"answers";a:1:{i:0;s:65:"";}}s:59:"";O:8:"stdClass":13:{s:7:"isReply";b:0;s:7:"subject";s:17:"Agenda for May 17";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1179352332;s:2:"id";s:59:"";s:10:"references";a:1:{i:0;s:30:"<46447E8F.7050209@tklogic.net>";}s:6:"number";s:5:"10884";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179352332;s:13:"bestreference";s:30:"<46447E8F.7050209@tklogic.net>";}s:30:"<46447E8F.7050209@tklogic.net>";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:17:"UNIX Screen Casts";s:4:"from";s:15:"cpb@tklogic.net";s:8:"username";s:3:"cpb";s:4:"name";s:10:"Colin Bell";s:4:"date";i:1178890367;s:2:"id";s:30:"<46447E8F.7050209@tklogic.net>";s:6:"number";s:5:"10859";s:8:"isAnswer";b:0;s:10:"threadsize";i:6;s:11:"date_thread";i:1179352332;s:7:"answers";a:4:{i:0;s:64:"";i:1;s:64:"";i:2;s:59:"<3A2F7AC1-489E-426F-A6CD-D387294BAE64%gdcosta@uwaterloo.ca>";i:3;s:59:"";}}s:59:"<3A2F7AC1-489E-426F-A6CD-D387294BAE64%gdcosta@uwaterloo.ca>";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:17:"UNIX Screen Casts";s:4:"from";s:20:"gdcosta@uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'costa";s:4:"date";i:1179351075;s:2:"id";s:59:"<3A2F7AC1-489E-426F-A6CD-D387294BAE64%gdcosta@uwaterloo.ca>";s:10:"references";a:1:{i:0;s:30:"<46447E8F.7050209@tklogic.net>";}s:6:"number";s:5:"10883";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179351075;s:13:"bestreference";s:30:"<46447E8F.7050209@tklogic.net>";}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:39:"Employer Information Session: Microsoft";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1179331502;s:2:"id";s:35:"";s:6:"number";s:5:"10882";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1179331502;}s:32:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:28:"cgreuter@csclub.uwaterloo.ca";s:8:"username";s:8:"cgreuter";s:4:"name";s:12:"Chris Reuter";s:4:"date";i:1179276172;s:2:"id";s:32:"";s:10:"references";a:1:{i:0;s:65:"";}s:6:"number";s:5:"10881";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179276172;s:13:"bestreference";s:65:"";}s:55:"<1179256530.251434.156410@e65g2000hsc.googlegroups.com>";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:21:"zeppelin188@gmail.com";s:8:"username";s:11:"zeppelin188";s:4:"name";s:13:"Michael Ellis";s:4:"date";i:1179252930;s:2:"id";s:55:"<1179256530.251434.156410@e65g2000hsc.googlegroups.com>";s:10:"references";a:1:{i:0;s:65:"";}s:6:"number";s:5:"10877";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179252930;s:13:"bestreference";s:65:"";}s:64:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:17:"UNIX Screen Casts";s:4:"from";s:27:"gdcosta@csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1178989466;s:2:"id";s:64:"";s:10:"references";a:1:{i:0;s:30:"<46447E8F.7050209@tklogic.net>";}s:6:"number";s:5:"10865";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1179157640;s:13:"bestreference";s:30:"<46447E8F.7050209@tklogic.net>";s:7:"answers";a:1:{i:0;s:35:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:17:"UNIX Screen Casts";s:4:"from";s:15:"cpb@tklogic.net";s:8:"username";s:3:"cpb";s:4:"name";s:10:"Colin Bell";s:4:"date";i:1179157640;s:2:"id";s:35:"";s:10:"references";a:2:{i:0;s:30:"<46447E8F.7050209@tklogic.net>";i:1;s:64:"";}s:6:"number";s:5:"10876";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179157640;s:13:"bestreference";s:64:"";}s:64:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:12:"Cleaning Day";s:4:"from";s:27:"gdcosta@csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1179111337;s:2:"id";s:64:"";s:6:"number";s:5:"10871";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1179111337;}s:63:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:27:"gdcosta@csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1179111077;s:2:"id";s:63:"";s:10:"references";a:3:{i:0;s:65:"";i:1;s:61:"";i:2;s:60:"";}s:6:"number";s:5:"10870";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179111077;s:13:"bestreference";s:60:"";}s:65:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1179106119;s:2:"id";s:65:"";s:10:"references";a:2:{i:0;s:65:"";i:1;s:61:"";}s:6:"number";s:5:"10868";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1179106119;s:13:"bestreference";s:61:"";}s:52:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:32:"Minute Meetings for May 13, 2007";s:4:"from";s:29:"secretary@csclub.uwaterloo.ca";s:8:"username";s:9:"secretary";s:4:"name";s:9:"Secretary";s:4:"date";i:1179084940;s:2:"id";s:52:"";s:6:"number";s:5:"10866";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1179084940;}s:65:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1178978927;s:2:"id";s:65:"";s:10:"references";a:2:{i:0;s:65:"";i:1;s:35:"";}s:6:"number";s:5:"10864";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1178978927;s:13:"bestreference";s:35:"";}s:35:"";O:8:"stdClass":14:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:35:"rridge@caffeine.csclub.uwaterloo.ca";s:8:"username";s:6:"rridge";s:4:"name";s:10:"Ross Ridge";s:4:"date";i:1178925019;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:65:"";}s:6:"number";s:5:"10862";s:8:"isAnswer";b:1;s:10:"threadsize";i:2;s:11:"date_thread";i:1178978927;s:13:"bestreference";s:65:"";s:7:"answers";a:1:{i:0;s:65:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:14:"Naming Schemes";s:4:"from";s:37:"dj3vande@caffeine.csclub.uwaterloo.ca";s:8:"username";s:8:"dj3vande";s:4:"name";s:15:"Dave Vandervies";s:4:"date";i:1178941170;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:65:"";}s:6:"number";s:5:"10863";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1178941170;s:13:"bestreference";s:65:"";}s:64:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:17:"UNIX Screen Casts";s:4:"from";s:28:"dtbartle@csclub.uwaterloo.ca";s:8:"username";s:8:"dtbartle";s:4:"name";s:13:"David Bartley";s:4:"date";i:1178906639;s:2:"id";s:64:"";s:10:"references";a:1:{i:0;s:30:"<46447E8F.7050209@tklogic.net>";}s:6:"number";s:5:"10860";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1178906639;s:13:"bestreference";s:30:"<46447E8F.7050209@tklogic.net>";}s:70:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:13:"Next meetings";s:4:"from";s:43:"gdcosta@phosphoric-acid.csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1178837809;s:2:"id";s:70:"";s:6:"number";s:5:"10858";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178837809;}s:70:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:32:"Meeting Minutes for May 10, 2007";s:4:"from";s:43:"gdcosta@phosphoric-acid.csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1178837677;s:2:"id";s:70:"";s:6:"number";s:5:"10857";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178837677;}s:70:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:28:"Spring 2007 Election Results";s:4:"from";s:43:"gdcosta@phosphoric-acid.csclub.uwaterloo.ca";s:8:"username";s:7:"gdcosta";s:4:"name";s:14:"Gaelan D'Costa";s:4:"date";i:1178835073;s:2:"id";s:70:"";s:6:"number";s:5:"10856";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178835073;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:40:"Fw: Employer Info Session: NexJ Systems";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178734114;s:2:"id";s:35:"";s:6:"number";s:5:"10855";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178734114;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:39:"Fw: Employer Info Session: Kaleidescape";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178733613;s:2:"id";s:35:"";s:6:"number";s:5:"10854";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178733613;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:36:"Fw: Employer Info Session: Platespin";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178733600;s:2:"id";s:35:"";s:6:"number";s:5:"10853";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178733600;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:40:"Fw: Employer Info Session: SOMA Networks";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178733589;s:2:"id";s:35:"";s:6:"number";s:5:"10852";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178733589;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:35:"Fw: Employer Info Session: QUALCOMM";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178733576;s:2:"id";s:35:"";s:6:"number";s:5:"10851";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178733576;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:32:"Employer Info Session - Deloitte";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178728169;s:2:"id";s:35:"";s:6:"number";s:5:"10850";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178728169;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:58:"Employer Info Session: UW Information Systems & Technology";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178124023;s:2:"id";s:35:"";s:6:"number";s:5:"10849";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178124023;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:43:"Employer Info Session: Infusion Development";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178123760;s:2:"id";s:35:"";s:6:"number";s:5:"10848";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178123760;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:38:"Employer Info Session: Silicon Knights";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178123480;s:2:"id";s:35:"";s:6:"number";s:5:"10847";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178123480;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:38:"Employer Info Session: Autodesk Canada";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178123213;s:2:"id";s:35:"";s:6:"number";s:5:"10846";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178123213;}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:35:"Employer Info Session: Epson Canada";s:4:"from";s:27:"suppal@admmail.uwaterloo.ca";s:8:"username";s:6:"suppal";s:4:"name";s:11:"Sarah Uppal";s:4:"date";i:1178122492;s:2:"id";s:35:"";s:6:"number";s:5:"10845";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1178122492;}s:63:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:25:"CSC Spring 2007 Elections";s:4:"from";s:28:"dtbartle@csclub.uwaterloo.ca";s:8:"username";s:8:"dtbartle";s:4:"name";s:13:"David Bartley";s:4:"date";i:1178048326;s:2:"id";s:63:"";s:10:"references";a:1:{i:0;s:63:"";}s:6:"number";s:5:"10844";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1178048326;s:13:"bestreference";s:63:"";}s:63:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:25:"CSC Spring 2007 Elections";s:4:"from";s:28:"dtbartle@csclub.uwaterloo.ca";s:8:"username";s:8:"dtbartle";s:4:"name";s:13:"David Bartley";s:4:"date";i:1178046668;s:2:"id";s:63:"";s:6:"number";s:5:"10843";s:8:"isAnswer";b:0;s:10:"threadsize";i:2;s:11:"date_thread";i:1178048326;s:7:"answers";a:1:{i:0;s:63:"";}}s:64:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:11:"j2simpso...";s:4:"from";s:28:"dbelange@csclub.uwaterloo.ca";s:8:"username";s:8:"dbelange";s:4:"name";s:14:"David Belanger";s:4:"date";i:1177678028;s:2:"id";s:64:"";s:6:"number";s:5:"10842";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1177678028;}s:55:"<1176827620.180307.248390@e65g2000hsc.googlegroups.com>";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:16:"Database Servers";s:4:"from";s:23:"azndragon1987@gmail.com";s:8:"username";s:13:"azndragon1987";s:4:"name";s:12:"Andrew Chung";s:4:"date";i:1176824020;s:2:"id";s:55:"<1176827620.180307.248390@e65g2000hsc.googlegroups.com>";s:6:"number";s:5:"10841";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1176824020;}s:64:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:6:"mdkess";s:4:"from";s:28:"dbelange@csclub.uwaterloo.ca";s:8:"username";s:8:"dbelange";s:4:"name";s:14:"David Belanger";s:4:"date";i:1174199855;s:2:"id";s:64:"";s:6:"number";s:5:"10839";s:8:"isAnswer";b:0;s:10:"threadsize";i:2;s:11:"date_thread";i:1174956692;s:7:"answers";a:1:{i:0;s:35:"";}}s:35:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:6:"mdkess";s:4:"from";s:17:"adrianp@cogeco.ca";s:8:"username";s:7:"adrianp";s:4:"name";s:15:"Adrian Petrescu";s:4:"date";i:1174956692;s:2:"id";s:35:"";s:10:"references";a:1:{i:0;s:64:"";}s:6:"number";s:5:"10840";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1174956692;s:13:"bestreference";s:64:"";}s:54:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:18:"Getting married...";s:4:"from";s:28:"mtompset@csclub.uwaterloo.ca";s:8:"username";s:8:"mtompset";s:4:"name";s:13:"Mark Tompsett";s:4:"date";i:1173871222;s:2:"id";s:54:"";s:6:"number";s:5:"10837";s:8:"isAnswer";b:0;s:10:"threadsize";i:2;s:11:"date_thread";i:1173894760;s:7:"answers";a:1:{i:0;s:32:"";}}s:32:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:18:"Getting married...";s:4:"from";s:28:"cgreuter@csclub.uwaterloo.ca";s:8:"username";s:8:"cgreuter";s:4:"name";s:12:"Chris Reuter";s:4:"date";i:1173894760;s:2:"id";s:32:"";s:10:"references";a:1:{i:0;s:54:"";}s:6:"number";s:5:"10838";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1173894760;s:13:"bestreference";s:54:"";}s:63:"";O:8:"stdClass":12:{s:7:"isReply";b:0;s:7:"subject";s:63:"ReactOS: An Open Source OS Platform for Learning (Feb 26, 2007)";s:4:"from";s:28:"dtbartle@csclub.uwaterloo.ca";s:8:"username";s:8:"dtbartle";s:4:"name";s:13:"David Bartley";s:4:"date";i:1172280594;s:2:"id";s:63:"";s:6:"number";s:5:"10833";s:8:"isAnswer";b:0;s:10:"threadsize";i:2;s:11:"date_thread";i:1172522475;s:7:"answers";a:1:{i:0;s:64:"";}}s:64:"";O:8:"stdClass":13:{s:7:"isReply";b:1;s:7:"subject";s:63:"ReactOS: An Open Source OS Platform for Learning (Feb 26, 2007)";s:4:"from";s:32:"kmlarose@student.cs.uwaterloo.ca";s:8:"username";s:8:"kmlarose";s:4:"name";s:11:"Kyle Larose";s:4:"date";i:1172522475;s:2:"id";s:64:"";s:10:"references";a:1:{i:0;s:63:"";}s:6:"number";s:5:"10834";s:8:"isAnswer";b:1;s:10:"threadsize";i:1;s:11:"date_thread";i:1172522475;s:13:"bestreference";s:63:"";}s:35:"";O:8:"stdClass":11:{s:7:"isReply";b:0;s:7:"subject";s:24:"Free USENIX publications";s:4:"from";s:31:"rblander@beta.math.uwaterloo.ca";s:8:"username";s:8:"rblander";s:4:"name";s:20:"Robyn Landers [MFCF]";s:4:"date";i:1172164460;s:2:"id";s:35:"";s:6:"number";s:5:"10831";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1172164460;}s:62:"";O:8:"stdClass":12:{s:7:"isReply";b:1;s:7:"subject";s:65:"UW Software Start-ups: What Worked and What Did Not - Feb 8, 2007";s:4:"from";s:26:"hkarau@csclub.uwaterloo.ca";s:8:"username";s:6:"hkarau";s:4:"name";s:12:"Holden Karau";s:4:"date";i:1172089736;s:2:"id";s:62:"";s:10:"references";a:2:{i:0;s:64:"";i:1;s:35:"";}s:6:"number";s:5:"10830";s:8:"isAnswer";b:0;s:10:"threadsize";i:1;s:11:"date_thread";i:1172089736;}} \ No newline at end of file diff --git a/newsgroup/spool/uw.csc-info.txt b/newsgroup/spool/uw.csc-info.txt deleted file mode 100644 index 72181c3..0000000 --- a/newsgroup/spool/uw.csc-info.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.36,news,,400,100,0,0,iso-8859-15,1,1 -10826 10942 115 diff --git a/newsgroup/spool/uw.csc-lastarticleinfo.dat b/newsgroup/spool/uw.csc-lastarticleinfo.dat deleted file mode 100644 index be4882d..0000000 --- a/newsgroup/spool/uw.csc-lastarticleinfo.dat +++ /dev/null @@ -1 +0,0 @@ -O:8:"stdClass":3:{s:4:"from";s:27:"gdcosta@csclub.uwaterloo.ca";s:4:"date";i:1181337436;s:4:"name";s:14:"Gaelan D'Costa";} \ No newline at end of file diff --git a/newsgroup/style.css b/newsgroup/style.css deleted file mode 100644 index 64968af..0000000 --- a/newsgroup/style.css +++ /dev/null @@ -1,185 +0,0 @@ -/* =========== Page Layout ================ */ - -BODY { - color: black; - background: white; -} - -/* =========== Index Layout ============== */ - -/* headline */ -h1.np_index_headline { - font-size: large; -} - -/* border around all groups */ -.np_index_groups { - background: #eeeeee; - padding: 0px; - border: solid 1px #26598f; -} - -/* a block of groups */ -.np_index_groupblock { - margin-bottom: 20px; -} - -/* headline of a group of blocks */ -.np_index_grouphead { - border: solid 1px #26598f; - background: #26598f; - color: white; -} - -/* a single group */ -.np_index_group { - margin-left: 10px; - margin-bottom: 5px; -} - -/* =========== Thread Layout ============== */ - -/* Headline */ -h1.np_thread_headline { - font-size: large; -} - - -/* Table around the thread */ -table.np_thread_table { - width: 100%; - border: solid 1px #26598f; - border-spacing: 0px; - margin: 0px; - padding: 0px; -} - -/* Head of the table */ -tr.np_thread_head,td.np_thread_head { - color: white; - background: #26598f; - margin: 0px; -} - - - -/* Even line numbers in the thread */ -tr.np_thread_line1,td.np_thread_line1 { - padding-left: 3px; - padding-top: 0px; - padding-right: 0px; - padding-bottom: 0px; - background: #f9f9f9; - margin: 0px; -} - -/* Odd line numbers in the thread */ -tr.np_thread_line2,td.np_thread_line2 { - padding-left: 3px; - padding-top: 0px; - padding-right: 0px; - padding-bottom: 0px; - background: #eeeeee; - margin: 0px; -} - -/* Text inside a Line */ -span.np_thread_line_text { - font-size: small; -} - -/* The small images, a thread consists of */ -img.thread_image { - vertical-align: bottom; -} - -/* =========== Article Layout ============= */ - -/* headline */ -h1.np_article_headline { - font-size: large; -} - - -/* Head of an article */ -div.np_article_header { - background: #eeeeee; - padding: 3px; - border: solid 1px #26598f; -} - -/* Layout of the Text-Body */ -div.np_article_body { - margin-top: 20px; - font-family: "Lucida Console", "Courier New", Courier, "Andale Mono", monospace; -} - -/* Layout of quoted text / graphic layout */ -blockquote.np_article_quote { - border-left: #002255 solid 1px; - padding-left: 5px; - color: #002277; - margin: 0px; -} - -/* =========== Post layout =========== */ - -/* headline */ -h1.np_post_headline { - font-size: large; -} - - -/* Head with the input fields for subject, name and email */ -.np_post_header { - background: #eeeeee; - padding: 3px; - border: solid 1px #26598f; -} - -/* Body with the message-field and the post-button in it */ -.np_post_body { - background: #eeeeee; - padding: 3px; - border: solid 1px #26598f; - margin-top: 10px; -} - - -/* =========== navigation buttons on top of every page =========== */ - -.np_buttonbar { - background: #26598f; - padding: 1px; - margin-bottom: 10px; - color: black; -} - -td.np_button { - padding-left: 5px; - padding-right: 5px; - border-right: solid white 1px; - color: white; - white-space: nowrap; -} - -a.np_button { - color: white; - text-decoration: underline; -} - -.np_pages { - color: white; -} - -.np_pages_selected { - color: white: - text-weight: bold; - margin-left: 5px; -} - -.np_pages_unselected { - color: white; - text-decoration: underline; - margin-left: 5px; -} diff --git a/newsgroup/tail.inc b/newsgroup/tail.inc deleted file mode 100644 index 66b460b..0000000 --- a/newsgroup/tail.inc +++ /dev/null @@ -1,6 +0,0 @@ -

-"News-Portal" -was written by Florian Amrhein. -

- - diff --git a/newsgroup/thread.php b/newsgroup/thread.php deleted file mode 100644 index 29a9eac..0000000 --- a/newsgroup/thread.php +++ /dev/null @@ -1,82 +0,0 @@ - - - - -

- -'; - echo ''.$text_thread["button_grouplist"].''; - if (!$readonly && - (!function_exists("npreg_group_has_write_access") || - npreg_group_has_write_access($group))) - echo ''. - $text_thread["button_write"].""; -// $ns=nntp_open($server,$port); - flush(); - $headers = thread_load($group); - $article_count=count($headers); - if ($articles_per_page != 0) { - if ((!isset($first)) || (!isset($last))) { - if ($startpage=="first") { - $first=1; - $last=$articles_per_page; - } else { - $first=$article_count - (($article_count -1) % $articles_per_page); - $last=$article_count; - } - } - echo ''; - // Show the replies to an article in the thread view? - if($thread_show["replies"]) { - // yes, so the counting of the shown articles is very easy - $pagecount=count($headers); - } else { - // oh no, the replies will not be shown, this makes life hard... - $pagecount=0; - if(count($headers>0) && is_array($headers)) { - foreach($headers as $h) { - if($h->isAnswer==false) - $pagecount++; - } - } - } - - thread_pageselect($group,$pagecount,$first); - echo ''; - } else { - $first=0; - $last=$article_count; - } - echo ''; - thread_show($headers,$group,$first,$last); -} else { - echo $text_register["no_access_group"]; -} - -?> -

- - \ No newline at end of file