17 use \TYPO3\CMS\Core\Utility\GeneralUtility;
33 public static function read($fileName) {
34 $data = self::parseData(self::readData($fileName));
37 'TYPO3\\CMS\\Core\\Tests\\Functional\\DataHandling\\Framework\\DataSet',
47 protected static function readData($fileName) {
48 if (!file_exists($fileName)) {
49 throw new \RuntimeException(
'File "' . $fileName .
'" does not exist');
53 $fileHandle = fopen($fileName,
'r');
54 while (($values = fgetcsv($fileHandle, 0)) !== FALSE) {
71 protected static function parseData(array $rawData) {
76 foreach ($rawData as $values) {
77 if (!empty($values[0])) {
79 if ($values[0]{0} ===
'#') {
82 $tableName = $values[0];
85 if (!isset(
$data[$tableName])) {
86 $data[$tableName] = array();
88 } elseif (implode(
'', $values) ===
'') {
92 } elseif ($tableName !== NULL && !empty($values[1])) {
94 if (!isset(
$data[$tableName][
'fields'])) {
95 $data[$tableName][
'fields'] = array();
96 foreach ($values as $value) {
100 $data[$tableName][
'fields'][] = $value;
101 $fieldCount = count(
$data[$tableName][
'fields']);
103 if (in_array(
'uid', $values)) {
104 $idIndex = array_search(
'uid', $values);
105 $data[$tableName][
'idIndex'] = $idIndex;
108 if (!isset(
$data[$tableName][
'elements'])) {
109 $data[$tableName][
'elements'] = array();
111 $values = array_slice($values, 0, $fieldCount);
112 foreach ($values as &$value) {
113 if ($value ===
'\\NULL') {
118 $element = array_combine(
$data[$tableName][
'fields'], $values);
119 if ($idIndex !== NULL) {
120 $data[$tableName][
'elements'][$values[$idIndex]] = $element;
122 $data[$tableName][
'elements'][] = $element;
141 return array_keys($this->data);
150 if (isset($this->data[$tableName][
'fields'])) {
151 $fields = $this->data[$tableName][
'fields'];
162 if (isset($this->data[$tableName][
'idIndex'])) {
163 $idIndex = $this->data[$tableName][
'idIndex'];
174 if (isset($this->data[$tableName][
'elements'])) {
175 $elements = $this->data[$tableName][
'elements'];
184 $fileHandle = fopen($fileName,
'w');
186 foreach ($this->data as $tableName => $tableData) {
187 if (empty($tableData[
'fields']) || empty($tableData[
'elements'])) {
191 $fields = $tableData[
'fields'];
192 array_unshift($fields,
'');
194 fputcsv($fileHandle, array($tableName));
195 fputcsv($fileHandle, $fields);
197 foreach ($tableData[
'elements'] as $element) {
198 array_unshift($element,
'');
199 fputcsv($fileHandle, $element);
static makeInstance($className)
static parseData(array $rawData)
static readData($fileName)