Skip to content
This repository has been archived by the owner on May 4, 2021. It is now read-only.

Export - gespeicherte Ids in Labels umwandeln #139

Closed
Tracked by #1036
tbaddade opened this issue Jul 25, 2019 · 5 comments
Closed
Tracked by #1036

Export - gespeicherte Ids in Labels umwandeln #139

tbaddade opened this issue Jul 25, 2019 · 5 comments

Comments

@tbaddade
Copy link
Member

Falls von Interesse:

Folgenden Code in /src/addons/project/boot.phpablegen

if (\rex::isBackend() && rex::getUser()) {
    rex_extension::register('YFORM_DATA_TABLE_EXPORT', function (\rex_extension_point $ep) {

        $dataset = $ep->getSubject();
        if (!count($dataset)) {
            return;
        }

        /** @var rex_yform_manager_table $table */
        $table = $ep->getParam('table');
        $values = [];

        // Values der Relationen holen
        $relationFields = $table->getRelations();
        if (count($relationFields)) {
            foreach ($relationFields as $column => $field) {
                $values[$column] = rex_yform_value_be_manager_relation::getListValues($field->getElement('table'), $field->getElement('field'));
            }
        }

        // Values der Choices holen
        $choiceFields = $table->getValueFields(['type_name' => 'choice']);
        if (count($choiceFields)) {
            foreach ($choiceFields as $column => $field) {
                $values[$column] = rex_yform_value_choice::getListValues([
                    'field' => $column,
                    'choices' => $field->getElement('choices'),
                    'params' => [
                        'field' => $field->toArray(),
                        'fields' => $table->getFields(),
                    ],
                ]);

            }
        }

        foreach ($dataset as $index => $data) {
            // Gespeicherte Ids in Labels umwandeln
            foreach ($data as $column => $value) {
                if (trim($value) != '' && isset($values[$column])) {
                    $ids = explode(',', $value);
                    $labels = [];
                    foreach ($ids as $id) {
                        if (!isset($values[$column][$id])) {
                            continue;
                        }
                        $labels[] = $values[$column][$id];
                    }

                    $dataset[$index][$column] = implode(' :+++: ', $labels);
                }
            }

            /*
             * @Todo
             * wird von YForm noch nicht unterstützt

            // Feldnamen der ersten Zeile mit den eigentlichen Labels ersetzen
            foreach ($table->getFields() as $field) {
                if(isset($data[$field->getName()])) {
                    $keys = array_keys($data);
                    $keys[array_search($field->getName(), $keys)] = $field->getLabel();
                    $data = array_combine($keys, $data);
                }
            }
            $dataset[$index] = $data;
            */

        }

        return $dataset;
    });
}
@tbaddade tbaddade changed the title Export - gespeicherte Ids in Labes umwandeln Export - gespeicherte Ids in Labels umwandeln Jul 25, 2019
@alxndr-w
Copy link
Collaborator

Verstehe den Titel nicht. Wann/wozu ist der Code?

@tbaddade
Copy link
Member Author

Verstehe den Titel nicht. Wann/wozu ist der Code?

Wenn man sich die Datensätze exportiert, dann enthält normalerweise der Export die Ids Komma separiert. Mit denen kann der Kunde nur wenig anfangen. Im Skript werden die Ids nun mit den Labels, die man auch im Editmode oder in der Übersichtsliste sieht, ersetzt.

@alxndr-w
Copy link
Collaborator

Von welchen Feldtypen? Checkbox, choice, be-managet-relation? Alle?

@tbaddade
Copy link
Member Author

Von welchen Feldtypen?

...
// Values der Relationen holen
...
// Values der Choices holen
...

@alxndr-w
Copy link
Collaborator

Kannst du das evtl. in einen PR zur Doku packen? Ist ja auch ein klasse Anwendungsbeispiel für den EP YFORM_DATA_TABLE_EXPORT, auf die EPs in YForm gehen wir hier sowieso nicht genug ein.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants