2007-07-19 12:40:05 +02:00
< ? php
2008-02-25 03:10:37 +01:00
/**
* Base class for the small reports that appear in the left hand site of the Site Content section of the CMS .
* Create subclasses of this class to build new reports .
* @ package cms
* @ subpackage content
*/
2007-07-19 12:40:05 +02:00
abstract class SideReport extends Object {
abstract function records ();
abstract function fieldsToShow ();
abstract function title ();
function getHTML () {
$records = $this -> records ();
$fieldsToShow = $this -> fieldsToShow ();
if ( $records ) {
$result = " <ul class= \" $this->class\ " > \n " ;
foreach ( $records as $record ) {
$result .= " <li> \n " ;
2008-02-25 03:10:37 +01:00
foreach ( $fieldsToShow as $fieldTitle => $fieldInfo ) {
if ( isset ( $fieldInfo [ 'source' ])) {
$fieldSource = $fieldInfo [ 'source' ];
// Legacy format for the input data
} else {
$fieldSource = $fieldInfo ;
$fieldInfo = array (
'link' => true ,
'newline' => false ,
);
}
2007-07-19 12:40:05 +02:00
$fieldName = ereg_replace ( '[^A-Za-z0-9]+' , '' , $fieldTitle );
if ( is_string ( $fieldSource )) {
2008-03-11 02:20:37 +01:00
$val = Convert :: raw2xml ( $record -> $fieldSource );
2007-07-19 12:40:05 +02:00
} else {
$val = $record -> val ( $fieldSource [ 0 ], $fieldSource [ 1 ]);
}
2008-02-25 03:10:37 +01:00
if ( isset ( $fieldInfo [ 'newline' ]) && $fieldInfo [ 'newline' ]) $result .= " <br> " ;
if ( isset ( $fieldInfo [ 'link' ]) && $fieldInfo [ 'link' ]) {
$link = ( $fieldInfo [ 'link' ] === true ) ? " admin/show/ $record->ID " : $fieldInfo [ 'link' ];
$result .= " <a class= \" $fieldName\ " href = \ " $link\ " > $val </ a > " ;
} else {
$result .= " <span class= \" $fieldName\ " > $val </ span > " ;
}
2007-07-19 12:40:05 +02:00
}
$result .= " \n </li> \n " ;
}
$result .= " </ul> \n " ;
} else {
2007-09-16 18:33:05 +02:00
$result = sprintf ( _t ( 'SideReport.REPEMPTY' , 'The %s report is empty.' , PR_MEDIUM , '%s is a report title' ), $this -> title ());
2007-07-19 12:40:05 +02:00
}
return $result ;
}
}
2008-02-25 03:10:37 +01:00
/**
* Content side - report listing empty pages
* @ package cms
* @ subpackage content
*/
2007-07-19 12:40:05 +02:00
class SideReport_EmptyPages extends SideReport {
function title () {
2007-09-16 18:33:05 +02:00
return _t ( 'SideReport.EMPTYPAGES' , " Empty pages " );
2007-07-19 12:40:05 +02:00
}
function records () {
2008-11-24 10:30:41 +01:00
return DataObject :: get ( " SiteTree " , " \" Content \" = '' OR \" Content \" IS NULL OR \" Content \" LIKE '<p></p>' OR \" Content \" LIKE '<p> </p>' " , '"Title"' );
2007-07-19 12:40:05 +02:00
}
function fieldsToShow () {
return array (
" Title " => array ( " NestedTitle " , array ( " 2 " )),
);
}
}
2008-02-25 03:10:37 +01:00
/**
* Content side - report listing recently editing pages .
* @ package cms
* @ subpackage content
*/
2007-07-19 12:40:05 +02:00
class SideReport_RecentlyEdited extends SideReport {
function title () {
2007-09-16 18:33:05 +02:00
return _t ( 'SideReport.LAST2WEEKS' , " Pages edited in the last 2 weeks " );
2007-07-19 12:40:05 +02:00
}
function records () {
2008-11-24 10:30:41 +01:00
return DataObject :: get ( " SiteTree " , " \" SiteTree \" . \" LastEdited \" > NOW() - INTERVAL 14 DAY " , " \" SiteTree \" . \" LastEdited \" DESC " );
2007-07-19 12:40:05 +02:00
}
function fieldsToShow () {
return array (
" Title " => array ( " NestedTitle " , array ( " 2 " )),
);
}
}
2008-02-25 03:10:37 +01:00
class SideReport_ToDo extends SideReport {
function title () {
return _t ( 'SideReport.TODO' , " To do " );
}
function records () {
2008-11-24 10:30:41 +01:00
return DataObject :: get ( " SiteTree " , " \" SiteTree \" . \" ToDo \" IS NOT NULL AND \" SiteTree \" . \" ToDo \" <> '' " , " \" SiteTree \" . \" LastEdited \" DESC " );
2008-02-25 03:10:37 +01:00
}
function fieldsToShow () {
return array (
" Title " => array (
" source " => array ( " NestedTitle " , array ( " 2 " )),
" link " => true ,
),
" ToDo " => array (
" source " => " ToDo " ,
" newline " => true ,
),
);
}
}
2008-03-11 02:20:37 +01:00
?>