I've created a table for Book Excerpts on my site using two classes. BookExcerpt and BookExcerptPage. They are very simple classes. However, now I want to ensure that every 14 days a new excerpt will be listed in the content area of my site. So I added a NextChangeDate field to my page so that every time the page is accessed, the page will check today's date and if it is equal to the NextChangeDate, the next article will be displayed. For this to happen, I need to update the change date field by adding 14 days to it. That shouldn't be a problem. My problem right now is how to query the excerpt table by ID and when there are no further records grab the first record in the table and start the article loop over. Any thoughts on how to do that would be great. I'm a little stumped on that part.
I've enclosed my BookExcerpt classes in case it is easier to respond by looking at the classes.
<?php
class BookExcerpt extends DataObject {
static $db = array(
'Sequence' => 'Int',
'Pages' => 'Text',
'Title' => 'Text',
'Quote' => 'Text',
'Excerpt' => 'Text'
);
// Each excerpt exists in one and only one category.
static $has_one = array(
'BookExcerptPage' => 'BookExcerptPage'
);
static $singular_name = 'Book Excerpt';
static $plural_name = 'Book Excerpts';
function getCMSFields() {
$fields = new FieldSet(
new NumericField('Sequence', 'Display Sequence'),
new TextField('Pages', 'Quoted From Page(s)'),
new TextField('Title', 'Excerpt Title'),
new TextField('Quote', 'Chapter Quote'),
new TextareaField('Excerpt', 'Book Excerpt')
);
return $fields;
}
}
?>
<?php
class BookExcerptPage extends SendPage {
//Each BookExcerpt can have multiple excerpts.
static $has_many = array(
'BookExcerpt' => 'BookExcerpt'
);
static $singular_name = 'Book Excerpt Page';
static $plural_name = 'Book Excerpt Pages';
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->renameField("Content", "Common Text - Copyright,Order Link, etc...");
$excerptsTable = new ComplexTableField($this, 'BookExcerpts', 'BookExcerpt', array('Sequence'=>'Display Sequence', 'Title'=>'Title', 'Excerpt'=>'Excerpt'));
$fields->addFieldToTab('Root.Content.BookExcerpts', $excerptsTable);
$fields->addFieldToTab('Root.Content.Main', new NumericField('ChangeFrequency', 'Number of Days to Display Article'), 'Content');
$fields->addFieldToTab('Root.Content.Main', new NumericField('CurrentArticle', 'Article Currently Displayed'), 'Content');
$fields->addFieldToTab('Root.Content.Main', new CalendarDateField('ChangeDate', 'Next Date to Change the Article'), 'Content');
return $fields;
}
}
class BookExcerptPage_Controller extends Page_Controller {
}