/** * @return array */ private function getData() { $delivery = new \core_kernel_classes_Resource($this->params[0]); $resultsService = ResultsService::singleton(); $filter = 'lastSubmitted'; $columns = []; $testtaker = new \tao_models_classes_table_PropertyColumn(new \core_kernel_classes_Property(PROPERTY_RESULT_OF_SUBJECT)); $testTakerColumn[] = $testtaker->toArray(); $cols = array_merge($testTakerColumn, $resultsService->getVariableColumns($delivery, CLASS_OUTCOME_VARIABLE, $filter), $resultsService->getVariableColumns($delivery, CLASS_RESPONSE_VARIABLE, $filter)); $dataProvider = new VariableDataProvider(); foreach ($cols as $col) { $column = \tao_models_classes_table_Column::buildColumnFromArray($col); if (!is_null($column)) { if ($column instanceof VariableColumn) { $column->setDataProvider($dataProvider); } $columns[] = $column; } } $columns[0]->label = __("Test taker"); $rows = $resultsService->getResultsByDelivery($delivery, $columns, $filter); $columnNames = array_reduce($columns, function ($carry, $item) { $carry[] = $item->label; return $carry; }); $result = []; foreach ($rows as $row) { $rowResult = []; foreach ($row['cell'] as $rowKey => $rowVal) { $rowResult[$columnNames[$rowKey]] = $rowVal[0]; } $result[] = $rowResult; } //If there are no executions yet, the file is exported but contains only the header if (empty($result)) { $result = [array_fill_keys($columnNames, '')]; } return $result; }
protected function getColumns($identifier) { if (!$this->hasRequestParameter($identifier)) { throw new common_Exception('Missing parameter "' . $identifier . '" for getColumns()'); } $columns = array(); foreach ($this->getRequestParameter($identifier) as $array) { $column = tao_models_classes_table_Column::buildColumnFromArray($array); if (!is_null($column)) { $columns[] = $column; } } return $columns; }