2010-11-30 11:24:17 +13:00
< ? php
2010-11-30 16:30:10 +13:00
2010-11-30 11:24:17 +13:00
/**
* Represents an interface for viewing and adding page comments
* Create one , passing the page discussed to the constructor . It can then be
* inserted into a template .
2010-11-30 13:33:19 +13:00
*
2010-11-30 16:30:10 +13:00
* @ package comments
2010-11-30 11:24:17 +13:00
*/
2010-11-30 13:33:19 +13:00
class CommentInterface extends RequestHandler {
2010-11-30 16:30:10 +13:00
2010-11-30 11:24:17 +13:00
static $url_handlers = array (
'$Item!' => '$Item' ,
);
static $allowed_actions = array (
'PostCommentForm' ,
);
protected $controller , $methodName , $page ;
2010-11-30 22:49:21 +13:00
2010-11-30 11:24:17 +13:00
/**
* Create a new page comment interface
* @ param controller The controller that the interface is used on
2010-11-30 13:33:19 +13:00
* @ param methodName The method to return this CommentInterface object
2010-11-30 11:24:17 +13:00
* @ param page The page that we ' re commenting on
*/
function __construct ( $controller , $methodName , $page ) {
$this -> controller = $controller ;
$this -> methodName = $methodName ;
$this -> page = $page ;
parent :: __construct ();
}
function Link () {
return Controller :: join_links ( $this -> controller -> Link (), $this -> methodName );
}
2010-11-30 22:49:21 +13:00
2010-11-30 11:24:17 +13:00
/**
* if this page comment form requires users to have a
* valid permission code in order to post ( used to customize the error
* message ) .
*
* @ return bool
*/
function PostingRequiresPermission () {
return self :: $comments_require_permission ;
}
function Page () {
return $this -> page ;
}
function PostCommentForm () {
2010-11-30 16:30:10 +13:00
2010-11-30 11:24:17 +13:00
// Load the data from Session
$form -> loadDataFrom ( array (
2010-11-30 13:33:19 +13:00
" Name " => Cookie :: get ( " CommentInterface_Name " ),
" Comment " => Cookie :: get ( " CommentInterface_Comment " ),
" CommenterURL " => Cookie :: get ( " CommentInterface_CommenterURL " )
2010-11-30 11:24:17 +13:00
));
return $form ;
}
function Comments () {
// Comment limits
$limit = array ();
$limit [ 'start' ] = isset ( $_GET [ 'commentStart' ]) ? ( int ) $_GET [ 'commentStart' ] : 0 ;
2010-11-30 13:33:19 +13:00
$limit [ 'limit' ] = Comment :: $comments_per_page ;
2010-11-30 11:24:17 +13:00
$spamfilter = isset ( $_GET [ 'showspam' ]) ? '' : " AND \" IsSpam \" = 0 " ;
$unmoderatedfilter = Permission :: check ( 'CMS_ACCESS_CommentAdmin' ) ? '' : " AND \" NeedsModeration \" = 0 " ;
$order = self :: $order_comments_by ;
2010-11-30 13:33:19 +13:00
$comments = DataObject :: get ( " Comment " , " \" ParentID \" = ' " . Convert :: raw2sql ( $this -> page -> ID ) . " ' $spamfilter $unmoderatedfilter " , $order , " " , $limit );
2010-11-30 11:24:17 +13:00
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 ;
}
function CommentRssLink () {
2010-11-30 13:33:19 +13:00
return Director :: absoluteBaseURL () . " Comment/rss?pageid= " . $this -> page -> ID ;
2010-11-30 11:24:17 +13:00
}
/**
2010-11-30 13:33:19 +13:00
* A link to Comment_Controller . deleteallcomments () which deletes all
2010-11-30 11:24:17 +13:00
* comments on a page referenced by the url param pageid
*/
function DeleteAllLink () {
if ( Permission :: check ( 'CMS_ACCESS_CommentAdmin' )) {
2010-11-30 13:33:19 +13:00
return Director :: absoluteBaseURL () . " Comment/deleteallcomments?pageid= " . $this -> page -> ID ;
2010-11-30 11:24:17 +13:00
}
}
}
/**
2010-11-30 16:30:10 +13:00
* @ package comments
2010-11-30 11:24:17 +13:00
*/
2010-11-30 13:33:19 +13:00
class CommentInterface_Form extends Form {
2010-11-30 16:30:10 +13:00
2010-11-30 11:24:17 +13:00
}
/**
2010-11-30 16:30:10 +13:00
* @ package comments
2010-11-30 11:24:17 +13:00
*/
2010-11-30 13:33:19 +13:00
class CommentInterface_Controller extends ContentController {
2010-11-30 11:24:17 +13:00
function __construct () {
parent :: __construct ( null );
}
function newspamquestion () {
if ( Director :: is_ajax ()) {
2010-11-30 13:33:19 +13:00
echo Convert :: raw2xml ( sprintf ( _t ( 'CommentInterface_Controller.SPAMQUESTION' , " Spam protection question: %s " ), MathSpamProtection :: getMathQuestion ()));
2010-11-30 11:24:17 +13:00
}
}
2010-11-30 16:30:10 +13:00
}