pluginDescription->name = 'Export in automations'; $this->pluginDescription->category = 'User management'; $this->pluginDescription->description = '- Export the filtered users in the automations'; } public function onAcymDeclareActions(&$actions) { $actions['export'] = new stdClass(); $actions['export']->name = acym_translation('ACYM_EXPORT_SUBSCRIBERS'); $actions['export']->option = '
'; $fields = acym_getColumns('user'); $fieldClass = new FieldClass(); $customFields = $fieldClass->getAll(); $fields = array_merge($fields, $customFields); $defaultFields = explode(',', $this->config->get('export_fields', 'name,email')); $coreFields = [1, 2, $fieldClass->getLanguageFieldId()]; foreach ($fields as $field) { if (is_object($field)) { $type = 'custom'; $fieldName = $field->name; $fieldValue = $field->id; if ($field->type === 'file' || in_array($field->id, $coreFields)) { continue; } } else { $type = 'core'; $fieldName = $field; $fieldValue = $fieldName; if (in_array($fieldName, ['id', 'automation'])) { continue; } } $checked = in_array($fieldValue, $defaultFields) ? 'checked="checked"' : ''; $actions['export']->option .= '
'; $actions['export']->option .= ''; $actions['export']->option .= ''; $actions['export']->option .= '
'; } $checked = in_array('subscribe_date', $defaultFields) ? 'checked="checked"' : ''; $actions['export']->option .= '
'; $actions['export']->option .= ''; $actions['export']->option .= ''; $actions['export']->option .= '
'; $actions['export']->option .= '
'; $actions['export']->option .= '
'; $actions['export']->option .= '
'.acym_translation('ACYM_SEPARATOR').'
'; $actions['export']->option .= '
'.acym_select( [ 'semicol' => acym_translation('ACYM_SEMICOLON'), 'comma' => acym_translation('ACYM_COMMA'), ], 'acym_action[actions][__and__][export][separator]', $this->config->get('export_separator', 'comma'), ['class' => 'acym__select'] ).'
'; $actions['export']->option .= '
'; $actions['export']->option .= '
'; $actions['export']->option .= '
'.acym_translation('ACYM_ENCODING').'
'; $encodingHelper = new EncodingHelper(); $actions['export']->option .= '
'.$encodingHelper->charsetField( 'acym_action[actions][__and__][export][charset]', $this->config->get('export_charset', 'UTF-8'), ['class' => 'acym__select'] ).'
'; $actions['export']->option .= '
'; $actions['export']->option .= '
'; $actions['export']->option .= ''; $actions['export']->option .= ''; $actions['export']->option .= '
'; } public function onAcymProcessAction_export(&$cquery, $action) { // Get the file name $currentDate = date('Y-m-d'); $pathtolog = ACYM_ROOT.ACYM_LOGS_FOLDER.'export_'.$currentDate.'.csv'; if (!empty($action['path']) && false === strpos($action['path'], '..')) { $dateParts = explode('-', $currentDate); $pathtolog = ACYM_ROOT.str_replace(['%Y', '%m', '%d'], $dateParts, $action['path']); } if (empty($action['core']) && empty($action['custom'])) { return '['.acym_translation('ACYM_EXPORT_SUBSCRIBERS').'] '.acym_translation('ACYM_EXPORT_SELECT_FIELD'); } if (empty($action['core'])) { $action['core'] = []; } if (empty($action['custom'])) { $action['custom'] = []; } if (empty($action['special'])) { $action['special'] = []; } acym_increasePerf(); $select = ['user.`id`']; foreach ($action['core'] as $oneField) { $select[] = 'user.`'.acym_secureDBColumn($oneField).'`'; } $query = $cquery->getQuery($select); $exportHelper = new ExportHelper(); $realSeparators = ['comma' => ',', 'semicol' => ';']; $error = $exportHelper->exportCSV($query, $action['core'], $action['custom'], $action['special'], $realSeparators[$action['separator']], $action['charset'], $pathtolog); if (empty($error)) { return acym_translationSprintf('ACYM_USERS_EXPORTED', $pathtolog); } else { return '['.acym_translation('ACYM_EXPORT_SUBSCRIBERS').'] '.$error; } } public function onAcymDeclareSummary_actions(&$automation) { if (!empty($automation['export'])) { $automation = acym_translation('ACYM_ALL_SUBSCRIBER_WILL_BE_EXPORTED'); } } }