'Tender', ); static $many_many = array( 'Subscribers' => 'Member' ); static $singular_name = 'Tender Category'; static $plural_name = 'Tender Categories'; public function getCMSFields() { $fields = parent::getCMSFields(); $TendersTable = new ComplexTableField( $this, 'Tenders', 'Tender', null, null, "Tender.TenderCategoryID = {$this->ID}" ); $fields->addFieldToTab('Root.Content.Tenders', $TendersTable); return $fields; } public function ActiveTenders() { return $this->Tenders( '(ExpiryDate IS NULL OR ExpiryDate > DATE(NOW()))' ); } public function MemberIsSubscribed($member = null){ if(!$member) $member = Member::CurrentMember(); $idList = $this->Subscribers()->getIdList(); return in_array($member->ID, $idList); } } class TenderCategory_Controller extends Page_Controller { public function init() { parent::init(); RSSFeed::linkToFeed($this->Link() . 'rss'); } public function CurrentTender() { if(!isset($this->urlParams['ID'])) return false; return DataObject::get_by_id( 'Tender', (int)$this->urlParams['ID'] ); } public function Form() { $fields = singleton('Tender')->getCMSFields(); $fields->removeByName('Autor'); $actions = new FieldSet( new FormAction('doSubmitTender', 'Submit') ); $validator = new RequiredFields( 'Title', 'Description' ); $form = new Form( $this, 'Form', $fields, $actions, $validator ); return $form; } public function doSubmitTender($data, $form) { $Tender = new Tender(); $form->saveInto($Tender); $Tender->TenderCategoryID = $this->dataRecord->ID; $Tender->write(); $form->sessionMessage( 'Form successfully submitted', 'good' ); Director::redirectBack(); return; } public function subscribe() { $member = Member::CurrentMember(); if(!$member) return false; $this->dataRecord->Subscribers()->add($member); Director::redirectBack(); return; } function unsubscribe() { $member = Member::CurrentMember(); if(!$member) return false; $this->dataRecord->Subscribers()->remove($member); Director::redirectBack(); return; } public function rss() { $feed = new RSSFeed( $this->dataRecord->Tenders(), $this->Link() . 'rss', "Tenders in {$this->dataRecord->Title}", "New Tender Postings for SilverStripe Developers", 'Title', 'Description' ); return $feed->outputToBrowser(); } } ?>