';
$conditions['user']['acy_list']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][acy_list][date-min]');
$conditions['user']['acy_list']->option .= '
';
$conditions['user']['acy_list']->option .= acym_select($list['date'], 'acym_condition[conditions][__numor__][__numand__][acy_list][date-type]', null, 'class="intext_select_automation acym__select cell"');
$conditions['user']['acy_list']->option .= '
';
$conditions['user']['acy_list']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][acy_list][date-max]');
$conditions['classic']['acy_list_all'] = new stdClass();
$conditions['classic']['acy_list_all']->name = acym_translation('ACYM_NUMBER_USERS_LIST');
$conditions['classic']['acy_list_all']->option = '
';
$conditions['classic']['acy_list_all']->option .= acym_select(['>' => acym_translation('ACYM_MORE_THAN'), '<' => acym_translation('ACYM_LESS_THAN'), '=' => acym_translation('ACYM_EXACTLY')], 'acym_condition[conditions][__numor__][__numand__][acy_list_all][operator]', null, 'class="intext_select_automation acym__select"');
$conditions['classic']['acy_list_all']->option .= '
';
$conditions['classic']['acy_list_all']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][acy_list_all][date-min]');
$conditions['classic']['acy_list_all']->option .= '
<';
$conditions['classic']['acy_list_all']->option .= '
';
$conditions['classic']['acy_list_all']->option .= acym_select($list['date'], 'acym_condition[conditions][__numor__][__numand__][acy_list_all][date-type]', null, 'class="intext_select_automation acym__select cell"');
$conditions['classic']['acy_list_all']->option .= '
';
$conditions['classic']['acy_list_all']->option .= '
<';
$conditions['classic']['acy_list_all']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][acy_list_all][date-max]');
}
function onAcymDeclareFilters(&$filters)
{
$listClass = acym_get('class.list');
$list = [
'type' => [
'sub' => acym_translation('ACYM_SUBSCRIBED'),
'unsub' => acym_translation('ACYM_UNSUBSCRIBED'),
'notsub' => acym_translation('ACYM_NO_SUBSCRIPTION_STATUS'),
],
'lists' => $listClass->getAllForSelect(),
'date' => [
'subscription_date' => acym_translation('ACYM_SUBSCRIPTION_DATE'),
'unsubscribe_date' => acym_translation('ACYM_UNSUBSCRIPTION_DATE'),
],
];
$filters['acy_list'] = new stdClass();
$filters['acy_list']->name = acym_translation('ACYM_ACYMAILING_LIST');
$filters['acy_list']->option = '
';
$filters['acy_list']->option .= acym_select($list['type'], 'acym_action[filters][__numor__][__numand__][acy_list][action]', null, 'class="intext_select_automation acym__select"');
$filters['acy_list']->option .= '
';
$filters['acy_list']->option .= '
';
$filters['acy_list']->option .= acym_select($list['lists'], 'acym_action[filters][__numor__][__numand__][acy_list][list]', null, 'class="intext_select_automation acym__select"');
$filters['acy_list']->option .= '
';
$filters['acy_list']->option .= '
';
$filters['acy_list']->option .= acym_dateField('acym_action[filters][__numor__][__numand__][acy_list][date-min]');
$filters['acy_list']->option .= '
<';
$filters['acy_list']->option .= '
';
$filters['acy_list']->option .= acym_select($list['date'], 'acym_action[filters][__numor__][__numand__][acy_list][date-type]', null, 'class="intext_select_automation acym__select cell"');
$filters['acy_list']->option .= '
';
$filters['acy_list']->option .= '
<';
$filters['acy_list']->option .= acym_dateField('acym_action[filters][__numor__][__numand__][acy_list][date-max]');
$filters['acy_list']->option .= '
';
}
function onAcymDeclareActions(&$actions)
{
$listClass = acym_get('class.list');
$listActions = [
'sub' => acym_translation('ACYM_SUBSCRIBE_USERS_TO'),
'remove' => acym_translation('ACYM_REMOVE_USERS_FROM'),
'unsub' => acym_translation('ACYM_UNSUBSCRIBE_USERS_TO'),
];
$lists = $listClass->getAllForSelect();
$actions['acy_list'] = new stdClass();
$actions['acy_list']->name = acym_translation('ACYM_ACYMAILING_LIST');
$actions['acy_list']->option = '
';
$actions['acy_list']->option .= acym_select($listActions, 'acym_action[actions][__and__][acy_list][list_actions]', null, 'class="acym__select"');
$actions['acy_list']->option .= '
';
$actions['acy_list']->option .= '
';
$actions['acy_list']->option .= acym_select($lists, 'acym_action[actions][__and__][acy_list][list_id]', null, 'class="acym__select"');
$actions['acy_list']->option .= '
';
}
function onAcymProcessCondition_acy_list(&$query, &$options, $num, &$conditionNotValid)
{
$otherConditions = '';
if (!empty($options['date-min'])) {
$options['date-min'] = acym_replaceDate($options['date-min']);
if (!is_numeric($options['date-min'])) {
$options['date-min'] = strtotime($options['date-min']);
}
if (!empty($options['date-min'])) {
$otherConditions .= ' AND userlist'.$num.'.'.acym_secureDBColumn($options['date-type']).' > '.acym_escapeDB(acym_date($options['date-min'], "Y-m-d H:i:s"));
}
}
if (!empty($options['date-max'])) {
$options['date-max'] = acym_replaceDate($options['date-max']);
if (!is_numeric($options['date-max'])) {
$options['date-max'] = strtotime($options['date-max']);
}
if (!empty($options['date-max'])) {
$otherConditions .= ' AND userlist'.$num.'.'.acym_secureDBColumn($options['date-type']).' < '.acym_escapeDB(acym_date($options['date-max'], "Y-m-d H:i:s"));
}
}
$query->leftjoin['list'.$num] = '#__acym_user_has_list as userlist'.$num.' ON user.id = userlist'.$num.'.user_id AND userlist'.$num.'.list_id = '.intval($options['list']).$otherConditions;
if ($options['action'] == 'notsub') {
$query->where[] = 'userlist'.$num.'.user_id IS NULL';
} else {
$status = $options['action'] == 'sub' ? '1' : '0';
$query->where[] = 'userlist'.$num.'.status = '.intval($status);
}
$affectedRows = $query->count();
if (empty($affectedRows)) $conditionNotValid++;
}
function onAcymProcessCondition_acy_list_all(&$query, &$options, $num, &$conditionNotValid)
{
$otherConditions = '';
if (!empty($options['date-min'])) {
$options['date-min'] = acym_replaceDate($options['date-min']);
if (!is_numeric($options['date-min'])) {
$options['date-min'] = strtotime($options['date-min']);
}
if (!empty($options['date-min'])) {
$otherConditions .= ' AND userlist'.$num.'.'.acym_secureDBColumn($options['date-type']).' > '.acym_escapeDB(acym_date($options['date-min'], "Y-m-d H:i:s"));
}
}
if (!empty($options['date-max'])) {
$options['date-max'] = acym_replaceDate($options['date-max']);
if (!is_numeric($options['date-max'])) {
$options['date-max'] = strtotime($options['date-max']);
}
if (!empty($options['date-max'])) {
$otherConditions .= ' AND userlist'.$num.'.'.acym_secureDBColumn($options['date-type']).' < '.acym_escapeDB(acym_date($options['date-max'], "Y-m-d H:i:s"));
}
}
$query->leftjoin['list'.$num] = '#__acym_user_has_list as userlist'.$num.' ON user.id = userlist'.$num.'.user_id AND userlist'.$num.'.list_id = '.intval($options['list']).$otherConditions;
if ($options['action'] == 'notsub') {
$query->where[] = 'userlist'.$num.'.user_id IS NULL';
} else {
$status = $options['action'] == 'sub' ? '1' : '0';
$query->where[] = 'userlist'.$num.'.status = '.intval($status);
}
$numberReturn = $query->count();
$res = false;
switch ($options['operator']) {
case '=' :
$res = $numberReturn == $options['number'];
break;
case '>' :
$res = $numberReturn > $options['number'];
break;
case '<' :
$res = $numberReturn < $options['number'];
break;
}
if (!$res) $conditionNotValid++;
}
function onAcymProcessFilter_acy_list(&$query, &$filterOptions, $num)
{
$otherConditions = '';
if (!empty($filterOptions['date-min'])) {
$filterOptions['date-min'] = acym_replaceDate($filterOptions['date-min']);
if (!is_numeric($filterOptions['date-min'])) {
$filterOptions['date-min'] = strtotime($filterOptions['date-min']);
}
if (!empty($filterOptions['date-min'])) {
$otherConditions .= ' AND userlist'.$num.'.'.acym_secureDBColumn($filterOptions['date-type']).' > '.acym_escapeDB(acym_date($filterOptions['date-min'], "Y-m-d H:i:s"));
}
}
if (!empty($filterOptions['date-max'])) {
$filterOptions['date-max'] = acym_replaceDate($filterOptions['date-max']);
if (!is_numeric($filterOptions['date-max'])) {
$filterOptions['date-max'] = strtotime($filterOptions['date-max']);
}
if (!empty($filterOptions['date-max'])) {
$otherConditions .= ' AND userlist'.$num.'.'.acym_secureDBColumn($filterOptions['date-type']).' < '.acym_escapeDB(acym_date($filterOptions['date-max'], "Y-m-d H:i:s"));
}
}
$query->leftjoin['list'.$num] = '#__acym_user_has_list as userlist'.$num.' ON user.id = userlist'.$num.'.user_id AND userlist'.$num.'.list_id = '.intval($filterOptions['list']).$otherConditions;
if ($filterOptions['action'] == 'notsub') {
$query->where[] = 'userlist'.$num.'.user_id IS NULL';
} else {
$status = $filterOptions['action'] == 'sub' ? '1' : '0';
$query->where[] = 'userlist'.$num.'.status = '.intval($status);
}
}
function onAcymProcessFilterCount_acy_list(&$query, $options, $num)
{
$this->onAcymProcessFilter_acy_list($query, $options, $num);
return acym_translation_sprintf('ACYM_SELECTED_USERS', $query->count());
}
function onAcymProcessAction_acy_list(&$query, $action)
{
if ($action['list_actions'] == 'sub') {
$queryToProcess = 'INSERT IGNORE #__acym_user_has_list (`user_id`, `list_id`, `status`, `subscription_date`) ('.$query->getQuery(
[
'user.id',
$action['list_id'],
'1',
acym_escapeDB(acym_date(time(), "Y-m-d H:i:s")),
]
).') ON DUPLICATE KEY UPDATE status = 1';
} elseif ($action['list_actions'] == 'remove') {
$queryToProcess = 'DELETE FROM #__acym_user_has_list WHERE list_id = '.intval($action['list_id']).' AND user_id IN ('.$query->getQuery(['user.id']).')';
} elseif ($action['list_actions'] == 'unsub') {
$queryToProcess = 'UPDATE #__acym_user_has_list SET status = 0 WHERE list_id = '.intval($action['list_id']).' AND user_id IN ('.$query->getQuery(['user.id']).')';
}
$nbAffected = acym_query($queryToProcess);
return acym_translation_sprintf('ACYM_ACTION_LIST_'.strtoupper($action['list_actions']), $nbAffected);
}
function onAcymDeclareSummary_conditions(&$automationCondition)
{
if (!empty($automationCondition['acy_list'])) {
$finalText = '';
$listClass = acym_get('class.list');
$automationCondition['acy_list']['list'] = $listClass->getOneById($automationCondition['acy_list']['list']);
if (empty($automationCondition['acy_list']['list'])) {
$automationCondition = '
'.acym_translation('ACYM_SELECT_A_LIST').'';
return;
}
if ($automationCondition['acy_list']['action'] == 'sub') $automationCondition['acy_list']['action'] = 'ACYM_IS_SUBSCRIBED';
if ($automationCondition['acy_list']['action'] == 'unsub') $automationCondition['acy_list']['action'] = 'ACYM_IS_UNSUBSCRIBED';
if ($automationCondition['acy_list']['action'] == 'notsub') $automationCondition['acy_list']['action'] = 'ACYM_IS_NOT_SUBSCRIBED';
$finalText .= acym_translation_sprintf('ACYM_CONDITION_ACY_LIST_SUMMARY', acym_translation($automationCondition['acy_list']['action']), $automationCondition['acy_list']['list']->name).' ';
if (!empty($automationCondition['acy_list']['date-min']) || !empty($automationCondition['acy_list']['date-max'])) {
$finalText .= acym_translation_sprintf('ACYM_WHERE_DATE_ACY_LIST_SUMMARY', strtolower(acym_translation('ACYM_'.strtoupper($automationCondition['acy_list']['date-type']))));
$dates = [];
if (!empty($automationCondition['acy_list']['date-min'])) {
$automationCondition['acy_list']['date-min'] = acym_replaceDate($automationCondition['acy_list']['date-min']);
$dates[] = acym_translation_sprintf('ACYM_WHERE_DATE_MIN_ACY_LIST_SUMMARY', acym_date($automationCondition['acy_list']['date-min'], 'd M Y H:i'));
}
if (!empty($automationCondition['acy_list']['date-max'])) {
$automationCondition['acy_list']['date-max'] = acym_replaceDate($automationCondition['acy_list']['date-max']);
$dates[] = acym_translation_sprintf('ACYM_WHERE_DATE_MAX_ACY_LIST_SUMMARY', acym_date($automationCondition['acy_list']['date-max'], 'd M Y H:i'));
}
$finalText .= ' '.implode(' '.strtolower(acym_translation('ACYM_AND')).' ', $dates);
}
$automationCondition = $finalText;
}
if (!empty($automationCondition['acy_list_all'])) {
$operators = ['=' => acym_translation('ACYM_EXACTLY'), '>' => acym_translation('ACYM_MORE_THAN'), '<' => acym_translation('ACYM_LESS_THAN')];
$finalText = acym_translation('ACYM_THERE_IS').' '.strtolower($operators[$automationCondition['acy_list_all']['operator']]).' '.$automationCondition['acy_list_all']['number'].' '.acym_translation('ACYM_ACYMAILING_USERS');
$listClass = acym_get('class.list');
$automationCondition['acy_list_all']['list'] = $listClass->getOneById($automationCondition['acy_list_all']['list']);
if (empty($automationCondition['acy_list_all']['list'])) {
$automationCondition = '
'.acym_translation('ACYM_SELECT_A_LIST').'';
return;
}
if ($automationCondition['acy_list_all']['action'] == 'sub') $automationCondition['acy_list_all']['action'] = 'ACYM_SUBSCRIBED';
if ($automationCondition['acy_list_all']['action'] == 'unsub') $automationCondition['acy_list_all']['action'] = 'ACYM_UNSUBSCRIBED';
if ($automationCondition['acy_list_all']['action'] == 'notsub') $automationCondition['acy_list_all']['action'] = 'ACYM__NOT_SUBSCRIBED';
$finalText .= acym_translation_sprintf('ACYM_CONDITION_ACY_LIST_SUMMARY', acym_translation($automationCondition['acy_list_all']['action']), $automationCondition['acy_list_all']['list']->name).' ';
if (!empty($automationCondition['acy_list_all']['date-min']) || !empty($automationCondition['acy_list_all']['date-max'])) {
$finalText .= acym_translation_sprintf('ACYM_WHERE_DATE_ACY_LIST_SUMMARY', strtolower(acym_translation('ACYM_'.strtoupper($automationCondition['acy_list_all']['date-type']))));
$dates = [];
if (!empty($automationCondition['acy_list_all']['date-min'])) {
$automationCondition['acy_list_all']['date-min'] = acym_replaceDate($automationCondition['acy_list_all']['date-min'], true);
$dates[] = acym_translation_sprintf('ACYM_WHERE_DATE_MIN_ACY_LIST_SUMMARY', acym_date($automationCondition['acy_list_all']['date-min'], 'd M Y H:i'));
}
if (!empty($automationCondition['acy_list_all']['date-max'])) {
$automationCondition['acy_list_all']['date-max'] = acym_replaceDate($automationCondition['acy_list_all']['date-max'], true);
$dates[] = acym_translation_sprintf('ACYM_WHERE_DATE_MAX_ACY_LIST_SUMMARY', acym_date($automationCondition['acy_list_all']['date-max'], 'd M Y H:i'));
}
$finalText .= ' '.implode(' '.strtolower(acym_translation('ACYM_AND')).' ', $dates);
}
$automationCondition = $finalText;
}
}
function onAcymDeclareSummary_filters(&$automationFilter)
{
if (!empty($automationFilter['acy_list'])) {
$finalText = '';
$listClass = acym_get('class.list');
$automationFilter['acy_list']['list'] = $listClass->getOneById($automationFilter['acy_list']['list']);
if (empty($automationFilter['acy_list']['list'])) {
$automationFilter = '
'.acym_translation('ACYM_SELECT_A_LIST').'';
return;
}
if ($automationFilter['acy_list']['action'] == 'sub') $automationFilter['acy_list']['action'] = 'ACYM_SUBSCRIBED';
if ($automationFilter['acy_list']['action'] == 'unsub') $automationFilter['acy_list']['action'] = 'ACYM_UNSUBSCRIBED';
if ($automationFilter['acy_list']['action'] == 'notsub') $automationFilter['acy_list']['action'] = 'ACYM_NOT_SUBSCRIBED';
$finalText .= acym_translation_sprintf('ACYM_FILTER_ACY_LIST_SUMMARY', acym_translation($automationFilter['acy_list']['action']), $automationFilter['acy_list']['list']->name).' ';
if (!empty($automationFilter['acy_list']['date-min']) || !empty($automationFilter['acy_list']['date-max'])) {
$finalText .= acym_translation_sprintf('ACYM_WHERE_DATE_ACY_LIST_SUMMARY', strtolower(acym_translation('ACYM_'.strtoupper($automationFilter['acy_list']['date-type']))));
$dates = [];
if (!empty($automationFilter['acy_list']['date-min'])) {
$automationFilter['acy_list']['date-min'] = acym_replaceDate($automationFilter['acy_list']['date-min']);
$dates[] = acym_translation_sprintf('ACYM_WHERE_DATE_MIN_ACY_LIST_SUMMARY', acym_date($automationFilter['acy_list']['date-min'], 'd M Y H:i'));
}
if (!empty($automationFilter['acy_list']['date-max'])) {
$automationFilter['acy_list']['date-max'] = acym_replaceDate($automationFilter['acy_list']['date-max']);
$dates[] = acym_translation_sprintf('ACYM_WHERE_DATE_MAX_ACY_LIST_SUMMARY', acym_date($automationFilter['acy_list']['date-max'], 'd M Y H:i'));
}
$finalText .= ' '.implode(' '.strtolower(acym_translation('ACYM_AND')).' ', $dates);
}
$automationFilter = $finalText;
}
}
function onAcymDeclareSummary_actions(&$automationAction)
{
if (!empty($automationAction['acy_list'])) {
$listClass = acym_get('class.list');
$list = $listClass->getOneById($automationAction['acy_list']['list_id']);
if ($automationAction['acy_list']['list_actions'] == 'sub') $automationAction['acy_list']['list_actions'] = 'ACYM_SUBSCRIBED_TO';
if ($automationAction['acy_list']['list_actions'] == 'unsub') $automationAction['acy_list']['list_actions'] = 'ACYM_UNSUBSCRIBE_FROM';
if ($automationAction['acy_list']['list_actions'] == 'remove') $automationAction['acy_list']['list_actions'] = 'ACYM_REMOVE_FROM';
$automationAction = empty($list) ? '
'.acym_translation('ACYM_SELECT_A_LIST').'' : acym_translation_sprintf('ACYM_ACTION_LIST_SUMMARY', acym_translation($automationAction['acy_list']['list_actions']), $list->name);
}
}
function onAcymAfterUserSubscribe(&$user, $lists)
{
$automationClass = acym_get('class.automation');
$automationClass->triggerUser('user_subscribe', $user->id);
}
}