mode = $mode; parent::__construct($controller, $name, $sourceClass, $fieldList, $detailFormFields, $sourceFilter, $sourceSort, $sourceJoin); $this->Markable = true; $this->setPageSize(15); // search $search = isset($_REQUEST['CommentSearch']) ? Convert::raw2sql($_REQUEST['CommentSearch']) : null; if(!empty($_REQUEST['CommentSearch'])) { $this->sourceFilter[] = "( `Name` LIKE '%$search%' OR `Comment` LIKE '%$search%')"; } Requirements::javascript('cms/javascript/CommentTableField.js'); } function Items() { $this->sourceItems = $this->sourceItems(); if(!$this->sourceItems) { return null; } $pageStart = (isset($_REQUEST['ctf'][$this->Name()]['start']) && is_numeric($_REQUEST['ctf'][$this->Name()]['start'])) ? $_REQUEST['ctf'][$this->Name()]['start'] : 0; $this->sourceItems->setPageLimits($pageStart, $this->pageSize, $this->totalCount); $output = new DataObjectSet(); foreach($this->sourceItems as $pageIndex=>$item) { $output->push(Object::create('CommentTableField_Item',$item, $this, $pageStart+$pageIndex)); } return $output; } function spam() { if(!Permission::check('ADMIN')) { return false; } $this->methodName = "spam"; $childId = Convert::raw2sql($_REQUEST['tf']['childID']); if (is_numeric($childId)) { $comment = DataObject::get_by_id($this->sourceClass, $childId); if($comment) { $comment->IsSpam = true; $comment->NeedsModeration = false; $comment->write(); if(SSAkismet::isEnabled()) { try { $akismet = new SSAkismet(); $akismet->setCommentAuthor($comment->getField('Name')); $akismet->setCommentContent($comment->getField('Comment')); $akismet->submitSpam(); } catch (Exception $e) { // Akismet didn't work, most likely the service is down. } } } } } function ham() { if(!Permission::check('ADMIN')) { return false; } $this->methodName = "ham"; $childId = Convert::raw2sql($_REQUEST['tf']['childID']); if (is_numeric($childId)) { $comment = DataObject::get_by_id($this->sourceClass, $childId); if($comment) { $comment->IsSpam = false; $comment->NeedsModeration = false; $comment->write(); if(SSAkismet::isEnabled()) { try { $akismet = new SSAkismet(); $akismet->setCommentAuthor($comment->getField('Name')); $akismet->setCommentContent($comment->getField('Comment')); $akismet->submitHam(); } catch (Exception $e) { // Akismet didn't work, most likely the service is down. } } } } } function approve() { if(!Permission::check('ADMIN')) { return false; } $this->methodName = "accept"; $childId = Convert::raw2sql($_REQUEST['tf']['childID']); if(is_numeric($childId)) { $childObject = DataObject::get_by_id($this->sourceClass, $childId); if($childObject) { $childObject->IsSpam = false; $childObject->NeedsModeration = false; $childObject->write(); } } } function HasSpamButton() { return $this->mode == 'approved' || $this->mode == 'unmoderated'; } function HasApproveButton() { return $this->mode == 'unmoderated'; } function HasHamButton() { return $this->mode == 'spam'; } function SearchForm() { $searchFields = new FieldGroup( new TextField('CommentSearch', _t('CommentTableField.SEARCH', 'Search')), new HiddenField("ctf[ID]",'',$this->mode), new HiddenField('CommentFieldName','',$this->name) ); $actionFields = new LiteralField('CommentFilterButton',''); $fieldContainer = new FieldGroup( $searchFields, $actionFields ); return $fieldContainer->FieldHolder(); } } /** * Single row of a {@link CommentTableField} * @package cms * @subpackage comments */ class CommentTableField_Item extends ComplexTableField_Item { function HasSpamButton() { return $this->parent()->HasSpamButton(); } function HasApproveButton() { return $this->parent()->HasApproveButton(); } function HasHamButton() { return $this->parent()->HasHamButton(); } function SpamLink() { return $this->BaseLink() . "&methodName=spam"; } function HamLink() { return $this->BaseLink() . "&methodName=ham"; } function ApproveLink() { return $this->BaseLink() . "&methodName=approve"; } } ?>