controller = $controller; $this->methodName = $methodName; $this->page = $page; } function forTemplate() { return $this->renderWith('PageCommentInterface'); } function PostCommentForm() { Requirements::javascript('jsparty/behaviour.js'); Requirements::javascript('jsparty/prototype.js'); Requirements::javascript('jsparty/scriptaculous/effects.js'); Requirements::javascript('cms/javascript/PageCommentInterface.js'); $form = new PageCommentInterface_Form($this->controller, $this->methodName . ".PostCommentForm", new FieldSet( new HiddenField("ParentID", "ParentID", $this->page->ID), new TextField("Name", "Your name"), new TextareaField("Comment", "Comments") ), new FieldSet( new FormAction("postcomment", "Post") )); $form->loadDataFrom(array( "Name" => Cookie::get("PageCommentInterface_Name"), )); return $form; } function Comments() { // Comment limits if(isset($_GET['commentStart'])) { $limit = (int)$_GET['commentStart'].",".PageComment::$comments_per_page; } else { $limit = "0,".PageComment::$comments_per_page; } if(isset($_GET['showspam'])) { $comments = DataObject::get("PageComment", "ParentID = '" . Convert::raw2sql($this->page->ID) . "'", "Created DESC", "", $limit); } else { $comments = DataObject::get("PageComment", "ParentID = '" . Convert::raw2sql($this->page->ID) . "' AND IsSpam = 0", "Created DESC", "", $limit); } if(is_null($comments)) { return; } // This allows us to use the normal 'start' GET variables as well (In the weird circumstance where you have paginated comments AND something else paginated) $comments->setPaginationGetVar('commentStart'); return $comments; } } class PageCommentInterface_Form extends Form { function postcomment($data) { // Spam filtering if(SSAkismet::isEnabled()) { try { $akismet = new SSAkismet(); $akismet->setCommentAuthor($data['Name']); $akismet->setCommentContent($data['Comment']); if($akismet->isCommentSpam()) { if(SSAkismet::getSaveSpam()) { $comment = Object::create('PageComment'); $this->saveInto($comment); $comment->setField("IsSpam", true); $comment->write(); } echo "Spam detected!!

"; echo "If you believe this was in error, please email "; echo ereg_replace("@", " _(at)_", Email::getAdminEmail()); echo ".

The message you posted was:

"; echo $data['Comment']; return; } } catch (Exception $e) { // Akismet didn't work, continue without spam check } } Cookie::set("PageCommentInterface_Name", $data['Name']); $comment = Object::create('PageComment'); $this->saveInto($comment); $comment->IsSpam = false; $comment->write(); if(Director::is_ajax()) { echo $comment->renderWith('PageCommentInterface_singlecomment'); } else { Director::redirectBack(); } } } ?>