automationConditions['user']['acy_field'] = acym_translation('ACYM_ACYMAILING_FIELD');
}
public function displayConditionOptions_acy_field(string $fieldName): void
{
$userClass = new UserClass();
$fields = $userClass->getAllColumnsUserAndCustomField();
unset($fields['automation']);
$operator = new OperatorType();
?>
'acym__select acym__automation__conditions__fields__dropdown'],
'value',
'text',
null,
false,
true
); ?>
display($fieldName.'[operator]', '', 'acym__automation__conditions__operator__dropdown', true); ?>
displayCustomFieldValues($fieldName);
}
/**
* One hidden value field per custom field, shown by the JS when that field is selected
*/
private function displayCustomFieldValues(string $fieldName): void
{
// Declared without the prefix so they are not posted, the JS adds it back on the shown one
$valueFieldName = $this->getFieldNameWithoutPrefix($fieldName).'[value]';
$fieldClass = new FieldClass();
foreach ($fieldClass->getAllFieldsForUser() as $field) {
if (in_array($field->type, ['single_dropdown', 'radio', 'checkbox', 'multiple_dropdown']) && !empty($field->value)) {
$values = [];
$field->value = json_decode($field->value, true);
foreach ($field->value as $value) {
$valueTmp = new stdClass();
$valueTmp->text = $value['title'];
$valueTmp->value = $value['value'];
if ($value['disabled'] == 'y') $valueTmp->disable = true;
$values[$value['value']] = $valueTmp;
}
?>
'acym__select acym__automation__conditions__fields__select',
'data-condition-field' => intval($field->id),
],
'value',
'text',
null,
false,
true
); ?>
type) {
acym_tooltip(
[
'hoveredText' => ' ',
'textShownInTooltip' => acym_translation('ACYM_DATE_FORMAT_FILTER'),
'classContainer' => 'intext_select_automation cell',
]
);
}
}
}
public function onAcymProcessCondition_acy_field(&$query, &$options, $num, &$conditionNotValid)
{
$affectedRows = $this->processAcyField($query, $options, $num);
if (empty($affectedRows)) $conditionNotValid++;
}
public function onAcymDeclareSummary_conditions(&$automation)
{
$this->onAcymDeclareSummary_conditionsFilters($automation, 'ACYM_CONDITION_ACY_FIELD_SUMMARY');
}
private function processAcyField(&$query, &$options, $num)
{
$usersColumns = acym_getColumns('user');
if (!in_array($options['field'], $usersColumns)) {
$fieldClass = new FieldClass();
$field = $fieldClass->getOneById($options['field']);
$fieldType = empty($field->type) ? '' : $field->type;
$query->leftjoin['userfield'.$num] = ' #__acym_user_has_field as userfield'.$num.' ON userfield'.$num.'.user_id = user.id AND userfield'.$num.'.field_id = '.intval(
$options['field']
);
$query->where[] = $query->convertQuery(
'userfield'.$num,
'value',
$options['operator'],
$options['value'],
'phone' === $fieldType ? AutomationHelper::TYPE_PHONE : ''
);
} else {
if (in_array($options['field'], ['creation_date', 'confirmation_date', 'last_sent_date', 'last_open_date', 'last_click_date', 'deactivation_date'])) {
$options['value'] = acym_replaceDate($options['value']);
if (!is_numeric($options['value'])) {
$options['value'] = strtotime($options['value']);
}
$options['value'] = acym_date($options['value'], 'Y-m-d H:i:s');
}
$query->where[] = $query->convertQuery('user', $options['field'], $options['operator'], $options['value']);
}
return $query->count();
}
private function onAcymDeclareSummary_conditionsFilters(&$automation, $key)
{
if (!empty($automation['acy_field'])) {
$usersColumns = acym_getColumns('user');
if (!in_array($automation['acy_field']['field'], $usersColumns)) {
$fieldClass = new FieldClass();
$field = $fieldClass->getOneById($automation['acy_field']['field']);
$automation['acy_field']['field'] = $field->name;
}
$automation = acym_translationSprintf(
$key,
$automation['acy_field']['field'],
$automation['acy_field']['operator'],
$automation['acy_field']['value']
);
} elseif (!empty($automation['random'])) {
$automation = acym_translationSprintf(
'ACYM_RANDOMLY_SELECT_X_SUBSCRIBERS',
$automation['random']['number']
);
}
}
}