public function summaryFields() { $fields = parent::summaryFields(); if (FeatureGroup::get()->exists()) { $fields['Group.Title'] = 'Group'; } return $fields; }
/** * Override features list with grouping. */ function GroupedFeatures($showungrouped = false) { $features = $this->owner->Features()->innerJoin("Feature", "Feature.ID = ProductFeatureValue.FeatureID"); //figure out feature groups $groupids = FeatureGroup::get()->innerJoin("Feature", "Feature.GroupID = FeatureGroup.ID")->innerJoin("ProductFeatureValue", "Feature.ID = ProductFeatureValue.FeatureID")->filter("ProductID", $this->owner->ID)->getIDList(); //pack existin features into seperate lists $result = new ArrayList(); foreach ($groupids as $groupid) { $group = FeatureGroup::get()->byID($groupid); $result->push(new ArrayData(array('Group' => $group, 'Children' => $features->filter("GroupID", $groupid)))); } //ungrouped $ungrouped = $features->filter("GroupID:not", $groupids); if ($ungrouped->exists() && $showungrouped) { $result->push(new ArrayData(array('Children' => $ungrouped))); } return $result; }