getAll(); $selectOptionSegment = []; foreach ($segments as $oneSegment) { $selectOptionSegment[] = acym_selectOption($oneSegment->id, $oneSegment->name); } $filters['acy_segment'] = new stdClass(); $filters['acy_segment']->name = acym_translation('ACYM_ACYMAILING_SEGMENT'); $filters['acy_segment']->option = '
'; $filters['acy_segment']->option .= acym_select( $selectOptionSegment, 'acym_action[filters][__numor__][__numand__][acy_segment][id]', null, [ 'class' => 'intext_select_automation acym__select', ] ); $filters['acy_segment']->option .= '
'; } public function onAcymProcessFilterCount_acy_segment(&$query, &$options, &$num) { $this->onAcymProcessFilter_acy_segment($query, $options, $num); return acym_translationSprintf('ACYM_SELECTED_USERS', $query->count()); } public function onAcymProcessFilter_acy_segment(&$query, &$options, $num) { $segmentClass = new SegmentClass(); $oneSegment = $segmentClass->getOneById($options['id']); $automationHelpers = []; if (!empty($oneSegment->filters)) { foreach ($oneSegment->filters as $or => $orValues) { if (empty($orValues)) continue; $automationHelpers[$or] = new AutomationHelper(); foreach ($orValues as $and => $andValues) { $and = intval($and); foreach ($andValues as $filterName => $filterOptions) { acym_trigger('onAcymProcessFilter_'.$filterName, [&$automationHelpers[$or], &$filterOptions, $and.'_'.$or]); } } } } $whereClauses = []; foreach ($automationHelpers as $automationHelper) { if (!empty($automationHelper->where)) { $whereClauses[] = ' ('.implode(') AND (', $automationHelper->where).')'; } if (!empty($automationHelper->join)) { $query->join = array_merge($query->join, $automationHelper->join); } if (!empty($automationHelper->leftjoin)) { $query->leftjoin = array_merge($query->leftjoin, $automationHelper->leftjoin); } } if (!empty($whereClauses)) { $query->where = array_merge($query->where, [implode(' OR ', $whereClauses)]); } } public function onAcymDeclareSummary_filters(&$automation) { if (empty($automation['acy_segment'])) return; $oneSegment = (new SegmentClass())->getOneById($automation['acy_segment']['id']); $automation = acym_translationSprintf('ACYM_FILTER_ACY_SEGMENT_SUMMARY', $oneSegment->name); } }