name = acym_translationSprintf('ACYM_INTEGRATION_PLUGIN_MEMBERSHIP', 'MemberPress');
$conditions['user']['memberpress']->option = '
';
$operatorIn = new OperatorInType();
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= $operatorIn->display('acym_condition[conditions][__numor__][__numand__][memberpress][type]');
$conditions['user']['memberpress']->option .= '
';
$firstGroup = new stdClass();
$firstGroup->text = acym_translation('ACYM_ANY_MEMBERSHIP');
$firstGroup->value = 0;
array_unshift($allGroups, $firstGroup);
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= acym_select(
$allGroups,
'acym_condition[conditions][__numor__][__numand__][memberpress][membership]',
'',
['class' => 'acym__select']
);
$conditions['user']['memberpress']->option .= '
';
$activeMemberPress = [
acym_selectOption('', acym_translation('ACYM_ACTIVATED_OR_DEACTIVATED')),
acym_selectOption(1, acym_translation('ACYM_ACTIVATED')),
acym_selectOption(-1, acym_translation('ACYM_DEACTIVATED')),
];
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= acym_select(
$activeMemberPress,
'acym_condition[conditions][__numor__][__numand__][memberpress][active]',
'',
['class' => 'acym__select']
);
$conditions['user']['memberpress']->option .= '
';
$statusMemberPress = [];
$statusMemberPress[] = acym_selectOption('', acym_translation('ACYM_ANY_STATUS'));
$statusMemberPress[] = acym_selectOption('active', acym_translation('ACYM_ENABLED'));
$statusMemberPress[] = acym_selectOption('pending', acym_translation('ACYM_PENDING'));
$statusMemberPress[] = acym_selectOption('suspended', acym_translation('ACYM_SUSPENDED'));
$statusMemberPress[] = acym_selectOption('cancelled', acym_translation('ACYM_STOPPED'));
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= acym_select(
$statusMemberPress,
'acym_condition[conditions][__numor__][__numand__][memberpress][status]',
'',
['class' => 'acym__select']
);
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][memberpress][signup_date_inf]', '', 'cell shrink');
$conditions['user']['memberpress']->option .= '<';
$conditions['user']['memberpress']->option .= ''.acym_translation('ACYM_SUBSCRIPTION_DATE').'';
$conditions['user']['memberpress']->option .= '<';
$conditions['user']['memberpress']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][memberpress][signup_date_sup]', '', 'cell shrink');
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][memberpress][expiration_date_inf]', '', 'cell shrink');
$conditions['user']['memberpress']->option .= '<';
$conditions['user']['memberpress']->option .= ''.acym_translation('ACYM_END_DATE').'';
$conditions['user']['memberpress']->option .= '<';
$conditions['user']['memberpress']->option .= acym_dateField('acym_condition[conditions][__numor__][__numand__][memberpress][expiration_date_sup]', '', 'cell shrink');
$conditions['user']['memberpress']->option .= '
';
$conditions['user']['memberpress']->option .= '
';
}
public function onAcymDeclareConditionsScenario(array &$conditions): void
{
$this->onAcymDeclareConditions($conditions);
}
public function onAcymProcessCondition_memberpress(&$query, $options, $num, &$conditionNotValid)
{
$this->processConditionFilter_memberpress($query, $options, $num);
$affectedRows = $query->count();
if (empty($affectedRows)) $conditionNotValid++;
}
private function processConditionFilter_memberpress(&$query, $options, $num)
{
$transaction = 'memberpress_transaction'.$num;
$subscription = 'memberpress_sub'.$num;
$joinTransaction = '`#__mepr_transactions` AS '.$transaction.' ON '.$transaction.'.`user_id` = user.`cms_id` AND user.`cms_id` > 0';
if (!empty($options['membership'])) $joinTransaction .= ' AND '.$transaction.'.`product_id` = '.intval($options['membership']);
if (!empty($options['signup_date_inf'])) {
$options['signup_date_inf'] = acym_replaceDate($options['signup_date_inf']);
if (!is_numeric($options['signup_date_inf'])) $options['signup_date_inf'] = strtotime($options['signup_date_inf']);
$joinTransaction .= ' AND '.$transaction.'.`created_at` > '.acym_escapeDB(acym_date($options['signup_date_inf'], 'Y-m-d H:i', false));
}
if (!empty($options['signup_date_sup'])) {
$options['signup_date_sup'] = acym_replaceDate($options['signup_date_sup']);
if (!is_numeric($options['signup_date_sup'])) $options['signup_date_sup'] = strtotime($options['signup_date_sup']);
$joinTransaction .= ' AND '.$transaction.'.`created_at` < '.acym_escapeDB(acym_date($options['signup_date_sup'], 'Y-m-d H:i', false));
}
if (!empty($options['expiration_date_inf'])) {
$options['expiration_date_inf'] = acym_replaceDate($options['expiration_date_inf']);
if (!is_numeric($options['expiration_date_inf'])) $options['expiration_date_inf'] = strtotime($options['expiration_date_inf']);
$joinTransaction .= ' AND ('.$transaction.'.`expires_at` > '.acym_escapeDB(acym_date($options['expiration_date_inf'], 'Y-m-d H:i', false));
$joinTransaction .= ' OR '.$transaction.'.`expires_at` = "0000-00-00 00:00:00")';
}
if (!empty($options['expiration_date_sup'])) {
$options['expiration_date_sup'] = acym_replaceDate($options['expiration_date_sup']);
if (!is_numeric($options['expiration_date_sup'])) $options['expiration_date_sup'] = strtotime($options['expiration_date_sup']);
$joinTransaction .= ' AND '.$transaction.'.`expires_at` < '.acym_escapeDB(acym_date($options['expiration_date_sup'], 'Y-m-d H:i', false));
$joinTransaction .= ' AND '.$transaction.'.`expires_at` > "0000-00-00 00:00:00"';
}
$options['active'] = intval($options['active']);
if (in_array($options['active'], [1, -1])) {
$joinTransaction .= ' AND '.$transaction.'.`status` '.($options['active'] === 1 ? '=' : '!=').' "complete"';
}
if (empty($options['type']) || $options['type'] === 'in') {
$query->join[$transaction] = $joinTransaction;
if (!empty($options['status'])) {
$query->join[$subscription] = '`#__mepr_subscriptions` AS '.$subscription.' ON '.$subscription.'.`id` = '.$transaction.'.`subscription_id`';
$query->where[] = $subscription.'.`status` = '.acym_escapeDB($options['status']);
}
} else {
$query->leftjoin[$transaction] = $joinTransaction;
if (empty($options['status'])) {
$query->where[] = $transaction.'.`user_id` IS NULL';
} else {
$query->leftjoin[$subscription] = '`#__mepr_subscriptions` AS '.$subscription.' ON '.$subscription.'.`id` = '.$transaction.'.`subscription_id`';
$query->leftjoin[$subscription] .= ' AND '.$subscription.'.`status` = '.acym_escapeDB($options['status']);
$query->where[] = $subscription.'.`user_id` IS NULL';
}
}
}
public function onAcymDeclareSummary_conditions(&$automationCondition)
{
$this->summaryConditionFilters($automationCondition);
}
private function summaryConditionFilters(&$automationCondition)
{
if (empty($automationCondition['memberpress'])) return;
if (empty($automationCondition['memberpress']['membership'])) {
$element = acym_translation('ACYM_ANY_MEMBERSHIP');
} else {
$element = acym_loadResult(
'SELECT post_meta.meta_value FROM #__posts AS post
JOIN #__postmeta AS post_meta ON post.ID = post_meta.post_id
AND post_meta.meta_key = "_mepr_product_pricing_title"
AND post_meta.post_id = '.intval($automationCondition['memberpress']['membership']).'
WHERE post_type = "memberpressproduct" AND post_status = "publish"'
);
}
$activeMemberPress = [
'' => acym_translation('ACYM_ACTIVATED_OR_DEACTIVATED'),
1 => acym_translation('ACYM_ACTIVATED'),
-1 => acym_translation('ACYM_DEACTIVATED'),
];
$statusMemberPress = [
'' => acym_translation('ACYM_ANY_STATUS'),
'active' => acym_translation('ACYM_ENABLED'),
'pending' => acym_translation('ACYM_PENDING'),
'suspended' => acym_translation('ACYM_SUSPENDED'),
'cancelled' => acym_translation('ACYM_STOPPED'),
];
$status = $statusMemberPress[$automationCondition['memberpress']['status']];
$statusActive = $activeMemberPress[$automationCondition['memberpress']['active']];
$finalText = acym_translationSprintf('ACYM_SUBSCRIBED_INTEGRATION_PLUGIN', $element, $statusActive, $status);
$dates = [];
if (!empty($automationCondition['memberpress']['signup_date_inf'])) {
$dates[] = acym_translation('ACYM_AFTER').' '.acym_replaceDate($automationCondition['memberpress']['signup_date_inf'], true);
}
if (!empty($automationCondition['memberpress']['signup_date_sup'])) {
$dates[] = acym_translation('ACYM_BEFORE').' '.acym_replaceDate($automationCondition['memberpress']['signup_date_sup'], true);
}
if (!empty($dates)) {
$finalText .= '