gsOnExportValues
Triggered after retrieving data. Here we can modify the data, perform additional filtering, or add new data.
Available variables:
Name | Description |
---|---|
values | Current values as an array. |
object | Export object |
properties | Export properties |
modUser
Add the user ID to the username value.
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'modUser') {
$values = array_map(function($value) {
$value['username'] = "{$value['username']} ({$value['id']})";
return $value;
}, $values);
}
$modx->event->params['values'] = $values;
}
before:
text
Array
(
[id] => 1
[username] => boshnik
[email] => email@gmail.com
)
after:
text
Array
(
[id] => 1
[username] => boshnik (1)
[email] => email@gmail.com
)
modResource
Get the template name instead of its ID.
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'modResource') {
$values = array_map(function($value) use ($modx) {
$template = $modx->getObject(modTemplate::class, $value['template']);
$value['template'] = $template ? $template->templatename : $value['template'];
return $value;
}, $values);
}
$modx->event->params['values'] = $values;
}
If there are many resources, we can optimize the code a bit:
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'modResource') {
// Get all templates
$rows = $modx->getIterator(modTemplate::class);
// Store the templates in an array.
$templates = [];
foreach ($rows as $row) {
$templates[$row->id] = $row->templatename;
}
$values = array_map(function($value) use ($templates) {
$value['template'] = $templates[$value['template']] ?? $value['template'];
return $value;
}, $values);
}
$modx->event->params['values'] = $values;
}
FormIt
Export forms that were submitted after a specific date (07.07.2024).
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'FormIt') {
$time = strtotime('07.07.2024');
$values = array_filter($values, function($value) use ($time) {
return $value['date'] > $time;
});
}
$modx->event->params['values'] = $values;
}
msCategory
Get the parent pagetitle instead of its ID.
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'msCategory') {
$values = array_map(function($value) use ($modx) {
$parent = $modx->getObject(modResource::class, $value['parent']);
$value['parent'] = $parent ? $parent->pagetitle : $value['parent'];
return $value;
}, $values);
}
$modx->event->params['values'] = $values;
}
msProduct
Add 10% to the price, and save the current price as the old price.
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'msProduct') {
$values = array_map(function($value) {
if (isset($value['old_price']) && !empty($value['price'])) {
$value['old_price'] = $value['price'];
}
if (!empty($value['price'])) {
$value['price'] = $value['price'] * 1.1;
}
return $value;
}, $values);
}
$modx->event->params['values'] = $values;
}
msVendor
Add a default country if the manufacturer does not specify one.
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'msVendor') {
$values = array_map(function($value) {
if (empty($value['country'])) {
$value['country'] = 'China';
}
return $value;
}, $values);
}
$modx->event->params['values'] = $values;
}
msOrder
If the order amount is greater than 10,000, add the comment: Urgent order.
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'msOrder') {
$values = array_map(function($value) {
if (isset($value['cost']) && isset($value['order_comment'])) {
if ($value['cost'] > 10000) {
$value['order_comment'] = 'Urgent order';
}
}
return $value;
}, $values);
}
$modx->event->params['values'] = $values;
}
msOptionsPrice2
If the price is greater than 500, double it.
php
if ($modx->event->name === 'gsOnExportValues') {
if ($object->model_class === 'msOptionsPrice2') {
$values = array_map(function($value) {
if (isset($value['price'])) {
if ($value['price'] > 500) {
$value['price'] = $value['price'] * 2;
}
}
return $value;
}, $values);
}
$modx->event->params['values'] = $values;
}