'Company' ); //sponsor type static $many_many_extraFields = array( 'Companies' => array( 'SponsorshipType' => "Enum('Headline, Premier, Event, Startup, InKind, Spotlight', 'Startup')", 'SubmitPageUrl'=>'Text', 'LogoSize' => "Enum('None, Small, Medium, Large, Big', 'None')", ), ); static $defaults = array( "Title" => "sponsors", "MenuTitle"=>"Sponsors" ); static $allowed_children = "none"; static $can_be_root = false; static $default_parent = "ConferencePage"; function getCMSFields() { $fields = parent::getCMSFields(); //set current page id $_REQUEST["PageId"] = $this->ID; $config = GridFieldConfig_RelationEditor::create(); $config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array( array( 'Name' => 'Name', "DDLSponsorshipType" => "Sponsorship Type", "DDLLogoSize" => "Logo Size", "InputSubmitPageUrl" => "Sponsor Link"), )); $companies = new GridField('Companies','Companies',$this->Companies(),$config); $fields->addFieldToTab('Root.SponsorCompanies',$companies); //remove main content $fields->removeFieldFromTab("Root.Main","Content"); return $fields; } function onAfterWrite() { parent::onAfterWrite(); //update all relationships with sponsors foreach($this->Companies() as $company){ if(isset($_REQUEST["SponsorshipType_{$company->ID}"])){ $type = $_REQUEST["SponsorshipType_{$company->ID}"]; $sql = "UPDATE SponsorsPage_Companies SET SponsorshipType ='{$type}' WHERE CompanyID={$company->ID} AND SponsorsPageID={$this->ID};"; DB::query($sql); } if(isset($_REQUEST["SubmitPageUrl_{$company->ID}"])){ $page_url = $_REQUEST["SubmitPageUrl_{$company->ID}"]; $sql = "UPDATE SponsorsPage_Companies SET SubmitPageUrl ='{$page_url}' WHERE CompanyID={$company->ID} AND SponsorsPageID={$this->ID};"; DB::query($sql); } if(isset($_REQUEST["LogoSize_{$company->ID}"])){ $logo_size = $_REQUEST["LogoSize_{$company->ID}"]; $sql = "UPDATE SponsorsPage_Companies SET LogoSize ='{$logo_size}' WHERE CompanyID={$company->ID} AND SponsorsPageID={$this->ID};"; DB::query($sql); } } } } class SponsorsPage_Controller extends Page_Controller { public function init() { parent::init(); Requirements::css(THEMES_DIR ."/openstack/css/sponsorspage.css"); } private function Sponsors($type){ $page_id = $this->ID; $page = SponsorsPage::get()->byID($page_id); $res = $page->getManyManyComponents("Companies","SponsorshipType='{$type}'","ID"); return $res; } public function StartupSponsors(){ return $this->Sponsors("Startup"); } public function HeadlineSponsors(){ return $this->Sponsors("Headline"); } public function PremierSponsors(){ return $this->Sponsors("Premier"); } public function EventSponsors(){ return $this->Sponsors("Event"); } public function InKindSponsors(){ return $this->Sponsors("InKind"); } public function SpotlightSponsors(){ return $this->Sponsors("Spotlight"); } }