protected function registerRecordImpl(array &$records = NULL, $record) { parent::registerRecordImpl($records, $record); $recordKey = NULL; foreach ($this->keyColumnNames as $keyColumnName) { $recordKey[] = isset($record[$keyColumnName]) ? $record[$keyColumnName] : NULL; } $key = ArrayHelper::prepareCompositeKey($recordKey); if (isset($records[$key])) { if ($this->isColumnValueUnique) { throw new IllegalArgumentException(t( 'Found several records for the key: %key', array('%key' => ArrayHelper::serialize($recordKey, ', ', TRUE, TRUE)))); } $records[$key][] = $record; } else { if ($this->isColumnValueUnique) { $records[$key] = $record; } else { $records[$key][] = $record; } } return TRUE; }
protected function registerRecordImpl(array &$records = NULL, $record) { parent::registerRecordImpl($records, $record); $value = NULL; if (isset($this->columnName)) { $value = isset($record[$this->columnName]) ? $record[$this->columnName] : NULL; } else { $count = count($record); switch ($count) { case 0: // it is the same as NULL break; case 1: $value = reset($record); break; default: throw new IllegalArgumentException(t('Only one column is supported by this result formatter')); } } if (isset($value)) { if ($this->storage == self::STORAGE__KEY) { $records[$value] = TRUE; } elseif ($this->storage == self::STORAGE__VALUE) { $records[] = $value; } } return TRUE; }
protected function registerRecordImpl(array &$records = NULL, $record) { parent::registerRecordImpl($records, $record); if (isset($records)) { // trying to find a record which could be reused foreach ($records as &$existingRecord) { $isRecordMatched = TRUE; foreach ($this->formattedGroupByColumnNames as $groupByColumnName) { if (isset($existingRecord[$groupByColumnName])) { if (isset($record[$groupByColumnName])) { if ($existingRecord[$groupByColumnName] !== $record[$groupByColumnName]) { $isRecordMatched = FALSE; } } else { $isRecordMatched = FALSE; } } elseif (isset($record[$groupByColumnName])) { $isRecordMatched = FALSE; } if (!$isRecordMatched) { break; } } if ($isRecordMatched) { $this->setRecordSubjectColumnValues($existingRecord, $record); return TRUE; } } unset($existingRecord); } // preparing new record $newRecord = NULL; foreach ($record as $name => $value) { if ($name === $this->formattedEnumerationColumnName) { continue; } if (isset($this->formattedSubjectColumnNames)) { if (in_array($name, $this->formattedSubjectColumnNames)) { continue; } } elseif (!in_array($name, $this->formattedGroupByColumnNames)) { continue; } $newRecord[$name] = $value; } $this->setRecordSubjectColumnValues($newRecord, $record); $records[] = $newRecord; return TRUE; }
protected function registerRecordImpl(array &$records = NULL, $record) { parent::registerRecordImpl($records, $record); $formattedRecord = NULL; if (isset($this->columnNames)) { // using predefined column names foreach ($this->columnNames as $index => $columnName) { $formattedRecord[$index] = isset($record[$columnName]) ? $record[$columnName] : NULL; } } else { // checking if we need to add additional columns foreach ($record as $columnName => $columnValue) { if (!isset($this->assembledColumnNames[$columnName])) { $index = count($this->assembledColumnNames); // registering new columns $this->assembledColumnNames[$columnName] = $index; // adding NULL values for the column for previous records if (isset($records)) { foreach ($records as &$record) { $record[$index] = NULL; } unset($record); } } } foreach ($this->assembledColumnNames as $columnName => $index) { $formattedRecord[$index] = isset($record[$columnName]) ? $record[$columnName] : NULL; } } $records[] = $formattedRecord; return TRUE; }