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 a7cb3a2..0000000 Binary files a/newsgroup/img/I.gif and /dev/null differ diff --git a/newsgroup/img/L.gif b/newsgroup/img/L.gif deleted file mode 100644 index 171dcb6..0000000 Binary files a/newsgroup/img/L.gif and /dev/null differ diff --git a/newsgroup/img/T.gif b/newsgroup/img/T.gif deleted file mode 100644 index cf2335f..0000000 Binary files a/newsgroup/img/T.gif and /dev/null differ diff --git a/newsgroup/img/e.gif b/newsgroup/img/e.gif deleted file mode 100644 index e92eaac..0000000 Binary files a/newsgroup/img/e.gif and /dev/null differ diff --git a/newsgroup/img/k1.gif b/newsgroup/img/k1.gif deleted file mode 100644 index 9cbf0a4..0000000 Binary files a/newsgroup/img/k1.gif and /dev/null differ diff --git a/newsgroup/img/k2.gif b/newsgroup/img/k2.gif deleted file mode 100644 index 37eb368..0000000 Binary files a/newsgroup/img/k2.gif and /dev/null differ diff --git a/newsgroup/img/s.gif b/newsgroup/img/s.gif deleted file mode 100644 index 4a45d92..0000000 Binary files a/newsgroup/img/s.gif and /dev/null differ 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 a8f8d39..0000000 Binary files a/newsgroup/newsportal-0.37.zip and /dev/null differ 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