2013-07-21 12:23:35 +02:00
< ? php
/**
2015-05-09 16:33:12 +02:00
* An individual blog post .
2013-07-21 12:23:35 +02:00
*
* @ package silverstripe
* @ subpackage blog
*
2015-03-06 03:52:07 +01:00
* @ method ManyManyList Categories ()
* @ method ManyManyList Tags ()
* @ method ManyManyList Authors ()
2015-05-09 16:33:12 +02:00
* @ method Blog Parent ()
2015-03-06 03:52:07 +01:00
*
2015-05-09 16:33:12 +02:00
* @ property string $PublishDate
* @ property string $AuthorNames
* @ property int $ParentID
*/
2013-07-21 12:23:35 +02:00
class BlogPost extends Page {
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2013-07-21 12:23:35 +02:00
private static $db = array (
2015-05-09 16:33:12 +02:00
'PublishDate' => 'SS_Datetime' ,
'AuthorNames' => 'Varchar(1024)' ,
'Summary' => 'HTMLText' ,
2013-07-21 12:23:35 +02:00
);
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2013-08-04 18:38:26 +02:00
private static $has_one = array (
2015-05-09 16:33:12 +02:00
'FeaturedImage' => 'Image' ,
2013-08-04 18:38:26 +02:00
);
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2013-08-04 18:38:26 +02:00
private static $many_many = array (
2015-05-09 16:33:12 +02:00
'Categories' => 'BlogCategory' ,
'Tags' => 'BlogTag' ,
'Authors' => 'Member' ,
2013-08-04 18:38:26 +02:00
);
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2013-08-04 18:38:26 +02:00
private static $defaults = array (
2015-05-09 16:33:12 +02:00
'ShowInMenus' => false ,
'InheritSideBar' => true ,
'ProvideComments' => true ,
2013-08-04 18:38:26 +02:00
);
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2013-08-04 18:38:26 +02:00
private static $extensions = array (
2015-05-09 16:33:12 +02:00
'BlogPostFilter' ,
2013-08-04 18:38:26 +02:00
);
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2013-08-11 00:34:46 +02:00
private static $searchable_fields = array (
2015-05-09 16:33:12 +02:00
'Title' ,
2013-08-11 00:34:46 +02:00
);
2013-08-04 18:38:26 +02:00
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2013-08-11 00:34:46 +02:00
private static $summary_fields = array (
2015-05-09 16:33:12 +02:00
'Title' ,
2013-08-11 00:34:46 +02:00
);
2013-08-04 18:38:26 +02:00
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2015-03-04 23:20:47 +01:00
private static $casting = array (
2015-05-09 16:33:12 +02:00
'Excerpt' => 'Text' ,
2015-03-04 23:20:47 +01:00
);
2015-05-09 16:33:12 +02:00
/**
* @ var array
*/
2014-02-16 06:19:26 +01:00
private static $allowed_children = array ();
2015-05-09 16:33:12 +02:00
/**
* @ var string
*/
private static $default_sort = 'PublishDate DESC' ;
2013-07-21 12:23:35 +02:00
2015-05-09 16:33:12 +02:00
/**
* @ var bool
*/
2014-02-16 06:19:26 +01:00
private static $can_be_root = false ;
2013-08-04 18:38:26 +02:00
2013-07-21 12:23:35 +02:00
/**
2015-05-09 16:33:12 +02:00
* This will display or hide the current class from the SiteTree . This variable can be
* configured using YAML .
2013-07-21 12:23:35 +02:00
*
2015-05-09 16:33:12 +02:00
* @ var bool
*/
2013-08-11 00:34:46 +02:00
private static $show_in_sitetree = false ;
2013-07-21 12:23:35 +02:00
2015-03-06 03:52:07 +01:00
/**
2015-05-09 16:33:12 +02:00
* Determine the role of the given member .
2015-03-06 03:52:07 +01:00
*
2015-05-09 16:33:12 +02:00
* Call be called via template to determine the current user .
*
* @ example " Hello $RoleOf ( $CurrentMember .ID) "
*
* @ param null | int | Member $member
*
* @ return null | string
2015-03-06 03:52:07 +01:00
*/
2015-05-09 16:33:12 +02:00
public function RoleOf ( $member = null ) {
2015-06-04 01:50:25 +02:00
$member = $this -> getMember ( $member );
2015-03-06 03:52:07 +01:00
2015-05-09 16:33:12 +02:00
if ( ! $member ) {
return null ;
2015-03-06 03:52:07 +01:00
}
2015-05-09 16:33:12 +02:00
if ( $this -> isAuthor ( $member )) {
return _t ( 'BlogPost.AUTHOR' , 'Author' );
}
$parent = $this -> Parent ();
if ( $parent instanceof Blog ) {
return $parent -> RoleOf ( $member );
}
return null ;
2015-03-06 03:52:07 +01:00
}
2015-04-09 05:45:12 +02:00
/**
2015-05-09 16:33:12 +02:00
* Determine if the given member is an author of this post .
2015-04-09 05:45:12 +02:00
*
2015-05-09 16:33:12 +02:00
* @ param null | Member $member
2015-04-09 05:45:12 +02:00
*
2015-05-09 16:33:12 +02:00
* @ return bool
2015-04-09 05:45:12 +02:00
*/
2015-05-09 16:33:12 +02:00
public function isAuthor ( $member = null ) {
if ( ! $member || ! $member -> exists ()) {
return false ;
}
2015-04-09 05:45:12 +02:00
2015-05-09 16:33:12 +02:00
$list = $this -> Authors ();
2015-04-09 05:45:12 +02:00
2015-05-09 16:33:12 +02:00
if ( $list instanceof UnsavedRelationList ) {
return in_array ( $member -> ID , $list -> getIDList ());
}
2015-04-09 05:45:12 +02:00
2015-05-09 16:33:12 +02:00
return $list -> byID ( $member -> ID ) !== null ;
}
2013-08-04 18:38:26 +02:00
2015-05-09 16:33:12 +02:00
/**
* { @ inheritdoc }
*/
2013-07-21 12:23:35 +02:00
public function getCMSFields () {
2014-12-11 11:42:36 +01:00
Requirements :: css ( BLOGGER_DIR . '/css/cms.css' );
2015-04-23 04:27:30 +02:00
Requirements :: javascript ( BLOGGER_DIR . '/js/cms.js' );
2013-08-04 18:38:26 +02:00
2014-07-27 07:34:43 +02:00
$self =& $this ;
2015-02-01 10:24:37 +01:00
2015-05-09 16:33:12 +02:00
$this -> beforeUpdateCMSFields ( function ( $fields ) use ( $self ) {
2015-05-12 07:46:19 +02:00
$uploadField = UploadField :: create ( 'FeaturedImage' , _t ( 'BlogPost.FeaturedImage' , 'Featured Image' ));
$uploadField -> getValidator () -> setAllowedExtensions ( array ( 'jpg' , 'jpeg' , 'png' , 'gif' ));
/**
* @ var FieldList $fields
*/
2015-05-18 00:55:18 +02:00
$fields -> insertAfter ( $uploadField , 'Content' );
2015-05-12 07:46:19 +02:00
2015-05-09 16:33:12 +02:00
$summary = HtmlEditorField :: create ( 'Summary' , false );
$summary -> setRows ( 5 );
$summary -> setDescription ( _t (
'BlogPost.SUMMARY_DESCRIPTION' ,
'If no summary is specified the first 30 words will be used.'
));
2015-04-13 07:11:34 +02:00
$summaryHolder = ToggleCompositeField :: create (
'CustomSummary' ,
_t ( 'BlogPost.CUSTOMSUMMARY' , 'Add A Custom Summary' ),
array (
2015-05-09 16:33:12 +02:00
$summary ,
2015-04-13 07:11:34 +02:00
)
2015-05-09 16:33:12 +02:00
);
$summaryHolder -> setHeadingLevel ( 4 );
$summaryHolder -> addExtraClass ( 'custom-summary' );
2015-05-12 07:46:19 +02:00
$fields -> insertAfter ( $summaryHolder , 'FeaturedImage' );
2015-02-01 10:24:37 +01:00
2015-02-02 11:32:40 +01:00
$fields -> push ( HiddenField :: create ( 'MenuTitle' ));
2015-02-01 10:24:37 +01:00
$urlSegment = $fields -> dataFieldByName ( 'URLSegment' );
2015-03-04 23:20:47 +01:00
$urlSegment -> setURLPrefix ( $self -> Parent () -> RelativeLink ());
2015-02-02 11:32:40 +01:00
2015-02-01 10:24:37 +01:00
$fields -> removeFieldsFromTab ( 'Root.Main' , array (
'MenuTitle' ,
'URLSegment' ,
));
2015-02-02 11:32:40 +01:00
2015-03-06 03:52:07 +01:00
$authorField = ListboxField :: create (
2015-05-09 16:33:12 +02:00
'Authors' ,
_t ( 'BlogPost.Authors' , 'Authors' ),
2015-03-06 03:52:07 +01:00
Member :: get () -> map () -> toArray ()
) -> setMultiple ( true );
$authorNames = TextField :: create (
2015-05-09 16:33:12 +02:00
'AuthorNames' ,
_t ( 'BlogPost.AdditionalCredits' , 'Additional Credits' ),
2015-03-06 03:52:07 +01:00
null ,
1024
2015-05-09 16:33:12 +02:00
);
$authorNames -> setDescription ( 'If some authors of this post don\'t have CMS access, enter their name(s) here. You can separate multiple names with a comma.' );
2015-03-16 00:26:04 +01:00
if ( ! $self -> canEditAuthors ()) {
2015-03-06 03:52:07 +01:00
$authorField = $authorField -> performDisabledTransformation ();
$authorNames = $authorNames -> performDisabledTransformation ();
}
2015-05-09 16:33:12 +02:00
$publishDate = DatetimeField :: create ( 'PublishDate' , _t ( 'BlogPost.PublishDate' , 'Publish Date' ));
$publishDate -> getDateField () -> setConfig ( 'showcalendar' , true );
2015-06-04 03:46:59 +02:00
// Get categories and tags
$parent = $self -> Parent ();
$categories = $parent instanceof Blog
? $parent -> Categories ()
: BlogCategory :: get ();
$tags = $parent instanceof Blog
? $parent -> Tags ()
: BlogTag :: get ();
2015-02-01 10:24:37 +01:00
$options = BlogAdminSidebar :: create (
2015-05-09 16:33:12 +02:00
$publishDate ,
2015-02-02 11:32:40 +01:00
$urlSegment ,
2015-04-08 01:48:00 +02:00
TagField :: create (
'Categories' ,
_t ( 'BlogPost.Categories' , 'Categories' ),
2015-06-04 03:46:59 +02:00
$categories ,
2015-05-15 13:17:58 +02:00
$self -> Categories ()
)
-> setCanCreate ( $self -> canCreateCategories ())
-> setShouldLazyLoad ( true ),
2015-04-08 01:48:00 +02:00
TagField :: create (
'Tags' ,
_t ( 'BlogPost.Tags' , 'Tags' ),
2015-06-04 03:46:59 +02:00
$tags ,
2015-05-15 13:17:58 +02:00
$self -> Tags ()
)
-> setCanCreate ( $self -> canCreateTags ())
-> setShouldLazyLoad ( true ),
2015-03-06 03:52:07 +01:00
$authorField ,
$authorNames
2015-02-01 10:24:37 +01:00
) -> setTitle ( 'Post Options' );
2015-02-02 11:32:40 +01:00
$fields -> insertBefore ( $options , 'Root' );
2014-07-27 07:34:43 +02:00
});
2013-08-04 18:38:26 +02:00
2014-07-27 07:34:43 +02:00
$fields = parent :: getCMSFields ();
2014-12-11 11:42:36 +01:00
2015-02-02 11:32:40 +01:00
$fields -> fieldByName ( 'Root' ) -> setTemplate ( 'TabSet_holder' );
2013-07-21 12:23:35 +02:00
return $fields ;
}
2015-04-08 01:48:00 +02:00
/**
2015-05-09 16:33:12 +02:00
* Determine if this user can edit the authors list .
2015-04-08 01:48:00 +02:00
*
2015-05-09 16:33:12 +02:00
* @ param null | int | Member $member
2015-04-08 01:48:00 +02:00
*
* @ return bool
*/
2015-05-09 16:33:12 +02:00
public function canEditAuthors ( $member = null ) {
$member = $this -> getMember ( $member );
$extended = $this -> extendedCan ( 'canEditAuthors' , $member );
if ( $extended !== null ) {
return $extended ;
}
2015-04-08 01:48:00 +02:00
$parent = $this -> Parent ();
2015-05-09 16:33:12 +02:00
if ( $parent instanceof Blog && $parent -> exists ()) {
if ( $parent -> isEditor ( $member )) {
return true ;
}
2015-04-08 01:48:00 +02:00
2015-05-09 16:33:12 +02:00
if ( $parent -> isWriter ( $member ) && $this -> isAuthor ( $member )) {
return true ;
}
}
2015-04-08 01:48:00 +02:00
2015-05-09 16:33:12 +02:00
return Permission :: checkMember ( $member , Blog :: MANAGE_USERS );
2015-04-08 01:48:00 +02:00
}
/**
2015-05-09 16:33:12 +02:00
* @ param null | int | Member $member
*
* @ return null | Member
*/
protected function getMember ( $member = null ) {
if ( ! $member ) {
$member = Member :: currentUser ();
}
2015-06-04 01:50:25 +02:00
if ( is_numeric ( $member )) {
2015-05-09 16:33:12 +02:00
$member = Member :: get () -> byID ( $member );
}
return $member ;
}
/**
* Determine whether user can create new categories .
2015-04-08 01:48:00 +02:00
*
2015-05-09 16:33:12 +02:00
* @ param null | int | Member $member
2015-04-08 01:48:00 +02:00
*
* @ return bool
*/
2015-05-09 16:33:12 +02:00
public function canCreateCategories ( $member = null ) {
2015-06-04 01:50:25 +02:00
$member = $this -> getMember ( $member );
2015-04-08 01:48:00 +02:00
$parent = $this -> Parent ();
2015-05-09 16:33:12 +02:00
if ( ! $parent || ! $parent -> exists () || ! ( $parent instanceof Blog )) {
return false ;
}
2015-04-08 01:48:00 +02:00
2015-05-09 16:33:12 +02:00
if ( $parent -> isEditor ( $member )) {
return true ;
}
2015-04-08 01:48:00 +02:00
return Permission :: checkMember ( $member , 'ADMIN' );
}
2015-05-09 16:33:12 +02:00
/**
* Determine whether user can create new tags .
*
* @ param null | int | Member $member
*
* @ return bool
*/
public function canCreateTags ( $member = null ) {
2015-06-04 01:50:25 +02:00
$member = $this -> getMember ( $member );
2015-03-06 03:52:07 +01:00
2015-05-09 16:33:12 +02:00
$parent = $this -> Parent ();
2015-03-06 03:52:07 +01:00
2015-05-09 16:33:12 +02:00
if ( ! $parent || ! $parent -> exists () || ! ( $parent instanceof Blog )) {
return false ;
2015-03-06 03:52:07 +01:00
}
2013-07-21 12:23:35 +02:00
2015-05-09 16:33:12 +02:00
if ( $parent -> isEditor ( $member )) {
return true ;
}
2013-07-21 12:23:35 +02:00
2015-05-09 16:33:12 +02:00
if ( $parent -> isWriter ( $member )) {
return true ;
}
return Permission :: checkMember ( $member , 'ADMIN' );
}
2013-07-21 12:23:35 +02:00
2014-06-12 19:55:40 +02:00
/**
2015-05-09 16:33:12 +02:00
* { @ inheritdoc }
*
* Update the PublishDate to now , if being published for the first time , and the date hasn ' t
* been set to the future .
*/
2014-06-12 19:55:40 +02:00
public function onBeforePublish () {
2015-05-09 16:33:12 +02:00
/**
* @ var SS_Datetime $publishDate
*/
$publishDate = $this -> dbObject ( 'PublishDate' );
if ( $publishDate -> InPast () && ! $this -> isPublished ()) {
2015-03-06 03:52:07 +01:00
$this -> PublishDate = SS_Datetime :: now () -> getValue ();
2014-06-13 12:45:28 +02:00
$this -> write ();
2014-06-12 19:55:40 +02:00
}
}
2015-04-08 01:48:00 +02:00
/**
2015-05-09 16:33:12 +02:00
* { @ inheritdoc }
2015-04-08 01:48:00 +02:00
*
2015-05-09 16:33:12 +02:00
* Sets blog relationship on all categories and tags assigned to this post .
2015-04-08 01:48:00 +02:00
*/
2015-05-09 16:33:12 +02:00
public function onAfterWrite () {
2015-04-08 01:48:00 +02:00
parent :: onAfterWrite ();
2015-05-09 16:33:12 +02:00
foreach ( $this -> Categories () as $category ) {
/**
* @ var BlogCategory $category
*/
2015-04-08 01:48:00 +02:00
$category -> BlogID = $this -> ParentID ;
$category -> write ();
}
2014-06-12 19:55:40 +02:00
2015-05-09 16:33:12 +02:00
foreach ( $this -> Tags () as $tag ) {
/**
* @ var BlogTag $tag
*/
2015-04-08 01:48:00 +02:00
$tag -> BlogID = $this -> ParentID ;
$tag -> write ();
}
}
2014-06-12 19:55:40 +02:00
2013-07-21 12:23:35 +02:00
/**
2015-05-09 16:33:12 +02:00
* { @ inheritdoc }
*/
2013-07-21 12:23:35 +02:00
public function canView ( $member = null ) {
2015-07-08 07:42:00 +02:00
$member = $this -> getMember ( $member );
2015-05-09 16:33:12 +02:00
if ( ! parent :: canView ( $member )) {
return false ;
}
2015-07-08 07:42:00 +02:00
/**
* @ var SS_Datetime $publishDate
*/
$publishDate = $this -> dbObject ( 'PublishDate' );
2013-07-21 12:23:35 +02:00
2015-07-08 07:42:00 +02:00
// Show past posts
if ( ! $publishDate -> exists () || ! $publishDate -> InFuture ()) {
return true ;
2013-07-21 12:23:35 +02:00
}
2015-05-09 16:33:12 +02:00
2015-07-08 07:42:00 +02:00
// Anyone that can edit this page can view it
return $this -> canEdit ( $member );
2013-07-21 12:23:35 +02:00
}
2015-05-09 16:33:12 +02:00
/**
* { @ inheritdoc }
*/
public function canPublish ( $member = null ) {
$member = $this -> getMember ( $member );
2015-03-06 03:52:07 +01:00
2015-05-09 16:33:12 +02:00
if ( Permission :: checkMember ( $member , 'ADMIN' )) {
return true ;
}
$extended = $this -> extendedCan ( 'canPublish' , $member );
if ( $extended !== null ) {
return $extended ;
}
2015-03-06 03:52:07 +01:00
$parent = $this -> Parent ();
2015-05-09 16:33:12 +02:00
if ( $parent instanceof Blog && $parent -> exists ()) {
if ( $parent -> isEditor ( $member )) {
return true ;
}
2015-03-06 03:52:07 +01:00
2015-05-09 16:33:12 +02:00
if ( $parent -> isWriter ( $member ) && $this -> isAuthor ( $member )) {
return true ;
}
2015-03-06 03:52:07 +01:00
2015-05-09 16:33:12 +02:00
if ( $parent -> isContributor ( $member )) {
return parent :: canEdit ( $member );
}
}
return $this -> canEdit ( $member );
2015-03-06 03:52:07 +01:00
}
/**
2015-05-09 16:33:12 +02:00
* { @ inheritdoc }
2015-03-06 03:52:07 +01:00
*/
2015-05-09 16:33:12 +02:00
public function canEdit ( $member = null ) {
$member = $this -> getMember ( $member );
2015-03-06 03:52:07 +01:00
2015-05-09 16:33:12 +02:00
if ( parent :: canEdit ( $member )) {
return true ;
}
2015-03-06 03:52:07 +01:00
$parent = $this -> Parent ();
2015-05-09 16:33:12 +02:00
if ( ! $parent || ! $parent -> exists () || ! ( $parent instanceof Blog )) {
return false ;
2015-03-06 03:52:07 +01:00
}
2015-05-09 16:33:12 +02:00
if ( $parent -> isEditor ( $member )) {
return true ;
}
2015-03-06 03:52:07 +01:00
2015-05-09 16:33:12 +02:00
if ( ! $parent -> isWriter ( $member ) && ! $parent -> isContributor ( $member )) {
return false ;
2015-03-06 03:52:07 +01:00
}
2015-05-09 16:33:12 +02:00
return $this -> isAuthor ( $member );
2015-03-06 03:52:07 +01:00
}
2013-08-04 18:38:26 +02:00
/**
* Returns the post excerpt .
*
2015-05-09 16:33:12 +02:00
* @ param int $wordsToDisplay
2013-08-04 18:38:26 +02:00
*
2015-04-13 07:11:34 +02:00
* @ return string
2015-05-09 16:33:12 +02:00
*/
public function Excerpt ( $wordsToDisplay = 30 ) {
/**
* @ var Text $content
*/
$content = $this -> dbObject ( 'Content' );
2013-08-04 18:38:26 +02:00
2015-05-14 02:11:09 +02:00
return $content -> Summary ( $wordsToDisplay );
2015-05-09 16:33:12 +02:00
}
2013-08-04 18:38:26 +02:00
/**
* Returns a monthly archive link for the current blog post .
*
2015-05-09 16:33:12 +02:00
* @ param string $type
2013-08-11 00:34:46 +02:00
*
2015-05-09 16:33:12 +02:00
* @ return string
*/
public function getMonthlyArchiveLink ( $type = 'day' ) {
/**
* @ var SS_Datetime $date
*/
$date = $this -> dbObject ( 'PublishDate' );
if ( $type != 'year' ) {
if ( $type == 'day' ) {
2014-02-16 06:19:26 +01:00
return Controller :: join_links (
2015-05-09 16:33:12 +02:00
$this -> Parent () -> Link ( 'archive' ),
$date -> format ( 'Y' ),
$date -> format ( 'm' ),
$date -> format ( 'd' )
2014-02-16 06:19:26 +01:00
);
2013-08-11 00:34:46 +02:00
}
2013-08-04 18:38:26 +02:00
2015-05-09 16:33:12 +02:00
return Controller :: join_links ( $this -> Parent () -> Link ( 'archive' ), $date -> format ( 'Y' ), $date -> format ( 'm' ));
}
2013-08-04 18:38:26 +02:00
2015-05-09 16:33:12 +02:00
return Controller :: join_links ( $this -> Parent () -> Link ( 'archive' ), $date -> format ( 'Y' ));
}
2013-08-04 18:38:26 +02:00
/**
* Returns a yearly archive link for the current blog post .
*
2015-05-09 16:33:12 +02:00
* @ return string
*/
2013-08-04 18:38:26 +02:00
public function getYearlyArchiveLink () {
2015-05-09 16:33:12 +02:00
/**
* @ var SS_Datetime $date
*/
$date = $this -> dbObject ( 'PublishDate' );
return Controller :: join_links ( $this -> Parent () -> Link ( 'archive' ), $date -> format ( 'Y' ));
2013-08-04 18:38:26 +02:00
}
2015-04-01 03:52:46 +02:00
/**
* Resolves static and dynamic authors linked to this post .
*
* @ return ArrayList
*/
2015-05-09 16:33:12 +02:00
public function getCredits () {
2015-04-01 03:52:46 +02:00
$list = new ArrayList ();
$list -> merge ( $this -> getDynamicCredits ());
$list -> merge ( $this -> getStaticCredits ());
return $list -> sort ( 'Name' );
}
/**
* Resolves dynamic authors linked to this post .
*
* @ return ArrayList
*/
2015-05-09 16:33:12 +02:00
protected function getDynamicCredits () {
2015-04-01 03:52:46 +02:00
$items = new ArrayList ();
foreach ( $this -> Authors () as $author ) {
$items -> push (
$author -> customise ( array (
'URL' => $this -> Parent -> ProfileLink ( $author -> URLSegment ),
))
);
}
2014-06-11 11:20:20 +02:00
2015-04-01 03:52:46 +02:00
return $items ;
}
/**
* Resolves static authors linked to this post .
*
* @ return ArrayList
*/
2015-05-09 16:33:12 +02:00
protected function getStaticCredits () {
2015-04-01 03:52:46 +02:00
$items = new ArrayList ();
$authors = array_filter ( preg_split ( '/\s*,\s*/' , $this -> AuthorNames ));
2015-05-09 16:33:12 +02:00
foreach ( $authors as $author ) {
2015-04-01 03:52:46 +02:00
$item = new ArrayData ( array (
'Name' => $author ,
));
$items -> push ( $item );
}
return $items ;
}
2014-06-11 11:20:20 +02:00
/**
2015-05-09 16:33:12 +02:00
* Sets the label for BlogPost . Title to 'Post Title' ( Rather than 'Page name' ) .
*
* @ param bool $includeRelations
2014-06-11 11:20:20 +02:00
*
* @ return array
2015-05-09 16:33:12 +02:00
*/
public function fieldLabels ( $includeRelations = true ) {
$labels = parent :: fieldLabels ( $includeRelations );
$labels [ 'Title' ] = _t ( 'BlogPost.PageTitleLabel' , " Post Title " );
2014-06-11 11:20:20 +02:00
return $labels ;
}
2015-05-09 16:33:12 +02:00
/**
* { @ inheritdoc }
*/
protected function onBeforeWrite () {
parent :: onBeforeWrite ();
if ( ! $this -> PublishDate ) {
$this -> PublishDate = SS_Datetime :: now () -> getValue ();
}
2013-07-21 12:23:35 +02:00
2015-05-09 16:33:12 +02:00
if ( ! $this -> exists () && ( $member = Member :: currentUser ())) {
$this -> Authors () -> add ( $member );
}
}
}
2013-07-21 12:23:35 +02:00
/**
* @ package silverstripe
* @ subpackage blog
2015-05-09 16:33:12 +02:00
*/
2013-07-21 12:23:35 +02:00
class BlogPost_Controller extends Page_Controller {
2015-05-09 16:33:12 +02:00
2013-08-04 18:38:26 +02:00
}