Fields = array(); $this->GenerateEntries($model, $this->Fields); } private function GenerateEntries($model, &$entries) { foreach($model->Rows as $row) foreach($row->Columns as $column) { $entries[] = $this->GetEntryFromField($column->Field); } } private function GetEntryFromField($field) { $entryToCreate = new stdClass(); $entryToCreate->Id = $field->Id; $entryToCreate->Type = $field->Type; $entryToCreate->PriceType = 'none'; $entryToCreate->Price = 0; $entryToCreate->SalePrice = 0; $entryToCreate->Quantity = 1; $entryToCreate->UnitPrice = 0; switch ($field->Type) { case 'radio': case 'checkbox': case 'dropdown': case 'imagepicker': case 'buttonselection': $entryToCreate->SelectedValues = array(); $entryToCreate->SelectedValues[] = new stdClass(); $entryToCreate->SelectedValues[0]->Label = '[Preview]'; $entryToCreate->SelectedValues[0]->PriceType = 'none'; $entryToCreate->SelectedValues[0]->Id = '1'; $entryToCreate->SelectedValues[0]->Selected = true; break; case 'list': $entryToCreate->Value = array(array('[Preview]', '[Preview]')); break; case 'repeater': $entryToCreate->Value = array(); $this->GenerateEntries((object) array('Rows' => $field->RowTemplates), $entryToCreate->Value); break; case 'grouppanel': $entryToCreate->Value = array(); $this->GenerateEntries($field, $entryToCreate->Value); break; case 'daterange': $entryToCreate->StartValue = '[Preview]'; $entryToCreate->EndValue = '[Preview]'; break; default: $entryToCreate->Value = '[Preview]'; break; } return $entryToCreate; } }